]> gitweb.factorcode.org Git - factor.git/commitdiff
Merge branch 'master' of git://github.com/slavapestov/factor
authorAnton Gorenko <ex.rzrjck@gmail.com>
Sun, 16 Jan 2011 07:38:04 +0000 (13:38 +0600)
committerAnton Gorenko <ex.rzrjck@gmail.com>
Sun, 16 Jan 2011 07:38:04 +0000 (13:38 +0600)
166 files changed:
basis/atk/Atk-1.0.gir [new file with mode: 0644]
basis/atk/atk.factor [new file with mode: 0644]
basis/atk/authors.txt [new file with mode: 0644]
basis/atk/ffi/ffi.factor [new file with mode: 0644]
basis/atk/summary.txt [new file with mode: 0644]
basis/atk/tags.txt [new file with mode: 0755]
basis/bootstrap/ui/ui.factor
basis/gdk/Gdk-3.0.gir [new file with mode: 0644]
basis/gdk/authors.txt [new file with mode: 0644]
basis/gdk/ffi/ffi.factor [new file with mode: 0644]
basis/gdk/gdk.factor [new file with mode: 0644]
basis/gdk/gl/GdkGLExt-1.0.gir [new file with mode: 0644]
basis/gdk/gl/authors.txt [new file with mode: 0644]
basis/gdk/gl/ffi/ffi.factor [new file with mode: 0644]
basis/gdk/gl/gl.factor [new file with mode: 0644]
basis/gdk/gl/summary.txt [new file with mode: 0644]
basis/gdk/gl/tags.txt [new file with mode: 0755]
basis/gdk/pixbuf/GdkPixbuf-2.0.gir [new file with mode: 0644]
basis/gdk/pixbuf/authors.txt [new file with mode: 0644]
basis/gdk/pixbuf/ffi/ffi.factor [new file with mode: 0644]
basis/gdk/pixbuf/pixbuf.factor [new file with mode: 0644]
basis/gdk/pixbuf/summary.txt [new file with mode: 0644]
basis/gdk/pixbuf/tags.txt [new file with mode: 0755]
basis/gdk/summary.txt [new file with mode: 0644]
basis/gdk/tags.txt [new file with mode: 0755]
basis/gio/Gio-2.0.gir [new file with mode: 0644]
basis/gio/authors.txt [new file with mode: 0644]
basis/gio/ffi/ffi.factor [new file with mode: 0644]
basis/gio/gio.factor [new file with mode: 0644]
basis/gio/summary.txt [new file with mode: 0644]
basis/gio/tags.txt [new file with mode: 0755]
basis/glib/GLib-2.0.gir [new file with mode: 0644]
basis/glib/authors.txt
basis/glib/ffi/ffi.factor [new file with mode: 0644]
basis/glib/glib.factor
basis/glib/summary.txt
basis/glib/tags.txt [changed mode: 0644->0755]
basis/gmodule/GModule-2.0.gir [new file with mode: 0644]
basis/gmodule/authors.txt [new file with mode: 0644]
basis/gmodule/ffi/ffi.factor [new file with mode: 0644]
basis/gmodule/gmodule.factor [new file with mode: 0644]
basis/gmodule/summary.txt [new file with mode: 0644]
basis/gmodule/tags.txt [new file with mode: 0755]
basis/gobject-introspection/authors.txt [new file with mode: 0644]
basis/gobject-introspection/common/common.factor [new file with mode: 0644]
basis/gobject-introspection/ffi/ffi.factor [new file with mode: 0644]
basis/gobject-introspection/gobject-introspection.factor [new file with mode: 0755]
basis/gobject-introspection/loader/loader.factor [new file with mode: 0644]
basis/gobject-introspection/repository/repository.factor [new file with mode: 0644]
basis/gobject-introspection/standard-types/standard-types.factor [new file with mode: 0644]
basis/gobject-introspection/summary.txt [new file with mode: 0644]
basis/gobject-introspection/types/types.factor [new file with mode: 0644]
basis/gobject/GObject-2.0.gir [new file with mode: 0644]
basis/gobject/authors.txt [new file with mode: 0644]
basis/gobject/ffi/ffi.factor [new file with mode: 0644]
basis/gobject/gobject.factor [new file with mode: 0644]
basis/gobject/summary.txt [new file with mode: 0644]
basis/gobject/tags.txt [new file with mode: 0755]
basis/gtk/Gtk-3.0.gir [new file with mode: 0644]
basis/gtk/authors.txt [new file with mode: 0644]
basis/gtk/ffi/ffi.factor [new file with mode: 0644]
basis/gtk/gl/GtkGLExt-1.0.gir [new file with mode: 0644]
basis/gtk/gl/authors.txt [new file with mode: 0644]
basis/gtk/gl/ffi/ffi.factor [new file with mode: 0644]
basis/gtk/gl/gl.factor [new file with mode: 0644]
basis/gtk/gl/summary.txt [new file with mode: 0644]
basis/gtk/gl/tags.txt [new file with mode: 0755]
basis/gtk/gtk.factor [new file with mode: 0644]
basis/gtk/summary.txt [new file with mode: 0644]
basis/gtk/tags.txt [new file with mode: 0755]
basis/opengl/gl/extensions/extensions.factor
basis/opengl/gl/gtk/authors.txt [new file with mode: 0644]
basis/opengl/gl/gtk/gtk.factor [new file with mode: 0644]
basis/pango/Pango-1.0.gir [new file with mode: 0644]
basis/pango/authors.txt [new file with mode: 0644]
basis/pango/cairo/PangoCairo-1.0.gir [new file with mode: 0644]
basis/pango/cairo/authors.txt
basis/pango/cairo/cairo.factor
basis/pango/cairo/ffi/ffi.factor [new file with mode: 0644]
basis/pango/cairo/summary.txt [new file with mode: 0644]
basis/pango/cairo/tags.txt [new file with mode: 0755]
basis/pango/ffi/ffi.factor [new file with mode: 0644]
basis/pango/fonts/authors.txt [deleted file]
basis/pango/fonts/fonts.factor [deleted file]
basis/pango/fonts/tags.txt [deleted file]
basis/pango/layouts/layouts-tests.factor [deleted file]
basis/pango/layouts/layouts.factor [deleted file]
basis/pango/pango.factor
basis/pango/summary.txt [new file with mode: 0644]
basis/pango/tags.txt [new file with mode: 0755]
basis/ui/backend/gtk/authors.txt [new file with mode: 0644]
basis/ui/backend/gtk/gtk.factor [new file with mode: 0644]
basis/ui/backend/gtk/summary.txt [new file with mode: 0644]
basis/ui/text/pango/pango.factor
extra/clutter/Clutter-1.0.gir [new file with mode: 0644]
extra/clutter/authors.txt [new file with mode: 0644]
extra/clutter/clutter.factor [new file with mode: 0644]
extra/clutter/cogl/Cogl-1.0.gir [new file with mode: 0644]
extra/clutter/cogl/cogl.factor [new file with mode: 0644]
extra/clutter/cogl/ffi/ffi.factor [new file with mode: 0644]
extra/clutter/ffi/ffi.factor [new file with mode: 0644]
extra/clutter/gtk/GtkClutter-0.10.gir [new file with mode: 0644]
extra/clutter/gtk/ffi/ffi.factor [new file with mode: 0644]
extra/clutter/gtk/gtk.factor [new file with mode: 0644]
extra/clutter/json/Json-1.0.gir [new file with mode: 0644]
extra/clutter/json/ffi/ffi.factor [new file with mode: 0644]
extra/clutter/json/json.factor [new file with mode: 0644]
extra/clutter/summary.txt [new file with mode: 0644]
extra/clutter/tags.txt [new file with mode: 0755]
extra/gir/samples/lowlevel/gstreamer/authors.txt [new file with mode: 0644]
extra/gir/samples/lowlevel/gstreamer/gstreamer.factor [new file with mode: 0644]
extra/gstreamer/Gst-0.10.gir [new file with mode: 0644]
extra/gstreamer/app/GstApp-0.10.gir [new file with mode: 0644]
extra/gstreamer/app/app.factor [new file with mode: 0644]
extra/gstreamer/app/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/audio/GstAudio-0.10.gir [new file with mode: 0644]
extra/gstreamer/audio/audio.factor [new file with mode: 0644]
extra/gstreamer/audio/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/authors.txt [new file with mode: 0644]
extra/gstreamer/base/GstBase-0.10.gir [new file with mode: 0644]
extra/gstreamer/base/base.factor [new file with mode: 0644]
extra/gstreamer/base/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/controller/GstController-0.10.gir [new file with mode: 0644]
extra/gstreamer/controller/controller.factor [new file with mode: 0644]
extra/gstreamer/controller/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/fft/GstFft-0.10.gir [new file with mode: 0644]
extra/gstreamer/fft/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/fft/fft.factor [new file with mode: 0644]
extra/gstreamer/gstreamer.factor [new file with mode: 0644]
extra/gstreamer/interfaces/GstInterfaces-0.10.gir [new file with mode: 0644]
extra/gstreamer/interfaces/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/interfaces/interfaces.factor [new file with mode: 0644]
extra/gstreamer/net/GstNet-0.10.gir [new file with mode: 0644]
extra/gstreamer/net/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/net/net.factor [new file with mode: 0644]
extra/gstreamer/netbuffer/GstNetbuffer-0.10.gir [new file with mode: 0644]
extra/gstreamer/netbuffer/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/netbuffer/netbuffer.factor [new file with mode: 0644]
extra/gstreamer/pbutils/GstPbutils-0.10.gir [new file with mode: 0644]
extra/gstreamer/pbutils/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/pbutils/pbutils.factor [new file with mode: 0644]
extra/gstreamer/riff/GstRiff-0.10.gir [new file with mode: 0644]
extra/gstreamer/riff/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/riff/riff.factor [new file with mode: 0644]
extra/gstreamer/rtp/GstRtp-0.10.gir [new file with mode: 0644]
extra/gstreamer/rtp/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/rtp/rtp.factor [new file with mode: 0644]
extra/gstreamer/rtsp/GstRtsp-0.10.gir [new file with mode: 0644]
extra/gstreamer/rtsp/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/rtsp/rtsp.factor [new file with mode: 0644]
extra/gstreamer/sdp/GstSdp-0.10.gir [new file with mode: 0644]
extra/gstreamer/sdp/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/sdp/sdp.factor [new file with mode: 0644]
extra/gstreamer/summary.txt [new file with mode: 0644]
extra/gstreamer/tag/GstTag-0.10.gir [new file with mode: 0644]
extra/gstreamer/tag/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/tag/tag.factor [new file with mode: 0644]
extra/gstreamer/tags.txt [new file with mode: 0755]
extra/gstreamer/video/GstVideo-0.10.gir [new file with mode: 0644]
extra/gstreamer/video/ffi/ffi.factor [new file with mode: 0644]
extra/gstreamer/video/video.factor [new file with mode: 0644]
extra/gtk-samples/hello-world/authors.txt [new file with mode: 0644]
extra/gtk-samples/hello-world/hello-world.factor [new file with mode: 0644]
extra/gtk-samples/opengl/authors.txt [new file with mode: 0644]
extra/gtk-samples/opengl/opengl.factor [new file with mode: 0644]

diff --git a/basis/atk/Atk-1.0.gir b/basis/atk/Atk-1.0.gir
new file mode 100644 (file)
index 0000000..f14914e
--- /dev/null
@@ -0,0 +1,9798 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <package name="atk"/>
+  <namespace name="Atk"
+             version="1.0"
+             shared-library="libatk-1.0.so.0"
+             c:identifier-prefixes="Atk"
+             c:symbol-prefixes="atk">
+    <alias name="AttributeSet">
+      <doc xml:whitespace="preserve">This is a singly-linked list (a #GSList) of #AtkAttribute. It is
+used by atk_text_get_run_attributes(), atk_text_get_default_attributes()
+and atk_editable_text_set_run_attributes()</doc>
+      <type name="gpointer" c:type="gpointer"/>
+    </alias>
+    <alias name="State" c:type="AtkState">
+      <type name="guint64" c:type="guint64"/>
+    </alias>
+    <interface name="Action"
+               c:symbol-prefix="action"
+               c:type="AtkAction"
+               glib:type-name="AtkAction"
+               glib:get-type="atk_action_get_type"
+               glib:type-struct="ActionIface">
+      <virtual-method name="do_action" invoker="do_action">
+        <doc xml:whitespace="preserve">Perform the specified action on the object.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_description" invoker="get_description">
+        <doc xml:whitespace="preserve">Returns a description of the specified action of the object.
+Returns a description string, or %NULL
+if @action does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_keybinding" invoker="get_keybinding">
+        <doc xml:whitespace="preserve">Returns a keybinding associated with this action, if one exists.
+The returned string is in the format "&lt;a&gt;;&lt;b&gt;;&lt;c&gt;"
+(i.e. semicolon-delimited), where &lt;a&gt; is the keybinding which
+activates the object if it is presently enabled onscreen, 
+&lt;b&gt; corresponds to the keybinding or sequence of keys
+which invokes the action even if the relevant element is not
+currently posted on screen (for instance, for a menu item it
+posts the parent menus before invoking).  The last token in the
+above string, if non-empty, represents a keyboard shortcut which
+invokes the same action without posting the component or its
+enclosing menus or dialogs. 
+Returns a string representing the available keybindings, or %NULL
+if there is no keybinding for this action.</doc>
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_localized_name" invoker="get_localized_name">
+        <doc xml:whitespace="preserve">Returns the localized name of the specified action of the object.
+Returns a name string, or %NULL
+if @action does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_n_actions" invoker="get_n_actions">
+        <doc xml:whitespace="preserve">Gets the number of accessible actions available on the object.
+If there are more than one, the first one is considered the
+"default" action of the object.
+implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a the number of actions, or 0 if @action does not</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_name" invoker="get_name">
+        <doc xml:whitespace="preserve">Returns a non-localized string naming the specified action of the 
+object. This name is generally not descriptive of the end result 
+of the action, but instead names the 'interaction type' which the 
+object supports. By convention, the above strings should be used to 
+represent the actions which correspond to the common point-and-click 
+"click", "press", "release", "drag", "drop", "popup", etc.
+The "popup" action should be used to pop up a context menu for the 
+object, if one exists.
+For technical reasons, some toolkits cannot guarantee that the 
+reported action is actually 'bound' to a nontrivial user event;
+i.e. the result of some actions via atk_action_do_action() may be
+NIL.
+Returns a name string, or %NULL
+if @action does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_description" invoker="set_description">
+        <doc xml:whitespace="preserve">Sets a description of the specified action of the object.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gboolean representing if the description was successfully set;</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="desc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the description to be assigned to this action</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="do_action" c:identifier="atk_action_do_action">
+        <doc xml:whitespace="preserve">Perform the specified action on the object.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_description" c:identifier="atk_action_get_description">
+        <doc xml:whitespace="preserve">Returns a description of the specified action of the object.
+Returns a description string, or %NULL
+if @action does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_keybinding" c:identifier="atk_action_get_keybinding">
+        <doc xml:whitespace="preserve">Returns a keybinding associated with this action, if one exists.
+The returned string is in the format "&lt;a&gt;;&lt;b&gt;;&lt;c&gt;"
+(i.e. semicolon-delimited), where &lt;a&gt; is the keybinding which
+activates the object if it is presently enabled onscreen, 
+&lt;b&gt; corresponds to the keybinding or sequence of keys
+which invokes the action even if the relevant element is not
+currently posted on screen (for instance, for a menu item it
+posts the parent menus before invoking).  The last token in the
+above string, if non-empty, represents a keyboard shortcut which
+invokes the same action without posting the component or its
+enclosing menus or dialogs. 
+Returns a string representing the available keybindings, or %NULL
+if there is no keybinding for this action.</doc>
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_localized_name"
+              c:identifier="atk_action_get_localized_name">
+        <doc xml:whitespace="preserve">Returns the localized name of the specified action of the object.
+Returns a name string, or %NULL
+if @action does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_actions" c:identifier="atk_action_get_n_actions">
+        <doc xml:whitespace="preserve">Gets the number of accessible actions available on the object.
+If there are more than one, the first one is considered the
+"default" action of the object.
+implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a the number of actions, or 0 if @action does not</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_name" c:identifier="atk_action_get_name">
+        <doc xml:whitespace="preserve">Returns a non-localized string naming the specified action of the 
+object. This name is generally not descriptive of the end result 
+of the action, but instead names the 'interaction type' which the 
+object supports. By convention, the above strings should be used to 
+represent the actions which correspond to the common point-and-click 
+"click", "press", "release", "drag", "drop", "popup", etc.
+The "popup" action should be used to pop up a context menu for the 
+object, if one exists.
+For technical reasons, some toolkits cannot guarantee that the 
+reported action is actually 'bound' to a nontrivial user event;
+i.e. the result of some actions via atk_action_do_action() may be
+NIL.
+Returns a name string, or %NULL
+if @action does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_description" c:identifier="atk_action_set_description">
+        <doc xml:whitespace="preserve">Sets a description of the specified action of the object.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gboolean representing if the description was successfully set;</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="desc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the description to be assigned to this action</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="ActionIface"
+            c:type="AtkActionIface"
+            glib:is-gtype-struct-for="Action">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="do_action">
+        <callback name="do_action">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="AtkAction*"/>
+            </parameter>
+            <parameter name="i" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_n_actions">
+        <callback name="get_n_actions">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a the number of actions, or 0 if @action does not</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="AtkAction*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_description">
+        <callback name="get_description">
+          <return-value transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="AtkAction*"/>
+            </parameter>
+            <parameter name="i" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_name">
+        <callback name="get_name">
+          <return-value transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="AtkAction*"/>
+            </parameter>
+            <parameter name="i" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_keybinding">
+        <callback name="get_keybinding">
+          <return-value transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="AtkAction*"/>
+            </parameter>
+            <parameter name="i" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_description">
+        <callback name="set_description">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gboolean representing if the description was successfully set;</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="AtkAction*"/>
+            </parameter>
+            <parameter name="i" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="desc" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the description to be assigned to this action</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_localized_name">
+        <callback name="get_localized_name">
+          <return-value transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="AtkAction*"/>
+            </parameter>
+            <parameter name="i" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pad2">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+    </record>
+    <record name="Attribute" c:type="AtkAttribute">
+      <doc xml:whitespace="preserve">A string name/value pair representing a text attribute.</doc>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </record>
+    <interface name="Component"
+               c:symbol-prefix="component"
+               c:type="AtkComponent"
+               glib:type-name="AtkComponent"
+               glib:get-type="atk_component_get_type"
+               glib:type-struct="ComponentIface">
+      <virtual-method name="add_focus_handler"
+                      invoker="add_focus_handler"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Add the specified handler to the set of functions to be called 
+when this object receives focus events (in or out). If the handler is
+already added it is not added again
+or zero if the handler was already added.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a handler id which can be used in atk_component_remove_focus_handler</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #AtkFocusHandler to be attached to @component</doc>
+            <type name="FocusHandler" c:type="AtkFocusHandler"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="contains" invoker="contains">
+        <doc xml:whitespace="preserve">Checks whether the specified point is within the extent of the @component.
+the extent of the @component or not</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE or %FALSE indicating whether the specified point is within</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_alpha" invoker="get_alpha" version="1.12">
+        <doc xml:whitespace="preserve">Returns the alpha value (i.e. the opacity) for this
+(fully opaque).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">An alpha value from 0 to 1.0, inclusive.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_extents" invoker="get_extents">
+        <doc xml:whitespace="preserve">Gets the rectangle which gives the extent of the @component.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of #gint to put x coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of #gint to put y coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of #gint to put width</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of #gint to put height</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_layer" invoker="get_layer">
+        <doc xml:whitespace="preserve">Gets the layer of the component.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an #AtkLayer which is the layer of the component</doc>
+          <type name="Layer" c:type="AtkLayer"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_mdi_zorder" invoker="get_mdi_zorder">
+        <doc xml:whitespace="preserve">Gets the zorder of the component. The value G_MININT will be returned 
+if the layer of the component is not ATK_LAYER_MDI or ATK_LAYER_WINDOW.
+which the component is shown in relation to other components in the same 
+container.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gint which is the zorder of the component, i.e. the depth at</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_position" invoker="get_position">
+        <doc xml:whitespace="preserve">Gets the position of @component in the form of 
+a point specifying @component's top-left corner.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of #gint to put x coordinate position</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of #gint to put y coordinate position</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_size" invoker="get_size">
+        <doc xml:whitespace="preserve">Gets the size of the @component in terms of width and height.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of #gint to put width of @component</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of #gint to put height of @component</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="grab_focus" invoker="grab_focus">
+        <doc xml:whitespace="preserve">Grabs focus for this @component.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="ref_accessible_at_point"
+                      invoker="ref_accessible_at_point"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Gets a reference to the accessible child, if one exists, at the
+coordinate point specified by @x and @y.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a reference to the accessible child, if one exists</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove_focus_handler"
+                      invoker="remove_focus_handler">
+        <doc xml:whitespace="preserve">Remove the handler specified by @handler_id from the list of
+functions to be executed when this object receives focus events 
+(in or out).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the handler id of the focus handler to be removed from @component</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_extents" invoker="set_extents">
+        <doc xml:whitespace="preserve">Sets the extents of @component.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE or %FALSE whether the extents were set or not</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width to set for @component</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height to set for @component</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_position" invoker="set_position">
+        <doc xml:whitespace="preserve">Sets the postition of @component.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE or %FALSE whether or not the position was set or not</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_size" invoker="set_size">
+        <doc xml:whitespace="preserve">Set the size of the @component in terms of width and height.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE or %FALSE whether the size was set or not</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width to set for @component</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height to set for @component</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_focus_handler"
+              c:identifier="atk_component_add_focus_handler"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Add the specified handler to the set of functions to be called 
+when this object receives focus events (in or out). If the handler is
+already added it is not added again
+or zero if the handler was already added.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a handler id which can be used in atk_component_remove_focus_handler</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #AtkFocusHandler to be attached to @component</doc>
+            <type name="FocusHandler" c:type="AtkFocusHandler"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="contains" c:identifier="atk_component_contains">
+        <doc xml:whitespace="preserve">Checks whether the specified point is within the extent of the @component.
+the extent of the @component or not</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE or %FALSE indicating whether the specified point is within</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_alpha"
+              c:identifier="atk_component_get_alpha"
+              version="1.12">
+        <doc xml:whitespace="preserve">Returns the alpha value (i.e. the opacity) for this
+(fully opaque).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">An alpha value from 0 to 1.0, inclusive.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_extents" c:identifier="atk_component_get_extents">
+        <doc xml:whitespace="preserve">Gets the rectangle which gives the extent of the @component.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of #gint to put x coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of #gint to put y coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of #gint to put width</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of #gint to put height</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_layer" c:identifier="atk_component_get_layer">
+        <doc xml:whitespace="preserve">Gets the layer of the component.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an #AtkLayer which is the layer of the component</doc>
+          <type name="Layer" c:type="AtkLayer"/>
+        </return-value>
+      </method>
+      <method name="get_mdi_zorder"
+              c:identifier="atk_component_get_mdi_zorder">
+        <doc xml:whitespace="preserve">Gets the zorder of the component. The value G_MININT will be returned 
+if the layer of the component is not ATK_LAYER_MDI or ATK_LAYER_WINDOW.
+which the component is shown in relation to other components in the same 
+container.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gint which is the zorder of the component, i.e. the depth at</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_position" c:identifier="atk_component_get_position">
+        <doc xml:whitespace="preserve">Gets the position of @component in the form of 
+a point specifying @component's top-left corner.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of #gint to put x coordinate position</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of #gint to put y coordinate position</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size" c:identifier="atk_component_get_size">
+        <doc xml:whitespace="preserve">Gets the size of the @component in terms of width and height.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of #gint to put width of @component</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of #gint to put height of @component</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="grab_focus" c:identifier="atk_component_grab_focus">
+        <doc xml:whitespace="preserve">Grabs focus for this @component.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="ref_accessible_at_point"
+              c:identifier="atk_component_ref_accessible_at_point"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets a reference to the accessible child, if one exists, at the
+coordinate point specified by @x and @y.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a reference to the accessible child, if one exists</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_focus_handler"
+              c:identifier="atk_component_remove_focus_handler">
+        <doc xml:whitespace="preserve">Remove the handler specified by @handler_id from the list of
+functions to be executed when this object receives focus events 
+(in or out).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the handler id of the focus handler to be removed from @component</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_extents" c:identifier="atk_component_set_extents">
+        <doc xml:whitespace="preserve">Sets the extents of @component.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE or %FALSE whether the extents were set or not</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width to set for @component</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height to set for @component</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_position" c:identifier="atk_component_set_position">
+        <doc xml:whitespace="preserve">Sets the postition of @component.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE or %FALSE whether or not the position was set or not</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_size" c:identifier="atk_component_set_size">
+        <doc xml:whitespace="preserve">Set the size of the @component in terms of width and height.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE or %FALSE whether the size was set or not</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width to set for @component</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height to set for @component</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="bounds-changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Rectangle"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="ComponentIface"
+            c:type="AtkComponentIface"
+            glib:is-gtype-struct-for="Component">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="add_focus_handler" introspectable="0">
+        <callback name="add_focus_handler" introspectable="0">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a handler id which can be used in atk_component_remove_focus_handler</doc>
+            <type name="guint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="component" transfer-ownership="none">
+              <type name="Component" c:type="AtkComponent*"/>
+            </parameter>
+            <parameter name="handler" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The #AtkFocusHandler to be attached to @component</doc>
+              <type name="FocusHandler" c:type="AtkFocusHandler"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="contains">
+        <callback name="contains">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE or %FALSE indicating whether the specified point is within</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="component" transfer-ownership="none">
+              <type name="Component" c:type="AtkComponent*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <doc xml:whitespace="preserve">x coordinate</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <doc xml:whitespace="preserve">y coordinate</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="coord_type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
+              <type name="CoordType" c:type="AtkCoordType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="ref_accessible_at_point" introspectable="0">
+        <callback name="ref_accessible_at_point" introspectable="0">
+          <return-value>
+            <doc xml:whitespace="preserve">a reference to the accessible child, if one exists</doc>
+            <type name="Object" c:type="AtkObject*"/>
+          </return-value>
+          <parameters>
+            <parameter name="component" transfer-ownership="none">
+              <type name="Component" c:type="AtkComponent*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <doc xml:whitespace="preserve">x coordinate</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <doc xml:whitespace="preserve">y coordinate</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="coord_type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
+              <type name="CoordType" c:type="AtkCoordType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_extents">
+        <callback name="get_extents">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="component" transfer-ownership="none">
+              <type name="Component" c:type="AtkComponent*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <doc xml:whitespace="preserve">address of #gint to put x coordinate</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <doc xml:whitespace="preserve">address of #gint to put y coordinate</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <doc xml:whitespace="preserve">address of #gint to put width</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <doc xml:whitespace="preserve">address of #gint to put height</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="coord_type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
+              <type name="CoordType" c:type="AtkCoordType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_position">
+        <callback name="get_position">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="component" transfer-ownership="none">
+              <type name="Component" c:type="AtkComponent*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <doc xml:whitespace="preserve">address of #gint to put x coordinate position</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <doc xml:whitespace="preserve">address of #gint to put y coordinate position</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="coord_type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
+              <type name="CoordType" c:type="AtkCoordType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_size">
+        <callback name="get_size">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="component" transfer-ownership="none">
+              <type name="Component" c:type="AtkComponent*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <doc xml:whitespace="preserve">address of #gint to put width of @component</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <doc xml:whitespace="preserve">address of #gint to put height of @component</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="grab_focus">
+        <callback name="grab_focus">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="component" transfer-ownership="none">
+              <type name="Component" c:type="AtkComponent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_focus_handler">
+        <callback name="remove_focus_handler">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="component" transfer-ownership="none">
+              <type name="Component" c:type="AtkComponent*"/>
+            </parameter>
+            <parameter name="handler_id" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the handler id of the focus handler to be removed from @component</doc>
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_extents">
+        <callback name="set_extents">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE or %FALSE whether the extents were set or not</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="component" transfer-ownership="none">
+              <type name="Component" c:type="AtkComponent*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <doc xml:whitespace="preserve">x coordinate</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <doc xml:whitespace="preserve">y coordinate</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <doc xml:whitespace="preserve">width to set for @component</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <doc xml:whitespace="preserve">height to set for @component</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="coord_type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
+              <type name="CoordType" c:type="AtkCoordType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_position">
+        <callback name="set_position">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE or %FALSE whether or not the position was set or not</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="component" transfer-ownership="none">
+              <type name="Component" c:type="AtkComponent*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <doc xml:whitespace="preserve">x coordinate</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <doc xml:whitespace="preserve">y coordinate</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="coord_type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
+              <type name="CoordType" c:type="AtkCoordType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_size">
+        <callback name="set_size">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE or %FALSE whether the size was set or not</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="component" transfer-ownership="none">
+              <type name="Component" c:type="AtkComponent*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <doc xml:whitespace="preserve">width to set for @component</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <doc xml:whitespace="preserve">height to set for @component</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_layer">
+        <callback name="get_layer">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">an #AtkLayer which is the layer of the component</doc>
+            <type name="Layer" c:type="AtkLayer"/>
+          </return-value>
+          <parameters>
+            <parameter name="component" transfer-ownership="none">
+              <type name="Component" c:type="AtkComponent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_mdi_zorder">
+        <callback name="get_mdi_zorder">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gint which is the zorder of the component, i.e. the depth at</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="component" transfer-ownership="none">
+              <type name="Component" c:type="AtkComponent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="bounds_changed">
+        <callback name="bounds_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="component" transfer-ownership="none">
+              <type name="Component" c:type="AtkComponent*"/>
+            </parameter>
+            <parameter name="bounds" transfer-ownership="none">
+              <type name="Rectangle" c:type="AtkRectangle*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_alpha">
+        <callback name="get_alpha">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">An alpha value from 0 to 1.0, inclusive.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </return-value>
+          <parameters>
+            <parameter name="component" transfer-ownership="none">
+              <type name="Component" c:type="AtkComponent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="CoordType"
+                 glib:type-name="AtkCoordType"
+                 glib:get-type="atk_coord_type_get_type"
+                 c:type="AtkCoordType">
+      <member name="screen"
+              value="0"
+              c:identifier="ATK_XY_SCREEN"
+              glib:nick="screen"/>
+      <member name="window"
+              value="1"
+              c:identifier="ATK_XY_WINDOW"
+              glib:nick="window"/>
+    </enumeration>
+    <interface name="Document"
+               c:symbol-prefix="document"
+               c:type="AtkDocument"
+               glib:type-name="AtkDocument"
+               glib:get-type="atk_document_get_type"
+               glib:type-struct="DocumentIface">
+      <virtual-method name="get_document"
+                      invoker="get_document"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Gets a %gpointer that points to an instance of the DOM.  It is
+up to the caller to check atk_document_get_type to determine
+how to cast this pointer.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a %gpointer that points to an instance of the DOM.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_document_attribute_value">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_document_attributes" introspectable="0">
+        <return-value>
+          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_document_locale">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_document_type" invoker="get_document_type">
+        <doc xml:whitespace="preserve">Gets a string indicating the document type.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string indicating the document type</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_document_attribute">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="attribute_value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_attribute_value"
+              c:identifier="atk_document_get_attribute_value"
+              version="1.12">
+        <doc xml:whitespace="preserve">document, or NULL if a value for #attribute_name has not been specified
+for this document.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string value associated with the named attribute for this</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a character string representing the name of the attribute whose value is being queried.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attributes"
+              c:identifier="atk_document_get_attributes"
+              version="1.12"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets an AtkAttributeSet which describes document-wide
+attributes as name-value pairs.
+set name-value-pair attributes associated with this document
+as a whole.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">An AtkAttributeSet containing the explicitly</doc>
+          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+        </return-value>
+      </method>
+      <method name="get_document"
+              c:identifier="atk_document_get_document"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets a %gpointer that points to an instance of the DOM.  It is
+up to the caller to check atk_document_get_type to determine
+how to cast this pointer.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a %gpointer that points to an instance of the DOM.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="get_document_type"
+              c:identifier="atk_document_get_document_type">
+        <doc xml:whitespace="preserve">Gets a string indicating the document type.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string indicating the document type</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_locale" c:identifier="atk_document_get_locale">
+        <doc xml:whitespace="preserve">Gets a UTF-8 string indicating the POSIX-style LC_MESSAGES locale
+of the content of this document instance.  Individual
+text substrings or images within this document may have
+a different locale, see atk_text_get_attributes and
+atk_image_get_image_locale.
+locale of the document content as a whole, or NULL if
+the document content does not specify a locale.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a UTF-8 string indicating the POSIX-style LC_MESSAGES</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_attribute_value"
+              c:identifier="atk_document_set_attribute_value"
+              version="1.12">
+        <doc xml:whitespace="preserve">for this document, FALSE otherwise (e.g. if the document does not
+allow the attribute to be modified).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if #value is successfully associated with #attribute_name</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a character string representing the name of the attribute whose value is being set.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="attribute_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string value to be associated with #attribute_name.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="load-complete">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="load-stopped">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="reload">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </interface>
+    <record name="DocumentIface"
+            c:type="AtkDocumentIface"
+            glib:is-gtype-struct-for="Document">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_document_type">
+        <callback name="get_document_type">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string indicating the document type</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="document" transfer-ownership="none">
+              <type name="Document" c:type="AtkDocument*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_document" introspectable="0">
+        <callback name="get_document" introspectable="0">
+          <return-value>
+            <doc xml:whitespace="preserve">a %gpointer that points to an instance of the DOM.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </return-value>
+          <parameters>
+            <parameter name="document" transfer-ownership="none">
+              <type name="Document" c:type="AtkDocument*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_document_locale">
+        <callback name="get_document_locale">
+          <return-value transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="document" transfer-ownership="none">
+              <type name="Document" c:type="AtkDocument*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_document_attributes" introspectable="0">
+        <callback name="get_document_attributes" introspectable="0">
+          <return-value>
+            <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+          </return-value>
+          <parameters>
+            <parameter name="document" transfer-ownership="none">
+              <type name="Document" c:type="AtkDocument*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_document_attribute_value">
+        <callback name="get_document_attribute_value">
+          <return-value transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="document" transfer-ownership="none">
+              <type name="Document" c:type="AtkDocument*"/>
+            </parameter>
+            <parameter name="attribute_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_document_attribute">
+        <callback name="set_document_attribute">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="document" transfer-ownership="none">
+              <type name="Document" c:type="AtkDocument*"/>
+            </parameter>
+            <parameter name="attribute_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="attribute_value" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pad1">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+      <field name="pad2">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+      <field name="pad3">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+      <field name="pad4">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+    </record>
+    <interface name="EditableText"
+               c:symbol-prefix="editable_text"
+               c:type="AtkEditableText"
+               glib:type-name="AtkEditableText"
+               glib:get-type="atk_editable_text_get_type"
+               glib:type-struct="EditableTextIface">
+      <virtual-method name="copy_text" invoker="copy_text">
+        <doc xml:whitespace="preserve">Copy text from @start_pos up to, but not including @end_pos 
+to the clipboard.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">end position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="cut_text" invoker="cut_text">
+        <doc xml:whitespace="preserve">Copy text from @start_pos up to, but not including @end_pos
+to the clipboard and then delete from the widget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">end position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="delete_text" invoker="delete_text">
+        <doc xml:whitespace="preserve">Delete text @start_pos up to, but not including @end_pos.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">end position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="insert_text" invoker="insert_text">
+        <doc xml:whitespace="preserve">Insert text at a given position.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text to insert</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of text to insert, in bytes</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The caller initializes this to the position at which to insert the text. After the call it points at the position after the newly inserted text.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="paste_text" invoker="paste_text">
+        <doc xml:whitespace="preserve">Paste text from clipboard to specified @position.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position to paste</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_run_attributes" invoker="set_run_attributes">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attrib_set" transfer-ownership="none">
+            <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+          </parameter>
+          <parameter name="start_offset" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_text_contents" invoker="set_text_contents">
+        <doc xml:whitespace="preserve">Set text contents of @text.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">string to set for text contents of @text</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="copy_text" c:identifier="atk_editable_text_copy_text">
+        <doc xml:whitespace="preserve">Copy text from @start_pos up to, but not including @end_pos 
+to the clipboard.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">end position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="cut_text" c:identifier="atk_editable_text_cut_text">
+        <doc xml:whitespace="preserve">Copy text from @start_pos up to, but not including @end_pos
+to the clipboard and then delete from the widget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">end position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_text" c:identifier="atk_editable_text_delete_text">
+        <doc xml:whitespace="preserve">Delete text @start_pos up to, but not including @end_pos.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">end position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_text" c:identifier="atk_editable_text_insert_text">
+        <doc xml:whitespace="preserve">Insert text at a given position.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text to insert</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of text to insert, in bytes</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The caller initializes this to the position at which to insert the text. After the call it points at the position after the newly inserted text.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="paste_text" c:identifier="atk_editable_text_paste_text">
+        <doc xml:whitespace="preserve">Paste text from clipboard to specified @position.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position to paste</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_run_attributes"
+              c:identifier="atk_editable_text_set_run_attributes">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attrib_set" transfer-ownership="none">
+            <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+          </parameter>
+          <parameter name="start_offset" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_text_contents"
+              c:identifier="atk_editable_text_set_text_contents">
+        <doc xml:whitespace="preserve">Set text contents of @text.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">string to set for text contents of @text</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="EditableTextIface"
+            c:type="AtkEditableTextIface"
+            glib:is-gtype-struct-for="EditableText">
+      <field name="parent_interface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="set_run_attributes">
+        <callback name="set_run_attributes">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="EditableText" c:type="AtkEditableText*"/>
+            </parameter>
+            <parameter name="attrib_set" transfer-ownership="none">
+              <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+            </parameter>
+            <parameter name="start_offset" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="end_offset" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_text_contents">
+        <callback name="set_text_contents">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="EditableText" c:type="AtkEditableText*"/>
+            </parameter>
+            <parameter name="string" transfer-ownership="none">
+              <doc xml:whitespace="preserve">string to set for text contents of @text</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="insert_text">
+        <callback name="insert_text">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="EditableText" c:type="AtkEditableText*"/>
+            </parameter>
+            <parameter name="string" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the text to insert</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="length" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the length of text to insert, in bytes</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="position" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The caller initializes this to the position at which to insert the text. After the call it points at the position after the newly inserted text.</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="copy_text">
+        <callback name="copy_text">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="EditableText" c:type="AtkEditableText*"/>
+            </parameter>
+            <parameter name="start_pos" transfer-ownership="none">
+              <doc xml:whitespace="preserve">start position</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="end_pos" transfer-ownership="none">
+              <doc xml:whitespace="preserve">end position</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cut_text">
+        <callback name="cut_text">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="EditableText" c:type="AtkEditableText*"/>
+            </parameter>
+            <parameter name="start_pos" transfer-ownership="none">
+              <doc xml:whitespace="preserve">start position</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="end_pos" transfer-ownership="none">
+              <doc xml:whitespace="preserve">end position</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delete_text">
+        <callback name="delete_text">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="EditableText" c:type="AtkEditableText*"/>
+            </parameter>
+            <parameter name="start_pos" transfer-ownership="none">
+              <doc xml:whitespace="preserve">start position</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="end_pos" transfer-ownership="none">
+              <doc xml:whitespace="preserve">end position</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="paste_text">
+        <callback name="paste_text">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="EditableText" c:type="AtkEditableText*"/>
+            </parameter>
+            <parameter name="position" transfer-ownership="none">
+              <doc xml:whitespace="preserve">position to paste</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pad1">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+      <field name="pad2">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+    </record>
+    <callback name="EventListener" c:type="AtkEventListener">
+      <doc xml:whitespace="preserve">A function which is called when an object emits a matching event,
+as used in #atk_add_focus_tracker.
+Currently the only events for which object-specific handlers are
+supported are events of type "focus:".  Most clients of ATK will prefer to 
+attach signal handlers for the various ATK signals instead.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An #AtkObject instance for whom the callback will be called when the specified event (e.g. 'focus:') takes place.</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="EventListenerInit" c:type="AtkEventListenerInit">
+      <doc xml:whitespace="preserve">An #AtkEventListenerInit function is a special function that is
+called in order to initialize the per-object event registration system
+used by #AtkEventListener, if any preparation is required.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <callback name="FocusHandler" c:type="AtkFocusHandler">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter transfer-ownership="none">
+          <type name="Object" c:type="AtkObject*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="Function" c:type="AtkFunction">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="GObjectAccessible"
+           c:symbol-prefix="gobject_accessible"
+           c:type="AtkGObjectAccessible"
+           parent="Object"
+           glib:type-name="AtkGObjectAccessible"
+           glib:get-type="atk_gobject_accessible_get_type"
+           glib:type-struct="GObjectAccessibleClass">
+      <function name="for_object"
+                c:identifier="atk_gobject_accessible_for_object"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Gets the accessible object for the specified @obj.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a #AtkObject which is the accessible object for the @obj</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="obj" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_object"
+              c:identifier="atk_gobject_accessible_get_object"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the GObject for which @obj is the accessible object.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a #GObject which is the object for which @obj is the accessible object</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+      </method>
+      <field name="parent">
+        <type name="Object" c:type="AtkObject"/>
+      </field>
+    </class>
+    <record name="GObjectAccessibleClass"
+            c:type="AtkGObjectAccessibleClass"
+            glib:is-gtype-struct-for="GObjectAccessible">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="AtkObjectClass"/>
+      </field>
+      <field name="pad1">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+      <field name="pad2">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+    </record>
+    <class name="Hyperlink"
+           c:symbol-prefix="hyperlink"
+           c:type="AtkHyperlink"
+           parent="GObject.Object"
+           glib:type-name="AtkHyperlink"
+           glib:get-type="atk_hyperlink_get_type"
+           glib:type-struct="HyperlinkClass">
+      <implements name="Action"/>
+      <virtual-method name="get_end_index" invoker="get_end_index">
+        <doc xml:whitespace="preserve">Gets the index with the hypertext document at which this link ends.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index with the hypertext document at which this link ends</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_n_anchors" invoker="get_n_anchors">
+        <doc xml:whitespace="preserve">Gets the number of anchors associated with this hyperlink.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of anchors associated with this hyperlink</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_object"
+                      invoker="get_object"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Returns the item associated with this hyperlinks nth anchor.
+For instance, the returned #AtkObject will implement #AtkText
+if @link_ is a text hyperlink, #AtkImage if @link_ is an image
+hyperlink etc. 
+Multiple anchors are primarily used by client-side image maps.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">an #AtkObject associated with this hyperlinks i-th anchor</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a (zero-index) integer specifying the desired anchor</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_start_index" invoker="get_start_index">
+        <doc xml:whitespace="preserve">Gets the index with the hypertext document at which this link begins.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index with the hypertext document at which this link begins</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_uri" invoker="get_uri">
+        <doc xml:whitespace="preserve">Get a the URI associated with the anchor specified 
+by @i of @link_. 
+Multiple anchors are primarily used by client-side image maps.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a string specifying the URI</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a (zero-index) integer specifying the desired anchor</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="is_selected_link">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="is_valid" invoker="is_valid">
+        <doc xml:whitespace="preserve">Since the document that a link is associated with may have changed
+this method returns %TRUE if the link is still valid (with
+respect to the document it references) and %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether or not this link is still valid</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="link_state">
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_end_index" c:identifier="atk_hyperlink_get_end_index">
+        <doc xml:whitespace="preserve">Gets the index with the hypertext document at which this link ends.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index with the hypertext document at which this link ends</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_n_anchors" c:identifier="atk_hyperlink_get_n_anchors">
+        <doc xml:whitespace="preserve">Gets the number of anchors associated with this hyperlink.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of anchors associated with this hyperlink</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_object"
+              c:identifier="atk_hyperlink_get_object"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns the item associated with this hyperlinks nth anchor.
+For instance, the returned #AtkObject will implement #AtkText
+if @link_ is a text hyperlink, #AtkImage if @link_ is an image
+hyperlink etc. 
+Multiple anchors are primarily used by client-side image maps.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">an #AtkObject associated with this hyperlinks i-th anchor</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a (zero-index) integer specifying the desired anchor</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_start_index"
+              c:identifier="atk_hyperlink_get_start_index">
+        <doc xml:whitespace="preserve">Gets the index with the hypertext document at which this link begins.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index with the hypertext document at which this link begins</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_uri" c:identifier="atk_hyperlink_get_uri">
+        <doc xml:whitespace="preserve">Get a the URI associated with the anchor specified 
+by @i of @link_. 
+Multiple anchors are primarily used by client-side image maps.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a string specifying the URI</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a (zero-index) integer specifying the desired anchor</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_inline" c:identifier="atk_hyperlink_is_inline">
+        <doc xml:whitespace="preserve">Indicates whether the link currently displays some or all of its
+content inline.  Ordinary HTML links will usually return
+%FALSE, but an inline &amp;lt;src&amp;gt; HTML element will return
+%TRUE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether or not this link displays its content inline.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_valid" c:identifier="atk_hyperlink_is_valid">
+        <doc xml:whitespace="preserve">Since the document that a link is associated with may have changed
+this method returns %TRUE if the link is still valid (with
+respect to the document it references) and %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether or not this link is still valid</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="end-index" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="number-of-anchors" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="selected-link" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="start-index" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <glib:signal name="link-activated">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="HyperlinkClass"
+            c:type="AtkHyperlinkClass"
+            glib:is-gtype-struct-for="Hyperlink">
+      <field name="parent">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_uri">
+        <callback name="get_uri">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a string specifying the URI</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="link_" transfer-ownership="none">
+              <type name="Hyperlink" c:type="AtkHyperlink*"/>
+            </parameter>
+            <parameter name="i" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a (zero-index) integer specifying the desired anchor</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_object" introspectable="0">
+        <callback name="get_object" introspectable="0">
+          <return-value>
+            <doc xml:whitespace="preserve">an #AtkObject associated with this hyperlinks i-th anchor</doc>
+            <type name="Object" c:type="AtkObject*"/>
+          </return-value>
+          <parameters>
+            <parameter name="link_" transfer-ownership="none">
+              <type name="Hyperlink" c:type="AtkHyperlink*"/>
+            </parameter>
+            <parameter name="i" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a (zero-index) integer specifying the desired anchor</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_end_index">
+        <callback name="get_end_index">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index with the hypertext document at which this link ends</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="link_" transfer-ownership="none">
+              <type name="Hyperlink" c:type="AtkHyperlink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_start_index">
+        <callback name="get_start_index">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index with the hypertext document at which this link begins</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="link_" transfer-ownership="none">
+              <type name="Hyperlink" c:type="AtkHyperlink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_valid">
+        <callback name="is_valid">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether or not this link is still valid</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="link_" transfer-ownership="none">
+              <type name="Hyperlink" c:type="AtkHyperlink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_n_anchors">
+        <callback name="get_n_anchors">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of anchors associated with this hyperlink</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="link_" transfer-ownership="none">
+              <type name="Hyperlink" c:type="AtkHyperlink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="link_state">
+        <callback name="link_state">
+          <return-value transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="link_" transfer-ownership="none">
+              <type name="Hyperlink" c:type="AtkHyperlink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_selected_link">
+        <callback name="is_selected_link">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="link_" transfer-ownership="none">
+              <type name="Hyperlink" c:type="AtkHyperlink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="link_activated">
+        <callback name="link_activated">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="link_" transfer-ownership="none">
+              <type name="Hyperlink" c:type="AtkHyperlink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pad1">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+    </record>
+    <interface name="HyperlinkImpl"
+               c:symbol-prefix="hyperlink_impl"
+               c:type="AtkHyperlinkImpl"
+               glib:type-name="AtkHyperlinkImpl"
+               glib:get-type="atk_hyperlink_impl_get_type"
+               glib:type-struct="HyperlinkImplIface">
+      <virtual-method name="get_hyperlink"
+                      invoker="get_hyperlink"
+                      version="1.12"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Gets the hyperlink associated with this object.
+Returns an AtkHyperlink object which points to this implementing AtkObject.</doc>
+        <return-value>
+          <type name="Hyperlink" c:type="AtkHyperlink*"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_hyperlink"
+              c:identifier="atk_hyperlink_impl_get_hyperlink"
+              version="1.12"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the hyperlink associated with this object.
+Returns an AtkHyperlink object which points to this implementing AtkObject.</doc>
+        <return-value>
+          <type name="Hyperlink" c:type="AtkHyperlink*"/>
+        </return-value>
+      </method>
+    </interface>
+    <record name="HyperlinkImplIface"
+            c:type="AtkHyperlinkImplIface"
+            glib:is-gtype-struct-for="HyperlinkImpl">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_hyperlink" introspectable="0">
+        <callback name="get_hyperlink" introspectable="0">
+          <return-value>
+            <type name="Hyperlink" c:type="AtkHyperlink*"/>
+          </return-value>
+          <parameters>
+            <parameter name="impl" transfer-ownership="none">
+              <type name="HyperlinkImpl" c:type="AtkHyperlinkImpl*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pad1">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+    </record>
+    <bitfield name="HyperlinkStateFlags"
+              glib:type-name="AtkHyperlinkStateFlags"
+              glib:get-type="atk_hyperlink_state_flags_get_type"
+              c:type="AtkHyperlinkStateFlags">
+      <member name="inline"
+              value="1"
+              c:identifier="ATK_HYPERLINK_IS_INLINE"
+              glib:nick="inline"/>
+    </bitfield>
+    <interface name="Hypertext"
+               c:symbol-prefix="hypertext"
+               c:type="AtkHypertext"
+               glib:type-name="AtkHypertext"
+               glib:get-type="atk_hypertext_get_type"
+               glib:type-struct="HypertextIface">
+      <virtual-method name="get_link" invoker="get_link" introspectable="0">
+        <doc xml:whitespace="preserve">Gets the link in this hypertext document at index 
+index @link_index</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the link in this hypertext document at</doc>
+          <type name="Hyperlink" c:type="AtkHyperlink*"/>
+        </return-value>
+        <parameters>
+          <parameter name="link_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an integer specifying the desired link</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_link_index" invoker="get_link_index">
+        <doc xml:whitespace="preserve">Gets the index into the array of hyperlinks that is associated with
+the character specified by @char_index.
+or -1 if there is no hyperlink associated with this character.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an index into the array of hyperlinks in @hypertext,</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="char_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a character index</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_n_links" invoker="get_n_links">
+        <doc xml:whitespace="preserve">Gets the number of links within this hypertext document.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of links within this hypertext document</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_link"
+              c:identifier="atk_hypertext_get_link"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the link in this hypertext document at index 
+index @link_index</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the link in this hypertext document at</doc>
+          <type name="Hyperlink" c:type="AtkHyperlink*"/>
+        </return-value>
+        <parameters>
+          <parameter name="link_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an integer specifying the desired link</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_link_index"
+              c:identifier="atk_hypertext_get_link_index">
+        <doc xml:whitespace="preserve">Gets the index into the array of hyperlinks that is associated with
+the character specified by @char_index.
+or -1 if there is no hyperlink associated with this character.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an index into the array of hyperlinks in @hypertext,</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="char_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a character index</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_links" c:identifier="atk_hypertext_get_n_links">
+        <doc xml:whitespace="preserve">Gets the number of links within this hypertext document.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of links within this hypertext document</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <glib:signal name="link-selected">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="HypertextIface"
+            c:type="AtkHypertextIface"
+            glib:is-gtype-struct-for="Hypertext">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_link" introspectable="0">
+        <callback name="get_link" introspectable="0">
+          <return-value>
+            <doc xml:whitespace="preserve">the link in this hypertext document at</doc>
+            <type name="Hyperlink" c:type="AtkHyperlink*"/>
+          </return-value>
+          <parameters>
+            <parameter name="hypertext" transfer-ownership="none">
+              <type name="Hypertext" c:type="AtkHypertext*"/>
+            </parameter>
+            <parameter name="link_index" transfer-ownership="none">
+              <doc xml:whitespace="preserve">an integer specifying the desired link</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_n_links">
+        <callback name="get_n_links">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of links within this hypertext document</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="hypertext" transfer-ownership="none">
+              <type name="Hypertext" c:type="AtkHypertext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_link_index">
+        <callback name="get_link_index">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">an index into the array of hyperlinks in @hypertext,</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="hypertext" transfer-ownership="none">
+              <type name="Hypertext" c:type="AtkHypertext*"/>
+            </parameter>
+            <parameter name="char_index" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a character index</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="link_selected">
+        <callback name="link_selected">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="hypertext" transfer-ownership="none">
+              <type name="Hypertext" c:type="AtkHypertext*"/>
+            </parameter>
+            <parameter name="link_index" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pad1">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+      <field name="pad2">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+      <field name="pad3">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+    </record>
+    <interface name="Image"
+               c:symbol-prefix="image"
+               c:type="AtkImage"
+               glib:type-name="AtkImage"
+               glib:get-type="atk_image_get_type"
+               glib:type-struct="ImageIface">
+      <virtual-method name="get_image_description"
+                      invoker="get_image_description">
+        <doc xml:whitespace="preserve">Get a textual description of this image.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string representing the image description</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_image_locale" invoker="get_image_locale">
+        <doc xml:whitespace="preserve">Since ATK 1.12
+Returns a string corresponding to the POSIX LC_MESSAGES locale used by the image description, or NULL if the image does not specify a locale.</doc>
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_image_position" invoker="get_image_position">
+        <doc xml:whitespace="preserve">Gets the position of the image in the form of a point specifying the
+images top-left corner.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of #gint to put x coordinate position; otherwise, -1 if value cannot be obtained.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of #gint to put y coordinate position; otherwise, -1 if value cannot be obtained.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_image_size" invoker="get_image_size">
+        <doc xml:whitespace="preserve">Get the width and height in pixels for the specified image.
+The values of @width and @height are returned as -1 if the
+values cannot be obtained (for instance, if the object is not onscreen).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">filled with the image width, or -1 if the value cannot be obtained.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">filled with the image height, or -1 if the value cannot be obtained.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_image_description"
+                      invoker="set_image_description">
+        <doc xml:whitespace="preserve">Sets the textual description for this image.
+not be completed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">boolean TRUE, or FALSE if operation could</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="description" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string description to set for @image</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_image_description"
+              c:identifier="atk_image_get_image_description">
+        <doc xml:whitespace="preserve">Get a textual description of this image.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string representing the image description</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_image_locale"
+              c:identifier="atk_image_get_image_locale">
+        <doc xml:whitespace="preserve">Since ATK 1.12
+Returns a string corresponding to the POSIX LC_MESSAGES locale used by the image description, or NULL if the image does not specify a locale.</doc>
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_image_position"
+              c:identifier="atk_image_get_image_position">
+        <doc xml:whitespace="preserve">Gets the position of the image in the form of a point specifying the
+images top-left corner.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of #gint to put x coordinate position; otherwise, -1 if value cannot be obtained.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of #gint to put y coordinate position; otherwise, -1 if value cannot be obtained.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_image_size" c:identifier="atk_image_get_image_size">
+        <doc xml:whitespace="preserve">Get the width and height in pixels for the specified image.
+The values of @width and @height are returned as -1 if the
+values cannot be obtained (for instance, if the object is not onscreen).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">filled with the image width, or -1 if the value cannot be obtained.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">filled with the image height, or -1 if the value cannot be obtained.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_image_description"
+              c:identifier="atk_image_set_image_description">
+        <doc xml:whitespace="preserve">Sets the textual description for this image.
+not be completed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">boolean TRUE, or FALSE if operation could</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="description" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string description to set for @image</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="ImageIface"
+            c:type="AtkImageIface"
+            glib:is-gtype-struct-for="Image">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_image_position">
+        <callback name="get_image_position">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="image" transfer-ownership="none">
+              <type name="Image" c:type="AtkImage*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <doc xml:whitespace="preserve">address of #gint to put x coordinate position; otherwise, -1 if value cannot be obtained.</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <doc xml:whitespace="preserve">address of #gint to put y coordinate position; otherwise, -1 if value cannot be obtained.</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="coord_type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
+              <type name="CoordType" c:type="AtkCoordType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_image_description">
+        <callback name="get_image_description">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string representing the image description</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="image" transfer-ownership="none">
+              <type name="Image" c:type="AtkImage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_image_size">
+        <callback name="get_image_size">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="image" transfer-ownership="none">
+              <type name="Image" c:type="AtkImage*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <doc xml:whitespace="preserve">filled with the image width, or -1 if the value cannot be obtained.</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <doc xml:whitespace="preserve">filled with the image height, or -1 if the value cannot be obtained.</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_image_description">
+        <callback name="set_image_description">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">boolean TRUE, or FALSE if operation could</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="image" transfer-ownership="none">
+              <type name="Image" c:type="AtkImage*"/>
+            </parameter>
+            <parameter name="description" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a string description to set for @image</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_image_locale">
+        <callback name="get_image_locale">
+          <return-value transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="image" transfer-ownership="none">
+              <type name="Image" c:type="AtkImage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pad1">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+    </record>
+    <record name="Implementor" c:type="AtkImplementor" disguised="1">
+      <method name="ref_accessible"
+              c:identifier="atk_implementor_ref_accessible"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets a reference to an object's #AtkObject implementation, if
+the object implements #AtkObjectIface</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a reference to an object's #AtkObject implementation</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+      </method>
+    </record>
+    <interface name="ImplementorIface"
+               c:symbol-prefix="implementor"
+               c:type="AtkImplementorIface"
+               glib:type-name="AtkImplementorIface"
+               glib:get-type="atk_implementor_get_type">
+    </interface>
+    <record name="KeyEventStruct" c:type="AtkKeyEventStruct">
+      <doc xml:whitespace="preserve">Encapsulates information about a key event.</doc>
+      <field name="type" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="state" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="keyval" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="length" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="string" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="keycode" writable="1">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="timestamp" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+    </record>
+    <enumeration name="KeyEventType"
+                 glib:type-name="AtkKeyEventType"
+                 glib:get-type="atk_key_event_type_get_type"
+                 c:type="AtkKeyEventType">
+      <member name="press"
+              value="0"
+              c:identifier="ATK_KEY_EVENT_PRESS"
+              glib:nick="press"/>
+      <member name="release"
+              value="1"
+              c:identifier="ATK_KEY_EVENT_RELEASE"
+              glib:nick="release"/>
+      <member name="last_defined"
+              value="2"
+              c:identifier="ATK_KEY_EVENT_LAST_DEFINED"
+              glib:nick="last-defined"/>
+    </enumeration>
+    <callback name="KeySnoopFunc" c:type="AtkKeySnoopFunc">
+      <doc xml:whitespace="preserve">An #AtkKeySnoopFunc is a type of callback which is called whenever a key event occurs, 
+if registered via atk_add_key_event_listener.  It allows for pre-emptive 
+interception of key events via the return code as described below.
+discarded without being passed to the normal GUI recipient; FALSE (zero) if the 
+event dispatch to the client application should proceed as normal.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE (nonzero) if the event emission should be stopped and the event</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="event" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an AtkKeyEventStruct containing information about the key event for which notification is being given.</doc>
+          <type name="KeyEventStruct" c:type="AtkKeyEventStruct*"/>
+        </parameter>
+        <parameter name="func_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a block of data which will be passed to the event listener, on notification.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="Layer"
+                 glib:type-name="AtkLayer"
+                 glib:get-type="atk_layer_get_type"
+                 c:type="AtkLayer">
+      <member name="invalid"
+              value="0"
+              c:identifier="ATK_LAYER_INVALID"
+              glib:nick="invalid"/>
+      <member name="background"
+              value="1"
+              c:identifier="ATK_LAYER_BACKGROUND"
+              glib:nick="background"/>
+      <member name="canvas"
+              value="2"
+              c:identifier="ATK_LAYER_CANVAS"
+              glib:nick="canvas"/>
+      <member name="widget"
+              value="3"
+              c:identifier="ATK_LAYER_WIDGET"
+              glib:nick="widget"/>
+      <member name="mdi"
+              value="4"
+              c:identifier="ATK_LAYER_MDI"
+              glib:nick="mdi"/>
+      <member name="popup"
+              value="5"
+              c:identifier="ATK_LAYER_POPUP"
+              glib:nick="popup"/>
+      <member name="overlay"
+              value="6"
+              c:identifier="ATK_LAYER_OVERLAY"
+              glib:nick="overlay"/>
+      <member name="window"
+              value="7"
+              c:identifier="ATK_LAYER_WINDOW"
+              glib:nick="window"/>
+    </enumeration>
+    <class name="Misc"
+           c:symbol-prefix="misc"
+           c:type="AtkMisc"
+           parent="GObject.Object"
+           glib:type-name="AtkMisc"
+           glib:get-type="atk_misc_get_type"
+           glib:type-struct="MiscClass">
+      <function name="get_instance"
+                c:identifier="atk_misc_get_instance"
+                version="1.13">
+        <doc xml:whitespace="preserve">Obtain the singleton instance of AtkMisc for this application.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The singleton instance of AtkMisc for this application.</doc>
+          <type name="Misc" c:type="AtkMisc*"/>
+        </return-value>
+      </function>
+      <virtual-method name="threads_enter"
+                      invoker="threads_enter"
+                      version="1.13">
+        <doc xml:whitespace="preserve">Take the thread mutex for the GUI toolkit, 
+if one exists. 
+(This method is implemented by the toolkit ATK implementation layer;
+for instance, for GTK+, GAIL implements this via GDK_THREADS_ENTER).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="threads_leave"
+                      invoker="threads_leave"
+                      version="1.13">
+        <doc xml:whitespace="preserve">Release the thread mutex for the GUI toolkit, 
+if one exists. This method, and atk_misc_threads_enter, 
+are needed in some situations by threaded application code which 
+services ATK requests, since fulfilling ATK requests often
+requires calling into the GUI toolkit.  If a long-running or
+potentially blocking call takes place inside such a block, it should
+be bracketed by atk_misc_threads_leave/atk_misc_threads_enter calls.
+(This method is implemented by the toolkit ATK implementation layer;
+for instance, for GTK+, GAIL implements this via GDK_THREADS_LEAVE).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="threads_enter"
+              c:identifier="atk_misc_threads_enter"
+              version="1.13">
+        <doc xml:whitespace="preserve">Take the thread mutex for the GUI toolkit, 
+if one exists. 
+(This method is implemented by the toolkit ATK implementation layer;
+for instance, for GTK+, GAIL implements this via GDK_THREADS_ENTER).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="threads_leave"
+              c:identifier="atk_misc_threads_leave"
+              version="1.13">
+        <doc xml:whitespace="preserve">Release the thread mutex for the GUI toolkit, 
+if one exists. This method, and atk_misc_threads_enter, 
+are needed in some situations by threaded application code which 
+services ATK requests, since fulfilling ATK requests often
+requires calling into the GUI toolkit.  If a long-running or
+potentially blocking call takes place inside such a block, it should
+be bracketed by atk_misc_threads_leave/atk_misc_threads_enter calls.
+(This method is implemented by the toolkit ATK implementation layer;
+for instance, for GTK+, GAIL implements this via GDK_THREADS_LEAVE).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+    </class>
+    <record name="MiscClass"
+            c:type="AtkMiscClass"
+            glib:is-gtype-struct-for="Misc">
+      <field name="parent">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="threads_enter">
+        <callback name="threads_enter">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="misc" transfer-ownership="none">
+              <type name="Misc" c:type="AtkMisc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="threads_leave">
+        <callback name="threads_leave">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="misc" transfer-ownership="none">
+              <type name="Misc" c:type="AtkMisc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="vfuncs">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="32">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <class name="NoOpObject"
+           c:symbol-prefix="no_op_object"
+           c:type="AtkNoOpObject"
+           parent="Object"
+           glib:type-name="AtkNoOpObject"
+           glib:get-type="atk_no_op_object_get_type"
+           glib:type-struct="NoOpObjectClass">
+      <implements name="Action"/>
+      <implements name="Component"/>
+      <implements name="Document"/>
+      <implements name="EditableText"/>
+      <implements name="Hypertext"/>
+      <implements name="Image"/>
+      <implements name="Selection"/>
+      <implements name="Table"/>
+      <implements name="Text"/>
+      <implements name="Value"/>
+      <constructor name="new" c:identifier="atk_no_op_object_new">
+        <doc xml:whitespace="preserve">Provides a default (non-functioning stub) #AtkObject.
+Application maintainers should not use this method.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a default (non-functioning stub) #AtkObject</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="obj" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <field name="parent">
+        <type name="Object" c:type="AtkObject"/>
+      </field>
+    </class>
+    <record name="NoOpObjectClass"
+            c:type="AtkNoOpObjectClass"
+            glib:is-gtype-struct-for="NoOpObject">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="AtkObjectClass"/>
+      </field>
+    </record>
+    <class name="NoOpObjectFactory"
+           c:symbol-prefix="no_op_object_factory"
+           c:type="AtkNoOpObjectFactory"
+           parent="ObjectFactory"
+           glib:type-name="AtkNoOpObjectFactory"
+           glib:get-type="atk_no_op_object_factory_get_type"
+           glib:type-struct="NoOpObjectFactoryClass">
+      <constructor name="new" c:identifier="atk_no_op_object_factory_new">
+        <doc xml:whitespace="preserve">Creates an instance of an #AtkObjectFactory which generates primitive
+(non-functioning) #AtkObjects.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">an instance of an #AtkObjectFactory</doc>
+          <type name="ObjectFactory" c:type="AtkObjectFactory*"/>
+        </return-value>
+      </constructor>
+      <field name="parent">
+        <type name="ObjectFactory" c:type="AtkObjectFactory"/>
+      </field>
+    </class>
+    <record name="NoOpObjectFactoryClass"
+            c:type="AtkNoOpObjectFactoryClass"
+            glib:is-gtype-struct-for="NoOpObjectFactory">
+      <field name="parent_class">
+        <type name="ObjectFactoryClass" c:type="AtkObjectFactoryClass"/>
+      </field>
+    </record>
+    <class name="Object"
+           c:symbol-prefix="object"
+           c:type="AtkObject"
+           parent="GObject.Object"
+           glib:type-name="AtkObject"
+           glib:get-type="atk_object_get_type"
+           glib:type-struct="ObjectClass">
+      <virtual-method name="connect_property_change_handler"
+                      invoker="connect_property_change_handler"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Specifies a function to be called when a property changes value.
+atk_object_remove_property_change_handler()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #guint which is the handler id used in</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler" transfer-ownership="none">
+            <type name="PropertyChangeHandler"
+                  c:type="AtkPropertyChangeHandler*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_attributes"
+                      invoker="get_attributes"
+                      version="1.12"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Get a list of properties applied to this object as a whole, as an #AtkAttributeSet consisting of 
+name-value pairs. As such these attributes may be considered weakly-typed properties or annotations, 
+as distinct from strongly-typed object data available via other get/set methods.
+Not all objects have explicit "name-value pair" #AtkAttributeSet properties.
+the object, or an empty set if the object has no name-value pair attributes assigned to it.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">an #AtkAttributeSet consisting of all explicit properties/annotations applied to</doc>
+          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_description" invoker="get_description">
+        <doc xml:whitespace="preserve">Gets the accessible description of the accessible.
+of the accessible.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a character string representing the accessible description</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_index_in_parent" invoker="get_index_in_parent">
+        <doc xml:whitespace="preserve">Gets the 0-based index of this accessible in its parent; returns -1 if the
+accessible does not have an accessible parent.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an integer which is the index of the accessible in its parent</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_layer">
+        <return-value transfer-ownership="none">
+          <type name="Layer" c:type="AtkLayer"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_mdi_zorder">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_n_children">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_name" invoker="get_name">
+        <doc xml:whitespace="preserve">Gets the accessible name of the accessible.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a character string representing the accessible name of the object.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_parent"
+                      invoker="get_parent"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Gets the accessible parent of the accessible.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a #AtkObject representing the accessible parent of the accessible</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_role" invoker="get_role">
+        <doc xml:whitespace="preserve">Gets the role of the accessible.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an #AtkRole which is the role of the accessible</doc>
+          <type name="Role" c:type="AtkRole"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="initialize" invoker="initialize">
+        <doc xml:whitespace="preserve">This function is called when implementing subclasses of #AtkObject.
+It does initialization required for the new object. It is intended
+that this function should called only in the ..._new() functions used
+to create an instance of a subclass of #AtkObject</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gpointer which identifies the object for which the AtkObject was created.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="ref_child" introspectable="0">
+        <return-value>
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="ref_relation_set"
+                      invoker="ref_relation_set"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Gets the #AtkRelationSet associated with the object.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">an #AtkRelationSet representing the relation set of the object.</doc>
+          <type name="RelationSet" c:type="AtkRelationSet*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="ref_state_set"
+                      invoker="ref_state_set"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Gets a reference to the state set of the accessible; the caller must
+unreference it when it is no longer needed.
+set of the accessible</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a reference to an #AtkStateSet which is the state</doc>
+          <type name="StateSet" c:type="AtkStateSet*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="remove_property_change_handler"
+                      invoker="remove_property_change_handler">
+        <doc xml:whitespace="preserve">Removes a property change handler.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler_id" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_description" invoker="set_description">
+        <doc xml:whitespace="preserve">Sets the accessible description of the accessible.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="description" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_name" invoker="set_name">
+        <doc xml:whitespace="preserve">Sets the accessible name of the accessible.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a character string to be set as the accessible name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_parent" invoker="set_parent">
+        <doc xml:whitespace="preserve">Sets the accessible parent of the accessible.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_role" invoker="set_role">
+        <doc xml:whitespace="preserve">Sets the role of the accessible.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="role" transfer-ownership="none">
+            <type name="Role" c:type="AtkRole"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_relationship"
+              c:identifier="atk_object_add_relationship">
+        <doc xml:whitespace="preserve">Adds a relationship of the specified type with the specified target.
+Returns TRUE if the relationship is added.</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="relationship" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #AtkRelationType of the relation</doc>
+            <type name="RelationType" c:type="AtkRelationType"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #AtkObject which is to be the target of the relation.</doc>
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_property_change_handler"
+              c:identifier="atk_object_connect_property_change_handler"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Specifies a function to be called when a property changes value.
+atk_object_remove_property_change_handler()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #guint which is the handler id used in</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler" transfer-ownership="none">
+            <type name="PropertyChangeHandler"
+                  c:type="AtkPropertyChangeHandler*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attributes"
+              c:identifier="atk_object_get_attributes"
+              version="1.12"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Get a list of properties applied to this object as a whole, as an #AtkAttributeSet consisting of 
+name-value pairs. As such these attributes may be considered weakly-typed properties or annotations, 
+as distinct from strongly-typed object data available via other get/set methods.
+Not all objects have explicit "name-value pair" #AtkAttributeSet properties.
+the object, or an empty set if the object has no name-value pair attributes assigned to it.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">an #AtkAttributeSet consisting of all explicit properties/annotations applied to</doc>
+          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+        </return-value>
+      </method>
+      <method name="get_description" c:identifier="atk_object_get_description">
+        <doc xml:whitespace="preserve">Gets the accessible description of the accessible.
+of the accessible.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a character string representing the accessible description</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_index_in_parent"
+              c:identifier="atk_object_get_index_in_parent">
+        <doc xml:whitespace="preserve">Gets the 0-based index of this accessible in its parent; returns -1 if the
+accessible does not have an accessible parent.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an integer which is the index of the accessible in its parent</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_n_accessible_children"
+              c:identifier="atk_object_get_n_accessible_children">
+        <doc xml:whitespace="preserve">Gets the number of accessible children of the accessible.
+of the accessible.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an integer representing the number of accessible children</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_name" c:identifier="atk_object_get_name">
+        <doc xml:whitespace="preserve">Gets the accessible name of the accessible.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a character string representing the accessible name of the object.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_parent"
+              c:identifier="atk_object_get_parent"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the accessible parent of the accessible.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a #AtkObject representing the accessible parent of the accessible</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+      </method>
+      <method name="get_role" c:identifier="atk_object_get_role">
+        <doc xml:whitespace="preserve">Gets the role of the accessible.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an #AtkRole which is the role of the accessible</doc>
+          <type name="Role" c:type="AtkRole"/>
+        </return-value>
+      </method>
+      <method name="initialize" c:identifier="atk_object_initialize">
+        <doc xml:whitespace="preserve">This function is called when implementing subclasses of #AtkObject.
+It does initialization required for the new object. It is intended
+that this function should called only in the ..._new() functions used
+to create an instance of a subclass of #AtkObject</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gpointer which identifies the object for which the AtkObject was created.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="notify_state_change"
+              c:identifier="atk_object_notify_state_change">
+        <doc xml:whitespace="preserve">Emits a state-change signal for the specified state.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an #AtkState whose state is changed</doc>
+            <type name="State" c:type="AtkState"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref_accessible_child"
+              c:identifier="atk_object_ref_accessible_child"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets a reference to the specified accessible child of the object.
+The accessible children are 0-based so the first accessible child is
+at index 0, the second at index 1 and so on.
+of the accessible.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">an #AtkObject representing the specified accessible child</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gint representing the position of the child, starting from 0</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref_relation_set"
+              c:identifier="atk_object_ref_relation_set"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the #AtkRelationSet associated with the object.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">an #AtkRelationSet representing the relation set of the object.</doc>
+          <type name="RelationSet" c:type="AtkRelationSet*"/>
+        </return-value>
+      </method>
+      <method name="ref_state_set"
+              c:identifier="atk_object_ref_state_set"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets a reference to the state set of the accessible; the caller must
+unreference it when it is no longer needed.
+set of the accessible</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a reference to an #AtkStateSet which is the state</doc>
+          <type name="StateSet" c:type="AtkStateSet*"/>
+        </return-value>
+      </method>
+      <method name="remove_property_change_handler"
+              c:identifier="atk_object_remove_property_change_handler">
+        <doc xml:whitespace="preserve">Removes a property change handler.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler_id" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_relationship"
+              c:identifier="atk_object_remove_relationship">
+        <doc xml:whitespace="preserve">Removes a relationship of the specified type with the specified target.
+Returns TRUE if the relationship is removed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="relationship" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #AtkRelationType of the relation</doc>
+            <type name="RelationType" c:type="AtkRelationType"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #AtkObject which is the target of the relation to be removed.</doc>
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_description" c:identifier="atk_object_set_description">
+        <doc xml:whitespace="preserve">Sets the accessible description of the accessible.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="description" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_name" c:identifier="atk_object_set_name">
+        <doc xml:whitespace="preserve">Sets the accessible name of the accessible.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a character string to be set as the accessible name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_parent" c:identifier="atk_object_set_parent">
+        <doc xml:whitespace="preserve">Sets the accessible parent of the accessible.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_role" c:identifier="atk_object_set_role">
+        <doc xml:whitespace="preserve">Sets the role of the accessible.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="role" transfer-ownership="none">
+            <type name="Role" c:type="AtkRole"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="accessible-component-layer" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="accessible-component-mdi-zorder"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="accessible-description"
+                writable="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="accessible-hypertext-nlinks" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="accessible-name" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="accessible-parent"
+                writable="1"
+                transfer-ownership="none">
+        <type name="Object"/>
+      </property>
+      <property name="accessible-role" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="accessible-table-caption"
+                writable="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="accessible-table-caption-object"
+                writable="1"
+                transfer-ownership="none">
+        <type name="Object"/>
+      </property>
+      <property name="accessible-table-column-description"
+                writable="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="accessible-table-column-header"
+                writable="1"
+                transfer-ownership="none">
+        <type name="Object"/>
+      </property>
+      <property name="accessible-table-row-description"
+                writable="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="accessible-table-row-header"
+                writable="1"
+                transfer-ownership="none">
+        <type name="Object"/>
+      </property>
+      <property name="accessible-table-summary"
+                writable="1"
+                transfer-ownership="none">
+        <type name="Object"/>
+      </property>
+      <property name="accessible-value" writable="1" transfer-ownership="none">
+        <type name="gdouble"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="description">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="name">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="accessible_parent">
+        <type name="Object" c:type="AtkObject*"/>
+      </field>
+      <field name="role">
+        <type name="Role" c:type="AtkRole"/>
+      </field>
+      <field name="relation_set">
+        <type name="RelationSet" c:type="AtkRelationSet*"/>
+      </field>
+      <field name="layer">
+        <type name="Layer" c:type="AtkLayer"/>
+      </field>
+      <glib:signal name="active-descendant-changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="children-changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="guint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="focus-event">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="property-change">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="state-change">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="visible-data-changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ObjectClass"
+            c:type="AtkObjectClass"
+            glib:is-gtype-struct-for="Object">
+      <field name="parent">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_name">
+        <callback name="get_name">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a character string representing the accessible name of the object.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_description">
+        <callback name="get_description">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a character string representing the accessible description</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_parent" introspectable="0">
+        <callback name="get_parent" introspectable="0">
+          <return-value>
+            <doc xml:whitespace="preserve">a #AtkObject representing the accessible parent of the accessible</doc>
+            <type name="Object" c:type="AtkObject*"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_n_children">
+        <callback name="get_n_children">
+          <return-value transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="ref_child" introspectable="0">
+        <callback name="ref_child" introspectable="0">
+          <return-value>
+            <type name="Object" c:type="AtkObject*"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+            <parameter name="i" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_index_in_parent">
+        <callback name="get_index_in_parent">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">an integer which is the index of the accessible in its parent</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="ref_relation_set" introspectable="0">
+        <callback name="ref_relation_set" introspectable="0">
+          <return-value>
+            <doc xml:whitespace="preserve">an #AtkRelationSet representing the relation set of the object.</doc>
+            <type name="RelationSet" c:type="AtkRelationSet*"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_role">
+        <callback name="get_role">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">an #AtkRole which is the role of the accessible</doc>
+            <type name="Role" c:type="AtkRole"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_layer">
+        <callback name="get_layer">
+          <return-value transfer-ownership="none">
+            <type name="Layer" c:type="AtkLayer"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_mdi_zorder">
+        <callback name="get_mdi_zorder">
+          <return-value transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="ref_state_set" introspectable="0">
+        <callback name="ref_state_set" introspectable="0">
+          <return-value>
+            <doc xml:whitespace="preserve">a reference to an #AtkStateSet which is the state</doc>
+            <type name="StateSet" c:type="AtkStateSet*"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_name">
+        <callback name="set_name">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a character string to be set as the accessible name</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_description">
+        <callback name="set_description">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+            <parameter name="description" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_parent">
+        <callback name="set_parent">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_role">
+        <callback name="set_role">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+            <parameter name="role" transfer-ownership="none">
+              <type name="Role" c:type="AtkRole"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="connect_property_change_handler" introspectable="0">
+        <callback name="connect_property_change_handler" introspectable="0">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #guint which is the handler id used in</doc>
+            <type name="guint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+            <parameter name="handler" transfer-ownership="none">
+              <type name="PropertyChangeHandler"
+                    c:type="AtkPropertyChangeHandler*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_property_change_handler">
+        <callback name="remove_property_change_handler">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+            <parameter name="handler_id" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="initialize">
+        <callback name="initialize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gpointer which identifies the object for which the AtkObject was created.</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="children_changed">
+        <callback name="children_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+            <parameter name="change_index" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="changed_child" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="focus_event">
+        <callback name="focus_event">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+            <parameter name="focus_in" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="property_change" introspectable="0">
+        <callback name="property_change" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+            <parameter name="values" transfer-ownership="none">
+              <type c:type="AtkPropertyValues*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="state_change">
+        <callback name="state_change">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="state_set" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="visible_data_changed">
+        <callback name="visible_data_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="active_descendant_changed">
+        <callback name="active_descendant_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_attributes" introspectable="0">
+        <callback name="get_attributes" introspectable="0">
+          <return-value>
+            <doc xml:whitespace="preserve">an #AtkAttributeSet consisting of all explicit properties/annotations applied to</doc>
+            <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pad1">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+      <field name="pad2">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+    </record>
+    <class name="ObjectFactory"
+           c:symbol-prefix="object_factory"
+           c:type="AtkObjectFactory"
+           parent="GObject.Object"
+           glib:type-name="AtkObjectFactory"
+           glib:get-type="atk_object_factory_get_type"
+           glib:type-struct="ObjectFactoryClass">
+      <virtual-method name="invalidate" invoker="invalidate">
+        <doc xml:whitespace="preserve">Inform @factory that it is no longer being used to create
+accessibles. When called, @factory may need to inform
+#AtkObjects which it has created that they need to be re-instantiated.
+in object registries.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="create_accessible"
+              c:identifier="atk_object_factory_create_accessible"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Provides an #AtkObject that implements an accessibility interface 
+on behalf of @obj
+on behalf of @obj</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">an #AtkObject that implements an accessibility interface</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="obj" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_accessible_type"
+              c:identifier="atk_object_factory_get_accessible_type">
+        <doc xml:whitespace="preserve">Gets the GType of the accessible which is created by the factory. 
+The value G_TYPE_INVALID is returned if no type if found.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of the accessible which is created by the @factory.</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="invalidate" c:identifier="atk_object_factory_invalidate">
+        <doc xml:whitespace="preserve">Inform @factory that it is no longer being used to create
+accessibles. When called, @factory may need to inform
+#AtkObjects which it has created that they need to be re-instantiated.
+in object registries.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+    </class>
+    <record name="ObjectFactoryClass"
+            c:type="AtkObjectFactoryClass"
+            glib:is-gtype-struct-for="ObjectFactory">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="create_accessible" introspectable="0">
+        <callback name="create_accessible" introspectable="0">
+          <return-value>
+            <type name="Object" c:type="AtkObject*"/>
+          </return-value>
+          <parameters>
+            <parameter name="obj" transfer-ownership="none">
+              <type name="GObject.Object" c:type="GObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="invalidate">
+        <callback name="invalidate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="factory" transfer-ownership="none">
+              <type name="ObjectFactory" c:type="AtkObjectFactory*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_accessible_type">
+        <callback name="get_accessible_type">
+          <return-value transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="pad1">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+      <field name="pad2">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+    </record>
+    <class name="Plug"
+           c:symbol-prefix="plug"
+           c:type="AtkPlug"
+           parent="Object"
+           glib:type-name="AtkPlug"
+           glib:get-type="atk_plug_get_type"
+           glib:type-struct="PlugClass">
+      <implements name="Component"/>
+      <constructor name="new" c:identifier="atk_plug_new">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="get_object_id">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_id" c:identifier="atk_plug_get_id">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <field name="parent">
+        <type name="Object" c:type="AtkObject"/>
+      </field>
+    </class>
+    <record name="PlugClass"
+            c:type="AtkPlugClass"
+            glib:is-gtype-struct-for="Plug">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="AtkObjectClass"/>
+      </field>
+      <field name="get_object_id">
+        <callback name="get_object_id">
+          <return-value transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="obj" transfer-ownership="none">
+              <type name="Plug" c:type="AtkPlug*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <callback name="PropertyChangeHandler"
+              c:type="AtkPropertyChangeHandler"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter transfer-ownership="none">
+          <type name="Object" c:type="AtkObject*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <type c:type="AtkPropertyValues*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="Rectangle"
+            c:type="AtkRectangle"
+            glib:type-name="AtkRectangle"
+            glib:get-type="atk_rectangle_get_type"
+            c:symbol-prefix="rectangle">
+      <field name="x" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="width" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="height" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+    </record>
+    <class name="Registry"
+           c:symbol-prefix="registry"
+           parent="GObject.Object"
+           glib:type-name="AtkRegistry"
+           glib:get-type="atk_registry_get_type">
+      <method name="get_factory"
+              c:identifier="atk_registry_get_factory"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets an #AtkObjectFactory appropriate for creating #AtkObjects
+appropriate for @type.
+appropriate for @type.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">an #AtkObjectFactory appropriate for creating #AtkObjects</doc>
+          <type name="ObjectFactory" c:type="AtkObjectFactory*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GType with which to look up the associated #AtkObjectFactory</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_factory_type"
+              c:identifier="atk_registry_get_factory_type">
+        <doc xml:whitespace="preserve">Provides a #GType indicating the #AtkObjectFactory subclass
+associated with @type.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GType associated with type @type</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GType with which to look up the associated #AtkObjectFactory subclass</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_factory_type"
+              c:identifier="atk_registry_set_factory_type">
+        <doc xml:whitespace="preserve">Associate an #AtkObjectFactory subclass with a #GType. Note:
+The associated @factory_type will thereafter be responsible for
+the creation of new #AtkObject implementations for instances
+appropriate for @type.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an #AtkObject type</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="factory_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an #AtkObjectFactory type to associate with @type.  Must implement AtkObject appropriate for @type.</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <class name="Relation"
+           c:symbol-prefix="relation"
+           c:type="AtkRelation"
+           parent="GObject.Object"
+           glib:type-name="AtkRelation"
+           glib:get-type="atk_relation_get_type"
+           glib:type-struct="RelationClass">
+      <constructor name="new" c:identifier="atk_relation_new">
+        <doc xml:whitespace="preserve">Create a new relation for the specified key and the specified list
+of targets.  See also atk_object_add_relationship().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to a new #AtkRelation</doc>
+          <type name="Relation" c:type="AtkRelation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="targets" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of pointers to #AtkObjects</doc>
+            <type name="Object" c:type="AtkObject**"/>
+          </parameter>
+          <parameter name="n_targets" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of #AtkObjects pointed to by @targets</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="relationship" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an #AtkRelationType with which to create the new #AtkRelation</doc>
+            <type name="RelationType" c:type="AtkRelationType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add_target"
+              c:identifier="atk_relation_add_target"
+              version="1.9">
+        <doc xml:whitespace="preserve">Adds the specified AtkObject to the target for the relation, if it is
+not already present.  See also atk_object_add_relationship().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="target" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an #AtkObject</doc>
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_relation_type"
+              c:identifier="atk_relation_get_relation_type">
+        <doc xml:whitespace="preserve">Gets the type of @relation</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of @relation</doc>
+          <type name="RelationType" c:type="AtkRelationType"/>
+        </return-value>
+      </method>
+      <method name="get_target"
+              c:identifier="atk_relation_get_target"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the target list of @relation</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the target list of @relation</doc>
+          <array name="GLib.PtrArray" c:type="GPtrArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="remove_target" c:identifier="atk_relation_remove_target">
+        <doc xml:whitespace="preserve">Remove the specified AtkObject from the target for the relation.
+Returns TRUE if the removal is successful.</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="target" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an #AtkObject</doc>
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="relation-type" writable="1" transfer-ownership="none">
+        <type name="RelationType"/>
+      </property>
+      <property name="target" writable="1" transfer-ownership="none">
+        <type name="GObject.ValueArray"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="target">
+        <array name="GLib.PtrArray" c:type="GPtrArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+      <field name="relationship">
+        <type name="RelationType" c:type="AtkRelationType"/>
+      </field>
+    </class>
+    <record name="RelationClass"
+            c:type="AtkRelationClass"
+            glib:is-gtype-struct-for="Relation">
+      <field name="parent">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <class name="RelationSet"
+           c:symbol-prefix="relation_set"
+           c:type="AtkRelationSet"
+           parent="GObject.Object"
+           glib:type-name="AtkRelationSet"
+           glib:get-type="atk_relation_set_get_type"
+           glib:type-struct="RelationSetClass">
+      <constructor name="new" c:identifier="atk_relation_set_new">
+        <doc xml:whitespace="preserve">Creates a new empty relation set.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #AtkRelationSet</doc>
+          <type name="RelationSet" c:type="AtkRelationSet*"/>
+        </return-value>
+      </constructor>
+      <method name="add" c:identifier="atk_relation_set_add">
+        <doc xml:whitespace="preserve">Add a new relation to the current relation set if it is not already
+present.
+This function ref's the AtkRelation so the caller of this function
+should unref it to ensure that it will be destroyed when the AtkRelationSet
+is destroyed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="relation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an #AtkRelation</doc>
+            <type name="Relation" c:type="AtkRelation*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_relation_by_type"
+              c:identifier="atk_relation_set_add_relation_by_type"
+              version="1.9">
+        <doc xml:whitespace="preserve">Add a new relation of the specified type with the specified target to 
+the current relation set if the relation set does not contain a relation
+of that type. If it is does contain a relation of that typea the target
+is added to the relation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="relationship" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an #AtkRelationType</doc>
+            <type name="RelationType" c:type="AtkRelationType"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an #AtkObject</doc>
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="contains" c:identifier="atk_relation_set_contains">
+        <doc xml:whitespace="preserve">Determines whether the relation set contains a relation that matches the
+specified type.
+in @set, %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @relationship is the relationship type of a relation</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="relationship" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an #AtkRelationType</doc>
+            <type name="RelationType" c:type="AtkRelationType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_relations"
+              c:identifier="atk_relation_set_get_n_relations">
+        <doc xml:whitespace="preserve">Determines the number of relations in a relation set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an integer representing the number of relations in the set.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_relation"
+              c:identifier="atk_relation_set_get_relation"
+              introspectable="0">
+        <return-value>
+          <type name="Relation" c:type="AtkRelation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_relation_by_type"
+              c:identifier="atk_relation_set_get_relation_by_type"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Finds a relation that matches the specified type.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">an #AtkRelation, which is a relation matching the specified type.</doc>
+          <type name="Relation" c:type="AtkRelation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="relationship" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an #AtkRelationType</doc>
+            <type name="RelationType" c:type="AtkRelationType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove" c:identifier="atk_relation_set_remove">
+        <doc xml:whitespace="preserve">Removes a relation from the relation set.
+This function unref's the #AtkRelation so it will be deleted unless there
+is another reference to it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="relation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an #AtkRelation</doc>
+            <type name="Relation" c:type="AtkRelation*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="relations">
+        <array name="GLib.PtrArray" c:type="GPtrArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </class>
+    <record name="RelationSetClass"
+            c:type="AtkRelationSetClass"
+            glib:is-gtype-struct-for="RelationSet">
+      <field name="parent">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="pad1">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+      <field name="pad2">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+    </record>
+    <enumeration name="RelationType"
+                 glib:type-name="AtkRelationType"
+                 glib:get-type="atk_relation_type_get_type"
+                 c:type="AtkRelationType">
+      <member name="null"
+              value="0"
+              c:identifier="ATK_RELATION_NULL"
+              glib:nick="null"/>
+      <member name="controlled_by"
+              value="1"
+              c:identifier="ATK_RELATION_CONTROLLED_BY"
+              glib:nick="controlled-by"/>
+      <member name="controller_for"
+              value="2"
+              c:identifier="ATK_RELATION_CONTROLLER_FOR"
+              glib:nick="controller-for"/>
+      <member name="label_for"
+              value="3"
+              c:identifier="ATK_RELATION_LABEL_FOR"
+              glib:nick="label-for"/>
+      <member name="labelled_by"
+              value="4"
+              c:identifier="ATK_RELATION_LABELLED_BY"
+              glib:nick="labelled-by"/>
+      <member name="member_of"
+              value="5"
+              c:identifier="ATK_RELATION_MEMBER_OF"
+              glib:nick="member-of"/>
+      <member name="node_child_of"
+              value="6"
+              c:identifier="ATK_RELATION_NODE_CHILD_OF"
+              glib:nick="node-child-of"/>
+      <member name="flows_to"
+              value="7"
+              c:identifier="ATK_RELATION_FLOWS_TO"
+              glib:nick="flows-to"/>
+      <member name="flows_from"
+              value="8"
+              c:identifier="ATK_RELATION_FLOWS_FROM"
+              glib:nick="flows-from"/>
+      <member name="subwindow_of"
+              value="9"
+              c:identifier="ATK_RELATION_SUBWINDOW_OF"
+              glib:nick="subwindow-of"/>
+      <member name="embeds"
+              value="10"
+              c:identifier="ATK_RELATION_EMBEDS"
+              glib:nick="embeds"/>
+      <member name="embedded_by"
+              value="11"
+              c:identifier="ATK_RELATION_EMBEDDED_BY"
+              glib:nick="embedded-by"/>
+      <member name="popup_for"
+              value="12"
+              c:identifier="ATK_RELATION_POPUP_FOR"
+              glib:nick="popup-for"/>
+      <member name="parent_window_of"
+              value="13"
+              c:identifier="ATK_RELATION_PARENT_WINDOW_OF"
+              glib:nick="parent-window-of"/>
+      <member name="described_by"
+              value="14"
+              c:identifier="ATK_RELATION_DESCRIBED_BY"
+              glib:nick="described-by"/>
+      <member name="description_for"
+              value="15"
+              c:identifier="ATK_RELATION_DESCRIPTION_FOR"
+              glib:nick="description-for"/>
+      <member name="node_parent_of"
+              value="16"
+              c:identifier="ATK_RELATION_NODE_PARENT_OF"
+              glib:nick="node-parent-of"/>
+      <member name="last_defined"
+              value="17"
+              c:identifier="ATK_RELATION_LAST_DEFINED"
+              glib:nick="last-defined"/>
+    </enumeration>
+    <enumeration name="Role"
+                 glib:type-name="AtkRole"
+                 glib:get-type="atk_role_get_type"
+                 c:type="AtkRole">
+      <member name="invalid"
+              value="0"
+              c:identifier="ATK_ROLE_INVALID"
+              glib:nick="invalid"/>
+      <member name="accel_label"
+              value="1"
+              c:identifier="ATK_ROLE_ACCEL_LABEL"
+              glib:nick="accel-label"/>
+      <member name="alert"
+              value="2"
+              c:identifier="ATK_ROLE_ALERT"
+              glib:nick="alert"/>
+      <member name="animation"
+              value="3"
+              c:identifier="ATK_ROLE_ANIMATION"
+              glib:nick="animation"/>
+      <member name="arrow"
+              value="4"
+              c:identifier="ATK_ROLE_ARROW"
+              glib:nick="arrow"/>
+      <member name="calendar"
+              value="5"
+              c:identifier="ATK_ROLE_CALENDAR"
+              glib:nick="calendar"/>
+      <member name="canvas"
+              value="6"
+              c:identifier="ATK_ROLE_CANVAS"
+              glib:nick="canvas"/>
+      <member name="check_box"
+              value="7"
+              c:identifier="ATK_ROLE_CHECK_BOX"
+              glib:nick="check-box"/>
+      <member name="check_menu_item"
+              value="8"
+              c:identifier="ATK_ROLE_CHECK_MENU_ITEM"
+              glib:nick="check-menu-item"/>
+      <member name="color_chooser"
+              value="9"
+              c:identifier="ATK_ROLE_COLOR_CHOOSER"
+              glib:nick="color-chooser"/>
+      <member name="column_header"
+              value="10"
+              c:identifier="ATK_ROLE_COLUMN_HEADER"
+              glib:nick="column-header"/>
+      <member name="combo_box"
+              value="11"
+              c:identifier="ATK_ROLE_COMBO_BOX"
+              glib:nick="combo-box"/>
+      <member name="date_editor"
+              value="12"
+              c:identifier="ATK_ROLE_DATE_EDITOR"
+              glib:nick="date-editor"/>
+      <member name="desktop_icon"
+              value="13"
+              c:identifier="ATK_ROLE_DESKTOP_ICON"
+              glib:nick="desktop-icon"/>
+      <member name="desktop_frame"
+              value="14"
+              c:identifier="ATK_ROLE_DESKTOP_FRAME"
+              glib:nick="desktop-frame"/>
+      <member name="dial"
+              value="15"
+              c:identifier="ATK_ROLE_DIAL"
+              glib:nick="dial"/>
+      <member name="dialog"
+              value="16"
+              c:identifier="ATK_ROLE_DIALOG"
+              glib:nick="dialog"/>
+      <member name="directory_pane"
+              value="17"
+              c:identifier="ATK_ROLE_DIRECTORY_PANE"
+              glib:nick="directory-pane"/>
+      <member name="drawing_area"
+              value="18"
+              c:identifier="ATK_ROLE_DRAWING_AREA"
+              glib:nick="drawing-area"/>
+      <member name="file_chooser"
+              value="19"
+              c:identifier="ATK_ROLE_FILE_CHOOSER"
+              glib:nick="file-chooser"/>
+      <member name="filler"
+              value="20"
+              c:identifier="ATK_ROLE_FILLER"
+              glib:nick="filler"/>
+      <member name="font_chooser"
+              value="21"
+              c:identifier="ATK_ROLE_FONT_CHOOSER"
+              glib:nick="font-chooser"/>
+      <member name="frame"
+              value="22"
+              c:identifier="ATK_ROLE_FRAME"
+              glib:nick="frame"/>
+      <member name="glass_pane"
+              value="23"
+              c:identifier="ATK_ROLE_GLASS_PANE"
+              glib:nick="glass-pane"/>
+      <member name="html_container"
+              value="24"
+              c:identifier="ATK_ROLE_HTML_CONTAINER"
+              glib:nick="html-container"/>
+      <member name="icon"
+              value="25"
+              c:identifier="ATK_ROLE_ICON"
+              glib:nick="icon"/>
+      <member name="image"
+              value="26"
+              c:identifier="ATK_ROLE_IMAGE"
+              glib:nick="image"/>
+      <member name="internal_frame"
+              value="27"
+              c:identifier="ATK_ROLE_INTERNAL_FRAME"
+              glib:nick="internal-frame"/>
+      <member name="label"
+              value="28"
+              c:identifier="ATK_ROLE_LABEL"
+              glib:nick="label"/>
+      <member name="layered_pane"
+              value="29"
+              c:identifier="ATK_ROLE_LAYERED_PANE"
+              glib:nick="layered-pane"/>
+      <member name="list"
+              value="30"
+              c:identifier="ATK_ROLE_LIST"
+              glib:nick="list"/>
+      <member name="list_item"
+              value="31"
+              c:identifier="ATK_ROLE_LIST_ITEM"
+              glib:nick="list-item"/>
+      <member name="menu"
+              value="32"
+              c:identifier="ATK_ROLE_MENU"
+              glib:nick="menu"/>
+      <member name="menu_bar"
+              value="33"
+              c:identifier="ATK_ROLE_MENU_BAR"
+              glib:nick="menu-bar"/>
+      <member name="menu_item"
+              value="34"
+              c:identifier="ATK_ROLE_MENU_ITEM"
+              glib:nick="menu-item"/>
+      <member name="option_pane"
+              value="35"
+              c:identifier="ATK_ROLE_OPTION_PANE"
+              glib:nick="option-pane"/>
+      <member name="page_tab"
+              value="36"
+              c:identifier="ATK_ROLE_PAGE_TAB"
+              glib:nick="page-tab"/>
+      <member name="page_tab_list"
+              value="37"
+              c:identifier="ATK_ROLE_PAGE_TAB_LIST"
+              glib:nick="page-tab-list"/>
+      <member name="panel"
+              value="38"
+              c:identifier="ATK_ROLE_PANEL"
+              glib:nick="panel"/>
+      <member name="password_text"
+              value="39"
+              c:identifier="ATK_ROLE_PASSWORD_TEXT"
+              glib:nick="password-text"/>
+      <member name="popup_menu"
+              value="40"
+              c:identifier="ATK_ROLE_POPUP_MENU"
+              glib:nick="popup-menu"/>
+      <member name="progress_bar"
+              value="41"
+              c:identifier="ATK_ROLE_PROGRESS_BAR"
+              glib:nick="progress-bar"/>
+      <member name="push_button"
+              value="42"
+              c:identifier="ATK_ROLE_PUSH_BUTTON"
+              glib:nick="push-button"/>
+      <member name="radio_button"
+              value="43"
+              c:identifier="ATK_ROLE_RADIO_BUTTON"
+              glib:nick="radio-button"/>
+      <member name="radio_menu_item"
+              value="44"
+              c:identifier="ATK_ROLE_RADIO_MENU_ITEM"
+              glib:nick="radio-menu-item"/>
+      <member name="root_pane"
+              value="45"
+              c:identifier="ATK_ROLE_ROOT_PANE"
+              glib:nick="root-pane"/>
+      <member name="row_header"
+              value="46"
+              c:identifier="ATK_ROLE_ROW_HEADER"
+              glib:nick="row-header"/>
+      <member name="scroll_bar"
+              value="47"
+              c:identifier="ATK_ROLE_SCROLL_BAR"
+              glib:nick="scroll-bar"/>
+      <member name="scroll_pane"
+              value="48"
+              c:identifier="ATK_ROLE_SCROLL_PANE"
+              glib:nick="scroll-pane"/>
+      <member name="separator"
+              value="49"
+              c:identifier="ATK_ROLE_SEPARATOR"
+              glib:nick="separator"/>
+      <member name="slider"
+              value="50"
+              c:identifier="ATK_ROLE_SLIDER"
+              glib:nick="slider"/>
+      <member name="split_pane"
+              value="51"
+              c:identifier="ATK_ROLE_SPLIT_PANE"
+              glib:nick="split-pane"/>
+      <member name="spin_button"
+              value="52"
+              c:identifier="ATK_ROLE_SPIN_BUTTON"
+              glib:nick="spin-button"/>
+      <member name="statusbar"
+              value="53"
+              c:identifier="ATK_ROLE_STATUSBAR"
+              glib:nick="statusbar"/>
+      <member name="table"
+              value="54"
+              c:identifier="ATK_ROLE_TABLE"
+              glib:nick="table"/>
+      <member name="table_cell"
+              value="55"
+              c:identifier="ATK_ROLE_TABLE_CELL"
+              glib:nick="table-cell"/>
+      <member name="table_column_header"
+              value="56"
+              c:identifier="ATK_ROLE_TABLE_COLUMN_HEADER"
+              glib:nick="table-column-header"/>
+      <member name="table_row_header"
+              value="57"
+              c:identifier="ATK_ROLE_TABLE_ROW_HEADER"
+              glib:nick="table-row-header"/>
+      <member name="tear_off_menu_item"
+              value="58"
+              c:identifier="ATK_ROLE_TEAR_OFF_MENU_ITEM"
+              glib:nick="tear-off-menu-item"/>
+      <member name="terminal"
+              value="59"
+              c:identifier="ATK_ROLE_TERMINAL"
+              glib:nick="terminal"/>
+      <member name="text"
+              value="60"
+              c:identifier="ATK_ROLE_TEXT"
+              glib:nick="text"/>
+      <member name="toggle_button"
+              value="61"
+              c:identifier="ATK_ROLE_TOGGLE_BUTTON"
+              glib:nick="toggle-button"/>
+      <member name="tool_bar"
+              value="62"
+              c:identifier="ATK_ROLE_TOOL_BAR"
+              glib:nick="tool-bar"/>
+      <member name="tool_tip"
+              value="63"
+              c:identifier="ATK_ROLE_TOOL_TIP"
+              glib:nick="tool-tip"/>
+      <member name="tree"
+              value="64"
+              c:identifier="ATK_ROLE_TREE"
+              glib:nick="tree"/>
+      <member name="tree_table"
+              value="65"
+              c:identifier="ATK_ROLE_TREE_TABLE"
+              glib:nick="tree-table"/>
+      <member name="unknown"
+              value="66"
+              c:identifier="ATK_ROLE_UNKNOWN"
+              glib:nick="unknown"/>
+      <member name="viewport"
+              value="67"
+              c:identifier="ATK_ROLE_VIEWPORT"
+              glib:nick="viewport"/>
+      <member name="window"
+              value="68"
+              c:identifier="ATK_ROLE_WINDOW"
+              glib:nick="window"/>
+      <member name="header"
+              value="69"
+              c:identifier="ATK_ROLE_HEADER"
+              glib:nick="header"/>
+      <member name="footer"
+              value="70"
+              c:identifier="ATK_ROLE_FOOTER"
+              glib:nick="footer"/>
+      <member name="paragraph"
+              value="71"
+              c:identifier="ATK_ROLE_PARAGRAPH"
+              glib:nick="paragraph"/>
+      <member name="ruler"
+              value="72"
+              c:identifier="ATK_ROLE_RULER"
+              glib:nick="ruler"/>
+      <member name="application"
+              value="73"
+              c:identifier="ATK_ROLE_APPLICATION"
+              glib:nick="application"/>
+      <member name="autocomplete"
+              value="74"
+              c:identifier="ATK_ROLE_AUTOCOMPLETE"
+              glib:nick="autocomplete"/>
+      <member name="editbar"
+              value="75"
+              c:identifier="ATK_ROLE_EDITBAR"
+              glib:nick="editbar"/>
+      <member name="embedded"
+              value="76"
+              c:identifier="ATK_ROLE_EMBEDDED"
+              glib:nick="embedded"/>
+      <member name="entry"
+              value="77"
+              c:identifier="ATK_ROLE_ENTRY"
+              glib:nick="entry"/>
+      <member name="chart"
+              value="78"
+              c:identifier="ATK_ROLE_CHART"
+              glib:nick="chart"/>
+      <member name="caption"
+              value="79"
+              c:identifier="ATK_ROLE_CAPTION"
+              glib:nick="caption"/>
+      <member name="document_frame"
+              value="80"
+              c:identifier="ATK_ROLE_DOCUMENT_FRAME"
+              glib:nick="document-frame"/>
+      <member name="heading"
+              value="81"
+              c:identifier="ATK_ROLE_HEADING"
+              glib:nick="heading"/>
+      <member name="page"
+              value="82"
+              c:identifier="ATK_ROLE_PAGE"
+              glib:nick="page"/>
+      <member name="section"
+              value="83"
+              c:identifier="ATK_ROLE_SECTION"
+              glib:nick="section"/>
+      <member name="redundant_object"
+              value="84"
+              c:identifier="ATK_ROLE_REDUNDANT_OBJECT"
+              glib:nick="redundant-object"/>
+      <member name="form"
+              value="85"
+              c:identifier="ATK_ROLE_FORM"
+              glib:nick="form"/>
+      <member name="link"
+              value="86"
+              c:identifier="ATK_ROLE_LINK"
+              glib:nick="link"/>
+      <member name="input_method_window"
+              value="87"
+              c:identifier="ATK_ROLE_INPUT_METHOD_WINDOW"
+              glib:nick="input-method-window"/>
+      <member name="last_defined"
+              value="88"
+              c:identifier="ATK_ROLE_LAST_DEFINED"
+              glib:nick="last-defined"/>
+    </enumeration>
+    <interface name="Selection"
+               c:symbol-prefix="selection"
+               c:type="AtkSelection"
+               glib:type-name="AtkSelection"
+               glib:get-type="atk_selection_get_type"
+               glib:type-struct="SelectionIface">
+      <virtual-method name="add_selection" invoker="add_selection">
+        <doc xml:whitespace="preserve">Adds the specified accessible child of the object to the
+object's selection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if success, FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint specifying the child index.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="clear_selection" invoker="clear_selection">
+        <doc xml:whitespace="preserve">Clears the selection in the object so that no children in the object
+are selected.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if success, FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_selection_count" invoker="get_selection_count">
+        <doc xml:whitespace="preserve">Gets the number of accessible children currently selected.
+indication of whether AtkSelectionIface is implemented, they should
+use type checking/interface checking macros or the
+atk_get_accessible_value() convenience method.
+if @selection does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gint representing the number of items selected, or 0</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="is_child_selected" invoker="is_child_selected">
+        <doc xml:whitespace="preserve">Determines if the current child of this object is selected
+indication of whether AtkSelectionIface is implemented, they should
+use type checking/interface checking macros or the
+atk_get_accessible_value() convenience method.
+if @selection does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gboolean representing the specified child is selected, or 0</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint specifying the child index.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="ref_selection"
+                      invoker="ref_selection"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Gets a reference to the accessible object representing the specified 
+selected child of the object.
+indication of whether AtkSelectionIface is implemented, they should
+use type checking/interface checking macros or the
+atk_get_accessible_value() convenience method.
+if @selection does not implement this interface.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">an #AtkObject representing the selected accessible , or %NULL</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint specifying the index in the selection set.  (e.g. the ith selection as opposed to the ith child).</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove_selection" invoker="remove_selection">
+        <doc xml:whitespace="preserve">Removes the specified child of the object from the object's selection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if success, FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint specifying the index in the selection set.  (e.g. the ith selection as opposed to the ith child).</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="select_all_selection"
+                      invoker="select_all_selection">
+        <doc xml:whitespace="preserve">Causes every child of the object to be selected if the object
+supports multiple selections.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if success, FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <method name="add_selection" c:identifier="atk_selection_add_selection">
+        <doc xml:whitespace="preserve">Adds the specified accessible child of the object to the
+object's selection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if success, FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint specifying the child index.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear_selection"
+              c:identifier="atk_selection_clear_selection">
+        <doc xml:whitespace="preserve">Clears the selection in the object so that no children in the object
+are selected.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if success, FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_selection_count"
+              c:identifier="atk_selection_get_selection_count">
+        <doc xml:whitespace="preserve">Gets the number of accessible children currently selected.
+indication of whether AtkSelectionIface is implemented, they should
+use type checking/interface checking macros or the
+atk_get_accessible_value() convenience method.
+if @selection does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gint representing the number of items selected, or 0</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="is_child_selected"
+              c:identifier="atk_selection_is_child_selected">
+        <doc xml:whitespace="preserve">Determines if the current child of this object is selected
+indication of whether AtkSelectionIface is implemented, they should
+use type checking/interface checking macros or the
+atk_get_accessible_value() convenience method.
+if @selection does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gboolean representing the specified child is selected, or 0</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint specifying the child index.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref_selection"
+              c:identifier="atk_selection_ref_selection"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets a reference to the accessible object representing the specified 
+selected child of the object.
+indication of whether AtkSelectionIface is implemented, they should
+use type checking/interface checking macros or the
+atk_get_accessible_value() convenience method.
+if @selection does not implement this interface.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">an #AtkObject representing the selected accessible , or %NULL</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint specifying the index in the selection set.  (e.g. the ith selection as opposed to the ith child).</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_selection"
+              c:identifier="atk_selection_remove_selection">
+        <doc xml:whitespace="preserve">Removes the specified child of the object from the object's selection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if success, FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint specifying the index in the selection set.  (e.g. the ith selection as opposed to the ith child).</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_all_selection"
+              c:identifier="atk_selection_select_all_selection">
+        <doc xml:whitespace="preserve">Causes every child of the object to be selected if the object
+supports multiple selections.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if success, FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <glib:signal name="selection-changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </interface>
+    <record name="SelectionIface"
+            c:type="AtkSelectionIface"
+            glib:is-gtype-struct-for="Selection">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="add_selection">
+        <callback name="add_selection">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">TRUE if success, FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="selection" transfer-ownership="none">
+              <type name="Selection" c:type="AtkSelection*"/>
+            </parameter>
+            <parameter name="i" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint specifying the child index.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clear_selection">
+        <callback name="clear_selection">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">TRUE if success, FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="selection" transfer-ownership="none">
+              <type name="Selection" c:type="AtkSelection*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="ref_selection" introspectable="0">
+        <callback name="ref_selection" introspectable="0">
+          <return-value>
+            <doc xml:whitespace="preserve">an #AtkObject representing the selected accessible , or %NULL</doc>
+            <type name="Object" c:type="AtkObject*"/>
+          </return-value>
+          <parameters>
+            <parameter name="selection" transfer-ownership="none">
+              <type name="Selection" c:type="AtkSelection*"/>
+            </parameter>
+            <parameter name="i" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint specifying the index in the selection set.  (e.g. the ith selection as opposed to the ith child).</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_selection_count">
+        <callback name="get_selection_count">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gint representing the number of items selected, or 0</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="selection" transfer-ownership="none">
+              <type name="Selection" c:type="AtkSelection*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_child_selected">
+        <callback name="is_child_selected">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gboolean representing the specified child is selected, or 0</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="selection" transfer-ownership="none">
+              <type name="Selection" c:type="AtkSelection*"/>
+            </parameter>
+            <parameter name="i" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint specifying the child index.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_selection">
+        <callback name="remove_selection">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">TRUE if success, FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="selection" transfer-ownership="none">
+              <type name="Selection" c:type="AtkSelection*"/>
+            </parameter>
+            <parameter name="i" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint specifying the index in the selection set.  (e.g. the ith selection as opposed to the ith child).</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="select_all_selection">
+        <callback name="select_all_selection">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">TRUE if success, FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="selection" transfer-ownership="none">
+              <type name="Selection" c:type="AtkSelection*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="selection_changed">
+        <callback name="selection_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="selection" transfer-ownership="none">
+              <type name="Selection" c:type="AtkSelection*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pad1">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+      <field name="pad2">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+    </record>
+    <class name="Socket"
+           c:symbol-prefix="socket"
+           c:type="AtkSocket"
+           parent="Object"
+           glib:type-name="AtkSocket"
+           glib:get-type="atk_socket_get_type"
+           glib:type-struct="SocketClass">
+      <implements name="Component"/>
+      <constructor name="new" c:identifier="atk_socket_new">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="embed" invoker="embed">
+        <doc xml:whitespace="preserve">Embeds the children of an #AtkPlug as the children of the #AtkSocket.  The
+plug may be in the same process or in a different process.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="plug_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of an #AtkPlug</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="embed" c:identifier="atk_socket_embed">
+        <doc xml:whitespace="preserve">Embeds the children of an #AtkPlug as the children of the #AtkSocket.  The
+plug may be in the same process or in a different process.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="plug_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of an #AtkPlug</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_occupied" c:identifier="atk_socket_is_occupied">
+        <doc xml:whitespace="preserve">Determines whether or not the socket has an embedded plug.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if a plug is embedded in the socket</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <field name="parent">
+        <type name="Object" c:type="AtkObject"/>
+      </field>
+      <field name="embedded_plug_id">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </class>
+    <record name="SocketClass"
+            c:type="AtkSocketClass"
+            glib:is-gtype-struct-for="Socket">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="AtkObjectClass"/>
+      </field>
+      <field name="embed">
+        <callback name="embed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="obj" transfer-ownership="none">
+              <type name="Socket" c:type="AtkSocket*"/>
+            </parameter>
+            <parameter name="plug_id" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the ID of an #AtkPlug</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="StateSet"
+           c:symbol-prefix="state_set"
+           c:type="AtkStateSet"
+           parent="GObject.Object"
+           glib:type-name="AtkStateSet"
+           glib:get-type="atk_state_set_get_type"
+           glib:type-struct="StateSetClass">
+      <constructor name="new" c:identifier="atk_state_set_new">
+        <doc xml:whitespace="preserve">Creates a new empty state set.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #AtkStateSet</doc>
+          <type name="StateSet" c:type="AtkStateSet*"/>
+        </return-value>
+      </constructor>
+      <method name="add_state" c:identifier="atk_state_set_add_state">
+        <doc xml:whitespace="preserve">Add a new state for the specified type to the current state set if
+it is not already present.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if  the state for @type is not already in @set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an #AtkStateType</doc>
+            <type name="StateType" c:type="AtkStateType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_states" c:identifier="atk_state_set_add_states">
+        <doc xml:whitespace="preserve">Add the states for the specified types to the current state set.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="types" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of #AtkStateType</doc>
+            <type name="StateType" c:type="AtkStateType*"/>
+          </parameter>
+          <parameter name="n_types" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The number of elements in the array</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="and_sets"
+              c:identifier="atk_state_set_and_sets"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Constructs the intersection of the two sets, returning %NULL if the
+intersection is empty.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a new #AtkStateSet which is the intersection of the two sets.</doc>
+          <type name="StateSet" c:type="AtkStateSet*"/>
+        </return-value>
+        <parameters>
+          <parameter name="compare_set" transfer-ownership="none">
+            <doc xml:whitespace="preserve">another #AtkStateSet</doc>
+            <type name="StateSet" c:type="AtkStateSet*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear_states" c:identifier="atk_state_set_clear_states">
+        <doc xml:whitespace="preserve">Removes all states from the state set.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="contains_state"
+              c:identifier="atk_state_set_contains_state">
+        <doc xml:whitespace="preserve">Checks whether the state for the specified type is in the specified set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @type is the state type is in @set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an #AtkStateType</doc>
+            <type name="StateType" c:type="AtkStateType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="contains_states"
+              c:identifier="atk_state_set_contains_states">
+        <doc xml:whitespace="preserve">Checks whether the states for all the specified types are in the 
+specified set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if all the states for @type are in @set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="types" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of #AtkStateType</doc>
+            <type name="StateType" c:type="AtkStateType*"/>
+          </parameter>
+          <parameter name="n_types" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The number of elements in the array</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_empty" c:identifier="atk_state_set_is_empty">
+        <doc xml:whitespace="preserve">Checks whether the state set is empty, i.e. has no states set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @set has no states set, otherwise %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="or_sets"
+              c:identifier="atk_state_set_or_sets"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Constructs the union of the two sets.
+returning %NULL is empty.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a new #AtkStateSet which is the union of the two sets,</doc>
+          <type name="StateSet" c:type="AtkStateSet*"/>
+        </return-value>
+        <parameters>
+          <parameter name="compare_set" transfer-ownership="none">
+            <doc xml:whitespace="preserve">another #AtkStateSet</doc>
+            <type name="StateSet" c:type="AtkStateSet*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_state" c:identifier="atk_state_set_remove_state">
+        <doc xml:whitespace="preserve">Removes the state for the specified type from the state set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @type was the state type is in @set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an #AtkType</doc>
+            <type name="StateType" c:type="AtkStateType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="xor_sets"
+              c:identifier="atk_state_set_xor_sets"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Constructs the exclusive-or of the two sets, returning %NULL is empty.
+The set returned by this operation contains the states in exactly
+one of the two sets.
+in exactly one of the two sets.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a new #AtkStateSet which contains the states which are</doc>
+          <type name="StateSet" c:type="AtkStateSet*"/>
+        </return-value>
+        <parameters>
+          <parameter name="compare_set" transfer-ownership="none">
+            <doc xml:whitespace="preserve">another #AtkStateSet</doc>
+            <type name="StateSet" c:type="AtkStateSet*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+    </class>
+    <record name="StateSetClass"
+            c:type="AtkStateSetClass"
+            glib:is-gtype-struct-for="StateSet">
+      <field name="parent">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <enumeration name="StateType"
+                 glib:type-name="AtkStateType"
+                 glib:get-type="atk_state_type_get_type"
+                 c:type="AtkStateType">
+      <member name="invalid"
+              value="0"
+              c:identifier="ATK_STATE_INVALID"
+              glib:nick="invalid"/>
+      <member name="active"
+              value="1"
+              c:identifier="ATK_STATE_ACTIVE"
+              glib:nick="active"/>
+      <member name="armed"
+              value="2"
+              c:identifier="ATK_STATE_ARMED"
+              glib:nick="armed"/>
+      <member name="busy"
+              value="3"
+              c:identifier="ATK_STATE_BUSY"
+              glib:nick="busy"/>
+      <member name="checked"
+              value="4"
+              c:identifier="ATK_STATE_CHECKED"
+              glib:nick="checked"/>
+      <member name="defunct"
+              value="5"
+              c:identifier="ATK_STATE_DEFUNCT"
+              glib:nick="defunct"/>
+      <member name="editable"
+              value="6"
+              c:identifier="ATK_STATE_EDITABLE"
+              glib:nick="editable"/>
+      <member name="enabled"
+              value="7"
+              c:identifier="ATK_STATE_ENABLED"
+              glib:nick="enabled"/>
+      <member name="expandable"
+              value="8"
+              c:identifier="ATK_STATE_EXPANDABLE"
+              glib:nick="expandable"/>
+      <member name="expanded"
+              value="9"
+              c:identifier="ATK_STATE_EXPANDED"
+              glib:nick="expanded"/>
+      <member name="focusable"
+              value="10"
+              c:identifier="ATK_STATE_FOCUSABLE"
+              glib:nick="focusable"/>
+      <member name="focused"
+              value="11"
+              c:identifier="ATK_STATE_FOCUSED"
+              glib:nick="focused"/>
+      <member name="horizontal"
+              value="12"
+              c:identifier="ATK_STATE_HORIZONTAL"
+              glib:nick="horizontal"/>
+      <member name="iconified"
+              value="13"
+              c:identifier="ATK_STATE_ICONIFIED"
+              glib:nick="iconified"/>
+      <member name="modal"
+              value="14"
+              c:identifier="ATK_STATE_MODAL"
+              glib:nick="modal"/>
+      <member name="multi_line"
+              value="15"
+              c:identifier="ATK_STATE_MULTI_LINE"
+              glib:nick="multi-line"/>
+      <member name="multiselectable"
+              value="16"
+              c:identifier="ATK_STATE_MULTISELECTABLE"
+              glib:nick="multiselectable"/>
+      <member name="opaque"
+              value="17"
+              c:identifier="ATK_STATE_OPAQUE"
+              glib:nick="opaque"/>
+      <member name="pressed"
+              value="18"
+              c:identifier="ATK_STATE_PRESSED"
+              glib:nick="pressed"/>
+      <member name="resizable"
+              value="19"
+              c:identifier="ATK_STATE_RESIZABLE"
+              glib:nick="resizable"/>
+      <member name="selectable"
+              value="20"
+              c:identifier="ATK_STATE_SELECTABLE"
+              glib:nick="selectable"/>
+      <member name="selected"
+              value="21"
+              c:identifier="ATK_STATE_SELECTED"
+              glib:nick="selected"/>
+      <member name="sensitive"
+              value="22"
+              c:identifier="ATK_STATE_SENSITIVE"
+              glib:nick="sensitive"/>
+      <member name="showing"
+              value="23"
+              c:identifier="ATK_STATE_SHOWING"
+              glib:nick="showing"/>
+      <member name="single_line"
+              value="24"
+              c:identifier="ATK_STATE_SINGLE_LINE"
+              glib:nick="single-line"/>
+      <member name="stale"
+              value="25"
+              c:identifier="ATK_STATE_STALE"
+              glib:nick="stale"/>
+      <member name="transient"
+              value="26"
+              c:identifier="ATK_STATE_TRANSIENT"
+              glib:nick="transient"/>
+      <member name="vertical"
+              value="27"
+              c:identifier="ATK_STATE_VERTICAL"
+              glib:nick="vertical"/>
+      <member name="visible"
+              value="28"
+              c:identifier="ATK_STATE_VISIBLE"
+              glib:nick="visible"/>
+      <member name="manages_descendants"
+              value="29"
+              c:identifier="ATK_STATE_MANAGES_DESCENDANTS"
+              glib:nick="manages-descendants"/>
+      <member name="indeterminate"
+              value="30"
+              c:identifier="ATK_STATE_INDETERMINATE"
+              glib:nick="indeterminate"/>
+      <member name="truncated"
+              value="31"
+              c:identifier="ATK_STATE_TRUNCATED"
+              glib:nick="truncated"/>
+      <member name="required"
+              value="32"
+              c:identifier="ATK_STATE_REQUIRED"
+              glib:nick="required"/>
+      <member name="invalid_entry"
+              value="33"
+              c:identifier="ATK_STATE_INVALID_ENTRY"
+              glib:nick="invalid-entry"/>
+      <member name="supports_autocompletion"
+              value="34"
+              c:identifier="ATK_STATE_SUPPORTS_AUTOCOMPLETION"
+              glib:nick="supports-autocompletion"/>
+      <member name="selectable_text"
+              value="35"
+              c:identifier="ATK_STATE_SELECTABLE_TEXT"
+              glib:nick="selectable-text"/>
+      <member name="default"
+              value="36"
+              c:identifier="ATK_STATE_DEFAULT"
+              glib:nick="default"/>
+      <member name="animated"
+              value="37"
+              c:identifier="ATK_STATE_ANIMATED"
+              glib:nick="animated"/>
+      <member name="visited"
+              value="38"
+              c:identifier="ATK_STATE_VISITED"
+              glib:nick="visited"/>
+      <member name="last_defined"
+              value="39"
+              c:identifier="ATK_STATE_LAST_DEFINED"
+              glib:nick="last-defined"/>
+    </enumeration>
+    <interface name="StreamableContent"
+               c:symbol-prefix="streamable_content"
+               c:type="AtkStreamableContent"
+               glib:type-name="AtkStreamableContent"
+               glib:get-type="atk_streamable_content_get_type"
+               glib:type-struct="StreamableContentIface">
+      <virtual-method name="get_mime_type" invoker="get_mime_type">
+        <doc xml:whitespace="preserve">Gets the character string of the specified mime type. The first mime
+type is at position 0, the second at position 1, and so on.
+should not free the character string.</doc>
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gint representing the position of the mime type starting from 0</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_n_mime_types" invoker="get_n_mime_types">
+        <doc xml:whitespace="preserve">Gets the number of mime types supported by this object.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gint which is the number of mime types supported by the object.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_stream"
+                      invoker="get_stream"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Gets the content in the specified mime type.
+type.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">A #GIOChannel which contains the content in the specified mime</doc>
+          <type name="GLib.IOChannel" c:type="GIOChannel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mime_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gchar* representing the mime type</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_uri" invoker="get_uri" version="1.12">
+        <doc xml:whitespace="preserve">Get a string representing a URI in IETF standard format
+(see http://www.ietf.org/rfc/rfc2396.txt) from which the object's content
+may be streamed in the specified mime-type, if one is available.
+If mime_type is NULL, the URI for the default (and possibly only) mime-type is
+returned. 
+Note that it is possible for get_uri to return NULL but for
+get_stream to work nonetheless, since not all GIOChannels connect to URIs.
+can be constructed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Returns a string representing a URI, or NULL if no corresponding URI</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mime_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gchar* representing the mime type, or NULL to request a URI for the default mime type.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_mime_type"
+              c:identifier="atk_streamable_content_get_mime_type">
+        <doc xml:whitespace="preserve">Gets the character string of the specified mime type. The first mime
+type is at position 0, the second at position 1, and so on.
+should not free the character string.</doc>
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gint representing the position of the mime type starting from 0</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_mime_types"
+              c:identifier="atk_streamable_content_get_n_mime_types">
+        <doc xml:whitespace="preserve">Gets the number of mime types supported by this object.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gint which is the number of mime types supported by the object.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_stream"
+              c:identifier="atk_streamable_content_get_stream"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the content in the specified mime type.
+type.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">A #GIOChannel which contains the content in the specified mime</doc>
+          <type name="GLib.IOChannel" c:type="GIOChannel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mime_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gchar* representing the mime type</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uri"
+              c:identifier="atk_streamable_content_get_uri"
+              version="1.12">
+        <doc xml:whitespace="preserve">Get a string representing a URI in IETF standard format
+(see http://www.ietf.org/rfc/rfc2396.txt) from which the object's content
+may be streamed in the specified mime-type, if one is available.
+If mime_type is NULL, the URI for the default (and possibly only) mime-type is
+returned. 
+Note that it is possible for get_uri to return NULL but for
+get_stream to work nonetheless, since not all GIOChannels connect to URIs.
+can be constructed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">Returns a string representing a URI, or NULL if no corresponding URI</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mime_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gchar* representing the mime type, or NULL to request a URI for the default mime type.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="StreamableContentIface"
+            c:type="AtkStreamableContentIface"
+            glib:is-gtype-struct-for="StreamableContent">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_n_mime_types">
+        <callback name="get_n_mime_types">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gint which is the number of mime types supported by the object.</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="streamable" transfer-ownership="none">
+              <type name="StreamableContent" c:type="AtkStreamableContent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_mime_type">
+        <callback name="get_mime_type">
+          <return-value transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="streamable" transfer-ownership="none">
+              <type name="StreamableContent" c:type="AtkStreamableContent*"/>
+            </parameter>
+            <parameter name="i" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a gint representing the position of the mime type starting from 0</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_stream" introspectable="0">
+        <callback name="get_stream" introspectable="0">
+          <return-value>
+            <doc xml:whitespace="preserve">A #GIOChannel which contains the content in the specified mime</doc>
+            <type name="GLib.IOChannel" c:type="GIOChannel*"/>
+          </return-value>
+          <parameters>
+            <parameter name="streamable" transfer-ownership="none">
+              <type name="StreamableContent" c:type="AtkStreamableContent*"/>
+            </parameter>
+            <parameter name="mime_type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a gchar* representing the mime type</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_uri">
+        <callback name="get_uri">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">Returns a string representing a URI, or NULL if no corresponding URI</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="streamable" transfer-ownership="none">
+              <type name="StreamableContent" c:type="AtkStreamableContent*"/>
+            </parameter>
+            <parameter name="mime_type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a gchar* representing the mime type, or NULL to request a URI for the default mime type.</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pad1">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+      <field name="pad2">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+      <field name="pad3">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+    </record>
+    <interface name="Table"
+               c:symbol-prefix="table"
+               c:type="AtkTable"
+               glib:type-name="AtkTable"
+               glib:get-type="atk_table_get_type"
+               glib:type-struct="TableIface">
+      <virtual-method name="add_column_selection"
+                      invoker="add_column_selection">
+        <doc xml:whitespace="preserve">Adds the specified @column to the selection. 
+the selection, or 0 if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gboolean representing if the column was successfully added to</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="add_row_selection" invoker="add_row_selection">
+        <doc xml:whitespace="preserve">Adds the specified @row to the selection. 
+or 0 if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gboolean representing if row was successfully added to selection,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_caption"
+                      invoker="get_caption"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Gets the caption for the @table.
+if value does not implement this interface.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a AtkObject* representing the table caption, or %NULL</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_column_at_index" invoker="get_column_at_index">
+        <doc xml:whitespace="preserve">Gets a #gint representing the column at the specified @index_. 
+or -1 if the table does not implement this interface</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gint representing the column at the specified index,</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing an index in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_column_description"
+                      invoker="get_column_description">
+        <doc xml:whitespace="preserve">Gets the description text of the specified @column in the table
+if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gchar* representing the column description, or %NULL</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_column_extent_at"
+                      invoker="get_column_extent_at">
+        <doc xml:whitespace="preserve">Gets the number of columns occupied by the accessible object
+at the specified @row and @column in the @table.
+if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gint representing the column extent at specified position, or 0</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_column_header"
+                      invoker="get_column_header"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Gets the column header of a specified column in an accessible table.
+%NULL if value does not implement this interface.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a AtkObject* representing the specified column header, or</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a column in the table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_index_at" invoker="get_index_at">
+        <doc xml:whitespace="preserve">Gets a #gint representing the index at the specified @row and @column.
+The value -1 is returned if the object at row,column is not a child
+of table or table does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #gint representing the index at specified position.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_n_columns" invoker="get_n_columns">
+        <doc xml:whitespace="preserve">Gets the number of columns in the table.
+if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gint representing the number of columns, or 0</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_n_rows" invoker="get_n_rows">
+        <doc xml:whitespace="preserve">Gets the number of rows in the table.
+if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gint representing the number of rows, or 0</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_row_at_index" invoker="get_row_at_index">
+        <doc xml:whitespace="preserve">Gets a #gint representing the row at the specified @index_.
+or -1 if the table does not implement this interface</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gint representing the row at the specified index,</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing an index in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_row_description" invoker="get_row_description">
+        <doc xml:whitespace="preserve">Gets the description text of the specified row in the table
+if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gchar* representing the row description, or %NULL</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_row_extent_at" invoker="get_row_extent_at">
+        <doc xml:whitespace="preserve">Gets the number of rows occupied by the accessible object
+at a specified @row and @column in the @table.
+if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gint representing the row extent at specified position, or 0</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_row_header"
+                      invoker="get_row_header"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Gets the row header of a specified row in an accessible table.
+%NULL if value does not implement this interface.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a AtkObject* representing the specified row header, or</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a row in the table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_selected_columns"
+                      invoker="get_selected_columns">
+        <doc xml:whitespace="preserve">Gets the selected columns of the table by initializing **selected with 
+the selected column numbers. This array should be freed by the caller.
+or %0 if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gint representing the number of selected columns,</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="selected" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint** that is to contain the selected columns numbers</doc>
+            <type name="gint" c:type="gint**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_selected_rows" invoker="get_selected_rows">
+        <doc xml:whitespace="preserve">Gets the selected rows of the table by initializing **selected with 
+the selected row numbers. This array should be freed by the caller.
+or zero if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gint representing the number of selected rows,</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="selected" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint** that is to contain the selected row numbers</doc>
+            <type name="gint" c:type="gint**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_summary"
+                      invoker="get_summary"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Gets the summary description of the table.
+or zero if value does not implement this interface.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a AtkObject* representing a summary description of the table,</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="is_column_selected" invoker="is_column_selected">
+        <doc xml:whitespace="preserve">Gets a boolean value indicating whether the specified @column
+is selected
+if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gboolean representing if the column is selected, or 0</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="is_row_selected" invoker="is_row_selected">
+        <doc xml:whitespace="preserve">Gets a boolean value indicating whether the specified @row
+is selected
+if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gboolean representing if the row is selected, or 0</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="is_selected" invoker="is_selected">
+        <doc xml:whitespace="preserve">Gets a boolean value indicating whether the accessible object
+at the specified @row and @column is selected
+if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gboolean representing if the cell is selected, or 0</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="ref_at" invoker="ref_at" introspectable="0">
+        <doc xml:whitespace="preserve">Get a reference to the table cell at @row, @column.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a AtkObject* representing the referred to accessible</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove_column_selection"
+                      invoker="remove_column_selection">
+        <doc xml:whitespace="preserve">Adds the specified @column to the selection. 
+the selection, or 0 if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gboolean representing if the column was successfully removed from</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove_row_selection"
+                      invoker="remove_row_selection">
+        <doc xml:whitespace="preserve">Removes the specified @row from the selection. 
+the selection, or 0 if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gboolean representing if the row was successfully removed from</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_caption" invoker="set_caption">
+        <doc xml:whitespace="preserve">Sets the caption for the table.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caption" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #AtkObject representing the caption to set for @table</doc>
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_column_description"
+                      invoker="set_column_description">
+        <doc xml:whitespace="preserve">Sets the description text for the specified @column of the @table.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gchar representing the description text to set for the specified @column of the @table</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_column_header" invoker="set_column_header">
+        <doc xml:whitespace="preserve">Sets the specified column header to @header.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="header" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an #AtkTable</doc>
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_row_description" invoker="set_row_description">
+        <doc xml:whitespace="preserve">Sets the description text for the specified @row of @table.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gchar representing the description text to set for the specified @row of @table</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_row_header" invoker="set_row_header">
+        <doc xml:whitespace="preserve">Sets the specified row header to @header.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="header" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an #AtkTable</doc>
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_summary" invoker="set_summary">
+        <doc xml:whitespace="preserve">Sets the summary description of the table.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accessible" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an #AtkObject representing the summary description to set for @table</doc>
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_column_selection"
+              c:identifier="atk_table_add_column_selection">
+        <doc xml:whitespace="preserve">Adds the specified @column to the selection. 
+the selection, or 0 if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gboolean representing if the column was successfully added to</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_row_selection"
+              c:identifier="atk_table_add_row_selection">
+        <doc xml:whitespace="preserve">Adds the specified @row to the selection. 
+or 0 if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gboolean representing if row was successfully added to selection,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_caption"
+              c:identifier="atk_table_get_caption"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the caption for the @table.
+if value does not implement this interface.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a AtkObject* representing the table caption, or %NULL</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+      </method>
+      <method name="get_column_at_index"
+              c:identifier="atk_table_get_column_at_index">
+        <doc xml:whitespace="preserve">Gets a #gint representing the column at the specified @index_. 
+or -1 if the table does not implement this interface</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gint representing the column at the specified index,</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing an index in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_description"
+              c:identifier="atk_table_get_column_description">
+        <doc xml:whitespace="preserve">Gets the description text of the specified @column in the table
+if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gchar* representing the column description, or %NULL</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_extent_at"
+              c:identifier="atk_table_get_column_extent_at">
+        <doc xml:whitespace="preserve">Gets the number of columns occupied by the accessible object
+at the specified @row and @column in the @table.
+if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gint representing the column extent at specified position, or 0</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_header"
+              c:identifier="atk_table_get_column_header"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the column header of a specified column in an accessible table.
+%NULL if value does not implement this interface.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a AtkObject* representing the specified column header, or</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a column in the table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_index_at" c:identifier="atk_table_get_index_at">
+        <doc xml:whitespace="preserve">Gets a #gint representing the index at the specified @row and @column.
+The value -1 is returned if the object at row,column is not a child
+of table or table does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #gint representing the index at specified position.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_columns" c:identifier="atk_table_get_n_columns">
+        <doc xml:whitespace="preserve">Gets the number of columns in the table.
+if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gint representing the number of columns, or 0</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_n_rows" c:identifier="atk_table_get_n_rows">
+        <doc xml:whitespace="preserve">Gets the number of rows in the table.
+if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gint representing the number of rows, or 0</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_row_at_index"
+              c:identifier="atk_table_get_row_at_index">
+        <doc xml:whitespace="preserve">Gets a #gint representing the row at the specified @index_.
+or -1 if the table does not implement this interface</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gint representing the row at the specified index,</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing an index in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_row_description"
+              c:identifier="atk_table_get_row_description">
+        <doc xml:whitespace="preserve">Gets the description text of the specified row in the table
+if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gchar* representing the row description, or %NULL</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_row_extent_at"
+              c:identifier="atk_table_get_row_extent_at">
+        <doc xml:whitespace="preserve">Gets the number of rows occupied by the accessible object
+at a specified @row and @column in the @table.
+if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gint representing the row extent at specified position, or 0</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_row_header"
+              c:identifier="atk_table_get_row_header"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the row header of a specified row in an accessible table.
+%NULL if value does not implement this interface.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a AtkObject* representing the specified row header, or</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a row in the table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_selected_columns"
+              c:identifier="atk_table_get_selected_columns">
+        <doc xml:whitespace="preserve">Gets the selected columns of the table by initializing **selected with 
+the selected column numbers. This array should be freed by the caller.
+or %0 if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gint representing the number of selected columns,</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="selected" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint** that is to contain the selected columns numbers</doc>
+            <type name="gint" c:type="gint**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_selected_rows"
+              c:identifier="atk_table_get_selected_rows">
+        <doc xml:whitespace="preserve">Gets the selected rows of the table by initializing **selected with 
+the selected row numbers. This array should be freed by the caller.
+or zero if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gint representing the number of selected rows,</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="selected" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint** that is to contain the selected row numbers</doc>
+            <type name="gint" c:type="gint**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_summary"
+              c:identifier="atk_table_get_summary"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the summary description of the table.
+or zero if value does not implement this interface.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a AtkObject* representing a summary description of the table,</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+      </method>
+      <method name="is_column_selected"
+              c:identifier="atk_table_is_column_selected">
+        <doc xml:whitespace="preserve">Gets a boolean value indicating whether the specified @column
+is selected
+if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gboolean representing if the column is selected, or 0</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_row_selected" c:identifier="atk_table_is_row_selected">
+        <doc xml:whitespace="preserve">Gets a boolean value indicating whether the specified @row
+is selected
+if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gboolean representing if the row is selected, or 0</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_selected" c:identifier="atk_table_is_selected">
+        <doc xml:whitespace="preserve">Gets a boolean value indicating whether the accessible object
+at the specified @row and @column is selected
+if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gboolean representing if the cell is selected, or 0</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref_at" c:identifier="atk_table_ref_at" introspectable="0">
+        <doc xml:whitespace="preserve">Get a reference to the table cell at @row, @column.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a AtkObject* representing the referred to accessible</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_column_selection"
+              c:identifier="atk_table_remove_column_selection">
+        <doc xml:whitespace="preserve">Adds the specified @column to the selection. 
+the selection, or 0 if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gboolean representing if the column was successfully removed from</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_row_selection"
+              c:identifier="atk_table_remove_row_selection">
+        <doc xml:whitespace="preserve">Removes the specified @row from the selection. 
+the selection, or 0 if value does not implement this interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gboolean representing if the row was successfully removed from</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_caption" c:identifier="atk_table_set_caption">
+        <doc xml:whitespace="preserve">Sets the caption for the table.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caption" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #AtkObject representing the caption to set for @table</doc>
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_column_description"
+              c:identifier="atk_table_set_column_description">
+        <doc xml:whitespace="preserve">Sets the description text for the specified @column of the @table.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gchar representing the description text to set for the specified @column of the @table</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_column_header"
+              c:identifier="atk_table_set_column_header">
+        <doc xml:whitespace="preserve">Sets the specified column header to @header.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="header" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an #AtkTable</doc>
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_row_description"
+              c:identifier="atk_table_set_row_description">
+        <doc xml:whitespace="preserve">Sets the description text for the specified @row of @table.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gchar representing the description text to set for the specified @row of @table</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_row_header" c:identifier="atk_table_set_row_header">
+        <doc xml:whitespace="preserve">Sets the specified row header to @header.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="header" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an #AtkTable</doc>
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_summary" c:identifier="atk_table_set_summary">
+        <doc xml:whitespace="preserve">Sets the summary description of the table.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accessible" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an #AtkObject representing the summary description to set for @table</doc>
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="column-deleted">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="column-inserted">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="column-reordered">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="model-changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="row-deleted">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="row-inserted">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="row-reordered">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </interface>
+    <record name="TableIface"
+            c:type="AtkTableIface"
+            glib:is-gtype-struct-for="Table">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="ref_at" introspectable="0">
+        <callback name="ref_at" introspectable="0">
+          <return-value>
+            <doc xml:whitespace="preserve">a AtkObject* representing the referred to accessible</doc>
+            <type name="Object" c:type="AtkObject*"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_index_at">
+        <callback name="get_index_at">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint representing the index at specified position.</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_column_at_index">
+        <callback name="get_column_at_index">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gint representing the column at the specified index,</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="index_" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing an index in @table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_row_at_index">
+        <callback name="get_row_at_index">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gint representing the row at the specified index,</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="index_" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing an index in @table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_n_columns">
+        <callback name="get_n_columns">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gint representing the number of columns, or 0</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_n_rows">
+        <callback name="get_n_rows">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gint representing the number of rows, or 0</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_column_extent_at">
+        <callback name="get_column_extent_at">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gint representing the column extent at specified position, or 0</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_row_extent_at">
+        <callback name="get_row_extent_at">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gint representing the row extent at specified position, or 0</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_caption" introspectable="0">
+        <callback name="get_caption" introspectable="0">
+          <return-value>
+            <doc xml:whitespace="preserve">a AtkObject* representing the table caption, or %NULL</doc>
+            <type name="Object" c:type="AtkObject*"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_column_description">
+        <callback name="get_column_description">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gchar* representing the column description, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_column_header" introspectable="0">
+        <callback name="get_column_header" introspectable="0">
+          <return-value>
+            <doc xml:whitespace="preserve">a AtkObject* representing the specified column header, or</doc>
+            <type name="Object" c:type="AtkObject*"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing a column in the table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_row_description">
+        <callback name="get_row_description">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gchar* representing the row description, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_row_header" introspectable="0">
+        <callback name="get_row_header" introspectable="0">
+          <return-value>
+            <doc xml:whitespace="preserve">a AtkObject* representing the specified row header, or</doc>
+            <type name="Object" c:type="AtkObject*"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing a row in the table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_summary" introspectable="0">
+        <callback name="get_summary" introspectable="0">
+          <return-value>
+            <doc xml:whitespace="preserve">a AtkObject* representing a summary description of the table,</doc>
+            <type name="Object" c:type="AtkObject*"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_caption">
+        <callback name="set_caption">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="caption" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #AtkObject representing the caption to set for @table</doc>
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_column_description">
+        <callback name="set_column_description">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="description" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gchar representing the description text to set for the specified @column of the @table</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_column_header">
+        <callback name="set_column_header">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="header" transfer-ownership="none">
+              <doc xml:whitespace="preserve">an #AtkTable</doc>
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_row_description">
+        <callback name="set_row_description">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="description" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gchar representing the description text to set for the specified @row of @table</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_row_header">
+        <callback name="set_row_header">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="header" transfer-ownership="none">
+              <doc xml:whitespace="preserve">an #AtkTable</doc>
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_summary">
+        <callback name="set_summary">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="accessible" transfer-ownership="none">
+              <doc xml:whitespace="preserve">an #AtkObject representing the summary description to set for @table</doc>
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_selected_columns">
+        <callback name="get_selected_columns">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gint representing the number of selected columns,</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="selected" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint** that is to contain the selected columns numbers</doc>
+              <type name="gint" c:type="gint**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_selected_rows">
+        <callback name="get_selected_rows">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gint representing the number of selected rows,</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="selected" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint** that is to contain the selected row numbers</doc>
+              <type name="gint" c:type="gint**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_column_selected">
+        <callback name="is_column_selected">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gboolean representing if the column is selected, or 0</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_row_selected">
+        <callback name="is_row_selected">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gboolean representing if the row is selected, or 0</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_selected">
+        <callback name="is_selected">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gboolean representing if the cell is selected, or 0</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_row_selection">
+        <callback name="add_row_selection">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gboolean representing if row was successfully added to selection,</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_row_selection">
+        <callback name="remove_row_selection">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gboolean representing if the row was successfully removed from</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_column_selection">
+        <callback name="add_column_selection">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gboolean representing if the column was successfully added to</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_column_selection">
+        <callback name="remove_column_selection">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a gboolean representing if the column was successfully removed from</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_inserted">
+        <callback name="row_inserted">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="num_inserted" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="column_inserted">
+        <callback name="column_inserted">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="num_inserted" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_deleted">
+        <callback name="row_deleted">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="num_deleted" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="column_deleted">
+        <callback name="column_deleted">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="num_deleted" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_reordered">
+        <callback name="row_reordered">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="column_reordered">
+        <callback name="column_reordered">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="model_changed">
+        <callback name="model_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pad1">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+      <field name="pad2">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+      <field name="pad3">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+      <field name="pad4">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+    </record>
+    <interface name="Text"
+               c:symbol-prefix="text"
+               c:type="AtkText"
+               glib:type-name="AtkText"
+               glib:get-type="atk_text_get_type"
+               glib:type-struct="TextIface">
+      <virtual-method name="add_selection" invoker="add_selection">
+        <doc xml:whitespace="preserve">Adds a selection bounded by the specified offsets.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the start position of the selected region</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset of the first character after the selected region.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_bounded_ranges"
+                      invoker="get_bounded_ranges"
+                      version="1.3"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Get the ranges of text in the specified bounding box.
+by this function will be NULL.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">Array of AtkTextRange. The last element of the array returned</doc>
+          <type name="TextRange" c:type="AtkTextRange**"/>
+        </return-value>
+        <parameters>
+          <parameter name="rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An AtkTextRectagle giving the dimensions of the bounding box.</doc>
+            <type name="TextRectangle" c:type="AtkTextRectangle*"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Specify whether coordinates are relative to the screen or widget window.</doc>
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+          <parameter name="x_clip_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Specify the horizontal clip type.</doc>
+            <type name="TextClipType" c:type="AtkTextClipType"/>
+          </parameter>
+          <parameter name="y_clip_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Specify the vertical clip type.</doc>
+            <type name="TextClipType" c:type="AtkTextClipType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_caret_offset" invoker="get_caret_offset">
+        <doc xml:whitespace="preserve">Gets the offset position of the caret (cursor).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the offset position of the caret (cursor).</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_character_at_offset"
+                      invoker="get_character_at_offset"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Gets the specified text.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the character at @offset.</doc>
+          <type name="gunichar" c:type="gunichar"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_character_count" invoker="get_character_count">
+        <doc xml:whitespace="preserve">Gets the character count.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of characters.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_character_extents"
+                      invoker="get_character_extents">
+        <doc xml:whitespace="preserve">Get the bounding box containing the glyph representing the character at 
+a particular text offset.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The offset of the text character for which bounding information is required.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer for the x cordinate of the bounding box</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer for the y cordinate of the bounding box</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer for the width of the bounding box</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer for the height of the bounding box</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="coords" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specify whether coordinates are relative to the screen or widget window</doc>
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_default_attributes"
+                      invoker="get_default_attributes"
+                      introspectable="0">
+        <return-value>
+          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_n_selections" invoker="get_n_selections">
+        <doc xml:whitespace="preserve">Gets the number of selected regions.
+occurred.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of selected regions, or -1 if a failure</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_offset_at_point" invoker="get_offset_at_point">
+        <doc xml:whitespace="preserve">Gets the offset of the character located at coordinates @x and @y. @x and @y
+are interpreted as being relative to the screen or this widget's window
+depending on @coords.
+the specified @x and @y coordinates.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the offset to the character which is located at</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">screen x-position of character</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">screen y-position of character</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="coords" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specify whether coordinates are relative to the screen or widget window</doc>
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_range_extents"
+                      invoker="get_range_extents"
+                      version="1.3">
+        <doc xml:whitespace="preserve">Get the bounding box for text within the specified range.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The offset of the first text character for which boundary information is required.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The offset of the text character after the last character for which boundary information is required.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Specify whether coordinates are relative to the screen or widget window.</doc>
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+          <parameter name="rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A pointer to a AtkTextRectangle which is filled in by this function.</doc>
+            <type name="TextRectangle" c:type="AtkTextRectangle*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_run_attributes"
+                      invoker="get_run_attributes"
+                      introspectable="0">
+        <return-value>
+          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="start_offset" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_selection" invoker="get_selection">
+        <doc xml:whitespace="preserve">Gets the text from the specified selection.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the selected text.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="selection_num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The selection number.  The selected regions are assigned numbers that correspond to how far the region is from the start of the text.  The selected region closest to the beginning of the text region is assigned the number 0, etc.  Note that adding, moving or deleting a selected region can change the numbering.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="start_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">passes back the start position of the selected region</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">passes back the end position of (e.g. offset immediately past) the selected region</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_text" invoker="get_text">
+        <doc xml:whitespace="preserve">Gets the specified text.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the text from @start_offset up to, but not including @end_offset.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">end position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_text_after_offset"
+                      invoker="get_text_after_offset">
+        <doc xml:whitespace="preserve">Gets the specified text.
+If the boundary_type if ATK_TEXT_BOUNDARY_CHAR the character after the 
+offset is returned.
+If the boundary_type is ATK_TEXT_BOUNDARY_WORD_START the returned string
+is from the word start after the offset to the next word start.
+The returned string will contain the word after the offset if the offset 
+is inside a word or if the offset is not inside a word.
+If the boundary_type is ATK_TEXT_BOUNDARY_WORD_END the returned string
+is from the word end at or after the offset to the next work end.
+The returned string will contain the word after the offset if the offset
+is inside a word and will contain the word after the word after the offset
+if the offset is not inside a word.
+If the boundary type is ATK_TEXT_BOUNDARY_SENTENCE_START the returned
+string is from the sentence start after the offset to the next sentence
+start.
+The returned string will contain the sentence after the offset if the offset
+is inside a sentence or if the offset is not inside a sentence.
+If the boundary_type is ATK_TEXT_BOUNDARY_SENTENCE_END the returned string
+is from the sentence end at or after the offset to the next sentence end.
+The returned string will contain the sentence after the offset if the offset
+is inside a sentence and will contain the sentence after the sentence
+after the offset if the offset is not inside a sentence.
+If the boundary type is ATK_TEXT_BOUNDARY_LINE_START the returned
+string is from the line start after the offset to the next line start.
+If the boundary_type is ATK_TEXT_BOUNDARY_LINE_END the returned string
+is from the line end at or after the offset to the next line start.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the text after @offset bounded by the specified @boundary_type.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="boundary_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An #AtkTextBoundary</doc>
+            <type name="TextBoundary" c:type="AtkTextBoundary"/>
+          </parameter>
+          <parameter name="start_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the start offset of the returned string</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset of the first character after the returned substring</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_text_at_offset" invoker="get_text_at_offset">
+        <doc xml:whitespace="preserve">Gets the specified text.
+If the boundary_type if ATK_TEXT_BOUNDARY_CHAR the character at the
+offset is returned.
+If the boundary_type is ATK_TEXT_BOUNDARY_WORD_START the returned string
+is from the word start at or before the offset to the word start after 
+the offset.
+The returned string will contain the word at the offset if the offset
+is inside a word and will contain the word before the offset if the 
+offset is not inside a word.
+If the boundary_type is ATK_TEXT_BOUNDARY_WORD_END the returned string
+is from the word end before the offset to the word end at or after the
+offset.
+The returned string will contain the word at the offset if the offset
+is inside a word and will contain the word after to the offset if the 
+offset is not inside a word.
+If the boundary type is ATK_TEXT_BOUNDARY_SENTENCE_START the returned
+string is from the sentence start at or before the offset to the sentence
+start after the offset.
+The returned string will contain the sentence at the offset if the offset
+is inside a sentence and will contain the sentence before the offset 
+if the offset is not inside a sentence.
+If the boundary_type is ATK_TEXT_BOUNDARY_SENTENCE_END the returned string
+is from the sentence end before the offset to the sentence end at or
+after the offset.
+The returned string will contain the sentence at the offset if the offset
+is inside a sentence and will contain the sentence after the offset 
+if the offset is not inside a sentence.
+If the boundary type is ATK_TEXT_BOUNDARY_LINE_START the returned
+string is from the line start at or before the offset to the line
+start after the offset.
+If the boundary_type is ATK_TEXT_BOUNDARY_LINE_END the returned string
+is from the line end before the offset to the line end at or after
+the offset.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the text at @offset bounded by the specified @boundary_type.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="boundary_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An #AtkTextBoundary</doc>
+            <type name="TextBoundary" c:type="AtkTextBoundary"/>
+          </parameter>
+          <parameter name="start_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the start offset of the returned string</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset of the first character after the returned substring</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_text_before_offset"
+                      invoker="get_text_before_offset">
+        <doc xml:whitespace="preserve">Gets the specified text.
+If the boundary_type if ATK_TEXT_BOUNDARY_CHAR the character before the
+offset is returned.
+If the boundary_type is ATK_TEXT_BOUNDARY_WORD_START the returned string
+is from the word start before the word start before the offset to 
+the word start before the offset.
+The returned string will contain the word before the offset if the offset
+is inside a word and will contain the word before the word before the 
+offset if the offset is not inside a word.
+If the boundary_type is ATK_TEXT_BOUNDARY_WORD_END the returned string
+is from the word end before the word end at or before the offset to the 
+word end at or before the offset.
+The returned string will contain the word before the offset if the offset
+is inside a word or if the offset is not inside a word.
+If the boundary type is ATK_TEXT_BOUNDARY_SENTENCE_START the returned
+string is from the sentence start before the sentence start before 
+the offset to the sentence start before the offset.
+The returned string will contain the sentence before the offset if the 
+offset is inside a sentence and will contain the sentence before the 
+sentence before the offset if the offset is not inside a sentence.
+If the boundary_type is ATK_TEXT_BOUNDARY_SENTENCE_END the returned string
+is from the sentence end before the sentence end at or before the offset to 
+the sentence end at or before the offset.
+The returned string will contain the sentence before the offset if the 
+offset is inside a sentence or if the offset is not inside a sentence.
+If the boundary type is ATK_TEXT_BOUNDARY_LINE_START the returned
+string is from the line start before the line start ar or before the offset 
+to the line start ar or before the offset.
+If the boundary_type is ATK_TEXT_BOUNDARY_LINE_END the returned string
+is from the line end before the line end before the offset to the 
+line end before the offset.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the text before @offset bounded by the specified @boundary_type.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="boundary_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An #AtkTextBoundary</doc>
+            <type name="TextBoundary" c:type="AtkTextBoundary"/>
+          </parameter>
+          <parameter name="start_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the start offset of the returned string</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset of the first character after the returned substring</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove_selection" invoker="remove_selection">
+        <doc xml:whitespace="preserve">Removes the specified selection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="selection_num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The selection number.  The selected regions are assigned numbers that correspond to how far the region is from the start of the text.  The selected region closest to the beginning of the text region is assigned the number 0, etc.  Note that adding, moving or deleting a selected region can change the numbering.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_caret_offset" invoker="set_caret_offset">
+        <doc xml:whitespace="preserve">Sets the caret (cursor) position to the specified @offset.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_selection" invoker="set_selection">
+        <doc xml:whitespace="preserve">Changes the start and end offset of the specified selection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="selection_num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The selection number.  The selected regions are assigned numbers that correspond to how far the region is from the start of the text.  The selected region closest to the beginning of the text region is assigned the number 0, etc.  Note that adding, moving or deleting a selected region can change the numbering.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="start_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new start position of the selection</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new end position of (e.g. offset immediately past) the selection</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_selection" c:identifier="atk_text_add_selection">
+        <doc xml:whitespace="preserve">Adds a selection bounded by the specified offsets.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the start position of the selected region</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset of the first character after the selected region.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bounded_ranges"
+              c:identifier="atk_text_get_bounded_ranges"
+              version="1.3"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Get the ranges of text in the specified bounding box.
+by this function will be NULL.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">Array of AtkTextRange. The last element of the array returned</doc>
+          <type name="TextRange" c:type="AtkTextRange**"/>
+        </return-value>
+        <parameters>
+          <parameter name="rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An AtkTextRectagle giving the dimensions of the bounding box.</doc>
+            <type name="TextRectangle" c:type="AtkTextRectangle*"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Specify whether coordinates are relative to the screen or widget window.</doc>
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+          <parameter name="x_clip_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Specify the horizontal clip type.</doc>
+            <type name="TextClipType" c:type="AtkTextClipType"/>
+          </parameter>
+          <parameter name="y_clip_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Specify the vertical clip type.</doc>
+            <type name="TextClipType" c:type="AtkTextClipType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_caret_offset" c:identifier="atk_text_get_caret_offset">
+        <doc xml:whitespace="preserve">Gets the offset position of the caret (cursor).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the offset position of the caret (cursor).</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_character_at_offset"
+              c:identifier="atk_text_get_character_at_offset"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the specified text.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the character at @offset.</doc>
+          <type name="gunichar" c:type="gunichar"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_character_count"
+              c:identifier="atk_text_get_character_count">
+        <doc xml:whitespace="preserve">Gets the character count.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of characters.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_character_extents"
+              c:identifier="atk_text_get_character_extents">
+        <doc xml:whitespace="preserve">Get the bounding box containing the glyph representing the character at 
+a particular text offset.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The offset of the text character for which bounding information is required.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer for the x cordinate of the bounding box</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer for the y cordinate of the bounding box</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer for the width of the bounding box</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer for the height of the bounding box</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="coords" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specify whether coordinates are relative to the screen or widget window</doc>
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_default_attributes"
+              c:identifier="atk_text_get_default_attributes"
+              introspectable="0">
+        <return-value>
+          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+        </return-value>
+      </method>
+      <method name="get_n_selections" c:identifier="atk_text_get_n_selections">
+        <doc xml:whitespace="preserve">Gets the number of selected regions.
+occurred.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of selected regions, or -1 if a failure</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_offset_at_point"
+              c:identifier="atk_text_get_offset_at_point">
+        <doc xml:whitespace="preserve">Gets the offset of the character located at coordinates @x and @y. @x and @y
+are interpreted as being relative to the screen or this widget's window
+depending on @coords.
+the specified @x and @y coordinates.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the offset to the character which is located at</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">screen x-position of character</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">screen y-position of character</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="coords" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specify whether coordinates are relative to the screen or widget window</doc>
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_range_extents"
+              c:identifier="atk_text_get_range_extents"
+              version="1.3">
+        <doc xml:whitespace="preserve">Get the bounding box for text within the specified range.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The offset of the first text character for which boundary information is required.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The offset of the text character after the last character for which boundary information is required.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Specify whether coordinates are relative to the screen or widget window.</doc>
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+          <parameter name="rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A pointer to a AtkTextRectangle which is filled in by this function.</doc>
+            <type name="TextRectangle" c:type="AtkTextRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_run_attributes"
+              c:identifier="atk_text_get_run_attributes"
+              introspectable="0">
+        <return-value>
+          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="start_offset" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_selection" c:identifier="atk_text_get_selection">
+        <doc xml:whitespace="preserve">Gets the text from the specified selection.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the selected text.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="selection_num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The selection number.  The selected regions are assigned numbers that correspond to how far the region is from the start of the text.  The selected region closest to the beginning of the text region is assigned the number 0, etc.  Note that adding, moving or deleting a selected region can change the numbering.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="start_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">passes back the start position of the selected region</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">passes back the end position of (e.g. offset immediately past) the selected region</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_text" c:identifier="atk_text_get_text">
+        <doc xml:whitespace="preserve">Gets the specified text.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the text from @start_offset up to, but not including @end_offset.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">end position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_text_after_offset"
+              c:identifier="atk_text_get_text_after_offset">
+        <doc xml:whitespace="preserve">Gets the specified text.
+If the boundary_type if ATK_TEXT_BOUNDARY_CHAR the character after the 
+offset is returned.
+If the boundary_type is ATK_TEXT_BOUNDARY_WORD_START the returned string
+is from the word start after the offset to the next word start.
+The returned string will contain the word after the offset if the offset 
+is inside a word or if the offset is not inside a word.
+If the boundary_type is ATK_TEXT_BOUNDARY_WORD_END the returned string
+is from the word end at or after the offset to the next work end.
+The returned string will contain the word after the offset if the offset
+is inside a word and will contain the word after the word after the offset
+if the offset is not inside a word.
+If the boundary type is ATK_TEXT_BOUNDARY_SENTENCE_START the returned
+string is from the sentence start after the offset to the next sentence
+start.
+The returned string will contain the sentence after the offset if the offset
+is inside a sentence or if the offset is not inside a sentence.
+If the boundary_type is ATK_TEXT_BOUNDARY_SENTENCE_END the returned string
+is from the sentence end at or after the offset to the next sentence end.
+The returned string will contain the sentence after the offset if the offset
+is inside a sentence and will contain the sentence after the sentence
+after the offset if the offset is not inside a sentence.
+If the boundary type is ATK_TEXT_BOUNDARY_LINE_START the returned
+string is from the line start after the offset to the next line start.
+If the boundary_type is ATK_TEXT_BOUNDARY_LINE_END the returned string
+is from the line end at or after the offset to the next line start.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the text after @offset bounded by the specified @boundary_type.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="boundary_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An #AtkTextBoundary</doc>
+            <type name="TextBoundary" c:type="AtkTextBoundary"/>
+          </parameter>
+          <parameter name="start_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the start offset of the returned string</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset of the first character after the returned substring</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_text_at_offset"
+              c:identifier="atk_text_get_text_at_offset">
+        <doc xml:whitespace="preserve">Gets the specified text.
+If the boundary_type if ATK_TEXT_BOUNDARY_CHAR the character at the
+offset is returned.
+If the boundary_type is ATK_TEXT_BOUNDARY_WORD_START the returned string
+is from the word start at or before the offset to the word start after 
+the offset.
+The returned string will contain the word at the offset if the offset
+is inside a word and will contain the word before the offset if the 
+offset is not inside a word.
+If the boundary_type is ATK_TEXT_BOUNDARY_WORD_END the returned string
+is from the word end before the offset to the word end at or after the
+offset.
+The returned string will contain the word at the offset if the offset
+is inside a word and will contain the word after to the offset if the 
+offset is not inside a word.
+If the boundary type is ATK_TEXT_BOUNDARY_SENTENCE_START the returned
+string is from the sentence start at or before the offset to the sentence
+start after the offset.
+The returned string will contain the sentence at the offset if the offset
+is inside a sentence and will contain the sentence before the offset 
+if the offset is not inside a sentence.
+If the boundary_type is ATK_TEXT_BOUNDARY_SENTENCE_END the returned string
+is from the sentence end before the offset to the sentence end at or
+after the offset.
+The returned string will contain the sentence at the offset if the offset
+is inside a sentence and will contain the sentence after the offset 
+if the offset is not inside a sentence.
+If the boundary type is ATK_TEXT_BOUNDARY_LINE_START the returned
+string is from the line start at or before the offset to the line
+start after the offset.
+If the boundary_type is ATK_TEXT_BOUNDARY_LINE_END the returned string
+is from the line end before the offset to the line end at or after
+the offset.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the text at @offset bounded by the specified @boundary_type.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="boundary_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An #AtkTextBoundary</doc>
+            <type name="TextBoundary" c:type="AtkTextBoundary"/>
+          </parameter>
+          <parameter name="start_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the start offset of the returned string</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset of the first character after the returned substring</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_text_before_offset"
+              c:identifier="atk_text_get_text_before_offset">
+        <doc xml:whitespace="preserve">Gets the specified text.
+If the boundary_type if ATK_TEXT_BOUNDARY_CHAR the character before the
+offset is returned.
+If the boundary_type is ATK_TEXT_BOUNDARY_WORD_START the returned string
+is from the word start before the word start before the offset to 
+the word start before the offset.
+The returned string will contain the word before the offset if the offset
+is inside a word and will contain the word before the word before the 
+offset if the offset is not inside a word.
+If the boundary_type is ATK_TEXT_BOUNDARY_WORD_END the returned string
+is from the word end before the word end at or before the offset to the 
+word end at or before the offset.
+The returned string will contain the word before the offset if the offset
+is inside a word or if the offset is not inside a word.
+If the boundary type is ATK_TEXT_BOUNDARY_SENTENCE_START the returned
+string is from the sentence start before the sentence start before 
+the offset to the sentence start before the offset.
+The returned string will contain the sentence before the offset if the 
+offset is inside a sentence and will contain the sentence before the 
+sentence before the offset if the offset is not inside a sentence.
+If the boundary_type is ATK_TEXT_BOUNDARY_SENTENCE_END the returned string
+is from the sentence end before the sentence end at or before the offset to 
+the sentence end at or before the offset.
+The returned string will contain the sentence before the offset if the 
+offset is inside a sentence or if the offset is not inside a sentence.
+If the boundary type is ATK_TEXT_BOUNDARY_LINE_START the returned
+string is from the line start before the line start ar or before the offset 
+to the line start ar or before the offset.
+If the boundary_type is ATK_TEXT_BOUNDARY_LINE_END the returned string
+is from the line end before the line end before the offset to the 
+line end before the offset.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the text before @offset bounded by the specified @boundary_type.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="boundary_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An #AtkTextBoundary</doc>
+            <type name="TextBoundary" c:type="AtkTextBoundary"/>
+          </parameter>
+          <parameter name="start_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the start offset of the returned string</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset of the first character after the returned substring</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_selection" c:identifier="atk_text_remove_selection">
+        <doc xml:whitespace="preserve">Removes the specified selection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="selection_num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The selection number.  The selected regions are assigned numbers that correspond to how far the region is from the start of the text.  The selected region closest to the beginning of the text region is assigned the number 0, etc.  Note that adding, moving or deleting a selected region can change the numbering.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_caret_offset" c:identifier="atk_text_set_caret_offset">
+        <doc xml:whitespace="preserve">Sets the caret (cursor) position to the specified @offset.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_selection" c:identifier="atk_text_set_selection">
+        <doc xml:whitespace="preserve">Changes the start and end offset of the specified selection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="selection_num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The selection number.  The selected regions are assigned numbers that correspond to how far the region is from the start of the text.  The selected region closest to the beginning of the text region is assigned the number 0, etc.  Note that adding, moving or deleting a selected region can change the numbering.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="start_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new start position of the selection</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new end position of (e.g. offset immediately past) the selection</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="text-attributes-changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="text-caret-moved">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="text-changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="text-selection-changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </interface>
+    <enumeration name="TextAttribute"
+                 glib:type-name="AtkTextAttribute"
+                 glib:get-type="atk_text_attribute_get_type"
+                 c:type="AtkTextAttribute">
+      <member name="invalid"
+              value="0"
+              c:identifier="ATK_TEXT_ATTR_INVALID"
+              glib:nick="invalid"/>
+      <member name="left_margin"
+              value="1"
+              c:identifier="ATK_TEXT_ATTR_LEFT_MARGIN"
+              glib:nick="left-margin"/>
+      <member name="right_margin"
+              value="2"
+              c:identifier="ATK_TEXT_ATTR_RIGHT_MARGIN"
+              glib:nick="right-margin"/>
+      <member name="indent"
+              value="3"
+              c:identifier="ATK_TEXT_ATTR_INDENT"
+              glib:nick="indent"/>
+      <member name="invisible"
+              value="4"
+              c:identifier="ATK_TEXT_ATTR_INVISIBLE"
+              glib:nick="invisible"/>
+      <member name="editable"
+              value="5"
+              c:identifier="ATK_TEXT_ATTR_EDITABLE"
+              glib:nick="editable"/>
+      <member name="pixels_above_lines"
+              value="6"
+              c:identifier="ATK_TEXT_ATTR_PIXELS_ABOVE_LINES"
+              glib:nick="pixels-above-lines"/>
+      <member name="pixels_below_lines"
+              value="7"
+              c:identifier="ATK_TEXT_ATTR_PIXELS_BELOW_LINES"
+              glib:nick="pixels-below-lines"/>
+      <member name="pixels_inside_wrap"
+              value="8"
+              c:identifier="ATK_TEXT_ATTR_PIXELS_INSIDE_WRAP"
+              glib:nick="pixels-inside-wrap"/>
+      <member name="bg_full_height"
+              value="9"
+              c:identifier="ATK_TEXT_ATTR_BG_FULL_HEIGHT"
+              glib:nick="bg-full-height"/>
+      <member name="rise"
+              value="10"
+              c:identifier="ATK_TEXT_ATTR_RISE"
+              glib:nick="rise"/>
+      <member name="underline"
+              value="11"
+              c:identifier="ATK_TEXT_ATTR_UNDERLINE"
+              glib:nick="underline"/>
+      <member name="strikethrough"
+              value="12"
+              c:identifier="ATK_TEXT_ATTR_STRIKETHROUGH"
+              glib:nick="strikethrough"/>
+      <member name="size"
+              value="13"
+              c:identifier="ATK_TEXT_ATTR_SIZE"
+              glib:nick="size"/>
+      <member name="scale"
+              value="14"
+              c:identifier="ATK_TEXT_ATTR_SCALE"
+              glib:nick="scale"/>
+      <member name="weight"
+              value="15"
+              c:identifier="ATK_TEXT_ATTR_WEIGHT"
+              glib:nick="weight"/>
+      <member name="language"
+              value="16"
+              c:identifier="ATK_TEXT_ATTR_LANGUAGE"
+              glib:nick="language"/>
+      <member name="family_name"
+              value="17"
+              c:identifier="ATK_TEXT_ATTR_FAMILY_NAME"
+              glib:nick="family-name"/>
+      <member name="bg_color"
+              value="18"
+              c:identifier="ATK_TEXT_ATTR_BG_COLOR"
+              glib:nick="bg-color"/>
+      <member name="fg_color"
+              value="19"
+              c:identifier="ATK_TEXT_ATTR_FG_COLOR"
+              glib:nick="fg-color"/>
+      <member name="bg_stipple"
+              value="20"
+              c:identifier="ATK_TEXT_ATTR_BG_STIPPLE"
+              glib:nick="bg-stipple"/>
+      <member name="fg_stipple"
+              value="21"
+              c:identifier="ATK_TEXT_ATTR_FG_STIPPLE"
+              glib:nick="fg-stipple"/>
+      <member name="wrap_mode"
+              value="22"
+              c:identifier="ATK_TEXT_ATTR_WRAP_MODE"
+              glib:nick="wrap-mode"/>
+      <member name="direction"
+              value="23"
+              c:identifier="ATK_TEXT_ATTR_DIRECTION"
+              glib:nick="direction"/>
+      <member name="justification"
+              value="24"
+              c:identifier="ATK_TEXT_ATTR_JUSTIFICATION"
+              glib:nick="justification"/>
+      <member name="stretch"
+              value="25"
+              c:identifier="ATK_TEXT_ATTR_STRETCH"
+              glib:nick="stretch"/>
+      <member name="variant"
+              value="26"
+              c:identifier="ATK_TEXT_ATTR_VARIANT"
+              glib:nick="variant"/>
+      <member name="style"
+              value="27"
+              c:identifier="ATK_TEXT_ATTR_STYLE"
+              glib:nick="style"/>
+      <member name="last_defined"
+              value="28"
+              c:identifier="ATK_TEXT_ATTR_LAST_DEFINED"
+              glib:nick="last-defined"/>
+    </enumeration>
+    <enumeration name="TextBoundary"
+                 glib:type-name="AtkTextBoundary"
+                 glib:get-type="atk_text_boundary_get_type"
+                 c:type="AtkTextBoundary">
+      <member name="char"
+              value="0"
+              c:identifier="ATK_TEXT_BOUNDARY_CHAR"
+              glib:nick="char"/>
+      <member name="word_start"
+              value="1"
+              c:identifier="ATK_TEXT_BOUNDARY_WORD_START"
+              glib:nick="word-start"/>
+      <member name="word_end"
+              value="2"
+              c:identifier="ATK_TEXT_BOUNDARY_WORD_END"
+              glib:nick="word-end"/>
+      <member name="sentence_start"
+              value="3"
+              c:identifier="ATK_TEXT_BOUNDARY_SENTENCE_START"
+              glib:nick="sentence-start"/>
+      <member name="sentence_end"
+              value="4"
+              c:identifier="ATK_TEXT_BOUNDARY_SENTENCE_END"
+              glib:nick="sentence-end"/>
+      <member name="line_start"
+              value="5"
+              c:identifier="ATK_TEXT_BOUNDARY_LINE_START"
+              glib:nick="line-start"/>
+      <member name="line_end"
+              value="6"
+              c:identifier="ATK_TEXT_BOUNDARY_LINE_END"
+              glib:nick="line-end"/>
+    </enumeration>
+    <enumeration name="TextClipType"
+                 glib:type-name="AtkTextClipType"
+                 glib:get-type="atk_text_clip_type_get_type"
+                 c:type="AtkTextClipType">
+      <member name="none"
+              value="0"
+              c:identifier="ATK_TEXT_CLIP_NONE"
+              glib:nick="none"/>
+      <member name="min"
+              value="1"
+              c:identifier="ATK_TEXT_CLIP_MIN"
+              glib:nick="min"/>
+      <member name="max"
+              value="2"
+              c:identifier="ATK_TEXT_CLIP_MAX"
+              glib:nick="max"/>
+      <member name="both"
+              value="3"
+              c:identifier="ATK_TEXT_CLIP_BOTH"
+              glib:nick="both"/>
+    </enumeration>
+    <record name="TextIface"
+            c:type="AtkTextIface"
+            glib:is-gtype-struct-for="Text">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_text">
+        <callback name="get_text">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the text from @start_offset up to, but not including @end_offset.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="Text" c:type="AtkText*"/>
+            </parameter>
+            <parameter name="start_offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">start position</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="end_offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">end position</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_text_after_offset">
+        <callback name="get_text_after_offset">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the text after @offset bounded by the specified @boundary_type.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="Text" c:type="AtkText*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">position</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="boundary_type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">An #AtkTextBoundary</doc>
+              <type name="TextBoundary" c:type="AtkTextBoundary"/>
+            </parameter>
+            <parameter name="start_offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the start offset of the returned string</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="end_offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the offset of the first character after the returned substring</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_text_at_offset">
+        <callback name="get_text_at_offset">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the text at @offset bounded by the specified @boundary_type.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="Text" c:type="AtkText*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">position</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="boundary_type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">An #AtkTextBoundary</doc>
+              <type name="TextBoundary" c:type="AtkTextBoundary"/>
+            </parameter>
+            <parameter name="start_offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the start offset of the returned string</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="end_offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the offset of the first character after the returned substring</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_character_at_offset" introspectable="0">
+        <callback name="get_character_at_offset" introspectable="0">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the character at @offset.</doc>
+            <type name="gunichar" c:type="gunichar"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="Text" c:type="AtkText*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">position</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_text_before_offset">
+        <callback name="get_text_before_offset">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the text before @offset bounded by the specified @boundary_type.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="Text" c:type="AtkText*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">position</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="boundary_type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">An #AtkTextBoundary</doc>
+              <type name="TextBoundary" c:type="AtkTextBoundary"/>
+            </parameter>
+            <parameter name="start_offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the start offset of the returned string</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="end_offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the offset of the first character after the returned substring</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_caret_offset">
+        <callback name="get_caret_offset">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset position of the caret (cursor).</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="Text" c:type="AtkText*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_run_attributes" introspectable="0">
+        <callback name="get_run_attributes" introspectable="0">
+          <return-value>
+            <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="Text" c:type="AtkText*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="start_offset" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="end_offset" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_default_attributes" introspectable="0">
+        <callback name="get_default_attributes" introspectable="0">
+          <return-value>
+            <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="Text" c:type="AtkText*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_character_extents">
+        <callback name="get_character_extents">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="Text" c:type="AtkText*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The offset of the text character for which bounding information is required.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <doc xml:whitespace="preserve">Pointer for the x cordinate of the bounding box</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <doc xml:whitespace="preserve">Pointer for the y cordinate of the bounding box</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <doc xml:whitespace="preserve">Pointer for the width of the bounding box</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <doc xml:whitespace="preserve">Pointer for the height of the bounding box</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="coords" transfer-ownership="none">
+              <doc xml:whitespace="preserve">specify whether coordinates are relative to the screen or widget window</doc>
+              <type name="CoordType" c:type="AtkCoordType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_character_count">
+        <callback name="get_character_count">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of characters.</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="Text" c:type="AtkText*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_offset_at_point">
+        <callback name="get_offset_at_point">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset to the character which is located at</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="Text" c:type="AtkText*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <doc xml:whitespace="preserve">screen x-position of character</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <doc xml:whitespace="preserve">screen y-position of character</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="coords" transfer-ownership="none">
+              <doc xml:whitespace="preserve">specify whether coordinates are relative to the screen or widget window</doc>
+              <type name="CoordType" c:type="AtkCoordType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_n_selections">
+        <callback name="get_n_selections">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">The number of selected regions, or -1 if a failure</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="Text" c:type="AtkText*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_selection">
+        <callback name="get_selection">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the selected text.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="Text" c:type="AtkText*"/>
+            </parameter>
+            <parameter name="selection_num" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The selection number.  The selected regions are assigned numbers that correspond to how far the region is from the start of the text.  The selected region closest to the beginning of the text region is assigned the number 0, etc.  Note that adding, moving or deleting a selected region can change the numbering.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="start_offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">passes back the start position of the selected region</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="end_offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">passes back the end position of (e.g. offset immediately past) the selected region</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_selection">
+        <callback name="add_selection">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="Text" c:type="AtkText*"/>
+            </parameter>
+            <parameter name="start_offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the start position of the selected region</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="end_offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the offset of the first character after the selected region.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_selection">
+        <callback name="remove_selection">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="Text" c:type="AtkText*"/>
+            </parameter>
+            <parameter name="selection_num" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The selection number.  The selected regions are assigned numbers that correspond to how far the region is from the start of the text.  The selected region closest to the beginning of the text region is assigned the number 0, etc.  Note that adding, moving or deleting a selected region can change the numbering.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_selection">
+        <callback name="set_selection">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="Text" c:type="AtkText*"/>
+            </parameter>
+            <parameter name="selection_num" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The selection number.  The selected regions are assigned numbers that correspond to how far the region is from the start of the text.  The selected region closest to the beginning of the text region is assigned the number 0, etc.  Note that adding, moving or deleting a selected region can change the numbering.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="start_offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the new start position of the selection</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="end_offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the new end position of (e.g. offset immediately past) the selection</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_caret_offset">
+        <callback name="set_caret_offset">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="Text" c:type="AtkText*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">position</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="text_changed">
+        <callback name="text_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="Text" c:type="AtkText*"/>
+            </parameter>
+            <parameter name="position" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="length" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="text_caret_moved">
+        <callback name="text_caret_moved">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="Text" c:type="AtkText*"/>
+            </parameter>
+            <parameter name="location" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="text_selection_changed">
+        <callback name="text_selection_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="Text" c:type="AtkText*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="text_attributes_changed">
+        <callback name="text_attributes_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="Text" c:type="AtkText*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_range_extents">
+        <callback name="get_range_extents">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="Text" c:type="AtkText*"/>
+            </parameter>
+            <parameter name="start_offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The offset of the first text character for which boundary information is required.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="end_offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The offset of the text character after the last character for which boundary information is required.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="coord_type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">Specify whether coordinates are relative to the screen or widget window.</doc>
+              <type name="CoordType" c:type="AtkCoordType"/>
+            </parameter>
+            <parameter name="rect" transfer-ownership="none">
+              <doc xml:whitespace="preserve">A pointer to a AtkTextRectangle which is filled in by this function.</doc>
+              <type name="TextRectangle" c:type="AtkTextRectangle*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_bounded_ranges" introspectable="0">
+        <callback name="get_bounded_ranges" introspectable="0">
+          <return-value>
+            <doc xml:whitespace="preserve">Array of AtkTextRange. The last element of the array returned</doc>
+            <type name="TextRange" c:type="AtkTextRange**"/>
+          </return-value>
+          <parameters>
+            <parameter name="text" transfer-ownership="none">
+              <type name="Text" c:type="AtkText*"/>
+            </parameter>
+            <parameter name="rect" transfer-ownership="none">
+              <doc xml:whitespace="preserve">An AtkTextRectagle giving the dimensions of the bounding box.</doc>
+              <type name="TextRectangle" c:type="AtkTextRectangle*"/>
+            </parameter>
+            <parameter name="coord_type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">Specify whether coordinates are relative to the screen or widget window.</doc>
+              <type name="CoordType" c:type="AtkCoordType"/>
+            </parameter>
+            <parameter name="x_clip_type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">Specify the horizontal clip type.</doc>
+              <type name="TextClipType" c:type="AtkTextClipType"/>
+            </parameter>
+            <parameter name="y_clip_type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">Specify the vertical clip type.</doc>
+              <type name="TextClipType" c:type="AtkTextClipType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pad4">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+    </record>
+    <record name="TextRange" c:type="AtkTextRange">
+      <doc xml:whitespace="preserve">A structure used to describe a text range.</doc>
+      <field name="bounds" writable="1">
+        <type name="TextRectangle" c:type="AtkTextRectangle"/>
+      </field>
+      <field name="start_offset" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="end_offset" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="content" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </record>
+    <record name="TextRectangle" c:type="AtkTextRectangle">
+      <doc xml:whitespace="preserve">A structure used to store a rectangle used by AtkText.</doc>
+      <field name="x" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="width" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="height" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+    </record>
+    <class name="Util"
+           c:symbol-prefix="util"
+           c:type="AtkUtil"
+           parent="GObject.Object"
+           glib:type-name="AtkUtil"
+           glib:get-type="atk_util_get_type"
+           glib:type-struct="UtilClass">
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+    </class>
+    <record name="UtilClass"
+            c:type="AtkUtilClass"
+            glib:is-gtype-struct-for="Util">
+      <field name="parent">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="add_global_event_listener" introspectable="0">
+        <callback name="add_global_event_listener" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="listener" transfer-ownership="none">
+              <type name="GObject.SignalEmissionHook"
+                    c:type="GSignalEmissionHook"/>
+            </parameter>
+            <parameter name="event_type" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_global_event_listener">
+        <callback name="remove_global_event_listener">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="listener_id" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_key_event_listener" introspectable="0">
+        <callback name="add_key_event_listener" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="listener" transfer-ownership="none" closure="1">
+              <type name="KeySnoopFunc" c:type="AtkKeySnoopFunc"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_key_event_listener">
+        <callback name="remove_key_event_listener">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="listener_id" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_root" introspectable="0">
+        <callback name="get_root" introspectable="0">
+          <return-value>
+            <type name="Object" c:type="AtkObject*"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="get_toolkit_name">
+        <callback name="get_toolkit_name">
+          <return-value transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="get_toolkit_version">
+        <callback name="get_toolkit_version">
+          <return-value transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <interface name="Value"
+               c:symbol-prefix="value"
+               c:type="AtkValue"
+               glib:type-name="AtkValue"
+               glib:get-type="atk_value_get_type"
+               glib:type-struct="ValueIface">
+      <virtual-method name="get_current_value" invoker="get_current_value">
+        <doc xml:whitespace="preserve">Gets the value of this object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue representing the current accessible value</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_maximum_value" invoker="get_maximum_value">
+        <doc xml:whitespace="preserve">Gets the maximum value of this object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue representing the maximum accessible value</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_minimum_increment"
+                      invoker="get_minimum_increment"
+                      version="1.12">
+        <doc xml:whitespace="preserve">Gets the minimum increment by which the value of this object may be changed.  If zero,
+the minimum increment is undefined, which may mean that it is limited only by the 
+floating point precision of the platform.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue representing the minimum increment by which the accessible value may be changed</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_minimum_value" invoker="get_minimum_value">
+        <doc xml:whitespace="preserve">Gets the minimum value of this object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue representing the minimum accessible value</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_current_value" invoker="set_current_value">
+        <doc xml:whitespace="preserve">Sets the value of this object.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if new value is successfully set, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue which is the desired new accessible value.</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_current_value"
+              c:identifier="atk_value_get_current_value">
+        <doc xml:whitespace="preserve">Gets the value of this object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue representing the current accessible value</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_maximum_value"
+              c:identifier="atk_value_get_maximum_value">
+        <doc xml:whitespace="preserve">Gets the maximum value of this object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue representing the maximum accessible value</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_minimum_increment"
+              c:identifier="atk_value_get_minimum_increment"
+              version="1.12">
+        <doc xml:whitespace="preserve">Gets the minimum increment by which the value of this object may be changed.  If zero,
+the minimum increment is undefined, which may mean that it is limited only by the 
+floating point precision of the platform.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue representing the minimum increment by which the accessible value may be changed</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_minimum_value"
+              c:identifier="atk_value_get_minimum_value">
+        <doc xml:whitespace="preserve">Gets the minimum value of this object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue representing the minimum accessible value</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_current_value"
+              c:identifier="atk_value_set_current_value">
+        <doc xml:whitespace="preserve">Sets the value of this object.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if new value is successfully set, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue which is the desired new accessible value.</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="ValueIface"
+            c:type="AtkValueIface"
+            glib:is-gtype-struct-for="Value">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_current_value">
+        <callback name="get_current_value">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="obj" transfer-ownership="none">
+              <type name="Value" c:type="AtkValue*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GValue representing the current accessible value</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_maximum_value">
+        <callback name="get_maximum_value">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="obj" transfer-ownership="none">
+              <type name="Value" c:type="AtkValue*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GValue representing the maximum accessible value</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_minimum_value">
+        <callback name="get_minimum_value">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="obj" transfer-ownership="none">
+              <type name="Value" c:type="AtkValue*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GValue representing the minimum accessible value</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_current_value">
+        <callback name="set_current_value">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if new value is successfully set, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="obj" transfer-ownership="none">
+              <type name="Value" c:type="AtkValue*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GValue which is the desired new accessible value.</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_minimum_increment">
+        <callback name="get_minimum_increment">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="obj" transfer-ownership="none">
+              <type name="Value" c:type="AtkValue*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GValue representing the minimum increment by which the accessible value may be changed</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pad1">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+    </record>
+    <record name="_PropertyValues" c:type="_AtkPropertyValues">
+      <field name="property_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="old_value" writable="1">
+        <type name="GObject.Value" c:type="GValue"/>
+      </field>
+      <field name="new_value" writable="1">
+        <type name="GObject.Value" c:type="GValue"/>
+      </field>
+    </record>
+    <record name="_Registry" c:type="_AtkRegistry">
+      <field name="parent" writable="1">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="factory_type_registry" writable="1">
+        <type name="GLib.HashTable" c:type="GHashTable*">
+          <type name="gpointer" c:type="gpointer"/>
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="factory_singleton_cache" writable="1">
+        <type name="GLib.HashTable" c:type="GHashTable*">
+          <type name="gpointer" c:type="gpointer"/>
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+    </record>
+    <record name="_RegistryClass" c:type="_AtkRegistryClass">
+      <field name="parent_class" writable="1">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <function name="add_focus_tracker"
+              c:identifier="atk_add_focus_tracker"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Adds the specified function to the list of functions to be called
+when an object receives focus.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">added focus tracker id, or 0 on failure.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="focus_tracker" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Function to be added to the list of functions to be called when an object receives focus.</doc>
+          <type name="EventListener" c:type="AtkEventListener"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="add_global_event_listener"
+              c:identifier="atk_add_global_event_listener"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Adds the specified function to the list of functions to be called
+when an event of type event_type occurs.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">added event listener id, or 0 on failure.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="listener" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the listener to notify</doc>
+          <type name="GObject.SignalEmissionHook"
+                c:type="GSignalEmissionHook"/>
+        </parameter>
+        <parameter name="event_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of event for which notification is requested</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="add_key_event_listener"
+              c:identifier="atk_add_key_event_listener"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Adds the specified function to the list of functions to be called
+when a key event occurs.  The @data element will be passed to the
+#AtkKeySnoopFunc (@listener) as the @func_data param, on notification.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">added event listener id, or 0 on failure.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="listener" transfer-ownership="none" closure="1">
+          <doc xml:whitespace="preserve">the listener to notify</doc>
+          <type name="KeySnoopFunc" c:type="AtkKeySnoopFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #gpointer that points to a block of data that should be sent to the registered listeners, along with the event notification, when it occurs.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attribute_set_free" c:identifier="atk_attribute_set_free">
+      <doc xml:whitespace="preserve">Frees the memory used by an #AtkAttributeSet, including all its
+#AtkAttributes.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="attrib_set" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #AtkAttributeSet to free</doc>
+          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="focus_tracker_init"
+              c:identifier="atk_focus_tracker_init"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Specifies the function to be called for focus tracker initialization.
+This function should be called by an implementation of the
+ATK interface if any specific work needs to be done to enable
+focus tracking.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="init" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Function to be called for focus tracker initialization</doc>
+          <type name="EventListenerInit" c:type="AtkEventListenerInit"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="focus_tracker_notify"
+              c:identifier="atk_focus_tracker_notify">
+      <doc xml:whitespace="preserve">Cause the focus tracker functions which have been specified to be
+executed for the object.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an #AtkObject</doc>
+          <type name="Object" c:type="AtkObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_default_registry"
+              c:identifier="atk_get_default_registry"
+              introspectable="0">
+      <return-value>
+        <type name="Registry" c:type="AtkRegistry*"/>
+      </return-value>
+    </function>
+    <function name="get_focus_object"
+              c:identifier="atk_get_focus_object"
+              version="1.6"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Gets the currently focused object.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the currently focused object for the current application</doc>
+        <type name="Object" c:type="AtkObject*"/>
+      </return-value>
+    </function>
+    <function name="get_root" c:identifier="atk_get_root" introspectable="0">
+      <doc xml:whitespace="preserve">Gets the root accessible container for the current application.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the root accessible container for the current application</doc>
+        <type name="Object" c:type="AtkObject*"/>
+      </return-value>
+    </function>
+    <function name="get_toolkit_name" c:identifier="atk_get_toolkit_name">
+      <doc xml:whitespace="preserve">Gets name string for the GUI toolkit implementing ATK for this application.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">name string for the GUI toolkit implementing ATK for this application</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="get_toolkit_version"
+              c:identifier="atk_get_toolkit_version">
+      <doc xml:whitespace="preserve">Gets version string for the GUI toolkit implementing ATK for this application.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">version string for the GUI toolkit implementing ATK for this application</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="get_version" c:identifier="atk_get_version">
+      <doc xml:whitespace="preserve">Gets the current version for ATK.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">version string for ATK</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="relation_type_for_name"
+              c:identifier="atk_relation_type_for_name">
+      <doc xml:whitespace="preserve">Get the #AtkRelationType type corresponding to a relation name.
+or #ATK_RELATION_NULL if no matching relation type is found.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the #AtkRelationType enumerated type corresponding to the specified name,</doc>
+        <type name="RelationType" c:type="AtkRelationType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string which is the (non-localized) name of an ATK relation type.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="relation_type_get_name"
+              c:identifier="atk_relation_type_get_name">
+      <doc xml:whitespace="preserve">Gets the description string describing the #AtkRelationType @type.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the string describing the AtkRelationType</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #AtkRelationType whose name is required</doc>
+          <type name="RelationType" c:type="AtkRelationType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="relation_type_register"
+              c:identifier="atk_relation_type_register">
+      <doc xml:whitespace="preserve">Associate @name with a new #AtkRelationType</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">an #AtkRelationType associated with @name</doc>
+        <type name="RelationType" c:type="AtkRelationType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a name string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="remove_focus_tracker"
+              c:identifier="atk_remove_focus_tracker">
+      <doc xml:whitespace="preserve">Removes the specified focus tracker from the list of functions
+to be called when any object receives focus.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tracker_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the id of the focus tracker to remove</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="remove_global_event_listener"
+              c:identifier="atk_remove_global_event_listener">
+      <doc xml:whitespace="preserve">Removes the specified event listener</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="listener_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the id of the event listener to remove</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="remove_key_event_listener"
+              c:identifier="atk_remove_key_event_listener">
+      <doc xml:whitespace="preserve">Removes the specified event listener</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="listener_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the id of the event listener to remove</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="role_for_name" c:identifier="atk_role_for_name">
+      <doc xml:whitespace="preserve">Get the #AtkRole type corresponding to a rolew name.
+or #ATK_ROLE_INVALID if no matching role is found.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the #AtkRole enumerated type corresponding to the specified</doc>
+        <type name="Role" c:type="AtkRole"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string which is the (non-localized) name of an ATK role.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="role_get_localized_name"
+              c:identifier="atk_role_get_localized_name">
+      <doc xml:whitespace="preserve">Gets the localized description string describing the #AtkRole @role.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the localized string describing the AtkRole</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="role" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #AtkRole whose localized name is required</doc>
+          <type name="Role" c:type="AtkRole"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="role_get_name" c:identifier="atk_role_get_name">
+      <doc xml:whitespace="preserve">Gets the description string describing the #AtkRole @role.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the string describing the AtkRole</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="role" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #AtkRole whose name is required</doc>
+          <type name="Role" c:type="AtkRole"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="role_register" c:identifier="atk_role_register">
+      <doc xml:whitespace="preserve">Registers the role specified by @name.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">an #AtkRole for the new role.</doc>
+        <type name="Role" c:type="AtkRole"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a character string describing the new role.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="state_type_for_name"
+              c:identifier="atk_state_type_for_name">
+      <doc xml:whitespace="preserve">Gets the #AtkStateType corresponding to the description string @name.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">an #AtkStateType corresponding to @name</doc>
+        <type name="StateType" c:type="AtkStateType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a character string state name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="state_type_get_name"
+              c:identifier="atk_state_type_get_name">
+      <doc xml:whitespace="preserve">Gets the description string describing the #AtkStateType @type.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the string describing the AtkStateType</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #AtkStateType whose name is required</doc>
+          <type name="StateType" c:type="AtkStateType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="state_type_register"
+              c:identifier="atk_state_type_register">
+      <doc xml:whitespace="preserve">Register a new object state.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">an #AtkState value for the new state.</doc>
+        <type name="StateType" c:type="AtkStateType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a character string describing the new state.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="text_attribute_for_name"
+              c:identifier="atk_text_attribute_for_name">
+      <doc xml:whitespace="preserve">Get the #AtkTextAttribute type corresponding to a text attribute name.
+or #ATK_TEXT_ATTRIBUTE_INVALID if no matching text attribute is found.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the #AtkTextAttribute enumerated type corresponding to the specified</doc>
+        <type name="TextAttribute" c:type="AtkTextAttribute"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string which is the (non-localized) name of an ATK text attribute.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="text_attribute_get_name"
+              c:identifier="atk_text_attribute_get_name">
+      <doc xml:whitespace="preserve">Gets the name corresponding to the #AtkTextAttribute</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a string containing the name; this string should not be freed</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="attr" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #AtkTextAttribute whose name is required</doc>
+          <type name="TextAttribute" c:type="AtkTextAttribute"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="text_attribute_get_value"
+              c:identifier="atk_text_attribute_get_value">
+      <doc xml:whitespace="preserve">Gets the value for the index of the #AtkTextAttribute
+NULL is returned if there are no values maintained for the attr value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a string containing the value; this string should not be freed;</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="attr" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #AtkTextAttribute for which a value is required</doc>
+          <type name="TextAttribute" c:type="AtkTextAttribute"/>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The index of the required value</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="text_attribute_register"
+              c:identifier="atk_text_attribute_register">
+      <doc xml:whitespace="preserve">Associate @name with a new #AtkTextAttribute</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">an #AtkTextAttribute associated with @name</doc>
+        <type name="TextAttribute" c:type="AtkTextAttribute"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a name string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="text_free_ranges"
+              c:identifier="atk_text_free_ranges"
+              version="1.3">
+      <doc xml:whitespace="preserve">Frees the memory associated with an array of AtkTextRange. It is assumed
+that the array was returned by the function atk_text_get_bounded_ranges
+and is NULL terminated.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ranges" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A pointer to an array of  #AtkTextRange which is to be freed.</doc>
+          <type name="TextRange" c:type="AtkTextRange**"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/basis/atk/atk.factor b/basis/atk/atk.factor
new file mode 100644 (file)
index 0000000..a27f470
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: atk.ffi ;
+IN: atk
+
diff --git a/basis/atk/authors.txt b/basis/atk/authors.txt
new file mode 100644 (file)
index 0000000..ce9bcc8
--- /dev/null
@@ -0,0 +1 @@
+Anton Gorenko
\ No newline at end of file
diff --git a/basis/atk/ffi/ffi.factor b/basis/atk/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..1f2c5b4
--- /dev/null
@@ -0,0 +1,21 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries alien.syntax combinators
+gobject-introspection kernel system vocabs.loader ;
+IN: atk.ffi
+
+<<
+"gobject.ffi" require
+>>
+
+LIBRARY: atk
+
+<<
+"atk" {
+    { [ os winnt? ] [ "libatk-1.0-0.dll" cdecl add-library ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libatk-1.0.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:atk/Atk-1.0.gir
diff --git a/basis/atk/summary.txt b/basis/atk/summary.txt
new file mode 100644 (file)
index 0000000..951074f
--- /dev/null
@@ -0,0 +1 @@
+Atk binding
diff --git a/basis/atk/tags.txt b/basis/atk/tags.txt
new file mode 100755 (executable)
index 0000000..bb863cf
--- /dev/null
@@ -0,0 +1 @@
+bindings
index 271a99c22398a34993801e49114724bcdcfcc7d0..7c1c2674e57de683549ab24b19bd8837a0475a2d 100644 (file)
@@ -7,7 +7,7 @@ IN: bootstrap.ui
         {
             { [ os macosx? ] [ "cocoa" ] }
             { [ os windows? ] [ "windows" ] }
-            { [ os unix? ] [ "x11" ] }
+            { [ os unix? ] [ "gtk" ] }
         } cond
     ] unless* "ui.backend." prepend require
 ] when
diff --git a/basis/gdk/Gdk-3.0.gir b/basis/gdk/Gdk-3.0.gir
new file mode 100644 (file)
index 0000000..cce09d3
--- /dev/null
@@ -0,0 +1,19560 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="GdkPixbuf" version="2.0"/>
+  <include name="Gio" version="2.0"/>
+  <include name="Pango" version="1.0"/>
+  <include name="cairo" version="1.0"/>
+  <namespace name="Gdk"
+             version="3.0"
+             shared-library="libgdk-x11-3.0.so.0"
+             c:identifier-prefixes="Gdk"
+             c:symbol-prefixes="gdk">
+    <alias name="NativeWindow" c:type="GdkNativeWindow">
+      <type name="guint32" c:type="guint32"/>
+    </alias>
+    <alias name="Rectangle" c:type="GdkRectangle">
+      <type name="cairo.RectangleInt" c:type="cairo_rectangle_int_t"/>
+    </alias>
+    <alias name="XEvent" c:type="GdkXEvent">
+      <doc xml:whitespace="preserve">Used to represent native events (&lt;type&gt;XEvent&lt;/type&gt;s for the X11
+backend, &lt;type&gt;MSG&lt;/type&gt;s for Win32).</doc>
+      <type name="gpointer" c:type="gpointer"/>
+    </alias>
+    <constant name="ANY_BUTTON_MASK" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="AppLaunchContext"
+           c:symbol-prefix="app_launch_context"
+           c:type="GdkAppLaunchContext"
+           parent="Gio.AppLaunchContext"
+           glib:type-name="GdkAppLaunchContext"
+           glib:get-type="gdk_app_launch_context_get_type"
+           glib:type-struct="AppLaunchContextClass">
+      <constructor name="new"
+                   c:identifier="gdk_app_launch_context_new"
+                   version="2.14">
+        <doc xml:whitespace="preserve">Creates a new #GdkAppLaunchContext.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdkAppLaunchContext</doc>
+          <type name="AppLaunchContext" c:type="GdkAppLaunchContext*"/>
+        </return-value>
+      </constructor>
+      <method name="set_desktop"
+              c:identifier="gdk_app_launch_context_set_desktop"
+              version="2.14">
+        <doc xml:whitespace="preserve">Sets the workspace on which applications will be launched when
+using this context when running under a window manager that 
+supports multiple workspaces, as described in the 
+&lt;ulink url="http://www.freedesktop.org/Standards/wm-spec"&gt;Extended 
+Window Manager Hints&lt;/ulink&gt;. 
+When the workspace is not specified or @desktop is set to -1, 
+it is up to the window manager to pick one, typically it will
+be the current workspace.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="desktop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of a workspace, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_display"
+              c:identifier="gdk_app_launch_context_set_display"
+              version="2.14">
+        <doc xml:whitespace="preserve">Sets the display on which applications will be launched when
+using this context. See also gdk_app_launch_context_set_screen().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="display" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkDisplay</doc>
+            <type name="Display" c:type="GdkDisplay*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon"
+              c:identifier="gdk_app_launch_context_set_icon"
+              version="2.14">
+        <doc xml:whitespace="preserve">Sets the icon for applications that are launched with this
+context.
+Window Managers can use this information when displaying startup
+notification.
+See also gdk_app_launch_context_set_icon_name().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GIcon, or %NULL</doc>
+            <type name="Gio.Icon" c:type="GIcon*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_name"
+              c:identifier="gdk_app_launch_context_set_icon_name"
+              version="2.14">
+        <doc xml:whitespace="preserve">Sets the icon for applications that are launched with this context. 
+The @icon_name will be interpreted in the same way as the Icon field 
+in desktop files. See also gdk_app_launch_context_set_icon(). 
+If both @icon and @icon_name are set, the @icon_name takes priority.
+If neither @icon or @icon_name is set, the icon is taken from either 
+the file that is passed to launched application or from the #GAppInfo 
+for the launched application itself.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an icon name, or %NULL</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_screen"
+              c:identifier="gdk_app_launch_context_set_screen"
+              version="2.14">
+        <doc xml:whitespace="preserve">Sets the screen on which applications will be launched when
+using this context. See also gdk_app_launch_context_set_display().
+If both @screen and @display are set, the @screen takes priority.
+If neither @screen or @display are set, the default screen and
+display are used.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkScreen</doc>
+            <type name="Screen" c:type="GdkScreen*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_timestamp"
+              c:identifier="gdk_app_launch_context_set_timestamp"
+              version="2.14">
+        <doc xml:whitespace="preserve">Sets the timestamp of @context. The timestamp should ideally
+be taken from the event that triggered the launch. 
+Window managers can use this information to avoid moving the
+focus to the newly launched application when the user is busy
+typing in another window. This is also known as 'focus stealing
+prevention'.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a timestamp</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="Gio.AppLaunchContext" c:type="GAppLaunchContext"/>
+      </field>
+      <field name="priv">
+        <type name="AppLaunchContextPrivate"
+              c:type="GdkAppLaunchContextPrivate*"/>
+      </field>
+    </class>
+    <record name="AppLaunchContextClass"
+            c:type="GdkAppLaunchContextClass"
+            glib:is-gtype-struct-for="AppLaunchContext">
+      <field name="parent_class">
+        <type name="Gio.AppLaunchContextClass"
+              c:type="GAppLaunchContextClass"/>
+      </field>
+    </record>
+    <record name="AppLaunchContextPrivate"
+            c:type="GdkAppLaunchContextPrivate"
+            disguised="1">
+    </record>
+    <record name="Atom" c:type="GdkAtom" disguised="1">
+    </record>
+    <enumeration name="AxisUse"
+                 glib:type-name="GdkAxisUse"
+                 glib:get-type="gdk_axis_use_get_type"
+                 c:type="GdkAxisUse">
+      <doc xml:whitespace="preserve">An enumeration describing the way in which a device
+axis (valuator) maps onto the predefined valuator
+types that GTK+ understands.</doc>
+      <member name="ignore"
+              value="0"
+              c:identifier="GDK_AXIS_IGNORE"
+              glib:nick="ignore"/>
+      <member name="x" value="1" c:identifier="GDK_AXIS_X" glib:nick="x"/>
+      <member name="y" value="2" c:identifier="GDK_AXIS_Y" glib:nick="y"/>
+      <member name="pressure"
+              value="3"
+              c:identifier="GDK_AXIS_PRESSURE"
+              glib:nick="pressure"/>
+      <member name="xtilt"
+              value="4"
+              c:identifier="GDK_AXIS_XTILT"
+              glib:nick="xtilt"/>
+      <member name="ytilt"
+              value="5"
+              c:identifier="GDK_AXIS_YTILT"
+              glib:nick="ytilt"/>
+      <member name="wheel"
+              value="6"
+              c:identifier="GDK_AXIS_WHEEL"
+              glib:nick="wheel"/>
+      <member name="last"
+              value="7"
+              c:identifier="GDK_AXIS_LAST"
+              glib:nick="last"/>
+    </enumeration>
+    <record name="Bitmap" c:type="GdkBitmap" disguised="1">
+    </record>
+    <enumeration name="ByteOrder"
+                 glib:type-name="GdkByteOrder"
+                 glib:get-type="gdk_byte_order_get_type"
+                 c:type="GdkByteOrder">
+      <member name="lsb_first"
+              value="0"
+              c:identifier="GDK_LSB_FIRST"
+              glib:nick="lsb-first"/>
+      <member name="msb_first"
+              value="1"
+              c:identifier="GDK_MSB_FIRST"
+              glib:nick="msb-first"/>
+    </enumeration>
+    <constant name="CURRENT_TIME" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="Color"
+            c:type="GdkColor"
+            glib:type-name="GdkColor"
+            glib:get-type="gdk_color_get_type"
+            c:symbol-prefix="color">
+      <field name="pixel" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="red" writable="1">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="green" writable="1">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="blue" writable="1">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <method name="copy" c:identifier="gdk_color_copy">
+        <doc xml:whitespace="preserve">Makes a copy of a color structure. The result
+must be freed using gdk_color_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a copy of @color.</doc>
+          <type name="Color" c:type="GdkColor*"/>
+        </return-value>
+      </method>
+      <method name="equal" c:identifier="gdk_color_equal">
+        <doc xml:whitespace="preserve">Compares two colors.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the two colors compare equal</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="colorb" transfer-ownership="none">
+            <doc xml:whitespace="preserve">another #GdkColor.</doc>
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="gdk_color_free">
+        <doc xml:whitespace="preserve">Frees a color structure created with 
+gdk_color_copy().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="hash" c:identifier="gdk_color_hash">
+        <doc xml:whitespace="preserve">A hash function suitable for using for a hash
+table that stores #GdkColor's.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The hash function applied to @colora</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="to_string"
+              c:identifier="gdk_color_to_string"
+              version="2.12">
+        <doc xml:whitespace="preserve">Returns a textual specification of @color in the hexadecimal form
+&lt;literal&gt;&amp;num;rrrrggggbbbb&lt;/literal&gt;, where &lt;literal&gt;r&lt;/literal&gt;,
+&lt;literal&gt;g&lt;/literal&gt; and &lt;literal&gt;b&lt;/literal&gt; are hex digits
+representing the red, green and blue components respectively.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly-allocated text string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="Colormap"
+           c:symbol-prefix="colormap"
+           c:type="GdkColormap"
+           parent="GObject.Object"
+           glib:type-name="GdkColormap"
+           glib:get-type="gdk_colormap_get_type"
+           glib:type-struct="ColormapClass">
+      <constructor name="new" c:identifier="gdk_colormap_new">
+        <doc xml:whitespace="preserve">Creates a new colormap for the given visual.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GdkColormap.</doc>
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="visual" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkVisual.</doc>
+            <type name="Visual" c:type="GdkVisual*"/>
+          </parameter>
+          <parameter name="allocate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">if %TRUE, the newly created colormap will be a private colormap, and all colors in it will be allocated for the applications use.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="get_system"
+                c:identifier="gdk_colormap_get_system"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Gets the system's default colormap for the default screen. (See
+gdk_colormap_get_system_for_screen ())</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the default colormap.</doc>
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </return-value>
+      </function>
+      <method name="alloc_color" c:identifier="gdk_colormap_alloc_color">
+        <doc xml:whitespace="preserve">Allocates a single color from a colormap.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the allocation succeeded.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the color to allocate. On return the &lt;structfield&gt;pixel&lt;/structfield&gt; field will be filled in if allocation succeeds.</doc>
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+          <parameter name="writeable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">this parameter has no effect, and it's here for mere compatibility.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="best_match" transfer-ownership="none">
+            <doc xml:whitespace="preserve">If %TRUE, GDK will attempt to do matching against existing colors if the color cannot be allocated as requested.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="alloc_colors" c:identifier="gdk_colormap_alloc_colors">
+        <doc xml:whitespace="preserve">Allocates colors from a colormap.
+allocated.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of colors that were not successfully</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="colors" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The color values to allocate. On return, the pixel values for allocated colors will be filled in.</doc>
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+          <parameter name="n_colors" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The number of colors in @colors.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="writeable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">this parameter has no effect, and it's here for mere compatibility.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="best_match" transfer-ownership="none">
+            <doc xml:whitespace="preserve">If %TRUE, GDK will attempt to do matching against existing colors if the colors cannot be allocated as requested.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="success" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An array of length @ncolors. On return, this indicates whether the corresponding color in @colors was successfully allocated or not.</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free_colors" c:identifier="gdk_colormap_free_colors">
+        <doc xml:whitespace="preserve">Frees previously allocated colors.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="colors" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the colors to free.</doc>
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+          <parameter name="n_colors" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of colors in @colors.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_screen"
+              c:identifier="gdk_colormap_get_screen"
+              version="2.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the screen for which this colormap was created.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the screen for which this colormap was created.</doc>
+          <type name="Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </method>
+      <method name="get_visual"
+              c:identifier="gdk_colormap_get_visual"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns the visual for which a given colormap was created.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the visual of the colormap.</doc>
+          <type name="Visual" c:type="GdkVisual*"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="size">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="colors">
+        <type name="Color" c:type="GdkColor*"/>
+      </field>
+      <field name="visual">
+        <type name="Visual" c:type="GdkVisual*"/>
+      </field>
+      <field name="windowing_data">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </class>
+    <record name="ColormapClass"
+            c:type="GdkColormapClass"
+            glib:is-gtype-struct-for="Colormap">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <enumeration name="CrossingMode"
+                 glib:type-name="GdkCrossingMode"
+                 glib:get-type="gdk_crossing_mode_get_type"
+                 c:type="GdkCrossingMode">
+      <member name="normal"
+              value="0"
+              c:identifier="GDK_CROSSING_NORMAL"
+              glib:nick="normal"/>
+      <member name="grab"
+              value="1"
+              c:identifier="GDK_CROSSING_GRAB"
+              glib:nick="grab"/>
+      <member name="ungrab"
+              value="2"
+              c:identifier="GDK_CROSSING_UNGRAB"
+              glib:nick="ungrab"/>
+      <member name="gtk_grab"
+              value="3"
+              c:identifier="GDK_CROSSING_GTK_GRAB"
+              glib:nick="gtk-grab"/>
+      <member name="gtk_ungrab"
+              value="4"
+              c:identifier="GDK_CROSSING_GTK_UNGRAB"
+              glib:nick="gtk-ungrab"/>
+      <member name="state_changed"
+              value="5"
+              c:identifier="GDK_CROSSING_STATE_CHANGED"
+              glib:nick="state-changed"/>
+    </enumeration>
+    <record name="Cursor"
+            c:type="GdkCursor"
+            glib:type-name="GdkCursor"
+            glib:get-type="gdk_cursor_get_type"
+            c:symbol-prefix="cursor">
+      <field name="type" writable="1">
+        <type name="CursorType" c:type="GdkCursorType"/>
+      </field>
+      <field name="ref_count" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <constructor name="new" c:identifier="gdk_cursor_new">
+        <doc xml:whitespace="preserve">Creates a new cursor from the set of builtin cursors for the default display.
+See gdk_cursor_new_for_display().
+To make the cursor invisible, use %GDK_BLANK_CURSOR.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdkCursor</doc>
+          <type name="Cursor" c:type="GdkCursor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cursor_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">cursor to create</doc>
+            <type name="CursorType" c:type="GdkCursorType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_for_display"
+                   c:identifier="gdk_cursor_new_for_display"
+                   version="2.2">
+        <doc xml:whitespace="preserve">Creates a new cursor from the set of builtin cursors.
+Some useful ones are:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;inlinegraphic format="PNG" fileref="right_ptr.png"&gt;&lt;/inlinegraphic&gt; #GDK_RIGHT_PTR (right-facing arrow)
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;inlinegraphic format="PNG" fileref="crosshair.png"&gt;&lt;/inlinegraphic&gt; #GDK_CROSSHAIR (crosshair)
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;inlinegraphic format="PNG" fileref="xterm.png"&gt;&lt;/inlinegraphic&gt; #GDK_XTERM (I-beam)
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;inlinegraphic format="PNG" fileref="watch.png"&gt;&lt;/inlinegraphic&gt; #GDK_WATCH (busy)
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;inlinegraphic format="PNG" fileref="fleur.png"&gt;&lt;/inlinegraphic&gt; #GDK_FLEUR (for moving objects)
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;inlinegraphic format="PNG" fileref="hand1.png"&gt;&lt;/inlinegraphic&gt; #GDK_HAND1 (a right-pointing hand)
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;inlinegraphic format="PNG" fileref="hand2.png"&gt;&lt;/inlinegraphic&gt; #GDK_HAND2 (a left-pointing hand)
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;inlinegraphic format="PNG" fileref="left_side.png"&gt;&lt;/inlinegraphic&gt; #GDK_LEFT_SIDE (resize left side)
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;inlinegraphic format="PNG" fileref="right_side.png"&gt;&lt;/inlinegraphic&gt; #GDK_RIGHT_SIDE (resize right side)
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;inlinegraphic format="PNG" fileref="top_left_corner.png"&gt;&lt;/inlinegraphic&gt; #GDK_TOP_LEFT_CORNER (resize northwest corner)
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;inlinegraphic format="PNG" fileref="top_right_corner.png"&gt;&lt;/inlinegraphic&gt; #GDK_TOP_RIGHT_CORNER (resize northeast corner)
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;inlinegraphic format="PNG" fileref="bottom_left_corner.png"&gt;&lt;/inlinegraphic&gt; #GDK_BOTTOM_LEFT_CORNER (resize southwest corner)
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;inlinegraphic format="PNG" fileref="bottom_right_corner.png"&gt;&lt;/inlinegraphic&gt; #GDK_BOTTOM_RIGHT_CORNER (resize southeast corner)
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;inlinegraphic format="PNG" fileref="top_side.png"&gt;&lt;/inlinegraphic&gt; #GDK_TOP_SIDE (resize top side)
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;inlinegraphic format="PNG" fileref="bottom_side.png"&gt;&lt;/inlinegraphic&gt; #GDK_BOTTOM_SIDE (resize bottom side)
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;inlinegraphic format="PNG" fileref="sb_h_double_arrow.png"&gt;&lt;/inlinegraphic&gt; #GDK_SB_H_DOUBLE_ARROW (move vertical splitter)
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;inlinegraphic format="PNG" fileref="sb_v_double_arrow.png"&gt;&lt;/inlinegraphic&gt; #GDK_SB_V_DOUBLE_ARROW (move horizontal splitter)
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+#GDK_BLANK_CURSOR (Blank cursor). Since 2.16
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdkCursor</doc>
+          <type name="Cursor" c:type="GdkCursor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkDisplay for which the cursor will be created</doc>
+            <type name="Display" c:type="GdkDisplay*"/>
+          </parameter>
+          <parameter name="cursor_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">cursor to create</doc>
+            <type name="CursorType" c:type="GdkCursorType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_name"
+                   c:identifier="gdk_cursor_new_from_name"
+                   version="2.8">
+        <doc xml:whitespace="preserve">Creates a new cursor by looking up @name in the current cursor
+theme. 
+the given name</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdkCursor, or %NULL if there is no cursor with</doc>
+          <type name="Cursor" c:type="GdkCursor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkDisplay for which the cursor will be created</doc>
+            <type name="Display" c:type="GdkDisplay*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the cursor</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_pixbuf"
+                   c:identifier="gdk_cursor_new_from_pixbuf"
+                   version="2.4">
+        <doc xml:whitespace="preserve">Creates a new cursor from a pixbuf. 
+Not all GDK backends support RGBA cursors. If they are not 
+supported, a monochrome approximation will be displayed. 
+The functions gdk_display_supports_cursor_alpha() and 
+gdk_display_supports_cursor_color() can be used to determine
+whether RGBA cursors are supported; 
+gdk_display_get_default_cursor_size() and 
+gdk_display_get_maximal_cursor_size() give information about 
+cursor sizes.
+On the X backend, support for RGBA cursors requires a
+sufficently new version of the X Render extension.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdkCursor.</doc>
+          <type name="Cursor" c:type="GdkCursor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkDisplay for which the cursor will be created</doc>
+            <type name="Display" c:type="GdkDisplay*"/>
+          </parameter>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkPixbuf containing the cursor image</doc>
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the horizontal offset of the 'hotspot' of the cursor.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the vertical offset of the 'hotspot' of the cursor.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_pixmap"
+                   c:identifier="gdk_cursor_new_from_pixmap">
+        <doc xml:whitespace="preserve">Creates a new cursor from a given pixmap and mask. Both the pixmap and mask
+must have a depth of 1 (i.e. each pixel has only 2 values - on or off).
+The standard cursor size is 16 by 16 pixels.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GdkCursor.</doc>
+          <type name="Cursor" c:type="GdkCursor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the pixmap specifying the cursor.</doc>
+            <type name="Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the pixmap specifying the mask, which must be the same size as</doc>
+            <type name="Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="fg" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the foreground color, used for the bits in the source which are 1. The color does not have to be allocated first.</doc>
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+          <parameter name="bg" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the background color, used for the bits in the source which are 0. The color does not have to be allocated first.</doc>
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the horizontal offset of the 'hotspot' of the cursor.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the vertical offset of the 'hotspot' of the cursor.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_cursor_type"
+              c:identifier="gdk_cursor_get_cursor_type"
+              version="2.22">
+        <doc xml:whitespace="preserve">Returns the cursor type for this cursor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkCursorType</doc>
+          <type name="CursorType" c:type="GdkCursorType"/>
+        </return-value>
+      </method>
+      <method name="get_display"
+              c:identifier="gdk_cursor_get_display"
+              introspectable="0">
+        <return-value>
+          <type name="Display" c:type="GdkDisplay*"/>
+        </return-value>
+      </method>
+      <method name="get_image"
+              c:identifier="gdk_cursor_get_image"
+              version="2.8"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns a #GdkPixbuf with the image used to display the cursor.
+Note that depending on the capabilities of the windowing system and 
+on the cursor, GDK may not be able to obtain the image data. In this 
+case, %NULL is returned.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a #GdkPixbuf representing @cursor, or %NULL</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="ref" c:identifier="gdk_cursor_ref">
+        <doc xml:whitespace="preserve">Adds a reference to @cursor.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">Same @cursor that was passed in</doc>
+          <type name="Cursor" c:type="GdkCursor*"/>
+        </return-value>
+      </method>
+      <method name="unref" c:identifier="gdk_cursor_unref">
+        <doc xml:whitespace="preserve">Removes a reference from @cursor, deallocating the cursor
+if no references remain.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="CursorType"
+                 glib:type-name="GdkCursorType"
+                 glib:get-type="gdk_cursor_type_get_type"
+                 c:type="GdkCursorType">
+      <member name="x_cursor"
+              value="0"
+              c:identifier="GDK_X_CURSOR"
+              glib:nick="x-cursor"/>
+      <member name="arrow"
+              value="2"
+              c:identifier="GDK_ARROW"
+              glib:nick="arrow"/>
+      <member name="based_arrow_down"
+              value="4"
+              c:identifier="GDK_BASED_ARROW_DOWN"
+              glib:nick="based-arrow-down"/>
+      <member name="based_arrow_up"
+              value="6"
+              c:identifier="GDK_BASED_ARROW_UP"
+              glib:nick="based-arrow-up"/>
+      <member name="boat" value="8" c:identifier="GDK_BOAT" glib:nick="boat"/>
+      <member name="bogosity"
+              value="10"
+              c:identifier="GDK_BOGOSITY"
+              glib:nick="bogosity"/>
+      <member name="bottom_left_corner"
+              value="12"
+              c:identifier="GDK_BOTTOM_LEFT_CORNER"
+              glib:nick="bottom-left-corner"/>
+      <member name="bottom_right_corner"
+              value="14"
+              c:identifier="GDK_BOTTOM_RIGHT_CORNER"
+              glib:nick="bottom-right-corner"/>
+      <member name="bottom_side"
+              value="16"
+              c:identifier="GDK_BOTTOM_SIDE"
+              glib:nick="bottom-side"/>
+      <member name="bottom_tee"
+              value="18"
+              c:identifier="GDK_BOTTOM_TEE"
+              glib:nick="bottom-tee"/>
+      <member name="box_spiral"
+              value="20"
+              c:identifier="GDK_BOX_SPIRAL"
+              glib:nick="box-spiral"/>
+      <member name="center_ptr"
+              value="22"
+              c:identifier="GDK_CENTER_PTR"
+              glib:nick="center-ptr"/>
+      <member name="circle"
+              value="24"
+              c:identifier="GDK_CIRCLE"
+              glib:nick="circle"/>
+      <member name="clock"
+              value="26"
+              c:identifier="GDK_CLOCK"
+              glib:nick="clock"/>
+      <member name="coffee_mug"
+              value="28"
+              c:identifier="GDK_COFFEE_MUG"
+              glib:nick="coffee-mug"/>
+      <member name="cross"
+              value="30"
+              c:identifier="GDK_CROSS"
+              glib:nick="cross"/>
+      <member name="cross_reverse"
+              value="32"
+              c:identifier="GDK_CROSS_REVERSE"
+              glib:nick="cross-reverse"/>
+      <member name="crosshair"
+              value="34"
+              c:identifier="GDK_CROSSHAIR"
+              glib:nick="crosshair"/>
+      <member name="diamond_cross"
+              value="36"
+              c:identifier="GDK_DIAMOND_CROSS"
+              glib:nick="diamond-cross"/>
+      <member name="dot" value="38" c:identifier="GDK_DOT" glib:nick="dot"/>
+      <member name="dotbox"
+              value="40"
+              c:identifier="GDK_DOTBOX"
+              glib:nick="dotbox"/>
+      <member name="double_arrow"
+              value="42"
+              c:identifier="GDK_DOUBLE_ARROW"
+              glib:nick="double-arrow"/>
+      <member name="draft_large"
+              value="44"
+              c:identifier="GDK_DRAFT_LARGE"
+              glib:nick="draft-large"/>
+      <member name="draft_small"
+              value="46"
+              c:identifier="GDK_DRAFT_SMALL"
+              glib:nick="draft-small"/>
+      <member name="draped_box"
+              value="48"
+              c:identifier="GDK_DRAPED_BOX"
+              glib:nick="draped-box"/>
+      <member name="exchange"
+              value="50"
+              c:identifier="GDK_EXCHANGE"
+              glib:nick="exchange"/>
+      <member name="fleur"
+              value="52"
+              c:identifier="GDK_FLEUR"
+              glib:nick="fleur"/>
+      <member name="gobbler"
+              value="54"
+              c:identifier="GDK_GOBBLER"
+              glib:nick="gobbler"/>
+      <member name="gumby"
+              value="56"
+              c:identifier="GDK_GUMBY"
+              glib:nick="gumby"/>
+      <member name="hand1"
+              value="58"
+              c:identifier="GDK_HAND1"
+              glib:nick="hand1"/>
+      <member name="hand2"
+              value="60"
+              c:identifier="GDK_HAND2"
+              glib:nick="hand2"/>
+      <member name="heart"
+              value="62"
+              c:identifier="GDK_HEART"
+              glib:nick="heart"/>
+      <member name="icon" value="64" c:identifier="GDK_ICON" glib:nick="icon"/>
+      <member name="iron_cross"
+              value="66"
+              c:identifier="GDK_IRON_CROSS"
+              glib:nick="iron-cross"/>
+      <member name="left_ptr"
+              value="68"
+              c:identifier="GDK_LEFT_PTR"
+              glib:nick="left-ptr"/>
+      <member name="left_side"
+              value="70"
+              c:identifier="GDK_LEFT_SIDE"
+              glib:nick="left-side"/>
+      <member name="left_tee"
+              value="72"
+              c:identifier="GDK_LEFT_TEE"
+              glib:nick="left-tee"/>
+      <member name="leftbutton"
+              value="74"
+              c:identifier="GDK_LEFTBUTTON"
+              glib:nick="leftbutton"/>
+      <member name="ll_angle"
+              value="76"
+              c:identifier="GDK_LL_ANGLE"
+              glib:nick="ll-angle"/>
+      <member name="lr_angle"
+              value="78"
+              c:identifier="GDK_LR_ANGLE"
+              glib:nick="lr-angle"/>
+      <member name="man" value="80" c:identifier="GDK_MAN" glib:nick="man"/>
+      <member name="middlebutton"
+              value="82"
+              c:identifier="GDK_MIDDLEBUTTON"
+              glib:nick="middlebutton"/>
+      <member name="mouse"
+              value="84"
+              c:identifier="GDK_MOUSE"
+              glib:nick="mouse"/>
+      <member name="pencil"
+              value="86"
+              c:identifier="GDK_PENCIL"
+              glib:nick="pencil"/>
+      <member name="pirate"
+              value="88"
+              c:identifier="GDK_PIRATE"
+              glib:nick="pirate"/>
+      <member name="plus" value="90" c:identifier="GDK_PLUS" glib:nick="plus"/>
+      <member name="question_arrow"
+              value="92"
+              c:identifier="GDK_QUESTION_ARROW"
+              glib:nick="question-arrow"/>
+      <member name="right_ptr"
+              value="94"
+              c:identifier="GDK_RIGHT_PTR"
+              glib:nick="right-ptr"/>
+      <member name="right_side"
+              value="96"
+              c:identifier="GDK_RIGHT_SIDE"
+              glib:nick="right-side"/>
+      <member name="right_tee"
+              value="98"
+              c:identifier="GDK_RIGHT_TEE"
+              glib:nick="right-tee"/>
+      <member name="rightbutton"
+              value="100"
+              c:identifier="GDK_RIGHTBUTTON"
+              glib:nick="rightbutton"/>
+      <member name="rtl_logo"
+              value="102"
+              c:identifier="GDK_RTL_LOGO"
+              glib:nick="rtl-logo"/>
+      <member name="sailboat"
+              value="104"
+              c:identifier="GDK_SAILBOAT"
+              glib:nick="sailboat"/>
+      <member name="sb_down_arrow"
+              value="106"
+              c:identifier="GDK_SB_DOWN_ARROW"
+              glib:nick="sb-down-arrow"/>
+      <member name="sb_h_double_arrow"
+              value="108"
+              c:identifier="GDK_SB_H_DOUBLE_ARROW"
+              glib:nick="sb-h-double-arrow"/>
+      <member name="sb_left_arrow"
+              value="110"
+              c:identifier="GDK_SB_LEFT_ARROW"
+              glib:nick="sb-left-arrow"/>
+      <member name="sb_right_arrow"
+              value="112"
+              c:identifier="GDK_SB_RIGHT_ARROW"
+              glib:nick="sb-right-arrow"/>
+      <member name="sb_up_arrow"
+              value="114"
+              c:identifier="GDK_SB_UP_ARROW"
+              glib:nick="sb-up-arrow"/>
+      <member name="sb_v_double_arrow"
+              value="116"
+              c:identifier="GDK_SB_V_DOUBLE_ARROW"
+              glib:nick="sb-v-double-arrow"/>
+      <member name="shuttle"
+              value="118"
+              c:identifier="GDK_SHUTTLE"
+              glib:nick="shuttle"/>
+      <member name="sizing"
+              value="120"
+              c:identifier="GDK_SIZING"
+              glib:nick="sizing"/>
+      <member name="spider"
+              value="122"
+              c:identifier="GDK_SPIDER"
+              glib:nick="spider"/>
+      <member name="spraycan"
+              value="124"
+              c:identifier="GDK_SPRAYCAN"
+              glib:nick="spraycan"/>
+      <member name="star"
+              value="126"
+              c:identifier="GDK_STAR"
+              glib:nick="star"/>
+      <member name="target"
+              value="128"
+              c:identifier="GDK_TARGET"
+              glib:nick="target"/>
+      <member name="tcross"
+              value="130"
+              c:identifier="GDK_TCROSS"
+              glib:nick="tcross"/>
+      <member name="top_left_arrow"
+              value="132"
+              c:identifier="GDK_TOP_LEFT_ARROW"
+              glib:nick="top-left-arrow"/>
+      <member name="top_left_corner"
+              value="134"
+              c:identifier="GDK_TOP_LEFT_CORNER"
+              glib:nick="top-left-corner"/>
+      <member name="top_right_corner"
+              value="136"
+              c:identifier="GDK_TOP_RIGHT_CORNER"
+              glib:nick="top-right-corner"/>
+      <member name="top_side"
+              value="138"
+              c:identifier="GDK_TOP_SIDE"
+              glib:nick="top-side"/>
+      <member name="top_tee"
+              value="140"
+              c:identifier="GDK_TOP_TEE"
+              glib:nick="top-tee"/>
+      <member name="trek"
+              value="142"
+              c:identifier="GDK_TREK"
+              glib:nick="trek"/>
+      <member name="ul_angle"
+              value="144"
+              c:identifier="GDK_UL_ANGLE"
+              glib:nick="ul-angle"/>
+      <member name="umbrella"
+              value="146"
+              c:identifier="GDK_UMBRELLA"
+              glib:nick="umbrella"/>
+      <member name="ur_angle"
+              value="148"
+              c:identifier="GDK_UR_ANGLE"
+              glib:nick="ur-angle"/>
+      <member name="watch"
+              value="150"
+              c:identifier="GDK_WATCH"
+              glib:nick="watch"/>
+      <member name="xterm"
+              value="152"
+              c:identifier="GDK_XTERM"
+              glib:nick="xterm"/>
+      <member name="last_cursor"
+              value="153"
+              c:identifier="GDK_LAST_CURSOR"
+              glib:nick="last-cursor"/>
+      <member name="blank_cursor"
+              value="-2"
+              c:identifier="GDK_BLANK_CURSOR"
+              glib:nick="blank-cursor"/>
+      <member name="cursor_is_pixmap"
+              value="-1"
+              c:identifier="GDK_CURSOR_IS_PIXMAP"
+              glib:nick="cursor-is-pixmap"/>
+    </enumeration>
+    <class name="Device"
+           c:symbol-prefix="device"
+           c:type="GdkDevice"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GdkDevice"
+           glib:get-type="gdk_device_get_type">
+      <function name="free_history" c:identifier="gdk_device_free_history">
+        <doc xml:whitespace="preserve">Frees an array of #GdkTimeCoord that was returned by gdk_device_get_history().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="events"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of #GdkTimeCoord.</doc>
+            <type name="TimeCoord" c:type="GdkTimeCoord**"/>
+          </parameter>
+          <parameter name="n_events" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of the array.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_core_pointer"
+                c:identifier="gdk_device_get_core_pointer"
+                introspectable="0"
+                deprecated="Use gdk_device_manager_get_client_pointer() instead, or"
+                deprecated-version="3.0">
+        <doc xml:whitespace="preserve">Returns the core pointer device for the default display.
+display and should not be freed.
+gdk_event_get_device() if a #GdkEvent with pointer device
+information is available.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the core pointer device; this is owned by the</doc>
+          <type name="Device" c:type="GdkDevice*"/>
+        </return-value>
+      </function>
+      <function name="grab_info_libgtk_only"
+                c:identifier="gdk_device_grab_info_libgtk_only">
+        <doc xml:whitespace="preserve">Determines information about the current keyboard grab.
+This is not public API and must not be used by applications.
+keyboard grabbed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if this application currently has the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="display" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the display for which to get the grab information</doc>
+            <type name="Display" c:type="GdkDisplay*"/>
+          </parameter>
+          <parameter name="device" transfer-ownership="none">
+            <doc xml:whitespace="preserve">device to get the grab information from</doc>
+            <type name="Device" c:type="GdkDevice*"/>
+          </parameter>
+          <parameter name="grab_window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store current grab window</doc>
+            <type name="Window" c:type="GdkWindow**"/>
+          </parameter>
+          <parameter name="owner_events" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store boolean indicating whether the @owner_events flag to gdk_keyboard_grab() or gdk_pointer_grab() was %TRUE.</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_associated_device"
+              c:identifier="gdk_device_get_associated_device"
+              version="3.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns the associated device to @device, if @device is of type
+%GDK_DEVICE_TYPE_MASTER, it will return the paired pointer or
+keyboard.
+If @device is of type %GDK_DEVICE_TYPE_SLAVE, it will return
+the master device to which @device is attached to.
+If @device is of type %GDK_DEVICE_TYPE_FLOATING, %NULL will be
+returned, as there is no associated device.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">The associated device, or %NULL</doc>
+          <type name="Device" c:type="GdkDevice*"/>
+        </return-value>
+      </method>
+      <method name="get_axis" c:identifier="gdk_device_get_axis">
+        <doc xml:whitespace="preserve">Interprets an array of double as axis values for a given device,
+and locates the value in the array for a given axis use.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the given axis use was found, otherwise %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="axes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer to an array of axes</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="use" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the use to look for</doc>
+            <type name="AxisUse" c:type="GdkAxisUse"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the found value.</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_axis_use"
+              c:identifier="gdk_device_get_axis_use"
+              version="2.20">
+        <doc xml:whitespace="preserve">Returns the axis use for @index_.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkAxisUse specifying how the axis is used.</doc>
+          <type name="AxisUse" c:type="GdkAxisUse"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the axis.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_axis_value"
+              c:identifier="gdk_device_get_axis_value"
+              version="3.0">
+        <doc xml:whitespace="preserve">Interprets an array of double as axis values for a given device,
+and locates the value in the array for a given axis label, as returned
+by gdk_device_list_axes()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the given axis use was found, otherwise %FALSE.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="axes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer to an array of axes</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="axis_label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GdkAtom with the axis label.</doc>
+            <type name="Atom" c:type="GdkAtom"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the found value.</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_device_type"
+              c:identifier="gdk_device_get_device_type"
+              version="3.0">
+        <doc xml:whitespace="preserve">Returns the device type for @device.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkDeviceType for @device.</doc>
+          <type name="DeviceType" c:type="GdkDeviceType"/>
+        </return-value>
+      </method>
+      <method name="get_display"
+              c:identifier="gdk_device_get_display"
+              version="3.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns the #GdkDisplay to which @device pertains.
+and must not be freed or unreffed.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a #GdkDisplay. This memory is owned by GTK+,</doc>
+          <type name="Display" c:type="GdkDisplay*"/>
+        </return-value>
+      </method>
+      <method name="get_has_cursor"
+              c:identifier="gdk_device_get_has_cursor"
+              version="2.20">
+        <doc xml:whitespace="preserve">Determines whether the pointer follows device motion.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the pointer follows device motion</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_history" c:identifier="gdk_device_get_history">
+        <doc xml:whitespace="preserve">Obtains the motion history for a device; given a starting and
+ending timestamp, return all events in the motion history for
+the device in the given range of time. Some windowing systems
+do not support motion history, in which case, %FALSE will
+be returned. (This is not distinguishable from the case where
+motion history is supported and no events were found.)
+at least one event was found.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the windowing system supports motion history and</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the window with respect to which which the event coordinates will be reported</doc>
+            <type name="Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">starting timestamp for range of events to return</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">ending timestamp for the range of events to return</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="events"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store a newly-allocated array of #GdkTimeCoord, or %NULL</doc>
+            <array length="4" c:type="GdkTimeCoord***">
+              <type name="TimeCoord"/>
+            </array>
+          </parameter>
+          <parameter name="n_events"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location to store the length of @events, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_key" c:identifier="gdk_device_get_key" version="2.20">
+        <doc xml:whitespace="preserve">If @index_ has a valid keyval, this function will return %TRUE
+and fill in @keyval and @modifiers with the keyval settings.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if keyval is set for @index.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the macro button to get.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="keyval" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return value for the keyval.</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return value for modifiers.</doc>
+            <type name="ModifierType" c:type="GdkModifierType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_mode"
+              c:identifier="gdk_device_get_mode"
+              version="2.20">
+        <doc xml:whitespace="preserve">Determines the mode of the device.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkInputSource</doc>
+          <type name="InputMode" c:type="GdkInputMode"/>
+        </return-value>
+      </method>
+      <method name="get_n_axes"
+              c:identifier="gdk_device_get_n_axes"
+              version="3.0">
+        <doc xml:whitespace="preserve">Returns the number of axes the device currently has.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of axes.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_name"
+              c:identifier="gdk_device_get_name"
+              version="2.20">
+        <doc xml:whitespace="preserve">Determines the name of the device.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_source"
+              c:identifier="gdk_device_get_source"
+              version="2.20">
+        <doc xml:whitespace="preserve">Determines the type of the device.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkInputSource</doc>
+          <type name="InputSource" c:type="GdkInputSource"/>
+        </return-value>
+      </method>
+      <method name="get_state" c:identifier="gdk_device_get_state">
+        <doc xml:whitespace="preserve">Gets the current state of a device relative to @window.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkWindow.</doc>
+            <type name="Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="axes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of doubles to store the values of the axes of @device in, or %NULL.</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the modifiers, or %NULL.</doc>
+            <type name="ModifierType" c:type="GdkModifierType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="grab" c:identifier="gdk_device_grab" version="3.0">
+        <doc xml:whitespace="preserve">Grabs the device so that all events coming from this device are passed to
+this application until the device is ungrabbed with gdk_device_ungrab(),
+or the window becomes unviewable. This overrides any previous grab on the device
+by this client.
+Device grabs are used for operations which need complete control over the
+given device events (either pointer or keyboard). For example in GTK+ this
+is used for Drag and Drop operations, popup menus and such.
+Note that if the event mask of an X window has selected both button press
+and button release events, then a button press event will cause an automatic
+pointer grab until the button is released. X does this automatically since
+most applications expect to receive button press and release events in pairs.
+It is equivalent to a pointer grab on the window with @owner_events set to
+%TRUE.
+If you set up anything at the time you take the grab that needs to be
+cleaned up when the grab ends, you should handle the #GdkEventGrabBroken
+events that are emitted when the grab ends unvoluntarily.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%GDK_GRAB_SUCCESS if the grab was successful.</doc>
+          <type name="GrabStatus" c:type="GdkGrabStatus"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkWindow which will own the grab (the grab window)</doc>
+            <type name="Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="grab_ownership" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specifies the grab ownership.</doc>
+            <type name="GrabOwnership" c:type="GdkGrabOwnership"/>
+          </parameter>
+          <parameter name="owner_events" transfer-ownership="none">
+            <doc xml:whitespace="preserve">if %FALSE then all device events are reported with respect to %TRUE then pointer events for this application are reported as normal, but pointer events outside this application are reported with respect to @window and only if selected by</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="event_mask" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specifies the event mask, which is used in accordance with</doc>
+            <type name="EventMask" c:type="GdkEventMask"/>
+          </parameter>
+          <parameter name="cursor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the cursor to display while the grab is active if the device is a pointer. If this is %NULL then the normal cursors are used for elsewhere.</doc>
+            <type name="Cursor" c:type="GdkCursor*"/>
+          </parameter>
+          <parameter name="time_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the timestamp of the event which led to this pointer grab. This usually comes from the #GdkEvent struct, though %GDK_CURRENT_TIME can be used if the time isn't known.</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_axes"
+              c:identifier="gdk_device_list_axes"
+              version="3.0">
+        <doc xml:whitespace="preserve">Returns a #GList of #GdkAtom&lt;!-- --&gt;s, containing the labels for
+the axes that @device currently has.
+A #GList of #GdkAtom&lt;!-- --&gt;s, free with g_list_free().</doc>
+        <return-value transfer-ownership="container">
+          <type name="GLib.List" c:type="GList*">
+            <type name="Atom"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="set_axis_use" c:identifier="gdk_device_set_axis_use">
+        <doc xml:whitespace="preserve">Specifies how an axis of a device is used.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the axis</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="use" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specifies how the axis is used</doc>
+            <type name="AxisUse" c:type="GdkAxisUse"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_key" c:identifier="gdk_device_set_key">
+        <doc xml:whitespace="preserve">Specifies the X key event to generate when a macro button of a device
+is pressed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the macro button to set</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="keyval" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the keyval to generate</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the modifiers to set</doc>
+            <type name="ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_mode" c:identifier="gdk_device_set_mode">
+        <doc xml:whitespace="preserve">Sets a the mode of an input device. The mode controls if the
+device is active and whether the device's range is mapped to the
+entire screen or to a single window.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the mode was successfully changed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the input mode.</doc>
+            <type name="InputMode" c:type="GdkInputMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_source" c:identifier="gdk_device_set_source">
+        <doc xml:whitespace="preserve">Sets the source type for an input device.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the source type.</doc>
+            <type name="InputSource" c:type="GdkInputSource"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ungrab" c:identifier="gdk_device_ungrab" version="3.0">
+        <doc xml:whitespace="preserve">Release any grab on @device.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="time_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a timestap (e.g. %GDK_CURRENT_TIME).</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="associated-device"
+                version="3.0"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Associated pointer or keyboard with this device, if any. Devices of type #GDK_DEVICE_TYPE_MASTER
+always come in keyboard/pointer pairs. Other device types will have a %NULL associated device.</doc>
+        <type name="Device"/>
+      </property>
+      <property name="device-manager"
+                version="3.0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GdkDeviceManager the #GdkDevice pertains to.</doc>
+        <type name="DeviceManager"/>
+      </property>
+      <property name="display"
+                version="3.0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GdkDisplay the #GdkDevice pertains to.</doc>
+        <type name="Display"/>
+      </property>
+      <property name="has-cursor"
+                version="3.0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the device is represented by a cursor on the screen. Devices of type
+%GDK_DEVICE_TYPE_MASTER will have %TRUE here.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="input-mode"
+                version="3.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Input mode for the device.</doc>
+        <type name="InputMode"/>
+      </property>
+      <property name="input-source"
+                version="3.0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Source type for the device.</doc>
+        <type name="InputSource"/>
+      </property>
+      <property name="n-axes" version="3.0" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Number of axes in the device.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="name"
+                version="3.0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The device name.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="type"
+                version="3.0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Device role in the device manager.</doc>
+        <type name="DeviceType"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="name">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="source">
+        <type name="InputSource" c:type="GdkInputSource"/>
+      </field>
+      <field name="mode">
+        <type name="InputMode" c:type="GdkInputMode"/>
+      </field>
+      <field name="has_cursor">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="num_axes">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="axes">
+        <type name="DeviceAxis" c:type="GdkDeviceAxis*"/>
+      </field>
+      <field name="num_keys">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="keys">
+        <type name="DeviceKey" c:type="GdkDeviceKey*"/>
+      </field>
+      <field name="priv">
+        <type name="DevicePrivate" c:type="GdkDevicePrivate*"/>
+      </field>
+    </class>
+    <record name="DeviceAxis" c:type="GdkDeviceAxis">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;GdkDeviceAxis&lt;/structname&gt; structure contains information
+about the range and mapping of a device axis.</doc>
+      <field name="use" writable="1">
+        <type name="AxisUse" c:type="GdkAxisUse"/>
+      </field>
+      <field name="min" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="max" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+    </record>
+    <record name="DeviceKey" c:type="GdkDeviceKey">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;GdkDeviceKey&lt;/structname&gt; structure contains information
+about the mapping of one device macro button onto a normal X key event.</doc>
+      <field name="keyval" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="modifiers" writable="1">
+        <type name="ModifierType" c:type="GdkModifierType"/>
+      </field>
+    </record>
+    <class name="DeviceManager"
+           c:symbol-prefix="device_manager"
+           c:type="GdkDeviceManager"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GdkDeviceManager"
+           glib:get-type="gdk_device_manager_get_type"
+           glib:type-struct="DeviceManagerClass">
+      <virtual-method name="get_client_pointer"
+                      invoker="get_client_pointer"
+                      version="3.0"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Returns the client pointer, that is, the master pointer that acts as the core pointer
+for this application. In X11, window managers may change this depending on the interaction
+pattern under the presence of several pointers.
+You should use this function sheldomly, only in code that isn't triggered by a #GdkEvent
+and there aren't other means to get a meaningful #GdkDevice to operate on.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">The client pointer.</doc>
+          <type name="Device" c:type="GdkDevice*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="list_devices" invoker="list_devices" version="3.0">
+        <doc xml:whitespace="preserve">Returns the list of devices of type @type currently attached to
+#GdkDevice&lt;!-- --&gt;s. The returned list must be
+freed with g_list_free (). The list elements are owned by
+GTK+ and must not be freed or unreffed.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a list of</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Device"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">device type to get.</doc>
+            <type name="DeviceType" c:type="GdkDeviceType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_client_pointer"
+              c:identifier="gdk_device_manager_get_client_pointer"
+              version="3.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns the client pointer, that is, the master pointer that acts as the core pointer
+for this application. In X11, window managers may change this depending on the interaction
+pattern under the presence of several pointers.
+You should use this function sheldomly, only in code that isn't triggered by a #GdkEvent
+and there aren't other means to get a meaningful #GdkDevice to operate on.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">The client pointer.</doc>
+          <type name="Device" c:type="GdkDevice*"/>
+        </return-value>
+      </method>
+      <method name="get_display"
+              c:identifier="gdk_device_manager_get_display"
+              version="3.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the #GdkDisplay associated to @device_manager.
+associated to, or #NULL.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the #GdkDisplay to which @device_manager is</doc>
+          <type name="Display" c:type="GdkDisplay*"/>
+        </return-value>
+      </method>
+      <method name="list_devices"
+              c:identifier="gdk_device_manager_list_devices"
+              version="3.0">
+        <doc xml:whitespace="preserve">Returns the list of devices of type @type currently attached to
+#GdkDevice&lt;!-- --&gt;s. The returned list must be
+freed with g_list_free (). The list elements are owned by
+GTK+ and must not be freed or unreffed.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a list of</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Device"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">device type to get.</doc>
+            <type name="DeviceType" c:type="GdkDeviceType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="display"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="Display"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="DeviceManagerPrivate" c:type="GdkDeviceManagerPrivate*"/>
+      </field>
+      <glib:signal name="device-added">
+        <doc xml:whitespace="preserve">The ::device-added signal is emitted either when a new master
+pointer is created, or when a slave (Hardware) input device
+is plugged in.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the newly added #GdkDevice.</doc>
+            <type name="Device"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="device-changed">
+        <doc xml:whitespace="preserve">The ::device-changed signal is emitted either when some
+#GdkDevice has changed the number of either axes or keys.
+For example In X this will normally happen when the slave
+device routing events through the master device changes,
+in that case the master device will change to reflect the
+new slave device axes and keys.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkDevice that changed.</doc>
+            <type name="Device"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="device-removed">
+        <doc xml:whitespace="preserve">The ::device-removed signal is emitted either when a master
+pointer is removed, or when a slave (Hardware) input device
+is unplugged.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the just removed #GdkDevice.</doc>
+            <type name="Device"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="DeviceManagerClass"
+            c:type="GdkDeviceManagerClass"
+            glib:is-gtype-struct-for="DeviceManager">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="device_added">
+        <callback name="device_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="device_manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="GdkDeviceManager*"/>
+            </parameter>
+            <parameter name="device" transfer-ownership="none">
+              <type name="Device" c:type="GdkDevice*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="device_removed">
+        <callback name="device_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="device_manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="GdkDeviceManager*"/>
+            </parameter>
+            <parameter name="device" transfer-ownership="none">
+              <type name="Device" c:type="GdkDevice*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="device_changed">
+        <callback name="device_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="device_manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="GdkDeviceManager*"/>
+            </parameter>
+            <parameter name="device" transfer-ownership="none">
+              <type name="Device" c:type="GdkDevice*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="list_devices">
+        <callback name="list_devices">
+          <return-value transfer-ownership="container">
+            <doc xml:whitespace="preserve">a list of</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="Device"/>
+            </type>
+          </return-value>
+          <parameters>
+            <parameter name="device_manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="GdkDeviceManager*"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">device type to get.</doc>
+              <type name="DeviceType" c:type="GdkDeviceType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_client_pointer" introspectable="0">
+        <callback name="get_client_pointer" introspectable="0">
+          <return-value>
+            <doc xml:whitespace="preserve">The client pointer.</doc>
+            <type name="Device" c:type="GdkDevice*"/>
+          </return-value>
+          <parameters>
+            <parameter name="device_manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="GdkDeviceManager*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="DeviceManagerPrivate"
+            c:type="GdkDeviceManagerPrivate"
+            disguised="1">
+    </record>
+    <record name="DevicePrivate" c:type="GdkDevicePrivate" disguised="1">
+    </record>
+    <enumeration name="DeviceType"
+                 glib:type-name="GdkDeviceType"
+                 glib:get-type="gdk_device_type_get_type"
+                 c:type="GdkDeviceType">
+      <doc xml:whitespace="preserve">Indicates the device type. See &lt;link linkend="GdkDeviceManager.description"&gt;above&lt;/link&gt;
+for more information about the meaning of these device types.</doc>
+      <member name="master"
+              value="0"
+              c:identifier="GDK_DEVICE_TYPE_MASTER"
+              glib:nick="master"/>
+      <member name="slave"
+              value="1"
+              c:identifier="GDK_DEVICE_TYPE_SLAVE"
+              glib:nick="slave"/>
+      <member name="floating"
+              value="2"
+              c:identifier="GDK_DEVICE_TYPE_FLOATING"
+              glib:nick="floating"/>
+    </enumeration>
+    <class name="Display"
+           c:symbol-prefix="display"
+           c:type="GdkDisplay"
+           parent="GObject.Object"
+           glib:type-name="GdkDisplay"
+           glib:get-type="gdk_display_get_type"
+           glib:type-struct="DisplayClass">
+      <function name="get_default"
+                c:identifier="gdk_display_get_default"
+                version="2.2">
+        <doc xml:whitespace="preserve">Gets the default #GdkDisplay. This is a convenience
+function for
+&lt;literal&gt;gdk_display_manager_get_default_display (gdk_display_manager_get ())&lt;/literal&gt;.
+display.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkDisplay, or %NULL if there is no default</doc>
+          <type name="Display" c:type="GdkDisplay*"/>
+        </return-value>
+      </function>
+      <function name="open"
+                c:identifier="gdk_display_open"
+                version="2.2"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Opens a display.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a #GdkDisplay, or %NULL if the display could not be opened.</doc>
+          <type name="Display" c:type="GdkDisplay*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the display to open</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="open_default_libgtk_only"
+                c:identifier="gdk_display_open_default_libgtk_only"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Opens the default display specified by command line arguments or
+environment variables, sets it as the default display, and returns
+it.  gdk_parse_args must have been called first. If the default
+display has previously been set, simply returns that. An internal
+function that should not be used by applications.
+otherwise %NULL.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the default display, if it could be opened,</doc>
+          <type name="Display" c:type="GdkDisplay*"/>
+        </return-value>
+      </function>
+      <virtual-method name="get_default_screen"
+                      invoker="get_default_screen"
+                      version="2.2"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Get the default #GdkScreen for @display.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the default #GdkScreen object for @display</doc>
+          <type name="Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_display_name">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_n_screens"
+                      invoker="get_n_screens"
+                      version="2.2">
+        <doc xml:whitespace="preserve">Gets the number of screen managed by the @display.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of screens.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_screen"
+                      invoker="get_screen"
+                      version="2.2"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Returns a screen object for one of the screens of the display.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the #GdkScreen object</doc>
+          <type name="Screen" c:type="GdkScreen*"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen_num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the screen number</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_client_message_filter"
+              c:identifier="gdk_display_add_client_message_filter"
+              version="2.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds a filter to be called when X ClientMessage events are received.
+See gdk_window_add_filter() if you are interested in filtering other
+types of events.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="message_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of ClientMessage events to receive. This will be checked against the @message_type field of the XClientMessage event struct.</doc>
+            <type name="Atom" c:type="GdkAtom"/>
+          </parameter>
+          <parameter name="func" transfer-ownership="none" closure="2">
+            <doc xml:whitespace="preserve">the function to call to process the event.</doc>
+            <type name="FilterFunc" c:type="GdkFilterFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @func.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="beep" c:identifier="gdk_display_beep" version="2.2">
+        <doc xml:whitespace="preserve">Emits a short beep on @display</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="close" c:identifier="gdk_display_close" version="2.2">
+        <doc xml:whitespace="preserve">Closes the connection to the windowing system for the given display,
+and cleans up associated resources.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="device_is_grabbed"
+              c:identifier="gdk_display_device_is_grabbed">
+        <doc xml:whitespace="preserve">Returns %TRUE if there is an ongoing grab on @device for @display.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if there is a grab in effect for @device.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkDevice</doc>
+            <type name="Device" c:type="GdkDevice*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="flush" c:identifier="gdk_display_flush" version="2.4">
+        <doc xml:whitespace="preserve">Flushes any requests queued for the windowing system; this happens automatically
+when the main loop blocks waiting for new events, but if your application
+is drawing without returning control to the main loop, you may need
+to call this function explicitely. A common case where this function
+needs to be called is when an application is executing drawing commands
+from a thread other than the thread where the main loop is running.
+This is most useful for X11. On windowing systems where requests are
+handled synchronously, this function will do nothing.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_core_pointer"
+              c:identifier="gdk_display_get_core_pointer"
+              version="2.2"
+              introspectable="0"
+              deprecated="Use gdk_device_manager_get_client_pointer() instead, or"
+              deprecated-version="3.0">
+        <doc xml:whitespace="preserve">Returns the core pointer device for the given display
+display and should not be freed.
+gdk_event_get_device() if a #GdkEvent with device
+information is available.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the core pointer device; this is owned by the</doc>
+          <type name="Device" c:type="GdkDevice*"/>
+        </return-value>
+      </method>
+      <method name="get_default_cursor_size"
+              c:identifier="gdk_display_get_default_cursor_size"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the default size to use for cursors on @display.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the default cursor size.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_default_group"
+              c:identifier="gdk_display_get_default_group"
+              version="2.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns the default group leader window for all toplevel windows
+on @display. This window is implicitly created by GDK. 
+See gdk_window_set_group().</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">The default group leader window for @display</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_default_screen"
+              c:identifier="gdk_display_get_default_screen"
+              version="2.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Get the default #GdkScreen for @display.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the default #GdkScreen object for @display</doc>
+          <type name="Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </method>
+      <method name="get_device_manager"
+              c:identifier="gdk_display_get_device_manager"
+              version="3.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns the #GdkDeviceManager associated to @display.
+owned by GDK and must not be freed or unreferenced.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">A #GdkDeviceManager, or %NULL. This memory is</doc>
+          <type name="DeviceManager" c:type="GdkDeviceManager*"/>
+        </return-value>
+      </method>
+      <method name="get_device_state"
+              c:identifier="gdk_display_get_device_state"
+              version="3.0">
+        <doc xml:whitespace="preserve">Gets the current location and state of @device for a given display.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <doc xml:whitespace="preserve">device to query status to.</doc>
+            <type name="Device" c:type="GdkDevice*"/>
+          </parameter>
+          <parameter name="screen" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the #GdkScreen the @device is on, or %NULL.</doc>
+            <type name="Screen" c:type="GdkScreen**"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store root window X coordinate of @device, or %NULL.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store root window Y coordinate of @device, or %NULL.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store current modifier mask for @device, or %NULL.</doc>
+            <type name="ModifierType" c:type="GdkModifierType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_event"
+              c:identifier="gdk_display_get_event"
+              version="2.2">
+        <doc xml:whitespace="preserve">Gets the next #GdkEvent to be processed for @display, fetching events from the
+windowing system if necessary.
+are pending. The returned #GdkEvent should be freed with gdk_event_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the next #GdkEvent to be processed, or %NULL if no events</doc>
+          <type name="Event" c:type="GdkEvent*"/>
+        </return-value>
+      </method>
+      <method name="get_maximal_cursor_size"
+              c:identifier="gdk_display_get_maximal_cursor_size"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the maximal size to use for cursors on @display.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">the return location for the maximal cursor width</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">the return location for the maximal cursor height</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_screens"
+              c:identifier="gdk_display_get_n_screens"
+              version="2.2">
+        <doc xml:whitespace="preserve">Gets the number of screen managed by the @display.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of screens.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_name"
+              c:identifier="gdk_display_get_name"
+              version="2.2">
+        <doc xml:whitespace="preserve">Gets the name of the display.
+by GDK and should not be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string representing the display name. This string is owned</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_pointer"
+              c:identifier="gdk_display_get_pointer"
+              version="2.2"
+              deprecated="Use gdk_display_get_device_state() instead."
+              deprecated-version="3.0">
+        <doc xml:whitespace="preserve">Gets the current location of the pointer and the current modifier
+mask for a given display.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store the screen that the cursor is on, or %NULL.</doc>
+            <type name="Screen" c:type="GdkScreen**"/>
+          </parameter>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store root window X coordinate of pointer, or %NULL.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store root window Y coordinate of pointer, or %NULL.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="mask"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store current modifier mask, or %NULL</doc>
+            <type name="ModifierType" c:type="GdkModifierType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_screen"
+              c:identifier="gdk_display_get_screen"
+              version="2.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns a screen object for one of the screens of the display.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the #GdkScreen object</doc>
+          <type name="Screen" c:type="GdkScreen*"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen_num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the screen number</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_window_at_device_position"
+              c:identifier="gdk_display_get_window_at_device_position"
+              version="3.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Obtains the window underneath @device, returning the location of the device in @win_x and @win_y. Returns
+%NULL if the window tree under @device is not known to GDK (for example, belongs to another application).</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the #GdkWindow under the device position, or %NULL.</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GdkDevice to query info to.</doc>
+            <type name="Device" c:type="GdkDevice*"/>
+          </parameter>
+          <parameter name="win_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the X coordinate of the device location, relative to the window origin, or %NULL.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="win_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the Y coordinate of the device location, relative to the window origin, or %NULL.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_window_at_pointer"
+              c:identifier="gdk_display_get_window_at_pointer"
+              version="2.2"
+              deprecated="Use gdk_display_get_window_at_device_position() instead."
+              deprecated-version="3.0">
+        <doc xml:whitespace="preserve">Obtains the window underneath the mouse pointer, returning the location
+of the pointer in that window in @win_x, @win_y for @screen. Returns %NULL
+if the window under the mouse pointer is not known to GDK (for example, 
+belongs to another application).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the window under the mouse pointer, or %NULL</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="win_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for x coordinate of the pointer location relative to the window origin, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="win_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for y coordinate of the pointer location relative</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_closed"
+              c:identifier="gdk_display_is_closed"
+              version="2.22">
+        <doc xml:whitespace="preserve">Finds out if the display has been closed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the display is closed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="keyboard_ungrab"
+              c:identifier="gdk_display_keyboard_ungrab"
+              version="2.2"
+              deprecated="Use gdk_device_ungrab(), together with gdk_device_grab()"
+              deprecated-version="3.0">
+        <doc xml:whitespace="preserve">Release any keyboard grab
+instead.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="time_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a timestap (e.g #GDK_CURRENT_TIME).</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_devices"
+              c:identifier="gdk_display_list_devices"
+              version="2.2"
+              deprecated="Use gdk_device_manager_list_devices() instead."
+              deprecated-version="3.0">
+        <doc xml:whitespace="preserve">Returns the list of available input devices attached to @display.
+The list is statically allocated and should not be freed.
+a list of #GdkDevice</doc>
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="Device"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="peek_event"
+              c:identifier="gdk_display_peek_event"
+              version="2.2">
+        <doc xml:whitespace="preserve">Gets a copy of the first #GdkEvent in the @display's event queue, without
+removing the event from the queue.  (Note that this function will
+not get more events from the windowing system.  It only checks the events
+that have already been moved to the GDK event queue.)
+if no events are in the queue. The returned #GdkEvent should be freed with
+gdk_event_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a copy of the first #GdkEvent on the event queue, or %NULL</doc>
+          <type name="Event" c:type="GdkEvent*"/>
+        </return-value>
+      </method>
+      <method name="pointer_is_grabbed"
+              c:identifier="gdk_display_pointer_is_grabbed"
+              version="2.2"
+              deprecated="Use gdk_display_device_is_grabbed() instead."
+              deprecated-version="3.0">
+        <doc xml:whitespace="preserve">Test if the pointer is grabbed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if an active X pointer grab is in effect</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="pointer_ungrab"
+              c:identifier="gdk_display_pointer_ungrab"
+              version="2.2"
+              deprecated="Use gdk_device_ungrab(), together with gdk_device_grab()"
+              deprecated-version="3.0">
+        <doc xml:whitespace="preserve">Release any pointer grab.
+instead.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="time_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a timestap (e.g. %GDK_CURRENT_TIME).</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_event"
+              c:identifier="gdk_display_put_event"
+              version="2.2">
+        <doc xml:whitespace="preserve">Appends a copy of the given event onto the front of the event
+queue for @display.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkEvent.</doc>
+            <type name="Event" c:type="GdkEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="request_selection_notification"
+              c:identifier="gdk_display_request_selection_notification"
+              version="2.6">
+        <doc xml:whitespace="preserve">Request #GdkEventOwnerChange events for ownership changes
+of the selection named by the given atom.
+be sent.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether #GdkEventOwnerChange events will</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="selection" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkAtom naming the selection for which ownership change notification is requested</doc>
+            <type name="Atom" c:type="GdkAtom"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_device_hooks"
+              c:identifier="gdk_display_set_device_hooks"
+              version="3.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">This function allows for hooking into the operation of getting the current location of any
+#GdkDevice on a particular #GdkDisplay. This is only useful for such low-level tools as
+an event recorder. Applications should never have any reason to use this facility.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">The previous device hook table.</doc>
+          <type name="DisplayDeviceHooks" c:type="GdkDisplayDeviceHooks*"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_hooks" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a table of pointers to functions for getting quantities related to all devices position, or %NULL to restore the default table.</doc>
+            <type name="DisplayDeviceHooks" c:type="GdkDisplayDeviceHooks*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_double_click_distance"
+              c:identifier="gdk_display_set_double_click_distance"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the double click distance (two clicks within this distance
+count as a double click and result in a #GDK_2BUTTON_PRESS event).
+See also gdk_display_set_double_click_time().
+Applications should &lt;emphasis&gt;not&lt;/emphasis&gt; set this, it is a global 
+user-configured setting.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="distance" transfer-ownership="none">
+            <doc xml:whitespace="preserve">distance in pixels</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_double_click_time"
+              c:identifier="gdk_display_set_double_click_time"
+              version="2.2">
+        <doc xml:whitespace="preserve">Sets the double click time (two clicks within this time interval
+count as a double click and result in a #GDK_2BUTTON_PRESS event).
+Applications should &lt;emphasis&gt;not&lt;/emphasis&gt; set this, it is a global 
+user-configured setting.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">double click time in milliseconds (thousandths of a second)</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pointer_hooks"
+              c:identifier="gdk_display_set_pointer_hooks"
+              version="2.2"
+              introspectable="0"
+              deprecated="Use gdk_display_set_device_hooks() instead."
+              deprecated-version="3.0">
+        <doc xml:whitespace="preserve">This function allows for hooking into the operation
+of getting the current location of the pointer on a particular
+display. This is only useful for such low-level tools as an
+event recorder. Applications should never have any
+reason to use this facility.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the previous pointer hook table</doc>
+          <type name="DisplayPointerHooks" c:type="GdkDisplayPointerHooks*"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_hooks" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a table of pointers to functions for getting quantities related to the current pointer position, or %NULL to restore the default table.</doc>
+            <type name="DisplayPointerHooks" c:type="GdkDisplayPointerHooks*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="store_clipboard"
+              c:identifier="gdk_display_store_clipboard">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clipboard_window" transfer-ownership="none">
+            <type name="Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="time_" transfer-ownership="none">
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="targets" transfer-ownership="none">
+            <type name="Atom" c:type="GdkAtom*"/>
+          </parameter>
+          <parameter name="n_targets" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="supports_clipboard_persistence"
+              c:identifier="gdk_display_supports_clipboard_persistence">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="supports_composite"
+              c:identifier="gdk_display_supports_composite"
+              version="2.12">
+        <doc xml:whitespace="preserve">Returns %TRUE if gdk_window_set_composited() can be used
+to redirect drawing on the window using compositing.
+Currently this only works on X11 with XComposite and
+XDamage extensions available.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if windows may be composited.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="supports_cursor_alpha"
+              c:identifier="gdk_display_supports_cursor_alpha"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns %TRUE if cursors can use an 8bit alpha channel 
+on @display. Otherwise, cursors are restricted to bilevel 
+alpha (i.e. a mask).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether cursors can have alpha channels.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="supports_cursor_color"
+              c:identifier="gdk_display_supports_cursor_color"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns %TRUE if multicolored cursors are supported
+on @display. Otherwise, cursors have only a forground
+and a background color.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether cursors can have multiple colors.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="supports_input_shapes"
+              c:identifier="gdk_display_supports_input_shapes"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns %TRUE if gdk_window_input_shape_combine_mask() can
+be used to modify the input shape of windows on @display.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if windows with modified input shape are supported</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="supports_selection_notification"
+              c:identifier="gdk_display_supports_selection_notification"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns whether #GdkEventOwnerChange events will be 
+sent when the owner of a selection changes.
+be sent.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether #GdkEventOwnerChange events will</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="supports_shapes"
+              c:identifier="gdk_display_supports_shapes"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns %TRUE if gdk_window_shape_combine_mask() can
+be used to create shaped windows on @display.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if shaped windows are supported</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="sync" c:identifier="gdk_display_sync" version="2.2">
+        <doc xml:whitespace="preserve">Flushes any requests queued for the windowing system and waits until all
+requests have been handled. This is often used for making sure that the
+display is synchronized with the current state of the program. Calling
+gdk_display_sync() before gdk_error_trap_pop() makes sure that any errors
+generated from earlier requests are handled before the error trap is 
+removed.
+This is most useful for X11. On windowing systems where requests are
+handled synchronously, this function will do nothing.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="warp_device"
+              c:identifier="gdk_display_warp_device"
+              version="3.0">
+        <doc xml:whitespace="preserve">Warps @device in @display to the point @x,@y on
+the screen @screen, unless the device is confined
+to a window by a grab, in which case it will be moved
+as far as allowed by the grab. Warping the pointer
+creates events as if the user had moved the mouse
+instantaneously to the destination.
+Note that the pointer should normally be under the
+control of the user. This function was added to cover
+some rare use cases like keyboard navigation support
+for the color picker in the #GtkColorSelectionDialog.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkDevice.</doc>
+            <type name="Device" c:type="GdkDevice*"/>
+          </parameter>
+          <parameter name="screen" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the screen of @display to warp @device to.</doc>
+            <type name="Screen" c:type="GdkScreen*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the X coordinate of the destination.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the Y coordinate of the destination.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="warp_pointer"
+              c:identifier="gdk_display_warp_pointer"
+              version="2.8"
+              deprecated="Use gdk_display_warp_device() instead."
+              deprecated-version="3.0">
+        <doc xml:whitespace="preserve">Warps the pointer of @display to the point @x,@y on 
+the screen @screen, unless the pointer is confined
+to a window by a grab, in which case it will be moved
+as far as allowed by the grab. Warping the pointer 
+creates events as if the user had moved the mouse 
+instantaneously to the destination.
+Note that the pointer should normally be under the
+control of the user. This function was added to cover
+some rare use cases like keyboard navigation support
+for the color picker in the #GtkColorSelectionDialog.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the screen of @display to warp the pointer to</doc>
+            <type name="Screen" c:type="GdkScreen*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate of the destination</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate of the destination</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="queued_events">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="queued_tail">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="multiple_click_info">
+        <type name="GLib.HashTable" c:type="GHashTable*">
+          <type name="gpointer" c:type="gpointer"/>
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="double_click_time">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="core_pointer">
+        <type name="Device" c:type="GdkDevice*"/>
+      </field>
+      <field name="device_hooks">
+        <type name="DisplayDeviceHooks" c:type="GdkDisplayDeviceHooks*"/>
+      </field>
+      <field name="closed" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="ignore_core_events" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="double_click_distance">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="device_grabs">
+        <type name="GLib.HashTable" c:type="GHashTable*">
+          <type name="gpointer" c:type="gpointer"/>
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="motion_hint_info">
+        <type name="GLib.HashTable" c:type="GHashTable*">
+          <type name="gpointer" c:type="gpointer"/>
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="pointers_info">
+        <type name="GLib.HashTable" c:type="GHashTable*">
+          <type name="gpointer" c:type="gpointer"/>
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="last_event_time">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="device_manager">
+        <type name="DeviceManager" c:type="GdkDeviceManager*"/>
+      </field>
+      <glib:signal name="closed" version="2.2">
+        <doc xml:whitespace="preserve">The ::closed signal is emitted when the connection to the windowing
+system for @display is closed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the display was closed due to an error</doc>
+            <type name="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="opened">
+        <doc xml:whitespace="preserve">The ::opened signal is emitted when the connection to the windowing
+system for @display is opened.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="DisplayClass"
+            c:type="GdkDisplayClass"
+            glib:is-gtype-struct-for="Display">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_display_name">
+        <callback name="get_display_name">
+          <return-value transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="display" transfer-ownership="none">
+              <type name="Display" c:type="GdkDisplay*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_n_screens">
+        <callback name="get_n_screens">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of screens.</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="display" transfer-ownership="none">
+              <type name="Display" c:type="GdkDisplay*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_screen" introspectable="0">
+        <callback name="get_screen" introspectable="0">
+          <return-value>
+            <doc xml:whitespace="preserve">the #GdkScreen object</doc>
+            <type name="Screen" c:type="GdkScreen*"/>
+          </return-value>
+          <parameters>
+            <parameter name="display" transfer-ownership="none">
+              <type name="Display" c:type="GdkDisplay*"/>
+            </parameter>
+            <parameter name="screen_num" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the screen number</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_default_screen" introspectable="0">
+        <callback name="get_default_screen" introspectable="0">
+          <return-value>
+            <doc xml:whitespace="preserve">the default #GdkScreen object for @display</doc>
+            <type name="Screen" c:type="GdkScreen*"/>
+          </return-value>
+          <parameters>
+            <parameter name="display" transfer-ownership="none">
+              <type name="Display" c:type="GdkDisplay*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="closed">
+        <callback name="closed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="display" transfer-ownership="none">
+              <type name="Display" c:type="GdkDisplay*"/>
+            </parameter>
+            <parameter name="is_error" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="DisplayDeviceHooks" c:type="GdkDisplayDeviceHooks">
+      <doc xml:whitespace="preserve">A table of pointers to functions for getting quantities related to
+the current device position. Each #GdkDisplay has a table of this type,
+which can be set using gdk_display_set_device_hooks().</doc>
+      <field name="get_device_state">
+        <callback name="get_device_state">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="display" transfer-ownership="none">
+              <type name="Display" c:type="GdkDisplay*"/>
+            </parameter>
+            <parameter name="device" transfer-ownership="none">
+              <type name="Device" c:type="GdkDevice*"/>
+            </parameter>
+            <parameter name="screen" transfer-ownership="none">
+              <type name="Screen" c:type="GdkScreen**"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="mask" transfer-ownership="none">
+              <type name="ModifierType" c:type="GdkModifierType*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="window_get_device_position" introspectable="0">
+        <callback name="window_get_device_position" introspectable="0">
+          <return-value>
+            <type name="Window" c:type="GdkWindow*"/>
+          </return-value>
+          <parameters>
+            <parameter name="display" transfer-ownership="none">
+              <type name="Display" c:type="GdkDisplay*"/>
+            </parameter>
+            <parameter name="device" transfer-ownership="none">
+              <type name="Device" c:type="GdkDevice*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="mask" transfer-ownership="none">
+              <type name="ModifierType" c:type="GdkModifierType*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="window_at_device_position" introspectable="0">
+        <callback name="window_at_device_position" introspectable="0">
+          <return-value>
+            <type name="Window" c:type="GdkWindow*"/>
+          </return-value>
+          <parameters>
+            <parameter name="display" transfer-ownership="none">
+              <type name="Display" c:type="GdkDisplay*"/>
+            </parameter>
+            <parameter name="device" transfer-ownership="none">
+              <type name="Device" c:type="GdkDevice*"/>
+            </parameter>
+            <parameter name="win_x" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="win_y" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="DisplayManager"
+           c:symbol-prefix="display_manager"
+           c:type="GdkDisplayManager"
+           parent="GObject.Object"
+           glib:type-name="GdkDisplayManager"
+           glib:get-type="gdk_display_manager_get_type"
+           glib:type-struct="DisplayManagerClass">
+      <function name="get"
+                c:identifier="gdk_display_manager_get"
+                version="2.2">
+        <doc xml:whitespace="preserve">Gets the singleton #GdkDisplayManager object.
+gdk_init(), or gdk_init_check() must have been called first.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The global #GdkDisplayManager singleton; gdk_parse_pargs(),</doc>
+          <type name="DisplayManager" c:type="GdkDisplayManager*"/>
+        </return-value>
+      </function>
+      <method name="get_default_display"
+              c:identifier="gdk_display_manager_get_default_display"
+              version="2.2">
+        <doc xml:whitespace="preserve">Gets the default #GdkDisplay.
+display.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkDisplay, or %NULL if there is no default</doc>
+          <type name="Display" c:type="GdkDisplay*"/>
+        </return-value>
+      </method>
+      <method name="list_displays"
+              c:identifier="gdk_display_manager_list_displays"
+              version="2.2">
+        <doc xml:whitespace="preserve">List all currently open displays.
+#GSList of #GdkDisplay objects. Free this list with g_slist_free() when you
+are done with it.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a newly allocated</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Display"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="set_default_display"
+              c:identifier="gdk_display_manager_set_default_display"
+              version="2.2">
+        <doc xml:whitespace="preserve">Sets @display as the default display.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="display" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkDisplay</doc>
+            <type name="Display" c:type="GdkDisplay*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="default-display" writable="1" transfer-ownership="none">
+        <type name="Display"/>
+      </property>
+      <glib:signal name="display-opened" version="2.2">
+        <doc xml:whitespace="preserve">The ::display_opened signal is emitted when a display is opened.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the opened display</doc>
+            <type name="Display"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="DisplayManagerClass"
+            c:type="GdkDisplayManagerClass"
+            glib:is-gtype-struct-for="DisplayManager">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="display_opened">
+        <callback name="display_opened">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="display_manager" transfer-ownership="none">
+              <type name="DisplayManager" c:type="GdkDisplayManager*"/>
+            </parameter>
+            <parameter name="display" transfer-ownership="none">
+              <type name="Display" c:type="GdkDisplay*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="DisplayPointerHooks" c:type="GdkDisplayPointerHooks">
+      <field name="get_pointer">
+        <callback name="get_pointer">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="display" transfer-ownership="none">
+              <type name="Display" c:type="GdkDisplay*"/>
+            </parameter>
+            <parameter name="screen" transfer-ownership="none">
+              <type name="Screen" c:type="GdkScreen**"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="mask" transfer-ownership="none">
+              <type name="ModifierType" c:type="GdkModifierType*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="window_get_pointer" introspectable="0">
+        <callback name="window_get_pointer" introspectable="0">
+          <return-value>
+            <type name="Window" c:type="GdkWindow*"/>
+          </return-value>
+          <parameters>
+            <parameter name="display" transfer-ownership="none">
+              <type name="Display" c:type="GdkDisplay*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="mask" transfer-ownership="none">
+              <type name="ModifierType" c:type="GdkModifierType*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="window_at_pointer" introspectable="0">
+        <callback name="window_at_pointer" introspectable="0">
+          <return-value>
+            <type name="Window" c:type="GdkWindow*"/>
+          </return-value>
+          <parameters>
+            <parameter name="display" transfer-ownership="none">
+              <type name="Display" c:type="GdkDisplay*"/>
+            </parameter>
+            <parameter name="win_x" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="win_y" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <bitfield name="DragAction"
+              glib:type-name="GdkDragAction"
+              glib:get-type="gdk_drag_action_get_type"
+              c:type="GdkDragAction">
+      <doc xml:whitespace="preserve">Used in #GdkDragContext to indicate what the destination
+should do with the dropped data.</doc>
+      <member name="default"
+              value="1"
+              c:identifier="GDK_ACTION_DEFAULT"
+              glib:nick="default"/>
+      <member name="copy"
+              value="2"
+              c:identifier="GDK_ACTION_COPY"
+              glib:nick="copy"/>
+      <member name="move"
+              value="4"
+              c:identifier="GDK_ACTION_MOVE"
+              glib:nick="move"/>
+      <member name="link"
+              value="8"
+              c:identifier="GDK_ACTION_LINK"
+              glib:nick="link"/>
+      <member name="private"
+              value="16"
+              c:identifier="GDK_ACTION_PRIVATE"
+              glib:nick="private"/>
+      <member name="ask"
+              value="32"
+              c:identifier="GDK_ACTION_ASK"
+              glib:nick="ask"/>
+    </bitfield>
+    <class name="DragContext"
+           c:symbol-prefix="drag_context"
+           c:type="GdkDragContext"
+           parent="GObject.Object"
+           glib:type-name="GdkDragContext"
+           glib:get-type="gdk_drag_context_get_type"
+           glib:type-struct="DragContextClass">
+      <constructor name="new" c:identifier="gdk_drag_context_new">
+        <doc xml:whitespace="preserve">Creates a new #GdkDragContext.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #GdkDragContext.</doc>
+          <type name="DragContext" c:type="GdkDragContext*"/>
+        </return-value>
+      </constructor>
+      <method name="get_actions"
+              c:identifier="gdk_drag_context_get_actions"
+              version="2.22">
+        <doc xml:whitespace="preserve">Determines the bitmask of actions proposed by the source if
+gdk_drag_context_suggested_action() returns GDK_ACTION_ASK.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkDragAction flags</doc>
+          <type name="DragAction" c:type="GdkDragAction"/>
+        </return-value>
+      </method>
+      <method name="get_device"
+              c:identifier="gdk_drag_context_get_device"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns the #GdkDevice associated to the drag context.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">The #GdkDevice associated to @context.</doc>
+          <type name="Device" c:type="GdkDevice*"/>
+        </return-value>
+      </method>
+      <method name="get_selected_action"
+              c:identifier="gdk_drag_context_get_selected_action"
+              version="2.22">
+        <doc xml:whitespace="preserve">Determines the action chosen by the drag destination.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkDragAction value</doc>
+          <type name="DragAction" c:type="GdkDragAction"/>
+        </return-value>
+      </method>
+      <method name="get_source_window"
+              c:identifier="gdk_drag_context_get_source_window"
+              version="2.22">
+        <doc xml:whitespace="preserve">Returns the #GdkWindow where the DND operation started.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_suggested_action"
+              c:identifier="gdk_drag_context_get_suggested_action"
+              version="2.22">
+        <doc xml:whitespace="preserve">Determines the suggested drag action of the context.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkDragAction value</doc>
+          <type name="DragAction" c:type="GdkDragAction"/>
+        </return-value>
+      </method>
+      <method name="list_targets"
+              c:identifier="gdk_drag_context_list_targets"
+              version="2.22">
+        <doc xml:whitespace="preserve">Retrieves the list of targets of the context.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GList of targets</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Atom"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="set_device" c:identifier="gdk_drag_context_set_device">
+        <doc xml:whitespace="preserve">Associates a #GdkDevice to @context, so all Drag and Drop events
+for @context are emitted as if they came from this device.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkDevice</doc>
+            <type name="Device" c:type="GdkDevice*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="protocol">
+        <type name="DragProtocol" c:type="GdkDragProtocol"/>
+      </field>
+      <field name="is_source">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="source_window">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="dest_window">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="targets">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="actions">
+        <type name="DragAction" c:type="GdkDragAction"/>
+      </field>
+      <field name="suggested_action">
+        <type name="DragAction" c:type="GdkDragAction"/>
+      </field>
+      <field name="action">
+        <type name="DragAction" c:type="GdkDragAction"/>
+      </field>
+      <field name="start_time">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="windowing_data">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </class>
+    <record name="DragContextClass"
+            c:type="GdkDragContextClass"
+            glib:is-gtype-struct-for="DragContext">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <enumeration name="DragProtocol"
+                 glib:type-name="GdkDragProtocol"
+                 glib:get-type="gdk_drag_protocol_get_type"
+                 c:type="GdkDragProtocol">
+      <doc xml:whitespace="preserve">Used in #GdkDragContext to indicate the protocol according to
+which DND is done.</doc>
+      <member name="motif"
+              value="0"
+              c:identifier="GDK_DRAG_PROTO_MOTIF"
+              glib:nick="motif"/>
+      <member name="xdnd"
+              value="1"
+              c:identifier="GDK_DRAG_PROTO_XDND"
+              glib:nick="xdnd"/>
+      <member name="rootwin"
+              value="2"
+              c:identifier="GDK_DRAG_PROTO_ROOTWIN"
+              glib:nick="rootwin"/>
+      <member name="none"
+              value="3"
+              c:identifier="GDK_DRAG_PROTO_NONE"
+              glib:nick="none"/>
+      <member name="win32_dropfiles"
+              value="4"
+              c:identifier="GDK_DRAG_PROTO_WIN32_DROPFILES"
+              glib:nick="win32-dropfiles"/>
+      <member name="ole2"
+              value="5"
+              c:identifier="GDK_DRAG_PROTO_OLE2"
+              glib:nick="ole2"/>
+      <member name="local"
+              value="6"
+              c:identifier="GDK_DRAG_PROTO_LOCAL"
+              glib:nick="local"/>
+    </enumeration>
+    <class name="Drawable"
+           c:symbol-prefix="drawable"
+           c:type="GdkDrawable"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GdkDrawable"
+           glib:get-type="gdk_drawable_get_type"
+           glib:type-struct="DrawableClass">
+      <virtual-method name="create_cairo_surface">
+        <return-value transfer-ownership="full">
+          <type name="cairo.Surface" c:type="cairo_surface_t*"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_clip_region" invoker="get_clip_region">
+        <doc xml:whitespace="preserve">Computes the region of a drawable that potentially can be written
+to by drawing primitives. This region will not take into account
+the clip region for the GC, and may also not take into account
+other factors such as if the window is obscured by other windows,
+but no area outside of this region will be affected by drawing
+primitives.
+when you are done.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #cairo_region_t. This must be freed with cairo_region_destroy()</doc>
+          <type name="cairo.Region" c:type="cairo_region_t*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_colormap"
+                      invoker="get_colormap"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Gets the colormap for @drawable, if one is set; returns
+%NULL otherwise.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the colormap, or %NULL</doc>
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_depth" invoker="get_depth">
+        <doc xml:whitespace="preserve">Obtains the bit depth of the drawable, that is, the number of bits
+that make up a pixel in the drawable's visual. Examples are 8 bits
+per pixel, 24 bits per pixel, etc.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of bits per pixel</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_screen"
+                      invoker="get_screen"
+                      version="2.2"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Gets the #GdkScreen associated with a #GdkDrawable.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the #GdkScreen associated with @drawable</doc>
+          <type name="Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_size" invoker="get_size">
+        <doc xml:whitespace="preserve">Fills *@width and *@height with the size of @drawable.
+On the X11 platform, if @drawable is a #GdkWindow, the returned
+size is the size reported in the most-recently-processed configure
+event, rather than the current size on the X server.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store drawable's width, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store drawable's height, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_source_drawable" introspectable="0">
+        <return-value>
+          <type name="Drawable" c:type="GdkDrawable*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_visible_region" invoker="get_visible_region">
+        <doc xml:whitespace="preserve">Computes the region of a drawable that is potentially visible.
+This does not necessarily take into account if the window is
+obscured by other windows, but no area outside of this region
+is visible.
+when you are done.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #cairo_region_t. This must be freed with cairo_region_destroy()</doc>
+          <type name="cairo.Region" c:type="cairo_region_t*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_visual"
+                      invoker="get_visual"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Gets the #GdkVisual describing the pixel format of @drawable.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a #GdkVisual</doc>
+          <type name="Visual" c:type="GdkVisual*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="ref_cairo_surface">
+        <return-value transfer-ownership="full">
+          <type name="cairo.Surface" c:type="cairo_surface_t*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_cairo_clip">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cr" transfer-ownership="none">
+            <type name="cairo.Context" c:type="cairo_t*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_colormap" invoker="set_colormap">
+        <doc xml:whitespace="preserve">Sets the colormap associated with @drawable. Normally this will
+happen automatically when the drawable is created; you only need to
+use this function if the drawable-creating function did not have a
+way to determine the colormap, and you then use drawable operations
+that require a colormap. The colormap for all drawables and
+graphics contexts you intend to use together should match.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cmap" transfer-ownership="none">
+            <type name="Colormap" c:type="GdkColormap*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_clip_region"
+              c:identifier="gdk_drawable_get_clip_region">
+        <doc xml:whitespace="preserve">Computes the region of a drawable that potentially can be written
+to by drawing primitives. This region will not take into account
+the clip region for the GC, and may also not take into account
+other factors such as if the window is obscured by other windows,
+but no area outside of this region will be affected by drawing
+primitives.
+when you are done.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #cairo_region_t. This must be freed with cairo_region_destroy()</doc>
+          <type name="cairo.Region" c:type="cairo_region_t*"/>
+        </return-value>
+      </method>
+      <method name="get_colormap"
+              c:identifier="gdk_drawable_get_colormap"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the colormap for @drawable, if one is set; returns
+%NULL otherwise.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the colormap, or %NULL</doc>
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </return-value>
+      </method>
+      <method name="get_depth" c:identifier="gdk_drawable_get_depth">
+        <doc xml:whitespace="preserve">Obtains the bit depth of the drawable, that is, the number of bits
+that make up a pixel in the drawable's visual. Examples are 8 bits
+per pixel, 24 bits per pixel, etc.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of bits per pixel</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_display"
+              c:identifier="gdk_drawable_get_display"
+              version="2.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the #GdkDisplay associated with a #GdkDrawable.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the #GdkDisplay associated with @drawable</doc>
+          <type name="Display" c:type="GdkDisplay*"/>
+        </return-value>
+      </method>
+      <method name="get_screen"
+              c:identifier="gdk_drawable_get_screen"
+              version="2.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the #GdkScreen associated with a #GdkDrawable.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the #GdkScreen associated with @drawable</doc>
+          <type name="Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </method>
+      <method name="get_size" c:identifier="gdk_drawable_get_size">
+        <doc xml:whitespace="preserve">Fills *@width and *@height with the size of @drawable.
+On the X11 platform, if @drawable is a #GdkWindow, the returned
+size is the size reported in the most-recently-processed configure
+event, rather than the current size on the X server.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store drawable's width, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store drawable's height, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_visible_region"
+              c:identifier="gdk_drawable_get_visible_region">
+        <doc xml:whitespace="preserve">Computes the region of a drawable that is potentially visible.
+This does not necessarily take into account if the window is
+obscured by other windows, but no area outside of this region
+is visible.
+when you are done.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #cairo_region_t. This must be freed with cairo_region_destroy()</doc>
+          <type name="cairo.Region" c:type="cairo_region_t*"/>
+        </return-value>
+      </method>
+      <method name="get_visual"
+              c:identifier="gdk_drawable_get_visual"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the #GdkVisual describing the pixel format of @drawable.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a #GdkVisual</doc>
+          <type name="Visual" c:type="GdkVisual*"/>
+        </return-value>
+      </method>
+      <method name="set_colormap" c:identifier="gdk_drawable_set_colormap">
+        <doc xml:whitespace="preserve">Sets the colormap associated with @drawable. Normally this will
+happen automatically when the drawable is created; you only need to
+use this function if the drawable-creating function did not have a
+way to determine the colormap, and you then use drawable operations
+that require a colormap. The colormap for all drawables and
+graphics contexts you intend to use together should match.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="colormap" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkColormap</doc>
+            <type name="Colormap" c:type="GdkColormap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+    </class>
+    <record name="DrawableClass"
+            c:type="GdkDrawableClass"
+            glib:is-gtype-struct-for="Drawable">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_depth">
+        <callback name="get_depth">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of bits per pixel</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="drawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkDrawable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_size">
+        <callback name="get_size">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="drawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkDrawable*"/>
+            </parameter>
+            <parameter name="width"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">location to store drawable's width, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="height"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">location to store drawable's height, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_colormap">
+        <callback name="set_colormap">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="drawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkDrawable*"/>
+            </parameter>
+            <parameter name="cmap" transfer-ownership="none">
+              <type name="Colormap" c:type="GdkColormap*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_colormap" introspectable="0">
+        <callback name="get_colormap" introspectable="0">
+          <return-value>
+            <doc xml:whitespace="preserve">the colormap, or %NULL</doc>
+            <type name="Colormap" c:type="GdkColormap*"/>
+          </return-value>
+          <parameters>
+            <parameter name="drawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkDrawable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_visual" introspectable="0">
+        <callback name="get_visual" introspectable="0">
+          <return-value>
+            <doc xml:whitespace="preserve">a #GdkVisual</doc>
+            <type name="Visual" c:type="GdkVisual*"/>
+          </return-value>
+          <parameters>
+            <parameter name="drawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkDrawable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_screen" introspectable="0">
+        <callback name="get_screen" introspectable="0">
+          <return-value>
+            <doc xml:whitespace="preserve">the #GdkScreen associated with @drawable</doc>
+            <type name="Screen" c:type="GdkScreen*"/>
+          </return-value>
+          <parameters>
+            <parameter name="drawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkDrawable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_clip_region">
+        <callback name="get_clip_region">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #cairo_region_t. This must be freed with cairo_region_destroy()</doc>
+            <type name="cairo.Region" c:type="cairo_region_t*"/>
+          </return-value>
+          <parameters>
+            <parameter name="drawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkDrawable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_visible_region">
+        <callback name="get_visible_region">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #cairo_region_t. This must be freed with cairo_region_destroy()</doc>
+            <type name="cairo.Region" c:type="cairo_region_t*"/>
+          </return-value>
+          <parameters>
+            <parameter name="drawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkDrawable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="ref_cairo_surface">
+        <callback name="ref_cairo_surface">
+          <return-value transfer-ownership="full">
+            <type name="cairo.Surface" c:type="cairo_surface_t*"/>
+          </return-value>
+          <parameters>
+            <parameter name="drawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkDrawable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_source_drawable" introspectable="0">
+        <callback name="get_source_drawable" introspectable="0">
+          <return-value>
+            <type name="Drawable" c:type="GdkDrawable*"/>
+          </return-value>
+          <parameters>
+            <parameter name="drawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkDrawable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_cairo_clip">
+        <callback name="set_cairo_clip">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="drawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkDrawable*"/>
+            </parameter>
+            <parameter name="cr" transfer-ownership="none">
+              <type name="cairo.Context" c:type="cairo_t*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_cairo_surface">
+        <callback name="create_cairo_surface">
+          <return-value transfer-ownership="full">
+            <type name="cairo.Surface" c:type="cairo_surface_t*"/>
+          </return-value>
+          <parameters>
+            <parameter name="drawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkDrawable*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="int"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gdk_reserved7" introspectable="0">
+        <callback name="_gdk_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gdk_reserved9" introspectable="0">
+        <callback name="_gdk_reserved9">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gdk_reserved10" introspectable="0">
+        <callback name="_gdk_reserved10">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gdk_reserved11" introspectable="0">
+        <callback name="_gdk_reserved11">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gdk_reserved12" introspectable="0">
+        <callback name="_gdk_reserved12">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gdk_reserved13" introspectable="0">
+        <callback name="_gdk_reserved13">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gdk_reserved14" introspectable="0">
+        <callback name="_gdk_reserved14">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gdk_reserved15" introspectable="0">
+        <callback name="_gdk_reserved15">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <union name="Event"
+           c:type="GdkEvent"
+           glib:type-name="GdkEvent"
+           glib:get-type="gdk_event_get_type"
+           c:symbol-prefix="event">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="GdkEventType"/>
+      </field>
+      <field name="any" writable="1">
+        <type name="EventAny" c:type="GdkEventAny"/>
+      </field>
+      <field name="expose" writable="1">
+        <type name="EventExpose" c:type="GdkEventExpose"/>
+      </field>
+      <field name="no_expose" writable="1">
+        <type name="EventNoExpose" c:type="GdkEventNoExpose"/>
+      </field>
+      <field name="visibility" writable="1">
+        <type name="EventVisibility" c:type="GdkEventVisibility"/>
+      </field>
+      <field name="motion" writable="1">
+        <type name="EventMotion" c:type="GdkEventMotion"/>
+      </field>
+      <field name="button" writable="1">
+        <type name="EventButton" c:type="GdkEventButton"/>
+      </field>
+      <field name="scroll" writable="1">
+        <type name="EventScroll" c:type="GdkEventScroll"/>
+      </field>
+      <field name="key" writable="1">
+        <type name="EventKey" c:type="GdkEventKey"/>
+      </field>
+      <field name="crossing" writable="1">
+        <type name="EventCrossing" c:type="GdkEventCrossing"/>
+      </field>
+      <field name="focus_change" writable="1">
+        <type name="EventFocus" c:type="GdkEventFocus"/>
+      </field>
+      <field name="configure" writable="1">
+        <type name="EventConfigure" c:type="GdkEventConfigure"/>
+      </field>
+      <field name="property" writable="1">
+        <type name="EventProperty" c:type="GdkEventProperty"/>
+      </field>
+      <field name="selection" writable="1">
+        <type name="EventSelection" c:type="GdkEventSelection"/>
+      </field>
+      <field name="owner_change" writable="1">
+        <type name="EventOwnerChange" c:type="GdkEventOwnerChange"/>
+      </field>
+      <field name="proximity" writable="1">
+        <type name="EventProximity" c:type="GdkEventProximity"/>
+      </field>
+      <field name="client" writable="1">
+        <type name="EventClient" c:type="GdkEventClient"/>
+      </field>
+      <field name="dnd" writable="1">
+        <type name="EventDND" c:type="GdkEventDND"/>
+      </field>
+      <field name="window_state" writable="1">
+        <type name="EventWindowState" c:type="GdkEventWindowState"/>
+      </field>
+      <field name="setting" writable="1">
+        <type name="EventSetting" c:type="GdkEventSetting"/>
+      </field>
+      <field name="grab_broken" writable="1">
+        <type name="EventGrabBroken" c:type="GdkEventGrabBroken"/>
+      </field>
+      <constructor name="new" c:identifier="gdk_event_new" version="2.2">
+        <doc xml:whitespace="preserve">Creates a new event of the given type. All fields are set to 0.
+should be freed with gdk_event_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly-allocated #GdkEvent. The returned #GdkEvent</doc>
+          <type name="Event" c:type="GdkEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkEventType</doc>
+            <type name="EventType" c:type="GdkEventType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="_get_angle"
+              c:identifier="gdk_events_get_angle"
+              version="3.0">
+        <doc xml:whitespace="preserve">If both events contain X/Y information, this function will return %TRUE
+and return in @angle the relative angle from @event1 to @event2. The rotation
+direction for positive angles is from the positive X axis towards the positive
+Y axis.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the angle could be calculated.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">second #GdkEvent</doc>
+            <type name="Event" c:type="GdkEvent*"/>
+          </parameter>
+          <parameter name="angle" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the relative angle between both events</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="_get_center"
+              c:identifier="gdk_events_get_center"
+              version="3.0">
+        <doc xml:whitespace="preserve">If both events contain X/Y information, the center of both coordinates
+will be returned in @x and @y.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the center could be calculated.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">second #GdkEvent</doc>
+            <type name="Event" c:type="GdkEvent*"/>
+          </parameter>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the X coordinate of the center</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the Y coordinate of the center</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="_get_distance"
+              c:identifier="gdk_events_get_distance"
+              version="3.0">
+        <doc xml:whitespace="preserve">If both events have X/Y information, the distance between both coordinates
+(as in a straight line going from @event1 to @event2) will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the distance could be calculated.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">second #GdkEvent</doc>
+            <type name="Event" c:type="GdkEvent*"/>
+          </parameter>
+          <parameter name="distance" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the distance</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="gdk_event_copy">
+        <doc xml:whitespace="preserve">Copies a #GdkEvent, copying or incrementing the reference count of the
+resources associated with it (e.g. #GdkWindow's and strings).
+gdk_event_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a copy of @event. The returned #GdkEvent should be freed with</doc>
+          <type name="Event" c:type="GdkEvent*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gdk_event_free">
+        <doc xml:whitespace="preserve">Frees a #GdkEvent, freeing or decrementing any resources associated with it.
+Note that this function should only be called with events returned from
+functions such as gdk_event_peek(), gdk_event_get(), gdk_event_copy()
+and gdk_event_new().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_axis" c:identifier="gdk_event_get_axis">
+        <doc xml:whitespace="preserve">Extract the axis value for a particular axis use from
+an event structure.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the specified axis was found, otherwise %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis_use"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">the axis use to look for</doc>
+            <type name="AxisUse" c:type="GdkAxisUse"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location to store the value found</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_coords" c:identifier="gdk_event_get_coords">
+        <doc xml:whitespace="preserve">Extract the event window relative x/y coordinates from an event.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event delivered event window coordinates</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_win"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location to put event window x coordinate</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="y_win"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location to put event window y coordinate</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_device"
+              c:identifier="gdk_event_get_device"
+              version="3.0">
+        <doc xml:whitespace="preserve">If the event contains a "device" field, this function will return
+it, else it will return %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkDevice, or %NULL.</doc>
+          <type name="Device" c:type="GdkDevice*"/>
+        </return-value>
+      </method>
+      <method name="get_root_coords" c:identifier="gdk_event_get_root_coords">
+        <doc xml:whitespace="preserve">Extract the root window relative x/y coordinates from an event.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event delivered root window coordinates</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_root"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location to put root window x coordinate</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="y_root"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location to put root window y coordinate</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_screen"
+              c:identifier="gdk_event_get_screen"
+              version="2.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns the screen for the event. The screen is
+typically the screen for &lt;literal&gt;event-&gt;any.window&lt;/literal&gt;, but
+for events such as mouse events, it is the screen
+where the pointer was when the event occurs -
+that is, the screen which has the root window 
+to which &lt;literal&gt;event-&gt;motion.x_root&lt;/literal&gt; and
+&lt;literal&gt;event-&gt;motion.y_root&lt;/literal&gt; are relative.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the screen for the event</doc>
+          <type name="Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </method>
+      <method name="get_state" c:identifier="gdk_event_get_state">
+        <doc xml:whitespace="preserve">If the event contains a "state" field, puts that field in @state. Otherwise
+stores an empty state (0). Returns %TRUE if there was a state field
+in the event. @event may be %NULL, in which case it's treated
+as if the event had no state field.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if there was a state field in the event</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="state"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for state</doc>
+            <type name="ModifierType" c:type="GdkModifierType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_time" c:identifier="gdk_event_get_time">
+        <doc xml:whitespace="preserve">Returns the time stamp from @event, if there is one; otherwise
+returns #GDK_CURRENT_TIME. If @event is %NULL, returns #GDK_CURRENT_TIME.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">time stamp field from @event</doc>
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="put" c:identifier="gdk_event_put">
+        <doc xml:whitespace="preserve">Appends a copy of the given event onto the front of the event
+queue for event-&gt;any.window's display, or the default event
+queue if event-&gt;any.window is %NULL. See gdk_display_put_event().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="send_client_message"
+              c:identifier="gdk_event_send_client_message">
+        <doc xml:whitespace="preserve">Sends an X ClientMessage event to a given window (which must be
+on the default #GdkDisplay.)
+This could be used for communicating between different applications,
+though the amount of data is limited to 20 bytes.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">non-zero on success.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="winid" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the window to send the X ClientMessage event to.</doc>
+            <type name="NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_clientmessage_toall"
+              c:identifier="gdk_event_send_clientmessage_toall">
+        <doc xml:whitespace="preserve">Sends an X ClientMessage event to all toplevel windows on the default
+#GdkScreen.
+Toplevel windows are determined by checking for the WM_STATE property, as
+described in the Inter-Client Communication Conventions Manual (ICCCM).
+If no windows are found with the WM_STATE property set, the message is sent
+to all children of the root window.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_device"
+              c:identifier="gdk_event_set_device"
+              version="3.0">
+        <doc xml:whitespace="preserve">Sets the device for @event to @device. The event must
+have been allocated by GTK+, for instance, by
+gdk_event_copy().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkDevice</doc>
+            <type name="Device" c:type="GdkDevice*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_screen"
+              c:identifier="gdk_event_set_screen"
+              version="2.2">
+        <doc xml:whitespace="preserve">Sets the screen for @event to @screen. The event must
+have been allocated by GTK+, for instance, by
+gdk_event_copy().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkScreen</doc>
+            <type name="Screen" c:type="GdkScreen*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </union>
+    <record name="EventAny" c:type="GdkEventAny">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="GdkEventType"/>
+      </field>
+      <field name="window" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="send_event" writable="1">
+        <type name="gint8" c:type="gint8"/>
+      </field>
+    </record>
+    <record name="EventButton" c:type="GdkEventButton">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="GdkEventType"/>
+      </field>
+      <field name="window" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="send_event" writable="1">
+        <type name="gint8" c:type="gint8"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="axes" writable="1">
+        <type name="gdouble" c:type="gdouble*"/>
+      </field>
+      <field name="state" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="button" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="Device" c:type="GdkDevice*"/>
+      </field>
+      <field name="x_root" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="y_root" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+    </record>
+    <record name="EventClient" c:type="GdkEventClient">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="GdkEventType"/>
+      </field>
+      <field name="window" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="send_event" writable="1">
+        <type name="gint8" c:type="gint8"/>
+      </field>
+      <field name="message_type" writable="1">
+        <type name="Atom" c:type="GdkAtom"/>
+      </field>
+      <field name="data_format" writable="1">
+        <type name="gushort" c:type="gushort"/>
+      </field>
+      <union name="data" c:type="data">
+        <field name="b" writable="1">
+          <array zero-terminated="0" c:type="gchar" fixed-size="20">
+            <type name="gchar" c:type="char"/>
+          </array>
+        </field>
+        <field name="s" writable="1">
+          <array zero-terminated="0" c:type="gshort" fixed-size="10">
+            <type name="gshort" c:type="short"/>
+          </array>
+        </field>
+        <field name="l" writable="1">
+          <array zero-terminated="0" c:type="glong" fixed-size="5">
+            <type name="glong" c:type="long"/>
+          </array>
+        </field>
+      </union>
+    </record>
+    <record name="EventConfigure" c:type="GdkEventConfigure">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="GdkEventType"/>
+      </field>
+      <field name="window" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="send_event" writable="1">
+        <type name="gint8" c:type="gint8"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="width" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="height" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+    </record>
+    <record name="EventCrossing" c:type="GdkEventCrossing">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="GdkEventType"/>
+      </field>
+      <field name="window" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="send_event" writable="1">
+        <type name="gint8" c:type="gint8"/>
+      </field>
+      <field name="subwindow" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="x_root" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="y_root" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="mode" writable="1">
+        <type name="CrossingMode" c:type="GdkCrossingMode"/>
+      </field>
+      <field name="detail" writable="1">
+        <type name="NotifyType" c:type="GdkNotifyType"/>
+      </field>
+      <field name="focus" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="state" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="EventDND" c:type="GdkEventDND">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="GdkEventType"/>
+      </field>
+      <field name="window" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="send_event" writable="1">
+        <type name="gint8" c:type="gint8"/>
+      </field>
+      <field name="context" writable="1">
+        <type name="DragContext" c:type="GdkDragContext*"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="x_root" writable="1">
+        <type name="gshort" c:type="gshort"/>
+      </field>
+      <field name="y_root" writable="1">
+        <type name="gshort" c:type="gshort"/>
+      </field>
+    </record>
+    <record name="EventExpose" c:type="GdkEventExpose">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="GdkEventType"/>
+      </field>
+      <field name="window" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="send_event" writable="1">
+        <type name="gint8" c:type="gint8"/>
+      </field>
+      <field name="area" writable="1">
+        <type name="Rectangle" c:type="GdkRectangle"/>
+      </field>
+      <field name="region" writable="1">
+        <type name="cairo.Region" c:type="cairo_region_t*"/>
+      </field>
+      <field name="count" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+    </record>
+    <record name="EventFocus" c:type="GdkEventFocus">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="GdkEventType"/>
+      </field>
+      <field name="window" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="send_event" writable="1">
+        <type name="gint8" c:type="gint8"/>
+      </field>
+      <field name="in" writable="1">
+        <type name="gint16" c:type="gint16"/>
+      </field>
+    </record>
+    <callback name="EventFunc" c:type="GdkEventFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Event" c:type="GdkEvent*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="EventGrabBroken" c:type="GdkEventGrabBroken">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="GdkEventType"/>
+      </field>
+      <field name="window" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="send_event" writable="1">
+        <type name="gint8" c:type="gint8"/>
+      </field>
+      <field name="keyboard" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="implicit" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="grab_window" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+    </record>
+    <record name="EventKey" c:type="GdkEventKey">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="GdkEventType"/>
+      </field>
+      <field name="window" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="send_event" writable="1">
+        <type name="gint8" c:type="gint8"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="state" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="keyval" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="length" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="string" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="hardware_keycode" writable="1">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="group" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="is_modifier" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <bitfield name="EventMask"
+              glib:type-name="GdkEventMask"
+              glib:get-type="gdk_event_mask_get_type"
+              c:type="GdkEventMask">
+      <member name="exposure_mask"
+              value="2"
+              c:identifier="GDK_EXPOSURE_MASK"
+              glib:nick="exposure-mask"/>
+      <member name="pointer_motion_mask"
+              value="4"
+              c:identifier="GDK_POINTER_MOTION_MASK"
+              glib:nick="pointer-motion-mask"/>
+      <member name="pointer_motion_hint_mask"
+              value="8"
+              c:identifier="GDK_POINTER_MOTION_HINT_MASK"
+              glib:nick="pointer-motion-hint-mask"/>
+      <member name="button_motion_mask"
+              value="16"
+              c:identifier="GDK_BUTTON_MOTION_MASK"
+              glib:nick="button-motion-mask"/>
+      <member name="button1_motion_mask"
+              value="32"
+              c:identifier="GDK_BUTTON1_MOTION_MASK"
+              glib:nick="button1-motion-mask"/>
+      <member name="button2_motion_mask"
+              value="64"
+              c:identifier="GDK_BUTTON2_MOTION_MASK"
+              glib:nick="button2-motion-mask"/>
+      <member name="button3_motion_mask"
+              value="128"
+              c:identifier="GDK_BUTTON3_MOTION_MASK"
+              glib:nick="button3-motion-mask"/>
+      <member name="button_press_mask"
+              value="256"
+              c:identifier="GDK_BUTTON_PRESS_MASK"
+              glib:nick="button-press-mask"/>
+      <member name="button_release_mask"
+              value="512"
+              c:identifier="GDK_BUTTON_RELEASE_MASK"
+              glib:nick="button-release-mask"/>
+      <member name="key_press_mask"
+              value="1024"
+              c:identifier="GDK_KEY_PRESS_MASK"
+              glib:nick="key-press-mask"/>
+      <member name="key_release_mask"
+              value="2048"
+              c:identifier="GDK_KEY_RELEASE_MASK"
+              glib:nick="key-release-mask"/>
+      <member name="enter_notify_mask"
+              value="4096"
+              c:identifier="GDK_ENTER_NOTIFY_MASK"
+              glib:nick="enter-notify-mask"/>
+      <member name="leave_notify_mask"
+              value="8192"
+              c:identifier="GDK_LEAVE_NOTIFY_MASK"
+              glib:nick="leave-notify-mask"/>
+      <member name="focus_change_mask"
+              value="16384"
+              c:identifier="GDK_FOCUS_CHANGE_MASK"
+              glib:nick="focus-change-mask"/>
+      <member name="structure_mask"
+              value="32768"
+              c:identifier="GDK_STRUCTURE_MASK"
+              glib:nick="structure-mask"/>
+      <member name="property_change_mask"
+              value="65536"
+              c:identifier="GDK_PROPERTY_CHANGE_MASK"
+              glib:nick="property-change-mask"/>
+      <member name="visibility_notify_mask"
+              value="131072"
+              c:identifier="GDK_VISIBILITY_NOTIFY_MASK"
+              glib:nick="visibility-notify-mask"/>
+      <member name="proximity_in_mask"
+              value="262144"
+              c:identifier="GDK_PROXIMITY_IN_MASK"
+              glib:nick="proximity-in-mask"/>
+      <member name="proximity_out_mask"
+              value="524288"
+              c:identifier="GDK_PROXIMITY_OUT_MASK"
+              glib:nick="proximity-out-mask"/>
+      <member name="substructure_mask"
+              value="1048576"
+              c:identifier="GDK_SUBSTRUCTURE_MASK"
+              glib:nick="substructure-mask"/>
+      <member name="scroll_mask"
+              value="2097152"
+              c:identifier="GDK_SCROLL_MASK"
+              glib:nick="scroll-mask"/>
+      <member name="all_events_mask"
+              value="4194302"
+              c:identifier="GDK_ALL_EVENTS_MASK"
+              glib:nick="all-events-mask"/>
+    </bitfield>
+    <record name="EventMotion" c:type="GdkEventMotion">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="GdkEventType"/>
+      </field>
+      <field name="window" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="send_event" writable="1">
+        <type name="gint8" c:type="gint8"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="axes" writable="1">
+        <type name="gdouble" c:type="gdouble*"/>
+      </field>
+      <field name="state" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="is_hint" writable="1">
+        <type name="gint16" c:type="gint16"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="Device" c:type="GdkDevice*"/>
+      </field>
+      <field name="x_root" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="y_root" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+    </record>
+    <record name="EventNoExpose" c:type="GdkEventNoExpose">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="GdkEventType"/>
+      </field>
+      <field name="window" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="send_event" writable="1">
+        <type name="gint8" c:type="gint8"/>
+      </field>
+    </record>
+    <record name="EventOwnerChange" c:type="GdkEventOwnerChange">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="GdkEventType"/>
+      </field>
+      <field name="window" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="send_event" writable="1">
+        <type name="gint8" c:type="gint8"/>
+      </field>
+      <field name="owner" writable="1">
+        <type name="NativeWindow" c:type="GdkNativeWindow"/>
+      </field>
+      <field name="reason" writable="1">
+        <type name="OwnerChange" c:type="GdkOwnerChange"/>
+      </field>
+      <field name="selection" writable="1">
+        <type name="Atom" c:type="GdkAtom"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="selection_time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+    </record>
+    <record name="EventProperty" c:type="GdkEventProperty">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="GdkEventType"/>
+      </field>
+      <field name="window" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="send_event" writable="1">
+        <type name="gint8" c:type="gint8"/>
+      </field>
+      <field name="atom" writable="1">
+        <type name="Atom" c:type="GdkAtom"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="state" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="EventProximity" c:type="GdkEventProximity">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="GdkEventType"/>
+      </field>
+      <field name="window" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="send_event" writable="1">
+        <type name="gint8" c:type="gint8"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="Device" c:type="GdkDevice*"/>
+      </field>
+    </record>
+    <record name="EventScroll" c:type="GdkEventScroll">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="GdkEventType"/>
+      </field>
+      <field name="window" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="send_event" writable="1">
+        <type name="gint8" c:type="gint8"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="state" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="direction" writable="1">
+        <type name="ScrollDirection" c:type="GdkScrollDirection"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="Device" c:type="GdkDevice*"/>
+      </field>
+      <field name="x_root" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="y_root" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+    </record>
+    <record name="EventSelection" c:type="GdkEventSelection">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="GdkEventType"/>
+      </field>
+      <field name="window" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="send_event" writable="1">
+        <type name="gint8" c:type="gint8"/>
+      </field>
+      <field name="selection" writable="1">
+        <type name="Atom" c:type="GdkAtom"/>
+      </field>
+      <field name="target" writable="1">
+        <type name="Atom" c:type="GdkAtom"/>
+      </field>
+      <field name="property" writable="1">
+        <type name="Atom" c:type="GdkAtom"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="requestor" writable="1">
+        <type name="NativeWindow" c:type="GdkNativeWindow"/>
+      </field>
+    </record>
+    <record name="EventSetting" c:type="GdkEventSetting">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="GdkEventType"/>
+      </field>
+      <field name="window" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="send_event" writable="1">
+        <type name="gint8" c:type="gint8"/>
+      </field>
+      <field name="action" writable="1">
+        <type name="SettingAction" c:type="GdkSettingAction"/>
+      </field>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="char*"/>
+      </field>
+    </record>
+    <enumeration name="EventType"
+                 glib:type-name="GdkEventType"
+                 glib:get-type="gdk_event_type_get_type"
+                 c:type="GdkEventType">
+      <member name="nothing"
+              value="-1"
+              c:identifier="GDK_NOTHING"
+              glib:nick="nothing"/>
+      <member name="delete"
+              value="0"
+              c:identifier="GDK_DELETE"
+              glib:nick="delete"/>
+      <member name="destroy"
+              value="1"
+              c:identifier="GDK_DESTROY"
+              glib:nick="destroy"/>
+      <member name="expose"
+              value="2"
+              c:identifier="GDK_EXPOSE"
+              glib:nick="expose"/>
+      <member name="motion_notify"
+              value="3"
+              c:identifier="GDK_MOTION_NOTIFY"
+              glib:nick="motion-notify"/>
+      <member name="button_press"
+              value="4"
+              c:identifier="GDK_BUTTON_PRESS"
+              glib:nick="button-press"/>
+      <member name="2button_press"
+              value="5"
+              c:identifier="GDK_2BUTTON_PRESS"
+              glib:nick="2button-press"/>
+      <member name="3button_press"
+              value="6"
+              c:identifier="GDK_3BUTTON_PRESS"
+              glib:nick="3button-press"/>
+      <member name="button_release"
+              value="7"
+              c:identifier="GDK_BUTTON_RELEASE"
+              glib:nick="button-release"/>
+      <member name="key_press"
+              value="8"
+              c:identifier="GDK_KEY_PRESS"
+              glib:nick="key-press"/>
+      <member name="key_release"
+              value="9"
+              c:identifier="GDK_KEY_RELEASE"
+              glib:nick="key-release"/>
+      <member name="enter_notify"
+              value="10"
+              c:identifier="GDK_ENTER_NOTIFY"
+              glib:nick="enter-notify"/>
+      <member name="leave_notify"
+              value="11"
+              c:identifier="GDK_LEAVE_NOTIFY"
+              glib:nick="leave-notify"/>
+      <member name="focus_change"
+              value="12"
+              c:identifier="GDK_FOCUS_CHANGE"
+              glib:nick="focus-change"/>
+      <member name="configure"
+              value="13"
+              c:identifier="GDK_CONFIGURE"
+              glib:nick="configure"/>
+      <member name="map" value="14" c:identifier="GDK_MAP" glib:nick="map"/>
+      <member name="unmap"
+              value="15"
+              c:identifier="GDK_UNMAP"
+              glib:nick="unmap"/>
+      <member name="property_notify"
+              value="16"
+              c:identifier="GDK_PROPERTY_NOTIFY"
+              glib:nick="property-notify"/>
+      <member name="selection_clear"
+              value="17"
+              c:identifier="GDK_SELECTION_CLEAR"
+              glib:nick="selection-clear"/>
+      <member name="selection_request"
+              value="18"
+              c:identifier="GDK_SELECTION_REQUEST"
+              glib:nick="selection-request"/>
+      <member name="selection_notify"
+              value="19"
+              c:identifier="GDK_SELECTION_NOTIFY"
+              glib:nick="selection-notify"/>
+      <member name="proximity_in"
+              value="20"
+              c:identifier="GDK_PROXIMITY_IN"
+              glib:nick="proximity-in"/>
+      <member name="proximity_out"
+              value="21"
+              c:identifier="GDK_PROXIMITY_OUT"
+              glib:nick="proximity-out"/>
+      <member name="drag_enter"
+              value="22"
+              c:identifier="GDK_DRAG_ENTER"
+              glib:nick="drag-enter"/>
+      <member name="drag_leave"
+              value="23"
+              c:identifier="GDK_DRAG_LEAVE"
+              glib:nick="drag-leave"/>
+      <member name="drag_motion"
+              value="24"
+              c:identifier="GDK_DRAG_MOTION"
+              glib:nick="drag-motion"/>
+      <member name="drag_status"
+              value="25"
+              c:identifier="GDK_DRAG_STATUS"
+              glib:nick="drag-status"/>
+      <member name="drop_start"
+              value="26"
+              c:identifier="GDK_DROP_START"
+              glib:nick="drop-start"/>
+      <member name="drop_finished"
+              value="27"
+              c:identifier="GDK_DROP_FINISHED"
+              glib:nick="drop-finished"/>
+      <member name="client_event"
+              value="28"
+              c:identifier="GDK_CLIENT_EVENT"
+              glib:nick="client-event"/>
+      <member name="visibility_notify"
+              value="29"
+              c:identifier="GDK_VISIBILITY_NOTIFY"
+              glib:nick="visibility-notify"/>
+      <member name="no_expose"
+              value="30"
+              c:identifier="GDK_NO_EXPOSE"
+              glib:nick="no-expose"/>
+      <member name="scroll"
+              value="31"
+              c:identifier="GDK_SCROLL"
+              glib:nick="scroll"/>
+      <member name="window_state"
+              value="32"
+              c:identifier="GDK_WINDOW_STATE"
+              glib:nick="window-state"/>
+      <member name="setting"
+              value="33"
+              c:identifier="GDK_SETTING"
+              glib:nick="setting"/>
+      <member name="owner_change"
+              value="34"
+              c:identifier="GDK_OWNER_CHANGE"
+              glib:nick="owner-change"/>
+      <member name="grab_broken"
+              value="35"
+              c:identifier="GDK_GRAB_BROKEN"
+              glib:nick="grab-broken"/>
+      <member name="damage"
+              value="36"
+              c:identifier="GDK_DAMAGE"
+              glib:nick="damage"/>
+      <member name="event_last"
+              value="37"
+              c:identifier="GDK_EVENT_LAST"
+              glib:nick="event-last"/>
+    </enumeration>
+    <record name="EventVisibility" c:type="GdkEventVisibility">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="GdkEventType"/>
+      </field>
+      <field name="window" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="send_event" writable="1">
+        <type name="gint8" c:type="gint8"/>
+      </field>
+      <field name="state" writable="1">
+        <type name="VisibilityState" c:type="GdkVisibilityState"/>
+      </field>
+    </record>
+    <record name="EventWindowState" c:type="GdkEventWindowState">
+      <field name="type" writable="1">
+        <type name="EventType" c:type="GdkEventType"/>
+      </field>
+      <field name="window" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="send_event" writable="1">
+        <type name="gint8" c:type="gint8"/>
+      </field>
+      <field name="changed_mask" writable="1">
+        <type name="WindowState" c:type="GdkWindowState"/>
+      </field>
+      <field name="new_window_state" writable="1">
+        <type name="WindowState" c:type="GdkWindowState"/>
+      </field>
+    </record>
+    <enumeration name="ExtensionMode"
+                 glib:type-name="GdkExtensionMode"
+                 glib:get-type="gdk_extension_mode_get_type"
+                 c:type="GdkExtensionMode">
+      <doc xml:whitespace="preserve">An enumeration used to specify which extension events
+are desired for a particular widget.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="GDK_EXTENSION_EVENTS_NONE"
+              glib:nick="none"/>
+      <member name="all"
+              value="1"
+              c:identifier="GDK_EXTENSION_EVENTS_ALL"
+              glib:nick="all"/>
+      <member name="cursor"
+              value="2"
+              c:identifier="GDK_EXTENSION_EVENTS_CURSOR"
+              glib:nick="cursor"/>
+    </enumeration>
+    <callback name="FilterFunc" c:type="GdkFilterFunc">
+      <doc xml:whitespace="preserve">Specifies the type of function used to filter native events before they are
+converted to GDK events.
+When a filter is called, @event is unpopulated, except for
+&lt;literal&gt;event-&gt;window&lt;/literal&gt;. The filter may translate the native
+event to a GDK event and store the result in @event, or handle it without
+translation. If the filter translates the event and processing should
+continue, it should return %GDK_FILTER_TRANSLATE.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a #GdkFilterReturn value.</doc>
+        <type name="FilterReturn" c:type="GdkFilterReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="xevent" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the native event to filter.</doc>
+          <type name="XEvent" c:type="GdkXEvent*"/>
+        </parameter>
+        <parameter name="event" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the GDK event to which the X event will be translated.</doc>
+          <type name="Event" c:type="GdkEvent*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data set when the filter was installed.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="FilterReturn"
+                 glib:type-name="GdkFilterReturn"
+                 glib:get-type="gdk_filter_return_get_type"
+                 c:type="GdkFilterReturn">
+      <doc xml:whitespace="preserve">Specifies the result of applying a #GdkFilterFunc to a native event.</doc>
+      <member name="continue"
+              value="0"
+              c:identifier="GDK_FILTER_CONTINUE"
+              glib:nick="continue"/>
+      <member name="translate"
+              value="1"
+              c:identifier="GDK_FILTER_TRANSLATE"
+              glib:nick="translate"/>
+      <member name="remove"
+              value="2"
+              c:identifier="GDK_FILTER_REMOVE"
+              glib:nick="remove"/>
+    </enumeration>
+    <record name="Geometry" c:type="GdkGeometry">
+      <doc xml:whitespace="preserve">The #GdkGeometry struct gives the window manager information about
+a window's geometry constraints. Normally you would set these on
+the GTK+ level using gtk_window_set_geometry_hints(). #GtkWindow
+then sets the hints on the #GdkWindow it creates.
+gdk_window_set_geometry_hints() expects the hints to be fully valid already
+and simply passes them to the window manager; in contrast,
+gtk_window_set_geometry_hints() performs some interpretation. For example,
+#GtkWindow will apply the hints to the geometry widget instead of the
+toplevel window, if you set a geometry widget. Also, the
+#GtkWindow will substitute the size request of the window or geometry widget.
+If the minimum size hint is not provided, #GtkWindow will use its requisition
+as the minimum size. If the minimum size is provided and a geometry widget is
+set, #GtkWindow will take the minimum size as the minimum size of the
+geometry widget rather than the entire window. The base size is treated
+similarly.
+The canonical use-case for gtk_window_set_geometry_hints() is to get a
+terminal widget to resize properly. Here, the terminal text area should be
+the geometry widget; #GtkWindow will then automatically set the base size to
+the size of other widgets in the terminal window, such as the menubar and
+scrollbar. Then, the @width_inc and @height_inc fields should be set to the
+size of one character in the terminal. Finally, the base size should be set
+to the size of one character. The net effect is that the minimum size of the
+terminal will have a 1x1 character terminal area, and only terminal sizes on
+the "character grid" will be allowed.
+Here's an example of how the terminal example would be implemented, assuming
+a terminal area widget called "terminal" and a toplevel window "toplevel":
+&lt;informalexample&gt;&lt;programlisting&gt;&lt;![CDATA[
+GdkGeometry hints;
+hints.base_width = terminal-&gt;char_width;
+hints.base_height = terminal-&gt;char_height;
+hints.min_width = terminal-&gt;char_width;
+hints.min_height = terminal-&gt;char_height;
+hints.width_inc = terminal-&gt;char_width;
+hints.height_inc = terminal-&gt;char_height;
+gtk_window_set_geometry_hints (GTK_WINDOW (toplevel),
+GTK_WIDGET (terminal),
+&amp;hints,
+GDK_HINT_RESIZE_INC |
+GDK_HINT_MIN_SIZE |
+GDK_HINT_BASE_SIZE);
+]]&gt;&lt;/programlisting&gt;&lt;/informalexample&gt;
+The other useful fields are the @min_aspect and @max_aspect fields; these
+contain a width/height ratio as a floating point number. If a geometry widget
+is set, the aspect applies to the geometry widget rather than the entire
+window. The most common use of these hints is probably to set @min_aspect and
+aspect ratio.</doc>
+      <field name="min_width" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="min_height" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="max_width" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="max_height" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="base_width" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="base_height" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="width_inc" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="height_inc" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="min_aspect" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="max_aspect" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="win_gravity" writable="1">
+        <type name="Gravity" c:type="GdkGravity"/>
+      </field>
+    </record>
+    <enumeration name="GrabOwnership"
+                 glib:type-name="GdkGrabOwnership"
+                 glib:get-type="gdk_grab_ownership_get_type"
+                 c:type="GdkGrabOwnership">
+      <doc xml:whitespace="preserve">Defines how device grabs interact with other devices.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="GDK_OWNERSHIP_NONE"
+              glib:nick="none"/>
+      <member name="window"
+              value="1"
+              c:identifier="GDK_OWNERSHIP_WINDOW"
+              glib:nick="window"/>
+      <member name="application"
+              value="2"
+              c:identifier="GDK_OWNERSHIP_APPLICATION"
+              glib:nick="application"/>
+    </enumeration>
+    <enumeration name="GrabStatus"
+                 glib:type-name="GdkGrabStatus"
+                 glib:get-type="gdk_grab_status_get_type"
+                 c:type="GdkGrabStatus">
+      <member name="success"
+              value="0"
+              c:identifier="GDK_GRAB_SUCCESS"
+              glib:nick="success"/>
+      <member name="already_grabbed"
+              value="1"
+              c:identifier="GDK_GRAB_ALREADY_GRABBED"
+              glib:nick="already-grabbed"/>
+      <member name="invalid_time"
+              value="2"
+              c:identifier="GDK_GRAB_INVALID_TIME"
+              glib:nick="invalid-time"/>
+      <member name="not_viewable"
+              value="3"
+              c:identifier="GDK_GRAB_NOT_VIEWABLE"
+              glib:nick="not-viewable"/>
+      <member name="frozen"
+              value="4"
+              c:identifier="GDK_GRAB_FROZEN"
+              glib:nick="frozen"/>
+    </enumeration>
+    <enumeration name="Gravity"
+                 glib:type-name="GdkGravity"
+                 glib:get-type="gdk_gravity_get_type"
+                 c:type="GdkGravity">
+      <doc xml:whitespace="preserve">Defines the reference point of a window and the meaning of coordinates
+passed to gtk_window_move(). See gtk_window_move() and the "implementation
+notes" section of the
+&lt;ulink url="http://www.freedesktop.org/Standards/wm-spec"&gt;Extended
+Window Manager Hints&lt;/ulink&gt; specification for more details.</doc>
+      <member name="north_west"
+              value="1"
+              c:identifier="GDK_GRAVITY_NORTH_WEST"
+              glib:nick="north-west"/>
+      <member name="north"
+              value="2"
+              c:identifier="GDK_GRAVITY_NORTH"
+              glib:nick="north"/>
+      <member name="north_east"
+              value="3"
+              c:identifier="GDK_GRAVITY_NORTH_EAST"
+              glib:nick="north-east"/>
+      <member name="west"
+              value="4"
+              c:identifier="GDK_GRAVITY_WEST"
+              glib:nick="west"/>
+      <member name="center"
+              value="5"
+              c:identifier="GDK_GRAVITY_CENTER"
+              glib:nick="center"/>
+      <member name="east"
+              value="6"
+              c:identifier="GDK_GRAVITY_EAST"
+              glib:nick="east"/>
+      <member name="south_west"
+              value="7"
+              c:identifier="GDK_GRAVITY_SOUTH_WEST"
+              glib:nick="south-west"/>
+      <member name="south"
+              value="8"
+              c:identifier="GDK_GRAVITY_SOUTH"
+              glib:nick="south"/>
+      <member name="south_east"
+              value="9"
+              c:identifier="GDK_GRAVITY_SOUTH_EAST"
+              glib:nick="south-east"/>
+      <member name="static"
+              value="10"
+              c:identifier="GDK_GRAVITY_STATIC"
+              glib:nick="static"/>
+    </enumeration>
+    <enumeration name="InputMode"
+                 glib:type-name="GdkInputMode"
+                 glib:get-type="gdk_input_mode_get_type"
+                 c:type="GdkInputMode">
+      <doc xml:whitespace="preserve">An enumeration that describes the mode of an input device.</doc>
+      <member name="disabled"
+              value="0"
+              c:identifier="GDK_MODE_DISABLED"
+              glib:nick="disabled"/>
+      <member name="screen"
+              value="1"
+              c:identifier="GDK_MODE_SCREEN"
+              glib:nick="screen"/>
+      <member name="window"
+              value="2"
+              c:identifier="GDK_MODE_WINDOW"
+              glib:nick="window"/>
+    </enumeration>
+    <enumeration name="InputSource"
+                 glib:type-name="GdkInputSource"
+                 glib:get-type="gdk_input_source_get_type"
+                 c:type="GdkInputSource">
+      <doc xml:whitespace="preserve">An enumeration describing the type of an input device in general terms.</doc>
+      <member name="mouse"
+              value="0"
+              c:identifier="GDK_SOURCE_MOUSE"
+              glib:nick="mouse"/>
+      <member name="pen"
+              value="1"
+              c:identifier="GDK_SOURCE_PEN"
+              glib:nick="pen"/>
+      <member name="eraser"
+              value="2"
+              c:identifier="GDK_SOURCE_ERASER"
+              glib:nick="eraser"/>
+      <member name="cursor"
+              value="3"
+              c:identifier="GDK_SOURCE_CURSOR"
+              glib:nick="cursor"/>
+      <member name="keyboard"
+              value="4"
+              c:identifier="GDK_SOURCE_KEYBOARD"
+              glib:nick="keyboard"/>
+    </enumeration>
+    <constant name="KEY_0" value="48">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_1" value="49">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_2" value="50">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3" value="51">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_AltCursor" value="64784">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Attn" value="64782">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_BackTab" value="64773">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_ChangeScreen" value="64793">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Copy" value="64789">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_CursorBlink" value="64783">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_CursorSelect" value="64796">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_DeleteWord" value="64794">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Duplicate" value="64769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Enter" value="64798">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_EraseEOF" value="64774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_EraseInput" value="64775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_ExSelect" value="64795">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_FieldMark" value="64770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Ident" value="64787">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Jump" value="64786">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_KeyClick" value="64785">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Left2" value="64772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_PA1" value="64778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_PA2" value="64779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_PA3" value="64780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Play" value="64790">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_PrintScreen" value="64797">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Quit" value="64777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Record" value="64792">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Reset" value="64776">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Right2" value="64771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Rule" value="64788">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Setup" value="64791">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Test" value="64781">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_4" value="52">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_5" value="53">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_6" value="54">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_7" value="55">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_8" value="56">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_9" value="57">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_A" value="65">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AE" value="198">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Aacute" value="193">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Abelowdot" value="16785056">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Abreve" value="451">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Abreveacute" value="16785070">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Abrevebelowdot" value="16785078">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Abrevegrave" value="16785072">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Abrevehook" value="16785074">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Abrevetilde" value="16785076">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AccessX_Enable" value="65136">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AccessX_Feedback_Enable" value="65137">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Acircumflex" value="194">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Acircumflexacute" value="16785060">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Acircumflexbelowdot" value="16785068">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Acircumflexgrave" value="16785062">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Acircumflexhook" value="16785064">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Acircumflextilde" value="16785066">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AddFavorite" value="269025081">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Adiaeresis" value="196">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Agrave" value="192">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ahook" value="16785058">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Alt_L" value="65513">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Alt_R" value="65514">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Amacron" value="960">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Aogonek" value="417">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ApplicationLeft" value="269025104">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ApplicationRight" value="269025105">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_0" value="16778848">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_1" value="16778849">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_2" value="16778850">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_3" value="16778851">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_4" value="16778852">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_5" value="16778853">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_6" value="16778854">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_7" value="16778855">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_8" value="16778856">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_9" value="16778857">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_ain" value="1497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_alef" value="1479">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_alefmaksura" value="1513">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_beh" value="1480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_comma" value="1452">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_dad" value="1494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_dal" value="1487">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_damma" value="1519">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_dammatan" value="1516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_ddal" value="16778888">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_farsi_yeh" value="16778956">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_fatha" value="1518">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_fathatan" value="1515">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_feh" value="1505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_fullstop" value="16778964">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_gaf" value="16778927">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_ghain" value="1498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_ha" value="1511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_hah" value="1485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_hamza" value="1473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_hamza_above" value="16778836">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_hamza_below" value="16778837">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_hamzaonalef" value="1475">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_hamzaonwaw" value="1476">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_hamzaonyeh" value="1478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_hamzaunderalef" value="1477">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_heh" value="1511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_heh_doachashmee" value="16778942">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_heh_goal" value="16778945">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_jeem" value="1484">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_jeh" value="16778904">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_kaf" value="1507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_kasra" value="1520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_kasratan" value="1517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_keheh" value="16778921">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_khah" value="1486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_lam" value="1508">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_madda_above" value="16778835">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_maddaonalef" value="1474">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_meem" value="1509">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_noon" value="1510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_noon_ghunna" value="16778938">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_peh" value="16778878">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_percent" value="16778858">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_qaf" value="1506">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_question_mark" value="1471">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_ra" value="1489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_rreh" value="16778897">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_sad" value="1493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_seen" value="1491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_semicolon" value="1467">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_shadda" value="1521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_sheen" value="1492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_sukun" value="1522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_superscript_alef" value="16778864">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_tah" value="1495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_tatweel" value="1504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_tcheh" value="16778886">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_teh" value="1482">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_tehmarbuta" value="1481">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_thal" value="1488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_theh" value="1483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_tteh" value="16778873">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_veh" value="16778916">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_waw" value="1512">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_yeh" value="1514">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_yeh_baree" value="16778962">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_zah" value="1496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_zain" value="1490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Aring" value="197">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_AT" value="16778552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_AYB" value="16778545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_BEN" value="16778546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_CHA" value="16778569">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_DA" value="16778548">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_DZA" value="16778561">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_E" value="16778551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_FE" value="16778582">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_GHAT" value="16778562">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_GIM" value="16778547">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_HI" value="16778565">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_HO" value="16778560">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_INI" value="16778555">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_JE" value="16778571">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_KE" value="16778580">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_KEN" value="16778559">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_KHE" value="16778557">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_LYUN" value="16778556">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_MEN" value="16778564">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_NU" value="16778566">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_O" value="16778581">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_PE" value="16778570">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_PYUR" value="16778579">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_RA" value="16778572">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_RE" value="16778576">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_SE" value="16778573">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_SHA" value="16778567">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_TCHE" value="16778563">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_TO" value="16778553">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_TSA" value="16778558">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_TSO" value="16778577">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_TYUN" value="16778575">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_VEV" value="16778574">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_VO" value="16778568">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_VYUN" value="16778578">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_YECH" value="16778549">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ZA" value="16778550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ZHE" value="16778554">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_accent" value="16778587">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_amanak" value="16778588">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_apostrophe" value="16778586">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_at" value="16778600">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ayb" value="16778593">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ben" value="16778594">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_but" value="16778589">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_cha" value="16778617">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_da" value="16778596">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_dza" value="16778609">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_e" value="16778599">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_exclam" value="16778588">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_fe" value="16778630">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_full_stop" value="16778633">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ghat" value="16778610">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_gim" value="16778595">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_hi" value="16778613">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ho" value="16778608">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_hyphen" value="16778634">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ini" value="16778603">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_je" value="16778619">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ke" value="16778628">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ken" value="16778607">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_khe" value="16778605">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ligature_ew" value="16778631">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_lyun" value="16778604">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_men" value="16778612">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_nu" value="16778614">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_o" value="16778629">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_paruyk" value="16778590">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_pe" value="16778618">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_pyur" value="16778627">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_question" value="16778590">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ra" value="16778620">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_re" value="16778624">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_se" value="16778621">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_separation_mark" value="16778589">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_sha" value="16778615">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_shesht" value="16778587">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_tche" value="16778611">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_to" value="16778601">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_tsa" value="16778606">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_tso" value="16778625">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_tyun" value="16778623">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_verjaket" value="16778633">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_vev" value="16778622">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_vo" value="16778616">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_vyun" value="16778626">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_yech" value="16778597">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_yentamna" value="16778634">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_za" value="16778598">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_zhe" value="16778602">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Atilde" value="195">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudibleBell_Enable" value="65146">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioCycleTrack" value="269025179">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioForward" value="269025175">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioLowerVolume" value="269025041">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioMedia" value="269025074">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioMute" value="269025042">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioNext" value="269025047">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioPause" value="269025073">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioPlay" value="269025044">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioPrev" value="269025046">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioRaiseVolume" value="269025043">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioRandomPlay" value="269025177">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioRecord" value="269025052">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioRepeat" value="269025176">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioRewind" value="269025086">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioStop" value="269025045">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Away" value="269025165">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_B" value="66">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Babovedot" value="16784898">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Back" value="269025062">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_BackForward" value="269025087">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_BackSpace" value="65288">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Battery" value="269025171">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Begin" value="65368">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Blue" value="269025190">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Bluetooth" value="269025172">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Book" value="269025106">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_BounceKeys_Enable" value="65140">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Break" value="65387">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_BrightnessAdjust" value="269025083">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Byelorussian_SHORTU" value="1726">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Byelorussian_shortu" value="1710">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_C" value="67">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_CD" value="269025107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cabovedot" value="709">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cacute" value="454">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Calculator" value="269025053">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Calendar" value="269025056">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cancel" value="65385">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Caps_Lock" value="65509">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ccaron" value="456">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ccedilla" value="199">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ccircumflex" value="710">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Clear" value="65291">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ClearGrab" value="269024801">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Close" value="269025110">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Codeinput" value="65335">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ColonSign" value="16785569">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Community" value="269025085">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ContrastAdjust" value="269025058">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Control_L" value="65507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Control_R" value="65508">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Copy" value="269025111">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_CruzeiroSign" value="16785570">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cut" value="269025112">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_CycleAngle" value="269025180">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_A" value="1761">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_BE" value="1762">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_CHE" value="1790">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_CHE_descender" value="16778422">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_CHE_vertstroke" value="16778424">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_DE" value="1764">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_DZHE" value="1727">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_E" value="1788">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_EF" value="1766">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_EL" value="1772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_EM" value="1773">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_EN" value="1774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_EN_descender" value="16778402">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ER" value="1778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ES" value="1779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_GHE" value="1767">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_GHE_bar" value="16778386">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_HA" value="1768">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_HARDSIGN" value="1791">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_HA_descender" value="16778418">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_I" value="1769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_IE" value="1765">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_IO" value="1715">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_I_macron" value="16778466">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_JE" value="1720">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_KA" value="1771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_KA_descender" value="16778394">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_KA_vertstroke" value="16778396">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_LJE" value="1721">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_NJE" value="1722">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_O" value="1775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_O_bar" value="16778472">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_PE" value="1776">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_SCHWA" value="16778456">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_SHA" value="1787">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_SHCHA" value="1789">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_SHHA" value="16778426">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_SHORTI" value="1770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_SOFTSIGN" value="1784">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_TE" value="1780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_TSE" value="1763">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_U" value="1781">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_U_macron" value="16778478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_U_straight" value="16778414">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_U_straight_bar" value="16778416">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_VE" value="1783">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_YA" value="1777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_YERU" value="1785">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_YU" value="1760">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ZE" value="1786">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ZHE" value="1782">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ZHE_descender" value="16778390">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_a" value="1729">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_be" value="1730">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_che" value="1758">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_che_descender" value="16778423">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_che_vertstroke" value="16778425">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_de" value="1732">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_dzhe" value="1711">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_e" value="1756">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ef" value="1734">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_el" value="1740">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_em" value="1741">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_en" value="1742">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_en_descender" value="16778403">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_er" value="1746">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_es" value="1747">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ghe" value="1735">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ghe_bar" value="16778387">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ha" value="1736">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ha_descender" value="16778419">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_hardsign" value="1759">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_i" value="1737">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_i_macron" value="16778467">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ie" value="1733">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_io" value="1699">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_je" value="1704">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ka" value="1739">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ka_descender" value="16778395">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ka_vertstroke" value="16778397">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_lje" value="1705">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_nje" value="1706">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_o" value="1743">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_o_bar" value="16778473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_pe" value="1744">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_schwa" value="16778457">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_sha" value="1755">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_shcha" value="1757">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_shha" value="16778427">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_shorti" value="1738">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_softsign" value="1752">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_te" value="1748">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_tse" value="1731">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_u" value="1749">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_u_macron" value="16778479">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_u_straight" value="16778415">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_u_straight_bar" value="16778417">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ve" value="1751">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ya" value="1745">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_yeru" value="1753">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_yu" value="1728">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ze" value="1754">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_zhe" value="1750">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_zhe_descender" value="16778391">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_D" value="68">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_DOS" value="269025114">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Dabovedot" value="16784906">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Dcaron" value="463">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Delete" value="65535">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Display" value="269025113">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Documents" value="269025115">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_DongSign" value="16785579">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Down" value="65364">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Dstroke" value="464">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_E" value="69">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ENG" value="957">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ETH" value="208">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Eabovedot" value="972">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Eacute" value="201">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ebelowdot" value="16785080">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ecaron" value="460">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ecircumflex" value="202">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ecircumflexacute" value="16785086">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ecircumflexbelowdot" value="16785094">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ecircumflexgrave" value="16785088">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ecircumflexhook" value="16785090">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ecircumflextilde" value="16785092">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_EcuSign" value="16785568">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ediaeresis" value="203">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Egrave" value="200">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ehook" value="16785082">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Eisu_Shift" value="65327">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Eisu_toggle" value="65328">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Eject" value="269025068">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Emacron" value="938">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_End" value="65367">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Eogonek" value="458">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Escape" value="65307">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Eth" value="208">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Etilde" value="16785084">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_EuroSign" value="8364">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Excel" value="269025116">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Execute" value="65378">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Explorer" value="269025117">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F" value="70">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F1" value="65470">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F10" value="65479">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F11" value="65480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F12" value="65481">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F13" value="65482">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F14" value="65483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F15" value="65484">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F16" value="65485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F17" value="65486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F18" value="65487">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F19" value="65488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F2" value="65471">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F20" value="65489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F21" value="65490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F22" value="65491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F23" value="65492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F24" value="65493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F25" value="65494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F26" value="65495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F27" value="65496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F28" value="65497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F29" value="65498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F3" value="65472">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F30" value="65499">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F31" value="65500">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F32" value="65501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F33" value="65502">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F34" value="65503">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F35" value="65504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F4" value="65473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F5" value="65474">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F6" value="65475">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F7" value="65476">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F8" value="65477">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F9" value="65478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_FFrancSign" value="16785571">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Fabovedot" value="16784926">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_0" value="16778992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_1" value="16778993">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_2" value="16778994">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_3" value="16778995">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_4" value="16778996">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_5" value="16778997">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_6" value="16778998">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_7" value="16778999">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_8" value="16779000">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_9" value="16779001">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_yeh" value="16778956">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Favorites" value="269025072">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Finance" value="269025084">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Find" value="65384">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_First_Virtual_Screen" value="65232">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Forward" value="269025063">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_FrameBack" value="269025181">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_FrameForward" value="269025182">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_G" value="71">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Gabovedot" value="725">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Game" value="269025118">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Gbreve" value="683">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Gcaron" value="16777702">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Gcedilla" value="939">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Gcircumflex" value="728">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_an" value="16781520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_ban" value="16781521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_can" value="16781546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_char" value="16781549">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_chin" value="16781545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_cil" value="16781548">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_don" value="16781523">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_en" value="16781524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_fi" value="16781558">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_gan" value="16781522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_ghan" value="16781542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_hae" value="16781552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_har" value="16781556">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_he" value="16781553">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_hie" value="16781554">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_hoe" value="16781557">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_in" value="16781528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_jhan" value="16781551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_jil" value="16781547">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_kan" value="16781529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_khar" value="16781541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_las" value="16781530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_man" value="16781531">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_nar" value="16781532">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_on" value="16781533">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_par" value="16781534">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_phar" value="16781540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_qar" value="16781543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_rae" value="16781536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_san" value="16781537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_shin" value="16781544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_tan" value="16781527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_tar" value="16781538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_un" value="16781539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_vin" value="16781525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_we" value="16781555">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_xan" value="16781550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_zen" value="16781526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_zhar" value="16781535">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Go" value="269025119">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_ALPHA" value="1985">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_ALPHAaccent" value="1953">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_BETA" value="1986">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_CHI" value="2007">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_DELTA" value="1988">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_EPSILON" value="1989">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_EPSILONaccent" value="1954">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_ETA" value="1991">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_ETAaccent" value="1955">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_GAMMA" value="1987">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_IOTA" value="1993">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_IOTAaccent" value="1956">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_IOTAdiaeresis" value="1957">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_IOTAdieresis" value="1957">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_KAPPA" value="1994">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_LAMBDA" value="1995">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_LAMDA" value="1995">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_MU" value="1996">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_NU" value="1997">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_OMEGA" value="2009">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_OMEGAaccent" value="1963">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_OMICRON" value="1999">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_OMICRONaccent" value="1959">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_PHI" value="2006">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_PI" value="2000">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_PSI" value="2008">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_RHO" value="2001">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_SIGMA" value="2002">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_TAU" value="2004">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_THETA" value="1992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_UPSILON" value="2005">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_UPSILONaccent" value="1960">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_UPSILONdieresis" value="1961">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_XI" value="1998">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_ZETA" value="1990">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_accentdieresis" value="1966">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_alpha" value="2017">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_alphaaccent" value="1969">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_beta" value="2018">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_chi" value="2039">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_delta" value="2020">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_epsilon" value="2021">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_epsilonaccent" value="1970">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_eta" value="2023">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_etaaccent" value="1971">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_finalsmallsigma" value="2035">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_gamma" value="2019">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_horizbar" value="1967">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_iota" value="2025">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_iotaaccent" value="1972">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_iotaaccentdieresis" value="1974">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_iotadieresis" value="1973">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_kappa" value="2026">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_lambda" value="2027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_lamda" value="2027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_mu" value="2028">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_nu" value="2029">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_omega" value="2041">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_omegaaccent" value="1979">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_omicron" value="2031">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_omicronaccent" value="1975">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_phi" value="2038">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_pi" value="2032">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_psi" value="2040">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_rho" value="2033">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_sigma" value="2034">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_tau" value="2036">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_theta" value="2024">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_upsilon" value="2037">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_upsilonaccent" value="1976">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_upsilonaccentdieresis" value="1978">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_upsilondieresis" value="1977">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_xi" value="2030">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_zeta" value="2022">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Green" value="269025188">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_H" value="72">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul" value="65329">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_A" value="3775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_AE" value="3776">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_AraeA" value="3830">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_AraeAE" value="3831">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Banja" value="65337">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Cieuc" value="3770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Codeinput" value="65335">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Dikeud" value="3751">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_E" value="3780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_EO" value="3779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_EU" value="3793">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_End" value="65331">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Hanja" value="65332">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Hieuh" value="3774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_I" value="3795">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Ieung" value="3767">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Cieuc" value="3818">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Dikeud" value="3802">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Hieuh" value="3822">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Ieung" value="3816">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Jieuj" value="3817">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Khieuq" value="3819">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Kiyeog" value="3796">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_KiyeogSios" value="3798">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_KkogjiDalrinIeung" value="3833">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Mieum" value="3811">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Nieun" value="3799">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_NieunHieuh" value="3801">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_NieunJieuj" value="3800">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_PanSios" value="3832">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Phieuf" value="3821">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Pieub" value="3812">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_PieubSios" value="3813">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Rieul" value="3803">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_RieulHieuh" value="3810">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_RieulKiyeog" value="3804">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_RieulMieum" value="3805">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_RieulPhieuf" value="3809">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_RieulPieub" value="3806">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_RieulSios" value="3807">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_RieulTieut" value="3808">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Sios" value="3814">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_SsangKiyeog" value="3797">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_SsangSios" value="3815">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Tieut" value="3820">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_YeorinHieuh" value="3834">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Jamo" value="65333">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Jeonja" value="65336">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Jieuj" value="3768">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Khieuq" value="3771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Kiyeog" value="3745">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_KiyeogSios" value="3747">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_KkogjiDalrinIeung" value="3827">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Mieum" value="3761">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_MultipleCandidate" value="65341">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Nieun" value="3748">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_NieunHieuh" value="3750">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_NieunJieuj" value="3749">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_O" value="3783">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_OE" value="3786">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_PanSios" value="3826">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Phieuf" value="3773">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Pieub" value="3762">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_PieubSios" value="3764">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_PostHanja" value="65339">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_PreHanja" value="65338">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_PreviousCandidate" value="65342">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Rieul" value="3753">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_RieulHieuh" value="3760">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_RieulKiyeog" value="3754">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_RieulMieum" value="3755">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_RieulPhieuf" value="3759">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_RieulPieub" value="3756">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_RieulSios" value="3757">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_RieulTieut" value="3758">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_RieulYeorinHieuh" value="3823">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Romaja" value="65334">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SingleCandidate" value="65340">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Sios" value="3765">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Special" value="65343">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SsangDikeud" value="3752">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SsangJieuj" value="3769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SsangKiyeog" value="3746">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SsangPieub" value="3763">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SsangSios" value="3766">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Start" value="65330">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SunkyeongeumMieum" value="3824">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SunkyeongeumPhieuf" value="3828">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SunkyeongeumPieub" value="3825">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Tieut" value="3772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_U" value="3788">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_WA" value="3784">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_WAE" value="3785">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_WE" value="3790">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_WEO" value="3789">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_WI" value="3791">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_YA" value="3777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_YAE" value="3778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_YE" value="3782">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_YEO" value="3781">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_YI" value="3794">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_YO" value="3787">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_YU" value="3792">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_YeorinHieuh" value="3829">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hankaku" value="65321">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hcircumflex" value="678">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hebrew_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Help" value="65386">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Henkan" value="65315">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Henkan_Mode" value="65315">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hibernate" value="269025192">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hiragana" value="65317">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hiragana_Katakana" value="65319">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_History" value="269025079">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Home" value="65360">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_HomePage" value="269025048">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_HotLinks" value="269025082">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hstroke" value="673">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hyper_L" value="65517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hyper_R" value="65518">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_I" value="73">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Center_Object" value="65075">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Continuous_Underline" value="65072">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Discontinuous_Underline" value="65073">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Emphasize" value="65074">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Enter" value="65076">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Fast_Cursor_Down" value="65071">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Fast_Cursor_Left" value="65068">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Fast_Cursor_Right" value="65069">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Fast_Cursor_Up" value="65070">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_First_Group" value="65036">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_First_Group_Lock" value="65037">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Group_Latch" value="65030">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Group_Lock" value="65031">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Group_Shift" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Last_Group" value="65038">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Last_Group_Lock" value="65039">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Left_Tab" value="65056">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Level2_Latch" value="65026">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Level3_Latch" value="65028">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Level3_Lock" value="65029">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Level3_Shift" value="65027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Level5_Latch" value="65042">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Level5_Lock" value="65043">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Level5_Shift" value="65041">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Lock" value="65025">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Move_Line_Down" value="65058">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Move_Line_Up" value="65057">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Next_Group" value="65032">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Next_Group_Lock" value="65033">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Partial_Line_Down" value="65060">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Partial_Line_Up" value="65059">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Partial_Space_Left" value="65061">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Partial_Space_Right" value="65062">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Prev_Group" value="65034">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Prev_Group_Lock" value="65035">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Release_Both_Margins" value="65067">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Release_Margin_Left" value="65065">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Release_Margin_Right" value="65066">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Set_Margin_Left" value="65063">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Set_Margin_Right" value="65064">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Iabovedot" value="681">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Iacute" value="205">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ibelowdot" value="16785098">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ibreve" value="16777516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Icircumflex" value="206">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Idiaeresis" value="207">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Igrave" value="204">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ihook" value="16785096">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Imacron" value="975">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Insert" value="65379">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Iogonek" value="967">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Itilde" value="933">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_J" value="74">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Jcircumflex" value="684">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_K" value="75">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_0" value="65456">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_1" value="65457">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_2" value="65458">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_3" value="65459">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_4" value="65460">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_5" value="65461">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_6" value="65462">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_7" value="65463">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_8" value="65464">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_9" value="65465">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Add" value="65451">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Begin" value="65437">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Decimal" value="65454">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Delete" value="65439">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Divide" value="65455">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Down" value="65433">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_End" value="65436">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Enter" value="65421">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Equal" value="65469">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_F1" value="65425">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_F2" value="65426">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_F3" value="65427">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_F4" value="65428">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Home" value="65429">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Insert" value="65438">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Left" value="65430">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Multiply" value="65450">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Next" value="65435">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Page_Down" value="65435">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Page_Up" value="65434">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Prior" value="65434">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Right" value="65432">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Separator" value="65452">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Space" value="65408">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Subtract" value="65453">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Tab" value="65417">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Up" value="65431">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Kana_Lock" value="65325">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Kana_Shift" value="65326">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Kanji" value="65313">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Kanji_Bangou" value="65335">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Katakana" value="65318">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KbdBrightnessDown" value="269025030">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KbdBrightnessUp" value="269025029">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KbdLightOnOff" value="269025028">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Kcedilla" value="979">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Korean_Won" value="3839">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L" value="76">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L1" value="65480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L10" value="65489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L2" value="65481">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L3" value="65482">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L4" value="65483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L5" value="65484">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L6" value="65485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L7" value="65486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L8" value="65487">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L9" value="65488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Lacute" value="453">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Last_Virtual_Screen" value="65236">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch0" value="269025088">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch1" value="269025089">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch2" value="269025090">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch3" value="269025091">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch4" value="269025092">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch5" value="269025093">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch6" value="269025094">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch7" value="269025095">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch8" value="269025096">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch9" value="269025097">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LaunchA" value="269025098">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LaunchB" value="269025099">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LaunchC" value="269025100">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LaunchD" value="269025101">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LaunchE" value="269025102">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LaunchF" value="269025103">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Lbelowdot" value="16784950">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Lcaron" value="421">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Lcedilla" value="934">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Left" value="65361">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LightBulb" value="269025077">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Linefeed" value="65290">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LiraSign" value="16785572">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LogOff" value="269025121">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Lstroke" value="419">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_M" value="77">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Mabovedot" value="16784960">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Macedonia_DSE" value="1717">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Macedonia_GJE" value="1714">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Macedonia_KJE" value="1724">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Macedonia_dse" value="1701">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Macedonia_gje" value="1698">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Macedonia_kje" value="1708">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Mae_Koho" value="65342">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Mail" value="269025049">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MailForward" value="269025168">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Market" value="269025122">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Massyo" value="65324">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Meeting" value="269025123">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Memo" value="269025054">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Menu" value="65383">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MenuKB" value="269025125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MenuPB" value="269025126">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Messenger" value="269025166">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Meta_L" value="65511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Meta_R" value="65512">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MillSign" value="16785573">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ModeLock" value="269025025">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Mode_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MonBrightnessDown" value="269025027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MonBrightnessUp" value="269025026">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MouseKeys_Accel_Enable" value="65143">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MouseKeys_Enable" value="65142">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Muhenkan" value="65314">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Multi_key" value="65312">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MultipleCandidate" value="65341">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Music" value="269025170">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MyComputer" value="269025075">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MySites" value="269025127">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_N" value="78">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Nacute" value="465">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_NairaSign" value="16785574">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ncaron" value="466">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ncedilla" value="977">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_New" value="269025128">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_NewSheqelSign" value="16785578">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_News" value="269025129">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Next" value="65366">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Next_VMode" value="269024802">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Next_Virtual_Screen" value="65234">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ntilde" value="209">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Num_Lock" value="65407">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_O" value="79">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_OE" value="5052">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Oacute" value="211">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Obarred" value="16777631">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Obelowdot" value="16785100">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ocaron" value="16777681">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ocircumflex" value="212">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ocircumflexacute" value="16785104">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ocircumflexbelowdot" value="16785112">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ocircumflexgrave" value="16785106">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ocircumflexhook" value="16785108">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ocircumflextilde" value="16785110">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Odiaeresis" value="214">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Odoubleacute" value="469">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_OfficeHome" value="269025130">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ograve" value="210">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ohook" value="16785102">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ohorn" value="16777632">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ohornacute" value="16785114">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ohornbelowdot" value="16785122">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ohorngrave" value="16785116">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ohornhook" value="16785118">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ohorntilde" value="16785120">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Omacron" value="978">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ooblique" value="216">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Open" value="269025131">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_OpenURL" value="269025080">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Option" value="269025132">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Oslash" value="216">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Otilde" value="213">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Overlay1_Enable" value="65144">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Overlay2_Enable" value="65145">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_P" value="80">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pabovedot" value="16784982">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Page_Down" value="65366">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Page_Up" value="65365">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Paste" value="269025133">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pause" value="65299">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_PesetaSign" value="16785575">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Phone" value="269025134">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pictures" value="269025169">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Accelerate" value="65274">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Button1" value="65257">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Button2" value="65258">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Button3" value="65259">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Button4" value="65260">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Button5" value="65261">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Button_Dflt" value="65256">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DblClick1" value="65263">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DblClick2" value="65264">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DblClick3" value="65265">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DblClick4" value="65266">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DblClick5" value="65267">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DblClick_Dflt" value="65262">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DfltBtnNext" value="65275">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DfltBtnPrev" value="65276">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Down" value="65251">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DownLeft" value="65254">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DownRight" value="65255">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Drag1" value="65269">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Drag2" value="65270">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Drag3" value="65271">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Drag4" value="65272">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Drag5" value="65277">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Drag_Dflt" value="65268">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_EnableKeys" value="65273">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Left" value="65248">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Right" value="65249">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Up" value="65250">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_UpLeft" value="65252">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_UpRight" value="65253">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_PowerDown" value="269025057">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_PowerOff" value="269025066">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Prev_VMode" value="269024803">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Prev_Virtual_Screen" value="65233">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_PreviousCandidate" value="65342">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Print" value="65377">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Prior" value="65365">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Q" value="81">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R" value="82">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R1" value="65490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R10" value="65499">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R11" value="65500">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R12" value="65501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R13" value="65502">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R14" value="65503">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R15" value="65504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R2" value="65491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R3" value="65492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R4" value="65493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R5" value="65494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R6" value="65495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R7" value="65496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R8" value="65497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R9" value="65498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Racute" value="448">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Rcaron" value="472">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Rcedilla" value="931">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Red" value="269025187">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Redo" value="65382">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Refresh" value="269025065">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Reload" value="269025139">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_RepeatKeys_Enable" value="65138">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Reply" value="269025138">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Return" value="65293">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Right" value="65363">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_RockerDown" value="269025060">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_RockerEnter" value="269025061">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_RockerUp" value="269025059">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Romaji" value="65316">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_RotateWindows" value="269025140">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_RotationKB" value="269025142">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_RotationPB" value="269025141">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_RupeeSign" value="16785576">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_S" value="83">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_SCHWA" value="16777615">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Sabovedot" value="16784992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Sacute" value="422">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Save" value="269025143">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Scaron" value="425">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Scedilla" value="426">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Scircumflex" value="734">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ScreenSaver" value="269025069">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ScrollClick" value="269025146">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ScrollDown" value="269025145">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ScrollUp" value="269025144">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Scroll_Lock" value="65300">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Search" value="269025051">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Select" value="65376">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_SelectButton" value="269025184">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Send" value="269025147">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_DJE" value="1713">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_DZE" value="1727">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_JE" value="1720">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_LJE" value="1721">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_NJE" value="1722">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_TSHE" value="1723">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_dje" value="1697">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_dze" value="1711">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_je" value="1704">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_lje" value="1705">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_nje" value="1706">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_tshe" value="1707">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Shift_L" value="65505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Shift_Lock" value="65510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Shift_R" value="65506">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Shop" value="269025078">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_SingleCandidate" value="65340">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Sleep" value="269025071">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_SlowKeys_Enable" value="65139">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Spell" value="269025148">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_SplitScreen" value="269025149">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Standby" value="269025040">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Start" value="269025050">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_StickyKeys_Enable" value="65141">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Stop" value="269025064">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Subtitle" value="269025178">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Super_L" value="65515">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Super_R" value="65516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Support" value="269025150">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Suspend" value="269025191">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_1" value="269024769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_10" value="269024778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_11" value="269024779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_12" value="269024780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_2" value="269024770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_3" value="269024771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_4" value="269024772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_5" value="269024773">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_6" value="269024774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_7" value="269024775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_8" value="269024776">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_9" value="269024777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Sys_Req" value="65301">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_T" value="84">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_THORN" value="222">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Tab" value="65289">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Tabovedot" value="16785002">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_TaskPane" value="269025151">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Tcaron" value="427">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Tcedilla" value="478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Terminal" value="269025152">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Terminate_Server" value="65237">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_baht" value="3551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_bobaimai" value="3514">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_chochan" value="3496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_chochang" value="3498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_choching" value="3497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_chochoe" value="3500">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_dochada" value="3502">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_dodek" value="3508">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_fofa" value="3517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_fofan" value="3519">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_hohip" value="3531">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_honokhuk" value="3534">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_khokhai" value="3490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_khokhon" value="3493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_khokhuat" value="3491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_khokhwai" value="3492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_khorakhang" value="3494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_kokai" value="3489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_lakkhangyao" value="3557">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_lekchet" value="3575">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_lekha" value="3573">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_lekhok" value="3574">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_lekkao" value="3577">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_leknung" value="3569">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_lekpaet" value="3576">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_leksam" value="3571">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_leksi" value="3572">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_leksong" value="3570">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_leksun" value="3568">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_lochula" value="3532">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_loling" value="3525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_lu" value="3526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_maichattawa" value="3563">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_maiek" value="3560">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_maihanakat" value="3537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_maihanakat_maitho" value="3550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_maitaikhu" value="3559">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_maitho" value="3561">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_maitri" value="3562">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_maiyamok" value="3558">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_moma" value="3521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_ngongu" value="3495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_nikhahit" value="3565">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_nonen" value="3507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_nonu" value="3513">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_oang" value="3533">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_paiyannoi" value="3535">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_phinthu" value="3546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_phophan" value="3518">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_phophung" value="3516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_phosamphao" value="3520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_popla" value="3515">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_rorua" value="3523">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_ru" value="3524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_saraa" value="3536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_saraaa" value="3538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_saraae" value="3553">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_saraaimaimalai" value="3556">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_saraaimaimuan" value="3555">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_saraam" value="3539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sarae" value="3552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sarai" value="3540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_saraii" value="3541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sarao" value="3554">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sarau" value="3544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_saraue" value="3542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sarauee" value="3543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sarauu" value="3545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sorusi" value="3529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sosala" value="3528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_soso" value="3499">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sosua" value="3530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_thanthakhat" value="3564">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_thonangmontho" value="3505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_thophuthao" value="3506">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_thothahan" value="3511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_thothan" value="3504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_thothong" value="3512">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_thothung" value="3510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_topatak" value="3503">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_totao" value="3509">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_wowaen" value="3527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_yoyak" value="3522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_yoying" value="3501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thorn" value="222">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Time" value="269025183">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ToDoList" value="269025055">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Tools" value="269025153">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_TopMenu" value="269025186">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_TouchpadToggle" value="269025193">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Touroku" value="65323">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Travel" value="269025154">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Tslash" value="940">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_U" value="85">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_UWB" value="269025174">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uacute" value="218">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ubelowdot" value="16785124">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ubreve" value="733">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ucircumflex" value="219">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Udiaeresis" value="220">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Udoubleacute" value="475">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ugrave" value="217">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uhook" value="16785126">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uhorn" value="16777647">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uhornacute" value="16785128">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uhornbelowdot" value="16785136">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uhorngrave" value="16785130">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uhornhook" value="16785132">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uhorntilde" value="16785134">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukrainian_GHE_WITH_UPTURN" value="1725">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukrainian_I" value="1718">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukrainian_IE" value="1716">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukrainian_YI" value="1719">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukrainian_ghe_with_upturn" value="1709">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukrainian_i" value="1702">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukrainian_ie" value="1700">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukrainian_yi" value="1703">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukranian_I" value="1718">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukranian_JE" value="1716">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukranian_YI" value="1719">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukranian_i" value="1702">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukranian_je" value="1700">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukranian_yi" value="1703">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Umacron" value="990">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Undo" value="65381">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ungrab" value="269024800">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uogonek" value="985">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Up" value="65362">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uring" value="473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_User1KB" value="269025157">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_User2KB" value="269025158">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_UserPB" value="269025156">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Utilde" value="989">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_V" value="86">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_VendorHome" value="269025076">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Video" value="269025159">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_View" value="269025185">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_VoidSymbol" value="16777215">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_W" value="87">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_WLAN" value="269025173">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_WWW" value="269025070">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Wacute" value="16785026">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_WakeUp" value="269025067">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Wcircumflex" value="16777588">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Wdiaeresis" value="16785028">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_WebCam" value="269025167">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Wgrave" value="16785024">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_WheelButton" value="269025160">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_WindowClear" value="269025109">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_WonSign" value="16785577">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Word" value="269025161">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_X" value="88">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Xabovedot" value="16785034">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Xfer" value="269025162">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Y" value="89">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Yacute" value="221">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ybelowdot" value="16785140">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ycircumflex" value="16777590">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ydiaeresis" value="5054">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Yellow" value="269025189">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ygrave" value="16785138">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Yhook" value="16785142">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ytilde" value="16785144">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Z" value="90">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Zabovedot" value="431">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Zacute" value="428">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Zcaron" value="430">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Zen_Koho" value="65341">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Zenkaku" value="65320">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Zenkaku_Hankaku" value="65322">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ZoomIn" value="269025163">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ZoomOut" value="269025164">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Zstroke" value="16777653">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_a" value="97">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_aacute" value="225">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_abelowdot" value="16785057">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_abovedot" value="511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_abreve" value="483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_abreveacute" value="16785071">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_abrevebelowdot" value="16785079">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_abrevegrave" value="16785073">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_abrevehook" value="16785075">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_abrevetilde" value="16785077">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_acircumflex" value="226">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_acircumflexacute" value="16785061">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_acircumflexbelowdot" value="16785069">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_acircumflexgrave" value="16785063">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_acircumflexhook" value="16785065">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_acircumflextilde" value="16785067">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_acute" value="180">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_adiaeresis" value="228">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ae" value="230">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_agrave" value="224">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ahook" value="16785059">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_amacron" value="992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ampersand" value="38">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_aogonek" value="433">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_apostrophe" value="39">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_approxeq" value="16785992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_approximate" value="2248">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_aring" value="229">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_asciicircum" value="94">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_asciitilde" value="126">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_asterisk" value="42">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_at" value="64">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_atilde" value="227">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_b" value="98">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_babovedot" value="16784899">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_backslash" value="92">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ballotcross" value="2804">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_bar" value="124">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_because" value="16785973">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_blank" value="2527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_botintegral" value="2213">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_botleftparens" value="2220">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_botleftsqbracket" value="2216">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_botleftsummation" value="2226">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_botrightparens" value="2222">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_botrightsqbracket" value="2218">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_botrightsummation" value="2230">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_bott" value="2550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_botvertsummationconnector" value="2228">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braceleft" value="123">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braceright" value="125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_bracketleft" value="91">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_bracketright" value="93">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_blank" value="16787456">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_1" value="65521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_10" value="65530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_2" value="65522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_3" value="65523">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_4" value="65524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_5" value="65525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_6" value="65526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_7" value="65527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_8" value="65528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_9" value="65529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1" value="16787457">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12" value="16787459">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123" value="16787463">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1234" value="16787471">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12345" value="16787487">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123456" value="16787519">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1234567" value="16787583">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12345678" value="16787711">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1234568" value="16787647">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123457" value="16787551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1234578" value="16787679">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123458" value="16787615">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12346" value="16787503">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123467" value="16787567">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1234678" value="16787695">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123468" value="16787631">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12347" value="16787535">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123478" value="16787663">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12348" value="16787599">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1235" value="16787479">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12356" value="16787511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123567" value="16787575">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1235678" value="16787703">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123568" value="16787639">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12357" value="16787543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123578" value="16787671">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12358" value="16787607">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1236" value="16787495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12367" value="16787559">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123678" value="16787687">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12368" value="16787623">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1237" value="16787527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12378" value="16787655">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1238" value="16787591">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_124" value="16787467">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1245" value="16787483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12456" value="16787515">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_124567" value="16787579">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1245678" value="16787707">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_124568" value="16787643">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12457" value="16787547">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_124578" value="16787675">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12458" value="16787611">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1246" value="16787499">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12467" value="16787563">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_124678" value="16787691">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12468" value="16787627">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1247" value="16787531">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12478" value="16787659">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1248" value="16787595">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_125" value="16787475">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1256" value="16787507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12567" value="16787571">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_125678" value="16787699">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12568" value="16787635">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1257" value="16787539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12578" value="16787667">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1258" value="16787603">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_126" value="16787491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1267" value="16787555">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12678" value="16787683">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1268" value="16787619">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_127" value="16787523">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1278" value="16787651">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_128" value="16787587">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13" value="16787461">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_134" value="16787469">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1345" value="16787485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13456" value="16787517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_134567" value="16787581">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1345678" value="16787709">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_134568" value="16787645">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13457" value="16787549">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_134578" value="16787677">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13458" value="16787613">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1346" value="16787501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13467" value="16787565">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_134678" value="16787693">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13468" value="16787629">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1347" value="16787533">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13478" value="16787661">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1348" value="16787597">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_135" value="16787477">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1356" value="16787509">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13567" value="16787573">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_135678" value="16787701">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13568" value="16787637">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1357" value="16787541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13578" value="16787669">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1358" value="16787605">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_136" value="16787493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1367" value="16787557">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13678" value="16787685">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1368" value="16787621">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_137" value="16787525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1378" value="16787653">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_138" value="16787589">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_14" value="16787465">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_145" value="16787481">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1456" value="16787513">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_14567" value="16787577">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_145678" value="16787705">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_14568" value="16787641">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1457" value="16787545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_14578" value="16787673">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1458" value="16787609">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_146" value="16787497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1467" value="16787561">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_14678" value="16787689">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1468" value="16787625">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_147" value="16787529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1478" value="16787657">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_148" value="16787593">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_15" value="16787473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_156" value="16787505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1567" value="16787569">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_15678" value="16787697">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1568" value="16787633">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_157" value="16787537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1578" value="16787665">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_158" value="16787601">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_16" value="16787489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_167" value="16787553">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1678" value="16787681">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_168" value="16787617">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_17" value="16787521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_178" value="16787649">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_18" value="16787585">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2" value="16787458">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23" value="16787462">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_234" value="16787470">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2345" value="16787486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23456" value="16787518">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_234567" value="16787582">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2345678" value="16787710">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_234568" value="16787646">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23457" value="16787550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_234578" value="16787678">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23458" value="16787614">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2346" value="16787502">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23467" value="16787566">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_234678" value="16787694">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23468" value="16787630">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2347" value="16787534">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23478" value="16787662">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2348" value="16787598">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_235" value="16787478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2356" value="16787510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23567" value="16787574">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_235678" value="16787702">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23568" value="16787638">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2357" value="16787542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23578" value="16787670">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2358" value="16787606">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_236" value="16787494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2367" value="16787558">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23678" value="16787686">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2368" value="16787622">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_237" value="16787526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2378" value="16787654">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_238" value="16787590">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_24" value="16787466">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_245" value="16787482">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2456" value="16787514">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_24567" value="16787578">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_245678" value="16787706">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_24568" value="16787642">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2457" value="16787546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_24578" value="16787674">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2458" value="16787610">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_246" value="16787498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2467" value="16787562">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_24678" value="16787690">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2468" value="16787626">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_247" value="16787530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2478" value="16787658">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_248" value="16787594">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_25" value="16787474">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_256" value="16787506">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2567" value="16787570">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_25678" value="16787698">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2568" value="16787634">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_257" value="16787538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2578" value="16787666">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_258" value="16787602">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_26" value="16787490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_267" value="16787554">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2678" value="16787682">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_268" value="16787618">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_27" value="16787522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_278" value="16787650">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_28" value="16787586">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3" value="16787460">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_34" value="16787468">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_345" value="16787484">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3456" value="16787516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_34567" value="16787580">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_345678" value="16787708">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_34568" value="16787644">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3457" value="16787548">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_34578" value="16787676">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3458" value="16787612">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_346" value="16787500">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3467" value="16787564">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_34678" value="16787692">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3468" value="16787628">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_347" value="16787532">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3478" value="16787660">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_348" value="16787596">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_35" value="16787476">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_356" value="16787508">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3567" value="16787572">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_35678" value="16787700">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3568" value="16787636">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_357" value="16787540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3578" value="16787668">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_358" value="16787604">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_36" value="16787492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_367" value="16787556">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3678" value="16787684">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_368" value="16787620">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_37" value="16787524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_378" value="16787652">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_38" value="16787588">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_4" value="16787464">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_45" value="16787480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_456" value="16787512">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_4567" value="16787576">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_45678" value="16787704">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_4568" value="16787640">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_457" value="16787544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_4578" value="16787672">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_458" value="16787608">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_46" value="16787496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_467" value="16787560">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_4678" value="16787688">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_468" value="16787624">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_47" value="16787528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_478" value="16787656">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_48" value="16787592">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_5" value="16787472">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_56" value="16787504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_567" value="16787568">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_5678" value="16787696">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_568" value="16787632">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_57" value="16787536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_578" value="16787664">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_58" value="16787600">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_6" value="16787488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_67" value="16787552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_678" value="16787680">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_68" value="16787616">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_7" value="16787520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_78" value="16787648">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_8" value="16787584">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_breve" value="418">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_brokenbar" value="166">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_c" value="99">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_cabovedot" value="741">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_cacute" value="486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_careof" value="2744">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_caret" value="2812">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_caron" value="439">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ccaron" value="488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ccedilla" value="231">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ccircumflex" value="742">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_cedilla" value="184">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_cent" value="162">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_checkerboard" value="2529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_checkmark" value="2803">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_circle" value="3023">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_club" value="2796">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_colon" value="58">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_comma" value="44">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_containsas" value="16785931">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_copyright" value="169">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_cr" value="2532">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_crossinglines" value="2542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_cuberoot" value="16785947">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_currency" value="164">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_cursor" value="2815">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_d" value="100">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dabovedot" value="16784907">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dagger" value="2801">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dcaron" value="495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_A" value="65153">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_E" value="65155">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_I" value="65157">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_O" value="65159">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_U" value="65161">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_a" value="65152">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_abovecomma" value="65124">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_abovedot" value="65110">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_abovereversedcomma" value="65125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_abovering" value="65112">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_acute" value="65105">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_belowbreve" value="65131">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_belowcircumflex" value="65129">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_belowcomma" value="65134">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_belowdiaeresis" value="65132">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_belowdot" value="65120">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_belowmacron" value="65128">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_belowring" value="65127">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_belowtilde" value="65130">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_breve" value="65109">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_capital_schwa" value="65163">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_caron" value="65114">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_cedilla" value="65115">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_circumflex" value="65106">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_currency" value="65135">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_dasia" value="65125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_diaeresis" value="65111">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_doubleacute" value="65113">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_doublegrave" value="65126">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_e" value="65154">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_grave" value="65104">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_hook" value="65121">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_horn" value="65122">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_i" value="65156">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_invertedbreve" value="65133">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_iota" value="65117">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_macron" value="65108">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_o" value="65158">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_ogonek" value="65116">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_perispomeni" value="65107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_psili" value="65124">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_semivoiced_sound" value="65119">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_small_schwa" value="65162">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_stroke" value="65123">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_tilde" value="65107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_u" value="65160">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_voiced_sound" value="65118">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_decimalpoint" value="2749">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_degree" value="176">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_diaeresis" value="168">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_diamond" value="2797">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_digitspace" value="2725">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dintegral" value="16785964">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_division" value="247">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dollar" value="36">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_doubbaselinedot" value="2735">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_doubleacute" value="445">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_doubledagger" value="2802">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_doublelowquotemark" value="2814">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_downarrow" value="2302">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_downcaret" value="2984">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_downshoe" value="3030">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_downstile" value="3012">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_downtack" value="3010">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dstroke" value="496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_e" value="101">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_eabovedot" value="1004">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_eacute" value="233">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ebelowdot" value="16785081">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ecaron" value="492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ecircumflex" value="234">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ecircumflexacute" value="16785087">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ecircumflexbelowdot" value="16785095">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ecircumflexgrave" value="16785089">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ecircumflexhook" value="16785091">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ecircumflextilde" value="16785093">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ediaeresis" value="235">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_egrave" value="232">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ehook" value="16785083">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_eightsubscript" value="16785544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_eightsuperior" value="16785528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_elementof" value="16785928">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ellipsis" value="2734">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_em3space" value="2723">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_em4space" value="2724">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_emacron" value="954">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_emdash" value="2729">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_emfilledcircle" value="2782">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_emfilledrect" value="2783">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_emopencircle" value="2766">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_emopenrectangle" value="2767">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_emptyset" value="16785925">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_emspace" value="2721">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_endash" value="2730">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_enfilledcircbullet" value="2790">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_enfilledsqbullet" value="2791">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_eng" value="959">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_enopencircbullet" value="2784">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_enopensquarebullet" value="2785">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_enspace" value="2722">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_eogonek" value="490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_equal" value="61">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_eth" value="240">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_etilde" value="16785085">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_exclam" value="33">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_exclamdown" value="161">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_f" value="102">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_fabovedot" value="16784927">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_femalesymbol" value="2808">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ff" value="2531">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_figdash" value="2747">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_filledlefttribullet" value="2780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_filledrectbullet" value="2779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_filledrighttribullet" value="2781">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_filledtribulletdown" value="2793">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_filledtribulletup" value="2792">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_fiveeighths" value="2757">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_fivesixths" value="2743">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_fivesubscript" value="16785541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_fivesuperior" value="16785525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_fourfifths" value="2741">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_foursubscript" value="16785540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_foursuperior" value="16785524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_fourthroot" value="16785948">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_function" value="2294">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_g" value="103">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_gabovedot" value="757">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_gbreve" value="699">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_gcaron" value="16777703">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_gcedilla" value="955">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_gcircumflex" value="760">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_grave" value="96">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_greater" value="62">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_greaterthanequal" value="2238">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_guillemotleft" value="171">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_guillemotright" value="187">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_h" value="104">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hairspace" value="2728">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hcircumflex" value="694">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_heart" value="2798">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_aleph" value="3296">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_ayin" value="3314">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_bet" value="3297">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_beth" value="3297">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_chet" value="3303">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_dalet" value="3299">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_daleth" value="3299">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_doublelowline" value="3295">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_finalkaph" value="3306">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_finalmem" value="3309">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_finalnun" value="3311">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_finalpe" value="3315">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_finalzade" value="3317">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_finalzadi" value="3317">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_gimel" value="3298">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_gimmel" value="3298">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_he" value="3300">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_het" value="3303">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_kaph" value="3307">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_kuf" value="3319">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_lamed" value="3308">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_mem" value="3310">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_nun" value="3312">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_pe" value="3316">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_qoph" value="3319">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_resh" value="3320">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_samech" value="3313">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_samekh" value="3313">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_shin" value="3321">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_taf" value="3322">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_taw" value="3322">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_tet" value="3304">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_teth" value="3304">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_waw" value="3301">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_yod" value="3305">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_zade" value="3318">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_zadi" value="3318">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_zain" value="3302">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_zayin" value="3302">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hexagram" value="2778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_horizconnector" value="2211">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_horizlinescan1" value="2543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_horizlinescan3" value="2544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_horizlinescan5" value="2545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_horizlinescan7" value="2546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_horizlinescan9" value="2547">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hstroke" value="689">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ht" value="2530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hyphen" value="173">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_i" value="105">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_iTouch" value="269025120">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_iacute" value="237">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ibelowdot" value="16785099">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ibreve" value="16777517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_icircumflex" value="238">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_identical" value="2255">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_idiaeresis" value="239">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_idotless" value="697">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ifonlyif" value="2253">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_igrave" value="236">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ihook" value="16785097">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_imacron" value="1007">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_implies" value="2254">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_includedin" value="2266">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_includes" value="2267">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_infinity" value="2242">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_integral" value="2239">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_intersection" value="2268">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_iogonek" value="999">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_itilde" value="949">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_j" value="106">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_jcircumflex" value="700">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_jot" value="3018">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_k" value="107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_A" value="1201">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_CHI" value="1217">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_E" value="1204">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_FU" value="1228">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_HA" value="1226">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_HE" value="1229">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_HI" value="1227">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_HO" value="1230">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_HU" value="1228">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_I" value="1202">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_KA" value="1206">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_KE" value="1209">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_KI" value="1207">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_KO" value="1210">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_KU" value="1208">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_MA" value="1231">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_ME" value="1234">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_MI" value="1232">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_MO" value="1235">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_MU" value="1233">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_N" value="1245">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_NA" value="1221">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_NE" value="1224">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_NI" value="1222">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_NO" value="1225">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_NU" value="1223">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_O" value="1205">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_RA" value="1239">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_RE" value="1242">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_RI" value="1240">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_RO" value="1243">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_RU" value="1241">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_SA" value="1211">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_SE" value="1214">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_SHI" value="1212">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_SO" value="1215">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_SU" value="1213">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_TA" value="1216">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_TE" value="1219">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_TI" value="1217">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_TO" value="1220">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_TSU" value="1218">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_TU" value="1218">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_U" value="1203">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_WA" value="1244">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_WO" value="1190">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_YA" value="1236">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_YO" value="1238">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_YU" value="1237">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_a" value="1191">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_closingbracket" value="1187">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_comma" value="1188">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_conjunctive" value="1189">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_e" value="1194">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_fullstop" value="1185">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_i" value="1192">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_middledot" value="1189">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_o" value="1195">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_openingbracket" value="1186">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_tsu" value="1199">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_tu" value="1199">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_u" value="1193">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_ya" value="1196">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_yo" value="1198">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_yu" value="1197">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kappa" value="930">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kcedilla" value="1011">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kra" value="930">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_l" value="108">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lacute" value="485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_latincross" value="2777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lbelowdot" value="16784951">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lcaron" value="437">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lcedilla" value="950">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftanglebracket" value="2748">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftarrow" value="2299">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftcaret" value="2979">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftdoublequotemark" value="2770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftmiddlecurlybrace" value="2223">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftopentriangle" value="2764">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftpointer" value="2794">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftradical" value="2209">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftshoe" value="3034">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftsinglequotemark" value="2768">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftt" value="2548">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lefttack" value="3036">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_less" value="60">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lessthanequal" value="2236">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lf" value="2533">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_logicaland" value="2270">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_logicalor" value="2271">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lowleftcorner" value="2541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lowrightcorner" value="2538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lstroke" value="435">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_m" value="109">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_mabovedot" value="16784961">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_macron" value="175">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_malesymbol" value="2807">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_maltesecross" value="2800">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_marker" value="2751">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_masculine" value="186">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_minus" value="45">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_minutes" value="2774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_mu" value="181">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_multiply" value="215">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_musicalflat" value="2806">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_musicalsharp" value="2805">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_n" value="110">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_nabla" value="2245">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_nacute" value="497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ncaron" value="498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ncedilla" value="1009">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ninesubscript" value="16785545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ninesuperior" value="16785529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_nl" value="2536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_nobreakspace" value="160">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_notapproxeq" value="16785991">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_notelementof" value="16785929">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_notequal" value="2237">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_notidentical" value="16786018">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_notsign" value="172">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ntilde" value="241">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_numbersign" value="35">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_numerosign" value="1712">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_o" value="111">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_oacute" value="243">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_obarred" value="16777845">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_obelowdot" value="16785101">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ocaron" value="16777682">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ocircumflex" value="244">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ocircumflexacute" value="16785105">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ocircumflexbelowdot" value="16785113">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ocircumflexgrave" value="16785107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ocircumflexhook" value="16785109">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ocircumflextilde" value="16785111">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_odiaeresis" value="246">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_odoubleacute" value="501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_oe" value="5053">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ogonek" value="434">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ograve" value="242">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ohook" value="16785103">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ohorn" value="16777633">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ohornacute" value="16785115">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ohornbelowdot" value="16785123">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ohorngrave" value="16785117">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ohornhook" value="16785119">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ohorntilde" value="16785121">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_omacron" value="1010">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_oneeighth" value="2755">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_onefifth" value="2738">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_onehalf" value="189">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_onequarter" value="188">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_onesixth" value="2742">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_onesubscript" value="16785537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_onesuperior" value="185">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_onethird" value="2736">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ooblique" value="248">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_openrectbullet" value="2786">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_openstar" value="2789">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_opentribulletdown" value="2788">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_opentribulletup" value="2787">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ordfeminine" value="170">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_oslash" value="248">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_otilde" value="245">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_overbar" value="3008">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_overline" value="1150">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_p" value="112">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_pabovedot" value="16784983">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_paragraph" value="182">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_parenleft" value="40">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_parenright" value="41">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_partdifferential" value="16785922">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_partialderivative" value="2287">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_percent" value="37">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_period" value="46">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_periodcentered" value="183">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_phonographcopyright" value="2811">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_plus" value="43">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_plusminus" value="177">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_prescription" value="2772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_prolongedsound" value="1200">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_punctspace" value="2726">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_q" value="113">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_quad" value="3020">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_question" value="63">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_questiondown" value="191">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_quotedbl" value="34">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_quoteleft" value="96">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_quoteright" value="39">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_r" value="114">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_racute" value="480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_radical" value="2262">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rcaron" value="504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rcedilla" value="947">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_registered" value="174">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightanglebracket" value="2750">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightarrow" value="2301">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightcaret" value="2982">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightdoublequotemark" value="2771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightmiddlecurlybrace" value="2224">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightmiddlesummation" value="2231">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightopentriangle" value="2765">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightpointer" value="2795">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightshoe" value="3032">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightsinglequotemark" value="2769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightt" value="2549">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_righttack" value="3068">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_s" value="115">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_sabovedot" value="16784993">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_sacute" value="438">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_scaron" value="441">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_scedilla" value="442">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_schwa" value="16777817">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_scircumflex" value="766">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_script_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_seconds" value="2775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_section" value="167">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_semicolon" value="59">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_semivoicedsound" value="1247">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_seveneighths" value="2758">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_sevensubscript" value="16785543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_sevensuperior" value="16785527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_signaturemark" value="2762">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_signifblank" value="2732">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_similarequal" value="2249">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_singlelowquotemark" value="2813">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_sixsubscript" value="16785542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_sixsuperior" value="16785526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_slash" value="47">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_soliddiamond" value="2528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_space" value="32">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_squareroot" value="16785946">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ssharp" value="223">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_sterling" value="163">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_stricteq" value="16786019">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_t" value="116">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_tabovedot" value="16785003">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_tcaron" value="443">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_tcedilla" value="510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_telephone" value="2809">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_telephonerecorder" value="2810">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_therefore" value="2240">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_thinspace" value="2727">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_thorn" value="254">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_threeeighths" value="2756">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_threefifths" value="2740">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_threequarters" value="190">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_threesubscript" value="16785539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_threesuperior" value="179">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_tintegral" value="16785965">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_topintegral" value="2212">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_topleftparens" value="2219">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_topleftradical" value="2210">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_topleftsqbracket" value="2215">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_topleftsummation" value="2225">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_toprightparens" value="2221">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_toprightsqbracket" value="2217">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_toprightsummation" value="2229">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_topt" value="2551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_topvertsummationconnector" value="2227">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_trademark" value="2761">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_trademarkincircle" value="2763">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_tslash" value="956">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_twofifths" value="2739">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_twosubscript" value="16785538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_twosuperior" value="178">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_twothirds" value="2737">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_u" value="117">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uacute" value="250">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ubelowdot" value="16785125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ubreve" value="765">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ucircumflex" value="251">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_udiaeresis" value="252">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_udoubleacute" value="507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ugrave" value="249">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uhook" value="16785127">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uhorn" value="16777648">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uhornacute" value="16785129">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uhornbelowdot" value="16785137">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uhorngrave" value="16785131">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uhornhook" value="16785133">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uhorntilde" value="16785135">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_umacron" value="1022">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_underbar" value="3014">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_underscore" value="95">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_union" value="2269">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uogonek" value="1017">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uparrow" value="2300">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_upcaret" value="2985">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_upleftcorner" value="2540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uprightcorner" value="2539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_upshoe" value="3011">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_upstile" value="3027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uptack" value="3022">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uring" value="505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_utilde" value="1021">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_v" value="118">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_variation" value="2241">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_vertbar" value="2552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_vertconnector" value="2214">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_voicedsound" value="1246">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_vt" value="2537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_w" value="119">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_wacute" value="16785027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_wcircumflex" value="16777589">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_wdiaeresis" value="16785029">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_wgrave" value="16785025">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_x" value="120">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_xabovedot" value="16785035">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_y" value="121">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_yacute" value="253">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ybelowdot" value="16785141">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ycircumflex" value="16777591">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ydiaeresis" value="255">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_yen" value="165">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ygrave" value="16785139">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_yhook" value="16785143">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ytilde" value="16785145">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_z" value="122">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_zabovedot" value="447">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_zacute" value="444">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_zcaron" value="446">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_zerosubscript" value="16785536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_zerosuperior" value="16785520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_zstroke" value="16777654">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="KeyboardGrabInfo" c:type="GdkKeyboardGrabInfo">
+      <field name="window" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="native_window" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="serial" writable="1">
+        <type name="gulong" c:type="gulong"/>
+      </field>
+      <field name="owner_events" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+    </record>
+    <class name="Keymap"
+           c:symbol-prefix="keymap"
+           c:type="GdkKeymap"
+           parent="GObject.Object"
+           glib:type-name="GdkKeymap"
+           glib:get-type="gdk_keymap_get_type"
+           glib:type-struct="KeymapClass">
+      <function name="get_default"
+                c:identifier="gdk_keymap_get_default"
+                introspectable="0">
+        <return-value>
+          <type name="Keymap" c:type="GdkKeymap*"/>
+        </return-value>
+      </function>
+      <function name="get_for_display"
+                c:identifier="gdk_keymap_get_for_display"
+                introspectable="0">
+        <return-value>
+          <type name="Keymap" c:type="GdkKeymap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display" transfer-ownership="none">
+            <type name="Display" c:type="GdkDisplay*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="add_virtual_modifiers"
+              c:identifier="gdk_keymap_add_virtual_modifiers"
+              version="2.20">
+        <doc xml:whitespace="preserve">Adds virtual modifiers (i.e. Super, Hyper and Meta) which correspond
+to the real modifiers (i.e Mod2, Mod3, ...) in @modifiers.
+are set in @state to their non-virtual counterparts (i.e. Mod2,
+Mod3,...) and set the corresponding bits in @state.
+GDK already does this before delivering key events, but for
+compatibility reasons, it only sets the first virtual modifier
+it finds, whereas this function sets all matching virtual modifiers.
+This function is useful when matching key events against
+accelerators.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer to the modifier mask to change</doc>
+            <type name="ModifierType" c:type="GdkModifierType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_caps_lock_state"
+              c:identifier="gdk_keymap_get_caps_lock_state"
+              version="2.16">
+        <doc xml:whitespace="preserve">Returns whether the Caps Lock modifer is locked.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if Caps Lock is on</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_direction" c:identifier="gdk_keymap_get_direction">
+        <return-value transfer-ownership="none">
+          <type name="Pango.Direction" c:type="PangoDirection"/>
+        </return-value>
+      </method>
+      <method name="get_entries_for_keycode"
+              c:identifier="gdk_keymap_get_entries_for_keycode">
+        <doc xml:whitespace="preserve">Returns the keyvals bound to @hardware_keycode.
+The Nth #GdkKeymapKey in @keys is bound to the Nth
+keyval in @keyvals. Free the returned arrays with g_free().
+When a keycode is pressed by the user, the keyval from
+this list of entries is selected by considering the effective
+keyboard group and level. See gdk_keymap_translate_keyboard_state().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if there were any entries</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="hardware_keycode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a keycode</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="keys"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for array of #GdkKeymapKey, or %NULL</doc>
+            <type name="KeymapKey" c:type="GdkKeymapKey**"/>
+          </parameter>
+          <parameter name="keyvals"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for array of keyvals, or %NULL</doc>
+            <type name="guint" c:type="guint**"/>
+          </parameter>
+          <parameter name="n_entries" transfer-ownership="none">
+            <doc xml:whitespace="preserve">length of @keys and @keyvals</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_entries_for_keyval"
+              c:identifier="gdk_keymap_get_entries_for_keyval">
+        <doc xml:whitespace="preserve">Obtains a list of keycode/group/level combinations that will
+generate @keyval. Groups and levels are two kinds of keyboard mode;
+in general, the level determines whether the top or bottom symbol
+on a key is used, and the group determines whether the left or
+right symbol is used. On US keyboards, the shift key changes the
+keyboard level, and there are no groups. A group switch key might
+convert a keyboard between Hebrew to English modes, for example.
+#GdkEventKey contains a %group field that indicates the active
+keyboard group. The level is computed from the modifier mask.
+The returned array should be freed
+with g_free().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if keys were found and returned</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="keyval" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a keyval, such as %GDK_a, %GDK_Up, %GDK_Return, etc.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="keys"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for an array of #GdkKeymapKey</doc>
+            <type name="KeymapKey" c:type="GdkKeymapKey**"/>
+          </parameter>
+          <parameter name="n_keys"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for number of elements in returned array</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_num_lock_state"
+              c:identifier="gdk_keymap_get_num_lock_state"
+              version="3.0">
+        <doc xml:whitespace="preserve">Returns whether the Num Lock modifer is locked.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if Num Lock is on</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="have_bidi_layouts"
+              c:identifier="gdk_keymap_have_bidi_layouts">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="lookup_key" c:identifier="gdk_keymap_lookup_key">
+        <doc xml:whitespace="preserve">Looks up the keyval mapped to a keycode/group/level triplet.
+If no keyval is bound to @key, returns 0. For normal user input,
+you want to use gdk_keymap_translate_keyboard_state() instead of
+this function, since the effective group/level may not be
+the same as the current keyboard state.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a keyval, or 0 if none was mapped to the given @key</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkKeymapKey with keycode, group, and level initialized</doc>
+            <type name="KeymapKey" c:type="GdkKeymapKey*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="map_virtual_modifiers"
+              c:identifier="gdk_keymap_map_virtual_modifiers"
+              version="2.20">
+        <doc xml:whitespace="preserve">Maps the virtual modifiers (i.e. Super, Hyper and Meta) which
+are set in @state to their non-virtual counterparts (i.e. Mod2,
+Mod3,...) and set the corresponding bits in @state.
+This function is useful when matching key events against
+accelerators.
+same non-virtual modifier. Note that %FALSE is also returned
+if a virtual modifier is mapped to a non-virtual modifier that
+was already set in @state.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if no virtual modifiers were mapped to the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer to the modifier state to map</doc>
+            <type name="ModifierType" c:type="GdkModifierType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="translate_keyboard_state"
+              c:identifier="gdk_keymap_translate_keyboard_state">
+        <doc xml:whitespace="preserve">Translates the contents of a #GdkEventKey into a keyval, effective
+group, and level. Modifiers that affected the translation and
+are thus unavailable for application use are returned in
+groups and levels.  The @effective_group is the group that was
+actually used for the translation; some keys such as Enter are not
+affected by the active keyboard group. The @level is derived from
+keyval, so this function isn't as useful as you might think.
+&lt;note&gt;&lt;para&gt;
+from @state when comparing this key press to a hot key. For
+instance, on a US keyboard, the &lt;literal&gt;plus&lt;/literal&gt;
+symbol is shifted, so when comparing a key press to a
+&lt;literal&gt;&amp;lt;Control&amp;gt;plus&lt;/literal&gt; accelerator &amp;lt;Shift&amp;gt; should
+be masked out.
+&lt;/para&gt;
+&lt;informalexample&gt;&lt;programlisting&gt;
+&amp;sol;* We want to ignore irrelevant modifiers like ScrollLock *&amp;sol;
+&amp;num;define ALL_ACCELS_MASK (GDK_CONTROL_MASK | GDK_SHIFT_MASK | GDK_MOD1_MASK)
+gdk_keymap_translate_keyboard_state (keymap, event-&gt;hardware_keycode,
+event-&gt;state, event-&gt;group,
+&amp;amp;keyval, NULL, NULL, &amp;amp;consumed);
+if (keyval == GDK_PLUS &amp;&amp;
+(event-&gt;state &amp;amp; ~consumed &amp;amp; ALL_ACCELS_MASK) == GDK_CONTROL_MASK)
+&amp;sol;* Control was pressed *&amp;sol;
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+&lt;para&gt;
+An older interpretation @consumed_modifiers was that it contained
+all modifiers that might affect the translation of the key;
+this allowed accelerators to be stored with irrelevant consumed
+modifiers, by doing:&lt;/para&gt;
+&lt;informalexample&gt;&lt;programlisting&gt;
+&amp;sol;* XXX Don't do this XXX *&amp;sol;
+if (keyval == accel_keyval &amp;&amp;
+(event-&gt;state &amp;amp; ~consumed &amp;amp; ALL_ACCELS_MASK) == (accel_mods &amp;amp; ~consumed))
+&amp;sol;* Accelerator was pressed *&amp;sol;
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+&lt;para&gt;
+However, this did not work if multi-modifier combinations were
+used in the keymap, since, for instance, &lt;literal&gt;&amp;lt;Control&amp;gt;&lt;/literal&gt;
+would be masked out even if only &lt;literal&gt;&amp;lt;Control&amp;gt;&amp;lt;Alt&amp;gt;&lt;/literal&gt;
+was used in the keymap. To support this usage as well as well as
+possible, all &lt;emphasis&gt;single modifier&lt;/emphasis&gt; combinations
+that could affect the key for any combination of modifiers will
+be returned in @consumed_modifiers; multi-modifier combinations
+are returned only when actually found in @state. When you store
+accelerators, you should always store them with consumed modifiers
+removed. Store &lt;literal&gt;&amp;lt;Control&amp;gt;plus&lt;/literal&gt;,
+not &lt;literal&gt;&amp;lt;Control&amp;gt;&amp;lt;Shift&amp;gt;plus&lt;/literal&gt;,
+&lt;/para&gt;&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if there was a keyval bound to the keycode/state/group</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="hardware_keycode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a keycode</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="state" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a modifier state</doc>
+            <type name="ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+          <parameter name="group" transfer-ownership="none">
+            <doc xml:whitespace="preserve">active keyboard group</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="keyval"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for keyval, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="effective_group"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for effective group, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="level"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for level, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="consumed_modifiers"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for modifiers that were used to determine the group or level, or %NULL</doc>
+            <type name="ModifierType" c:type="GdkModifierType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="display">
+        <type name="Display" c:type="GdkDisplay*"/>
+      </field>
+      <glib:signal name="direction-changed" version="2.0">
+        <doc xml:whitespace="preserve">The ::direction-changed signal gets emitted when the direction of
+the keymap changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="keys-changed" version="2.2">
+        <doc xml:whitespace="preserve">The ::keys-changed signal is emitted when the mapping represented by</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="state-changed" version="2.16">
+        <doc xml:whitespace="preserve">The ::state-changed signal is emitted when the state of the
+keyboard changes, e.g when Caps Lock is turned on or off.
+See gdk_keymap_get_caps_lock_state().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="KeymapClass"
+            c:type="GdkKeymapClass"
+            glib:is-gtype-struct-for="Keymap">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="direction_changed">
+        <callback name="direction_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="keymap" transfer-ownership="none">
+              <type name="Keymap" c:type="GdkKeymap*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="keys_changed">
+        <callback name="keys_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="keymap" transfer-ownership="none">
+              <type name="Keymap" c:type="GdkKeymap*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="state_changed">
+        <callback name="state_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="keymap" transfer-ownership="none">
+              <type name="Keymap" c:type="GdkKeymap*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="KeymapKey" c:type="GdkKeymapKey">
+      <field name="keycode" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="group" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="level" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+    </record>
+    <constant name="MAX_TIMECOORD_AXES" value="128">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <bitfield name="ModifierType"
+              glib:type-name="GdkModifierType"
+              glib:get-type="gdk_modifier_type_get_type"
+              c:type="GdkModifierType">
+      <doc xml:whitespace="preserve">A set of bit-flags to indicate the state of modifier keys and mouse buttons
+in various event types. Typical modifier keys are Shift, Control, Meta,
+Super, Hyper, Alt, Compose, Apple, CapsLock or ShiftLock.
+Like the X Window System, GDK supports 8 modifier keys and 5 mouse buttons.
+Since 2.10, GDK recognizes which of the Meta, Super or Hyper keys are mapped
+to Mod2 - Mod5, and indicates this by setting %GDK_SUPER_MASK,
+%GDK_HYPER_MASK or %GDK_META_MASK in the state field of key events.</doc>
+      <member name="shift_mask"
+              value="1"
+              c:identifier="GDK_SHIFT_MASK"
+              glib:nick="shift-mask"/>
+      <member name="lock_mask"
+              value="2"
+              c:identifier="GDK_LOCK_MASK"
+              glib:nick="lock-mask"/>
+      <member name="control_mask"
+              value="4"
+              c:identifier="GDK_CONTROL_MASK"
+              glib:nick="control-mask"/>
+      <member name="mod1_mask"
+              value="8"
+              c:identifier="GDK_MOD1_MASK"
+              glib:nick="mod1-mask"/>
+      <member name="mod2_mask"
+              value="16"
+              c:identifier="GDK_MOD2_MASK"
+              glib:nick="mod2-mask"/>
+      <member name="mod3_mask"
+              value="32"
+              c:identifier="GDK_MOD3_MASK"
+              glib:nick="mod3-mask"/>
+      <member name="mod4_mask"
+              value="64"
+              c:identifier="GDK_MOD4_MASK"
+              glib:nick="mod4-mask"/>
+      <member name="mod5_mask"
+              value="128"
+              c:identifier="GDK_MOD5_MASK"
+              glib:nick="mod5-mask"/>
+      <member name="button1_mask"
+              value="256"
+              c:identifier="GDK_BUTTON1_MASK"
+              glib:nick="button1-mask"/>
+      <member name="button2_mask"
+              value="512"
+              c:identifier="GDK_BUTTON2_MASK"
+              glib:nick="button2-mask"/>
+      <member name="button3_mask"
+              value="1024"
+              c:identifier="GDK_BUTTON3_MASK"
+              glib:nick="button3-mask"/>
+      <member name="button4_mask"
+              value="2048"
+              c:identifier="GDK_BUTTON4_MASK"
+              glib:nick="button4-mask"/>
+      <member name="button5_mask"
+              value="4096"
+              c:identifier="GDK_BUTTON5_MASK"
+              glib:nick="button5-mask"/>
+      <member name="super_mask"
+              value="67108864"
+              c:identifier="GDK_SUPER_MASK"
+              glib:nick="super-mask"/>
+      <member name="hyper_mask"
+              value="134217728"
+              c:identifier="GDK_HYPER_MASK"
+              glib:nick="hyper-mask"/>
+      <member name="meta_mask"
+              value="268435456"
+              c:identifier="GDK_META_MASK"
+              glib:nick="meta-mask"/>
+      <member name="release_mask"
+              value="1073741824"
+              c:identifier="GDK_RELEASE_MASK"
+              glib:nick="release-mask"/>
+      <member name="modifier_mask"
+              value="1543512063"
+              c:identifier="GDK_MODIFIER_MASK"
+              glib:nick="modifier-mask"/>
+    </bitfield>
+    <record name="MultipleClickInfo" c:type="GdkMultipleClickInfo">
+      <field name="button_click_time" writable="1">
+        <array zero-terminated="0" c:type="guint32" fixed-size="2">
+          <type name="guint32" c:type="guint32"/>
+        </array>
+      </field>
+      <field name="button_window" writable="1">
+        <array zero-terminated="0" c:type="GdkWindow" fixed-size="2">
+          <type name="Window" c:type="GdkWindow*"/>
+        </array>
+      </field>
+      <field name="button_number" writable="1">
+        <array zero-terminated="0" c:type="gint" fixed-size="2">
+          <type name="gint" c:type="gint"/>
+        </array>
+      </field>
+      <field name="button_x" writable="1">
+        <array zero-terminated="0" c:type="gint" fixed-size="2">
+          <type name="gint" c:type="gint"/>
+        </array>
+      </field>
+      <field name="button_y" writable="1">
+        <array zero-terminated="0" c:type="gint" fixed-size="2">
+          <type name="gint" c:type="gint"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="NotifyType"
+                 glib:type-name="GdkNotifyType"
+                 glib:get-type="gdk_notify_type_get_type"
+                 c:type="GdkNotifyType">
+      <member name="ancestor"
+              value="0"
+              c:identifier="GDK_NOTIFY_ANCESTOR"
+              glib:nick="ancestor"/>
+      <member name="virtual"
+              value="1"
+              c:identifier="GDK_NOTIFY_VIRTUAL"
+              glib:nick="virtual"/>
+      <member name="inferior"
+              value="2"
+              c:identifier="GDK_NOTIFY_INFERIOR"
+              glib:nick="inferior"/>
+      <member name="nonlinear"
+              value="3"
+              c:identifier="GDK_NOTIFY_NONLINEAR"
+              glib:nick="nonlinear"/>
+      <member name="nonlinear_virtual"
+              value="4"
+              c:identifier="GDK_NOTIFY_NONLINEAR_VIRTUAL"
+              glib:nick="nonlinear-virtual"/>
+      <member name="unknown"
+              value="5"
+              c:identifier="GDK_NOTIFY_UNKNOWN"
+              glib:nick="unknown"/>
+    </enumeration>
+    <enumeration name="OwnerChange"
+                 glib:type-name="GdkOwnerChange"
+                 glib:get-type="gdk_owner_change_get_type"
+                 c:type="GdkOwnerChange">
+      <member name="new_owner"
+              value="0"
+              c:identifier="GDK_OWNER_CHANGE_NEW_OWNER"
+              glib:nick="new-owner"/>
+      <member name="destroy"
+              value="1"
+              c:identifier="GDK_OWNER_CHANGE_DESTROY"
+              glib:nick="destroy"/>
+      <member name="close"
+              value="2"
+              c:identifier="GDK_OWNER_CHANGE_CLOSE"
+              glib:nick="close"/>
+    </enumeration>
+    <constant name="PARENT_RELATIVE" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PRIORITY_REDRAW" value="20">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Pixmap"
+           c:symbol-prefix="pixmap"
+           c:type="GdkPixmap"
+           parent="Drawable"
+           glib:type-name="GdkPixmap"
+           glib:get-type="gdk_pixmap_get_type">
+      <constructor name="foreign_new" c:identifier="gdk_pixmap_foreign_new">
+        <doc xml:whitespace="preserve">Wraps a native window for the default display in a #GdkPixmap.
+This may fail if the pixmap has been destroyed.
+For example in the X backend, a native pixmap handle is an Xlib
+&lt;type&gt;XID&lt;/type&gt;.
+native pixmap or %NULL if the pixmap has been destroyed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly-created #GdkPixmap wrapper for the</doc>
+          <type name="Pixmap" c:type="GdkPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="anid" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a native pixmap handle.</doc>
+            <type name="NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="foreign_new_for_display"
+                   c:identifier="gdk_pixmap_foreign_new_for_display"
+                   version="2.2">
+        <doc xml:whitespace="preserve">Wraps a native pixmap in a #GdkPixmap.
+This may fail if the pixmap has been destroyed.
+For example in the X backend, a native pixmap handle is an Xlib
+&lt;type&gt;XID&lt;/type&gt;.
+native pixmap or %NULL if the pixmap has been destroyed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly-created #GdkPixmap wrapper for the</doc>
+          <type name="Pixmap" c:type="GdkPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GdkDisplay where @anid is located.</doc>
+            <type name="Display" c:type="GdkDisplay*"/>
+          </parameter>
+          <parameter name="anid" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a native pixmap handle.</doc>
+            <type name="NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="foreign_new_for_screen"
+                   c:identifier="gdk_pixmap_foreign_new_for_screen"
+                   version="2.10">
+        <doc xml:whitespace="preserve">Wraps a native pixmap in a #GdkPixmap.
+This may fail if the pixmap has been destroyed.
+For example in the X backend, a native pixmap handle is an Xlib
+&lt;type&gt;XID&lt;/type&gt;.
+This function is an alternative to gdk_pixmap_foreign_new_for_display()
+for cases where the dimensions of the pixmap are known. For the X
+backend, this avoids a roundtrip to the server.
+native pixmap or %NULL if the pixmap has been destroyed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly-created #GdkPixmap wrapper for the</doc>
+          <type name="Pixmap" c:type="GdkPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkScreen</doc>
+            <type name="Screen" c:type="GdkScreen*"/>
+          </parameter>
+          <parameter name="anid" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a native pixmap handle</doc>
+            <type name="NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the width of the pixmap identified by @anid</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the height of the pixmap identified by @anid</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="depth" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the depth of the pixmap identified by @anid</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new" c:identifier="gdk_pixmap_new">
+        <return-value transfer-ownership="full">
+          <type name="Pixmap" c:type="GdkPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="drawable" transfer-ownership="none">
+            <type name="Drawable" c:type="GdkDrawable*"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="depth" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="lookup"
+                c:identifier="gdk_pixmap_lookup"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Looks up the #GdkPixmap that wraps the given native pixmap handle.
+For example in the X backend, a native pixmap handle is an Xlib
+&lt;type&gt;XID&lt;/type&gt;.
+or %NULL if there is none.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the #GdkPixmap wrapper for the native pixmap,</doc>
+          <type name="Pixmap" c:type="GdkPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="anid" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a native pixmap handle.</doc>
+            <type name="NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="lookup_for_display"
+                c:identifier="gdk_pixmap_lookup_for_display"
+                version="2.2"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Looks up the #GdkPixmap that wraps the given native pixmap handle.
+For example in the X backend, a native pixmap handle is an Xlib
+&lt;type&gt;XID&lt;/type&gt;.
+or %NULL if there is none.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the #GdkPixmap wrapper for the native pixmap,</doc>
+          <type name="Pixmap" c:type="GdkPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkDisplay associated with @anid</doc>
+            <type name="Display" c:type="GdkDisplay*"/>
+          </parameter>
+          <parameter name="anid" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a native pixmap handle.</doc>
+            <type name="NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </function>
+    </class>
+    <record name="PixmapObject" c:type="GdkPixmapObject">
+      <field name="parent_instance" writable="1">
+        <type name="Drawable" c:type="GdkDrawable"/>
+      </field>
+      <field name="impl" writable="1">
+        <type name="Drawable" c:type="GdkDrawable*"/>
+      </field>
+      <field name="depth" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+    </record>
+    <record name="PixmapObjectClass" c:type="GdkPixmapObjectClass">
+      <field name="parent_class" writable="1">
+        <type name="DrawableClass" c:type="GdkDrawableClass"/>
+      </field>
+    </record>
+    <record name="Point" c:type="GdkPoint">
+      <field name="x" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+    </record>
+    <record name="PointerHooks" c:type="GdkPointerHooks">
+      <doc xml:whitespace="preserve">A table of pointers to functions for getting quantities related to
+the current pointer position. GDK has one global table of this type,
+which can be set using gdk_set_pointer_hooks().
+This is only useful for such low-level tools as an event recorder.
+Applications should never have any reason to use this facility</doc>
+      <field name="get_pointer" introspectable="0">
+        <callback name="get_pointer" introspectable="0">
+          <return-value>
+            <type name="Window" c:type="GdkWindow*"/>
+          </return-value>
+          <parameters>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="mask" transfer-ownership="none">
+              <type name="ModifierType" c:type="GdkModifierType*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="window_at_pointer" introspectable="0">
+        <callback name="window_at_pointer" introspectable="0">
+          <return-value>
+            <type name="Window" c:type="GdkWindow*"/>
+          </return-value>
+          <parameters>
+            <parameter name="screen" transfer-ownership="none">
+              <type name="Screen" c:type="GdkScreen*"/>
+            </parameter>
+            <parameter name="win_x" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="win_y" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="PointerWindowInfo" c:type="GdkPointerWindowInfo">
+      <field name="toplevel_under_pointer" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="window_under_pointer" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="toplevel_x" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="toplevel_y" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="state" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="button" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+    </record>
+    <enumeration name="PropMode"
+                 glib:type-name="GdkPropMode"
+                 glib:get-type="gdk_prop_mode_get_type"
+                 c:type="GdkPropMode">
+      <member name="replace"
+              value="0"
+              c:identifier="GDK_PROP_MODE_REPLACE"
+              glib:nick="replace"/>
+      <member name="prepend"
+              value="1"
+              c:identifier="GDK_PROP_MODE_PREPEND"
+              glib:nick="prepend"/>
+      <member name="append"
+              value="2"
+              c:identifier="GDK_PROP_MODE_APPEND"
+              glib:nick="append"/>
+    </enumeration>
+    <enumeration name="PropertyState"
+                 glib:type-name="GdkPropertyState"
+                 glib:get-type="gdk_property_state_get_type"
+                 c:type="GdkPropertyState">
+      <member name="new_value"
+              value="0"
+              c:identifier="GDK_PROPERTY_NEW_VALUE"
+              glib:nick="new-value"/>
+      <member name="delete"
+              value="1"
+              c:identifier="GDK_PROPERTY_DELETE"
+              glib:nick="delete"/>
+    </enumeration>
+    <class name="Screen"
+           c:symbol-prefix="screen"
+           c:type="GdkScreen"
+           parent="GObject.Object"
+           glib:type-name="GdkScreen"
+           glib:get-type="gdk_screen_get_type"
+           glib:type-struct="ScreenClass">
+      <function name="get_default"
+                c:identifier="gdk_screen_get_default"
+                version="2.2">
+        <doc xml:whitespace="preserve">Gets the default screen for the default display. (See
+gdk_display_get_default ()).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkScreen, or %NULL if there is no default display.</doc>
+          <type name="Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </function>
+      <function name="height" c:identifier="gdk_screen_height">
+        <doc xml:whitespace="preserve">Returns the height of the default screen in pixels.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the height of the default screen in pixels.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </function>
+      <function name="height_mm" c:identifier="gdk_screen_height_mm">
+        <doc xml:whitespace="preserve">Returns the height of the default screen in millimeters.
+Note that on many X servers this value will not be correct.
+though it is not always correct.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the height of the default screen in millimeters,</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </function>
+      <function name="width" c:identifier="gdk_screen_width">
+        <doc xml:whitespace="preserve">Returns the width of the default screen in pixels.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width of the default screen in pixels.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </function>
+      <function name="width_mm" c:identifier="gdk_screen_width_mm">
+        <doc xml:whitespace="preserve">Returns the width of the default screen in millimeters.
+Note that on many X servers this value will not be correct.
+though it is not always correct.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width of the default screen in millimeters,</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </function>
+      <method name="broadcast_client_message"
+              c:identifier="gdk_screen_broadcast_client_message"
+              version="2.2">
+        <doc xml:whitespace="preserve">On X11, sends an X ClientMessage event to all toplevel windows on
+Toplevel windows are determined by checking for the WM_STATE property,
+as described in the Inter-Client Communication Conventions Manual (ICCCM).
+If no windows are found with the WM_STATE property set, the message is
+sent to all children of the root window.
+On Windows, broadcasts a message registered with the name
+GDK_WIN32_CLIENT_MESSAGE to all top-level windows. The amount of
+data is limited to one long, i.e. four bytes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkEvent.</doc>
+            <type name="Event" c:type="GdkEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_active_window"
+              c:identifier="gdk_screen_get_active_window"
+              introspectable="0">
+        <return-value>
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_default_colormap"
+              c:identifier="gdk_screen_get_default_colormap"
+              version="2.2">
+        <doc xml:whitespace="preserve">Gets the default colormap for @screen.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the default #GdkColormap.</doc>
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </return-value>
+      </method>
+      <method name="get_display"
+              c:identifier="gdk_screen_get_display"
+              version="2.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the display to which the @screen belongs.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the display to which @screen belongs</doc>
+          <type name="Display" c:type="GdkDisplay*"/>
+        </return-value>
+      </method>
+      <method name="get_font_options"
+              c:identifier="gdk_screen_get_font_options"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets any options previously set with gdk_screen_set_font_options().
+font options have been set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current font options, or %NULL if no default</doc>
+          <type name="cairo.FontOptions" c:type="cairo_font_options_t*"/>
+        </return-value>
+      </method>
+      <method name="get_height"
+              c:identifier="gdk_screen_get_height"
+              version="2.2">
+        <doc xml:whitespace="preserve">Gets the height of @screen in pixels</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the height of @screen in pixels.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_height_mm"
+              c:identifier="gdk_screen_get_height_mm"
+              version="2.2">
+        <doc xml:whitespace="preserve">Returns the height of @screen in millimeters. 
+Note that on some X servers this value will not be correct.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the heigth of @screen in millimeters.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_monitor_at_point"
+              c:identifier="gdk_screen_get_monitor_at_point"
+              version="2.2">
+        <doc xml:whitespace="preserve">Returns the monitor number in which the point (@x,@y) is located.
+a monitor close to (@x,@y) if the point is not in any monitor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the monitor number in which the point (@x,@y) lies, or</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate in the virtual screen.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate in the virtual screen.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_monitor_at_window"
+              c:identifier="gdk_screen_get_monitor_at_window"
+              version="2.2">
+        <doc xml:whitespace="preserve">Returns the number of the monitor in which the largest area of the 
+bounding rectangle of @window resides.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the monitor number in which most of @window is located, or if @window does not intersect any monitors, a monitor, close to @window.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkWindow</doc>
+            <type name="Window" c:type="GdkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_monitor_geometry"
+              c:identifier="gdk_screen_get_monitor_geometry"
+              version="2.2">
+        <doc xml:whitespace="preserve">Retrieves the #GdkRectangle representing the size and position of
+the individual monitor within the entire screen area.
+Note that the size of the entire screen area can be retrieved via
+gdk_screen_get_width() and gdk_screen_get_height().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="monitor_num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the monitor number, between 0 and gdk_screen_get_n_monitors (screen)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="dest" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkRectangle to be filled with the monitor geometry</doc>
+            <type name="Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_monitor_height_mm"
+              c:identifier="gdk_screen_get_monitor_height_mm"
+              version="2.14">
+        <doc xml:whitespace="preserve">Gets the height in millimeters of the specified monitor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the height of the monitor, or -1 if not available</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="monitor_num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of the monitor, between 0 and gdk_screen_get_n_monitors (screen)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_monitor_plug_name"
+              c:identifier="gdk_screen_get_monitor_plug_name"
+              version="2.14">
+        <doc xml:whitespace="preserve">Returns the output name of the specified monitor.
+Usually something like VGA, DVI, or TV, not the actual
+product name of the display device.
+or %NULL if the name cannot be determined</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly-allocated string containing the name of the monitor,</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="monitor_num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of the monitor, between 0 and gdk_screen_get_n_monitors (screen)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_monitor_width_mm"
+              c:identifier="gdk_screen_get_monitor_width_mm"
+              version="2.14">
+        <doc xml:whitespace="preserve">Gets the width in millimeters of the specified monitor, if available.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width of the monitor, or -1 if not available</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="monitor_num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of the monitor, between 0 and gdk_screen_get_n_monitors (screen)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_monitors"
+              c:identifier="gdk_screen_get_n_monitors"
+              version="2.2">
+        <doc xml:whitespace="preserve">Returns the number of monitors which @screen consists of.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of monitors which @screen consists of</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_number"
+              c:identifier="gdk_screen_get_number"
+              version="2.2">
+        <doc xml:whitespace="preserve">Gets the index of @screen among the screens in the display
+to which it belongs. (See gdk_screen_get_display())</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_primary_monitor"
+              c:identifier="gdk_screen_get_primary_monitor"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets the primary monitor for @screen.  The primary monitor
+is considered the monitor where the 'main desktop' lives.
+While normal application windows typically allow the window
+manager to place the windows, specialized desktop applications
+such as panels should place themselves on the primary monitor.
+If no primary monitor is configured by the user, the return value
+will be 0, defaulting to the first monitor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">An integer index for the primary monitor, or 0 if none is configured.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_resolution"
+              c:identifier="gdk_screen_get_resolution"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the resolution for font handling on the screen; see
+gdk_screen_set_resolution() for full details.
+has been set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current resolution, or -1 if no resolution</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_rgba_colormap"
+              c:identifier="gdk_screen_get_rgba_colormap"
+              version="2.8">
+        <doc xml:whitespace="preserve">Gets a colormap to use for creating windows or pixmaps with an
+alpha channel. The windowing system on which GTK+ is running
+may not support this capability, in which case %NULL will
+be returned. Even if a non-%NULL value is returned, its
+possible that the window's alpha channel won't be honored
+X an appropriate windowing manager and compositing manager
+must be running to provide appropriate display.
+This functionality is not implemented in the Windows backend.
+For setting an overall opacity for a top-level window, see
+gdk_window_set_opacity().
+an alpha channel or %NULL if the capability is not available.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a colormap to use for windows with</doc>
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </return-value>
+      </method>
+      <method name="get_rgba_visual"
+              c:identifier="gdk_screen_get_rgba_visual"
+              version="2.8">
+        <doc xml:whitespace="preserve">Gets a visual to use for creating windows or pixmaps with an
+alpha channel. See the docs for gdk_screen_get_rgba_colormap()
+for caveats.
+alpha channel or %NULL if the capability is not available.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a visual to use for windows with an</doc>
+          <type name="Visual" c:type="GdkVisual*"/>
+        </return-value>
+      </method>
+      <method name="get_root_window"
+              c:identifier="gdk_screen_get_root_window"
+              version="2.2">
+        <doc xml:whitespace="preserve">Gets the root window of @screen.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the root window</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_setting"
+              c:identifier="gdk_screen_get_setting"
+              version="2.2">
+        <doc xml:whitespace="preserve">Retrieves a desktop-wide setting such as double-click time
+for the #GdkScreen @screen.
+FIXME needs a list of valid settings here, or a link to
+more information.
+in @value, %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the setting existed and a value was stored</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the setting</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the value of the setting</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_system_colormap"
+              c:identifier="gdk_screen_get_system_colormap"
+              version="2.2">
+        <doc xml:whitespace="preserve">Gets the system's default colormap for @screen</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the default colormap for @screen.</doc>
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </return-value>
+      </method>
+      <method name="get_system_visual"
+              c:identifier="gdk_screen_get_system_visual"
+              version="2.2">
+        <doc xml:whitespace="preserve">Get the system's default visual for @screen.
+This is the visual for the root window of the display.
+The return value should not be freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the system visual</doc>
+          <type name="Visual" c:type="GdkVisual*"/>
+        </return-value>
+      </method>
+      <method name="get_toplevel_windows"
+              c:identifier="gdk_screen_get_toplevel_windows"
+              version="2.2">
+        <doc xml:whitespace="preserve">Obtains a list of all toplevel windows known to GDK on the screen @screen.
+A toplevel window is a child of the root window (see
+gdk_get_default_root_window()).
+The returned list should be freed with g_list_free(), but
+its elements need not be freed.
+list of toplevel windows, free with g_list_free()</doc>
+        <return-value transfer-ownership="container">
+          <type name="GLib.List" c:type="GList*">
+            <type name="Window"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_width"
+              c:identifier="gdk_screen_get_width"
+              version="2.2">
+        <doc xml:whitespace="preserve">Gets the width of @screen in pixels</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width of @screen in pixels.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_width_mm"
+              c:identifier="gdk_screen_get_width_mm"
+              version="2.2">
+        <doc xml:whitespace="preserve">Gets the width of @screen in millimeters. 
+Note that on some X servers this value will not be correct.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width of @screen in millimeters.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_window_stack"
+              c:identifier="gdk_screen_get_window_stack"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns a #GList of #GdkWindow&lt;!-- --&gt;s representing the current
+window stack.
+On X11, this is done by inspecting the _NET_CLIENT_LIST_STACKING
+property on the root window, as described in the &lt;ulink
+url="http://www.freedesktop.org/Standards/wm-spec"&gt;Extended Window
+Manager Hints&lt;/ulink&gt;. If the window manager does not support the
+_NET_CLIENT_LIST_STACKING hint, this function returns %NULL.
+On other platforms, this function may return %NULL, depending on whether
+it is implementable on that platform.
+The returned list is newly allocated and owns references to the
+windows it contains, so it should be freed using g_list_free() and
+its windows unrefed using g_object_unref() when no longer needed.
+a list of #GdkWindow&lt;!-- --&gt;s for the current window stack,
+or %NULL.</doc>
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*">
+            <type name="Window"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="is_composited"
+              c:identifier="gdk_screen_is_composited"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns whether windows with an RGBA visual can reasonably
+be expected to have their alpha channel drawn correctly on
+the screen.
+On X11 this function returns whether a compositing manager is
+compositing @screen.
+expected to have their alpha channels drawn correctly on the screen.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Whether windows with RGBA visuals can reasonably be</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="list_visuals"
+              c:identifier="gdk_screen_list_visuals"
+              version="2.2">
+        <doc xml:whitespace="preserve">Lists the available visuals for the specified @screen.
+A visual describes a hardware image data format.
+For example, a visual might support 24-bit color, or 8-bit color,
+and might expect pixels to be in a certain format.
+Call g_list_free() on the return value when you're finished with it.
+a list of visuals; the list must be freed, but not its contents</doc>
+        <return-value transfer-ownership="container">
+          <type name="GLib.List" c:type="GList*">
+            <type name="Visual"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="make_display_name"
+              c:identifier="gdk_screen_make_display_name"
+              version="2.2">
+        <doc xml:whitespace="preserve">Determines the name to pass to gdk_display_open() to get
+a #GdkDisplay with this screen as the default screen.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated string, free with g_free()</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_default_colormap"
+              c:identifier="gdk_screen_set_default_colormap"
+              version="2.2">
+        <doc xml:whitespace="preserve">Sets the default @colormap for @screen.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="colormap" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkColormap</doc>
+            <type name="Colormap" c:type="GdkColormap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_font_options"
+              c:identifier="gdk_screen_set_font_options"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the default font options for the screen. These
+options will be set on any #PangoContext's newly created
+with gdk_pango_context_get_for_screen(). Changing the
+default set of font options does not affect contexts that
+have already been created.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="options" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #cairo_font_options_t, or %NULL to unset any previously set default font options.</doc>
+            <type name="cairo.FontOptions" c:type="cairo_font_options_t*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_resolution"
+              c:identifier="gdk_screen_set_resolution"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the resolution for font handling on the screen. This is a
+scale factor between points specified in a #PangoFontDescription
+and cairo units. The default value is 96, meaning that a 10 point
+font will be 13 units high. (10 * 96. / 72. = 13.3).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dpi" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the resolution in "dots per inch". (Physical inches aren't actually involved; the terminology is conventional.)</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="font-options" writable="1" transfer-ownership="none">
+        <type name="gpointer"/>
+      </property>
+      <property name="resolution" writable="1" transfer-ownership="none">
+        <type name="gdouble"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="closed" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="font_options">
+        <type name="cairo.FontOptions" c:type="cairo_font_options_t*"/>
+      </field>
+      <field name="resolution">
+        <type name="gdouble" c:type="double"/>
+      </field>
+      <glib:signal name="composited-changed" version="2.10">
+        <doc xml:whitespace="preserve">The ::composited-changed signal is emitted when the composited
+status of the screen changes</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="monitors-changed" version="2.14">
+        <doc xml:whitespace="preserve">The ::monitors-changed signal is emitted when the number, size
+or position of the monitors attached to the screen change. 
+Only for X11 and OS X for now. A future implementation for Win32
+may be a possibility.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="size-changed" version="2.2">
+        <doc xml:whitespace="preserve">The ::size-changed signal is emitted when the pixel width or 
+height of a screen changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ScreenClass"
+            c:type="GdkScreenClass"
+            glib:is-gtype-struct-for="Screen">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="size_changed">
+        <callback name="size_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="screen" transfer-ownership="none">
+              <type name="Screen" c:type="GdkScreen*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="composited_changed">
+        <callback name="composited_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="screen" transfer-ownership="none">
+              <type name="Screen" c:type="GdkScreen*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="monitors_changed">
+        <callback name="monitors_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="screen" transfer-ownership="none">
+              <type name="Screen" c:type="GdkScreen*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="ScrollDirection"
+                 glib:type-name="GdkScrollDirection"
+                 glib:get-type="gdk_scroll_direction_get_type"
+                 c:type="GdkScrollDirection">
+      <member name="up" value="0" c:identifier="GDK_SCROLL_UP" glib:nick="up"/>
+      <member name="down"
+              value="1"
+              c:identifier="GDK_SCROLL_DOWN"
+              glib:nick="down"/>
+      <member name="left"
+              value="2"
+              c:identifier="GDK_SCROLL_LEFT"
+              glib:nick="left"/>
+      <member name="right"
+              value="3"
+              c:identifier="GDK_SCROLL_RIGHT"
+              glib:nick="right"/>
+    </enumeration>
+    <enumeration name="SettingAction"
+                 glib:type-name="GdkSettingAction"
+                 glib:get-type="gdk_setting_action_get_type"
+                 c:type="GdkSettingAction">
+      <member name="new"
+              value="0"
+              c:identifier="GDK_SETTING_ACTION_NEW"
+              glib:nick="new"/>
+      <member name="changed"
+              value="1"
+              c:identifier="GDK_SETTING_ACTION_CHANGED"
+              glib:nick="changed"/>
+      <member name="deleted"
+              value="2"
+              c:identifier="GDK_SETTING_ACTION_DELETED"
+              glib:nick="deleted"/>
+    </enumeration>
+    <record name="Span" c:type="GdkSpan">
+      <field name="x" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="width" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+    </record>
+    <enumeration name="Status"
+                 glib:type-name="GdkStatus"
+                 glib:get-type="gdk_status_get_type"
+                 c:type="GdkStatus">
+      <member name="ok" value="0" c:identifier="GDK_OK" glib:nick="ok"/>
+      <member name="error"
+              value="-1"
+              c:identifier="GDK_ERROR"
+              glib:nick="error"/>
+      <member name="error_param"
+              value="-2"
+              c:identifier="GDK_ERROR_PARAM"
+              glib:nick="error-param"/>
+      <member name="error_file"
+              value="-3"
+              c:identifier="GDK_ERROR_FILE"
+              glib:nick="error-file"/>
+      <member name="error_mem"
+              value="-4"
+              c:identifier="GDK_ERROR_MEM"
+              glib:nick="error-mem"/>
+    </enumeration>
+    <record name="TimeCoord" c:type="GdkTimeCoord">
+      <doc xml:whitespace="preserve">The #GdkTimeCoord structure stores a single event in a motion history.</doc>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="axes" writable="1">
+        <array zero-terminated="0" c:type="gdouble" fixed-size="128">
+          <type name="gdouble" c:type="gdouble"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="VisibilityState"
+                 glib:type-name="GdkVisibilityState"
+                 glib:get-type="gdk_visibility_state_get_type"
+                 c:type="GdkVisibilityState">
+      <member name="unobscured"
+              value="0"
+              c:identifier="GDK_VISIBILITY_UNOBSCURED"
+              glib:nick="unobscured"/>
+      <member name="partial"
+              value="1"
+              c:identifier="GDK_VISIBILITY_PARTIAL"
+              glib:nick="partial"/>
+      <member name="fully_obscured"
+              value="2"
+              c:identifier="GDK_VISIBILITY_FULLY_OBSCURED"
+              glib:nick="fully-obscured"/>
+    </enumeration>
+    <class name="Visual"
+           c:symbol-prefix="visual"
+           c:type="GdkVisual"
+           parent="GObject.Object"
+           glib:type-name="GdkVisual"
+           glib:get-type="gdk_visual_get_type"
+           glib:type-struct="VisualClass">
+      <function name="get_best" c:identifier="gdk_visual_get_best">
+        <doc xml:whitespace="preserve">Get the visual with the most available colors for the default
+GDK screen. The return value should not be freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">best visual</doc>
+          <type name="Visual" c:type="GdkVisual*"/>
+        </return-value>
+      </function>
+      <function name="get_best_depth" c:identifier="gdk_visual_get_best_depth">
+        <doc xml:whitespace="preserve">Get the best available depth for the default GDK screen.  "Best"
+means "largest," i.e. 32 preferred over 24 preferred over 8 bits
+per pixel.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">best available depth</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </function>
+      <function name="get_best_type" c:identifier="gdk_visual_get_best_type">
+        <doc xml:whitespace="preserve">Return the best available visual type for the default GDK screen.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">best visual type</doc>
+          <type name="VisualType" c:type="GdkVisualType"/>
+        </return-value>
+      </function>
+      <function name="get_best_with_both"
+                c:identifier="gdk_visual_get_best_with_both">
+        <doc xml:whitespace="preserve">Combines gdk_visual_get_best_with_depth() and gdk_visual_get_best_with_type().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">best visual with both @depth and</doc>
+          <type name="Visual" c:type="GdkVisual*"/>
+        </return-value>
+        <parameters>
+          <parameter name="depth" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a bit depth</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="visual_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a visual type</doc>
+            <type name="VisualType" c:type="GdkVisualType"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_best_with_depth"
+                c:identifier="gdk_visual_get_best_with_depth">
+        <doc xml:whitespace="preserve">Get the best visual with depth @depth for the default GDK screen.
+Color visuals and visuals with mutable colormaps are preferred
+over grayscale or fixed-colormap visuals. The return value should not
+be freed. %NULL may be returned if no visual supports @depth.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">best visual for the given depth</doc>
+          <type name="Visual" c:type="GdkVisual*"/>
+        </return-value>
+        <parameters>
+          <parameter name="depth" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a bit depth</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_best_with_type"
+                c:identifier="gdk_visual_get_best_with_type">
+        <doc xml:whitespace="preserve">Get the best visual of the given @visual_type for the default GDK screen.
+Visuals with higher color depths are considered better. The return value
+should not be freed. %NULL may be returned if no visual has type</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">best visual of the given type</doc>
+          <type name="Visual" c:type="GdkVisual*"/>
+        </return-value>
+        <parameters>
+          <parameter name="visual_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a visual type</doc>
+            <type name="VisualType" c:type="GdkVisualType"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_system" c:identifier="gdk_visual_get_system">
+        <doc xml:whitespace="preserve">Get the system's default visual for the default GDK screen.
+This is the visual for the root window of the display.
+The return value should not be freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">system visual</doc>
+          <type name="Visual" c:type="GdkVisual*"/>
+        </return-value>
+      </function>
+      <method name="get_bits_per_rgb"
+              c:identifier="gdk_visual_get_bits_per_rgb"
+              version="2.22">
+        <doc xml:whitespace="preserve">Returns the number of significant bits per red, green and blue value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of significant bits per color value for @visual.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_blue_pixel_details"
+              c:identifier="gdk_visual_get_blue_pixel_details"
+              version="2.22">
+        <doc xml:whitespace="preserve">Obtains values that are needed to calculate blue pixel values in TrueColor
+and DirectColor.  The "mask" is the significant bits within the pixel.
+The "shift" is the number of bits left we must shift a primary for it
+to be in position (according to the "mask").  Finally, "precision" refers
+to how much precision the pixel value contains for a particular primary.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mask"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A pointer to a #guint32 to be filled in, or %NULL.</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="shift"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A pointer to a #gint to be filled in, or %NULL.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="precision"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A pointer to a #gint to be filled in, or %NULL.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_byte_order"
+              c:identifier="gdk_visual_get_byte_order"
+              version="2.22">
+        <doc xml:whitespace="preserve">Returns the byte order of this visual.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GdkByteOrder stating the byte order of @visual.</doc>
+          <type name="ByteOrder" c:type="GdkByteOrder"/>
+        </return-value>
+      </method>
+      <method name="get_colormap_size"
+              c:identifier="gdk_visual_get_colormap_size"
+              version="2.22">
+        <doc xml:whitespace="preserve">Returns the size of a colormap for this visual.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The size of a colormap that is suitable for @visual.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_depth"
+              c:identifier="gdk_visual_get_depth"
+              version="2.22">
+        <doc xml:whitespace="preserve">Returns the bit depth of this visual.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The bit depth of this visual.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_green_pixel_details"
+              c:identifier="gdk_visual_get_green_pixel_details"
+              version="2.22">
+        <doc xml:whitespace="preserve">Obtains values that are needed to calculate green pixel values in TrueColor
+and DirectColor.  The "mask" is the significant bits within the pixel.
+The "shift" is the number of bits left we must shift a primary for it
+to be in position (according to the "mask").  Finally, "precision" refers
+to how much precision the pixel value contains for a particular primary.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mask"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A pointer to a #guint32 to be filled in, or %NULL.</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="shift"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A pointer to a #gint to be filled in, or %NULL.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="precision"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A pointer to a #gint to be filled in, or %NULL.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_red_pixel_details"
+              c:identifier="gdk_visual_get_red_pixel_details"
+              version="2.22">
+        <doc xml:whitespace="preserve">Obtains values that are needed to calculate red pixel values in TrueColor
+and DirectColor.  The "mask" is the significant bits within the pixel.
+The "shift" is the number of bits left we must shift a primary for it
+to be in position (according to the "mask").  Finally, "precision" refers
+to how much precision the pixel value contains for a particular primary.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mask"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A pointer to a #guint32 to be filled in, or %NULL.</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="shift"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A pointer to a #gint to be filled in, or %NULL.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="precision"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A pointer to a #gint to be filled in, or %NULL.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_screen"
+              c:identifier="gdk_visual_get_screen"
+              version="2.2">
+        <doc xml:whitespace="preserve">Gets the screen to which this visual belongs</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the screen to which this visual belongs.</doc>
+          <type name="Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </method>
+      <method name="get_visual_type"
+              c:identifier="gdk_visual_get_visual_type"
+              version="2.22">
+        <doc xml:whitespace="preserve">Returns the type of visual this is (PseudoColor, TrueColor, etc).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GdkVisualType stating the type of @visual.</doc>
+          <type name="VisualType" c:type="GdkVisualType"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="type">
+        <type name="VisualType" c:type="GdkVisualType"/>
+      </field>
+      <field name="depth">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="byte_order">
+        <type name="ByteOrder" c:type="GdkByteOrder"/>
+      </field>
+      <field name="colormap_size">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="bits_per_rgb">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="red_mask">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="red_shift">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="red_prec">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="green_mask">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="green_shift">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="green_prec">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="blue_mask">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="blue_shift">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="blue_prec">
+        <type name="gint" c:type="gint"/>
+      </field>
+    </class>
+    <record name="VisualClass"
+            c:type="GdkVisualClass"
+            disguised="1"
+            glib:is-gtype-struct-for="Visual">
+    </record>
+    <enumeration name="VisualType"
+                 glib:type-name="GdkVisualType"
+                 glib:get-type="gdk_visual_type_get_type"
+                 c:type="GdkVisualType">
+      <member name="static_gray"
+              value="0"
+              c:identifier="GDK_VISUAL_STATIC_GRAY"
+              glib:nick="static-gray"/>
+      <member name="grayscale"
+              value="1"
+              c:identifier="GDK_VISUAL_GRAYSCALE"
+              glib:nick="grayscale"/>
+      <member name="static_color"
+              value="2"
+              c:identifier="GDK_VISUAL_STATIC_COLOR"
+              glib:nick="static-color"/>
+      <member name="pseudo_color"
+              value="3"
+              c:identifier="GDK_VISUAL_PSEUDO_COLOR"
+              glib:nick="pseudo-color"/>
+      <member name="true_color"
+              value="4"
+              c:identifier="GDK_VISUAL_TRUE_COLOR"
+              glib:nick="true-color"/>
+      <member name="direct_color"
+              value="5"
+              c:identifier="GDK_VISUAL_DIRECT_COLOR"
+              glib:nick="direct-color"/>
+    </enumeration>
+    <bitfield name="WMDecoration"
+              glib:type-name="GdkWMDecoration"
+              glib:get-type="gdk_wm_decoration_get_type"
+              c:type="GdkWMDecoration">
+      <doc xml:whitespace="preserve">These are hints originally defined by the Motif toolkit.
+The window manager can use them when determining how to decorate
+the window. The hint must be set before mapping the window.</doc>
+      <member name="all"
+              value="1"
+              c:identifier="GDK_DECOR_ALL"
+              glib:nick="all"/>
+      <member name="border"
+              value="2"
+              c:identifier="GDK_DECOR_BORDER"
+              glib:nick="border"/>
+      <member name="resizeh"
+              value="4"
+              c:identifier="GDK_DECOR_RESIZEH"
+              glib:nick="resizeh"/>
+      <member name="title"
+              value="8"
+              c:identifier="GDK_DECOR_TITLE"
+              glib:nick="title"/>
+      <member name="menu"
+              value="16"
+              c:identifier="GDK_DECOR_MENU"
+              glib:nick="menu"/>
+      <member name="minimize"
+              value="32"
+              c:identifier="GDK_DECOR_MINIMIZE"
+              glib:nick="minimize"/>
+      <member name="maximize"
+              value="64"
+              c:identifier="GDK_DECOR_MAXIMIZE"
+              glib:nick="maximize"/>
+    </bitfield>
+    <bitfield name="WMFunction"
+              glib:type-name="GdkWMFunction"
+              glib:get-type="gdk_wm_function_get_type"
+              c:type="GdkWMFunction">
+      <doc xml:whitespace="preserve">These are hints originally defined by the Motif toolkit. The window manager
+can use them when determining the functions to offer for the window. The
+hint must be set before mapping the window.</doc>
+      <member name="all"
+              value="1"
+              c:identifier="GDK_FUNC_ALL"
+              glib:nick="all"/>
+      <member name="resize"
+              value="2"
+              c:identifier="GDK_FUNC_RESIZE"
+              glib:nick="resize"/>
+      <member name="move"
+              value="4"
+              c:identifier="GDK_FUNC_MOVE"
+              glib:nick="move"/>
+      <member name="minimize"
+              value="8"
+              c:identifier="GDK_FUNC_MINIMIZE"
+              glib:nick="minimize"/>
+      <member name="maximize"
+              value="16"
+              c:identifier="GDK_FUNC_MAXIMIZE"
+              glib:nick="maximize"/>
+      <member name="close"
+              value="32"
+              c:identifier="GDK_FUNC_CLOSE"
+              glib:nick="close"/>
+    </bitfield>
+    <class name="Window"
+           c:symbol-prefix="window_object"
+           c:type="GdkWindow"
+           parent="Drawable"
+           glib:type-name="GdkWindow"
+           glib:get-type="gdk_window_object_get_type">
+      <doc xml:whitespace="preserve">An opaque structure representing an onscreen drawable. Pointers to structures
+of type #GdkPixmap, #GdkBitmap, and #GdkWindow can often be used
+interchangeably. The type #GdkDrawable refers generically to any of these
+types.</doc>
+      <method name="add_filter"
+              c:identifier="gdk_window_add_filter"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds an event filter to @window, allowing you to intercept events
+before they reach GDK. This is a low-level operation and makes it
+easy to break GDK and/or GTK+, so you have to know what you're
+doing. Pass %NULL for @window to get all events for all windows,
+instead of events for a specific window.
+See gdk_display_add_client_message_filter() if you are interested
+in X ClientMessage events.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="function" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">filter callback</doc>
+            <type name="FilterFunc" c:type="GdkFilterFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to filter callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="beep" c:identifier="gdk_window_beep" version="2.12">
+        <doc xml:whitespace="preserve">Emits a short beep associated to @window in the appropriate
+display, if supported. Otherwise, emits a short beep on
+the display just as gdk_display_beep().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="begin_move_drag" c:identifier="gdk_window_begin_move_drag">
+        <doc xml:whitespace="preserve">Begins a window move operation (for a toplevel window).  You might
+use this function to implement a "window move grip," for
+example. The function works best with window managers that support
+the &lt;ulink url="http://www.freedesktop.org/Standards/wm-spec"&gt;Extended 
+Window Manager Hints&lt;/ulink&gt;, but has a fallback implementation for
+other window managers.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="button" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the button being used to drag</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="root_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">root window X coordinate of mouse click that began the drag</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="root_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">root window Y coordinate of mouse click that began the drag</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">timestamp of mouse click that began the drag</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="begin_paint_rect"
+              c:identifier="gdk_window_begin_paint_rect">
+        <doc xml:whitespace="preserve">A convenience wrapper around gdk_window_begin_paint_region() which
+creates a rectangular region for you. See
+gdk_window_begin_paint_region() for details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rectangle" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle you intend to draw to</doc>
+            <type name="Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="begin_paint_region"
+              c:identifier="gdk_window_begin_paint_region">
+        <doc xml:whitespace="preserve">Indicates that you are beginning the process of redrawing @region.
+A backing store (offscreen buffer) large enough to contain @region
+will be created. The backing store will be initialized with the
+background color or background pixmap for @window. Then, all
+drawing operations performed on @window will be diverted to the
+backing store.  When you call gdk_window_end_paint(), the backing
+store will be copied to @window, making it visible onscreen. Only
+the part of @window contained in @region will be modified; that is,
+drawing operations are clipped to @region.
+The net result of all this is to remove flicker, because the user
+sees the finished product appear all at once when you call
+gdk_window_end_paint(). If you draw to @window directly without
+calling gdk_window_begin_paint_region(), the user may see flicker
+as individual drawing operations are performed in sequence.  The
+clipping and background-initializing features of
+gdk_window_begin_paint_region() are conveniences for the
+programmer, so you can avoid doing that work yourself.
+When using GTK+, the widget system automatically places calls to
+gdk_window_begin_paint_region() and gdk_window_end_paint() around
+emissions of the expose_event signal. That is, if you're writing an
+expose event handler, you can assume that the exposed area in
+#GdkEventExpose has already been cleared to the window background,
+is already set as the clip region, and already has a backing store.
+Therefore in most cases, application code need not call
+gdk_window_begin_paint_region(). (You can disable the automatic
+calls around expose events on a widget-by-widget basis by calling
+gtk_widget_set_double_buffered().)
+If you call this function multiple times before calling the
+matching gdk_window_end_paint(), the backing stores are pushed onto
+a stack. gdk_window_end_paint() copies the topmost backing store
+onscreen, subtracts the topmost region from all other regions in
+the stack, and pops the stack. All drawing operations affect only
+the topmost backing store in the stack. One matching call to
+gdk_window_end_paint() is required for each call to
+gdk_window_begin_paint_region().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="region" transfer-ownership="none">
+            <doc xml:whitespace="preserve">region you intend to draw to</doc>
+            <type name="cairo.Region" c:type="cairo_region_t*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="begin_resize_drag"
+              c:identifier="gdk_window_begin_resize_drag">
+        <doc xml:whitespace="preserve">Begins a window resize operation (for a toplevel window).
+You might use this function to implement a "window resize grip," for
+example; in fact #GtkStatusbar uses it. The function works best
+with window managers that support the &lt;ulink url="http://www.freedesktop.org/Standards/wm-spec"&gt;Extended Window Manager Hints&lt;/ulink&gt;, but has a 
+fallback implementation for other window managers.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="edge" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the edge or corner from which the drag is started</doc>
+            <type name="WindowEdge" c:type="GdkWindowEdge"/>
+          </parameter>
+          <parameter name="button" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the button being used to drag</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="root_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">root window X coordinate of mouse click that began the drag</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="root_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">root window Y coordinate of mouse click that began the drag</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">timestamp of mouse click that began the drag (use gdk_event_get_time())</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear" c:identifier="gdk_window_clear">
+        <doc xml:whitespace="preserve">Clears an entire @window to the background color or background pixmap.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="clear_area" c:identifier="gdk_window_clear_area">
+        <doc xml:whitespace="preserve">Clears an area of @window to the background color or background pixmap.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x coordinate of rectangle to clear</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y coordinate of rectangle to clear</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width of rectangle to clear</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height of rectangle to clear</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear_area_e" c:identifier="gdk_window_clear_area_e">
+        <doc xml:whitespace="preserve">Like gdk_window_clear_area(), but also generates an expose event for
+the cleared area.
+This function has a stupid name because it dates back to the mists
+time, pre-GDK-1.0.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x coordinate of rectangle to clear</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y coordinate of rectangle to clear</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width of rectangle to clear</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height of rectangle to clear</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="configure_finished"
+              c:identifier="gdk_window_configure_finished"
+              version="2.6">
+        <doc xml:whitespace="preserve">Signal to the window system that the application has finished
+handling Configure events it has received. Window Managers can
+use this to better synchronize the frame repaint with the
+application. GTK+ applications will automatically call this
+function when appropriate.
+This function can only be called if gdk_window_enable_synchronized_configure()
+was called previously.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="coords_from_parent"
+              c:identifier="gdk_window_coords_from_parent"
+              version="2.22">
+        <doc xml:whitespace="preserve">Transforms window coordinates from a parent window to a child
+window, where the parent window is the normal parent as returned by
+gdk_window_get_parent() for normal windows, and the window's
+embedder as returned by gdk_offscreen_window_get_embedder() for
+offscreen windows.
+For normal windows, calling this function is equivalent to subtracting
+the return values of gdk_window_get_position() from the parent coordinates.
+For offscreen windows however (which can be arbitrarily transformed),
+the coordinates.
+You should always use this function when writing generic code that
+walks down a window hierarchy.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate in parent's coordinate system</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="parent_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate in parent's coordinate system</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for X coordinate in child's coordinate system</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for Y coordinate in child's coordinate system</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="coords_to_parent"
+              c:identifier="gdk_window_coords_to_parent"
+              version="2.22">
+        <doc xml:whitespace="preserve">Transforms window coordinates from a child window to its parent
+window, where the parent window is the normal parent as returned by
+gdk_window_get_parent() for normal windows, and the window's
+embedder as returned by gdk_offscreen_window_get_embedder() for
+offscreen windows.
+For normal windows, calling this function is equivalent to adding
+the return values of gdk_window_get_position() to the child coordinates.
+For offscreen windows however (which can be arbitrarily transformed),
+the coordinates.
+You should always use this function when writing generic code that
+walks up a window hierarchy.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate in child's coordinate system</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate in child's coordinate system</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="parent_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for X coordinate in parent's coordinate system, or %NULL</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="parent_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for Y coordinate in parent's coordinate system, or %NULL</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_similar_surface"
+              c:identifier="gdk_window_create_similar_surface"
+              version="2.22">
+        <doc xml:whitespace="preserve">Create a new surface that is as compatible as possible with the
+given @window. For example the new surface will have the same
+fallback resolution and font options as @window. Generally, the new
+surface will also use the same backend as @window, unless that is
+not possible for some reason. The type of the returned surface may
+be examined with cairo_surface_get_type().
+Initially the surface contents are all 0 (transparent if contents
+have transparency, black otherwise.)
+owns the surface and should call cairo_surface_destroy() when done
+with it.
+This function always returns a valid pointer, but it will return a
+pointer to a "nil" surface if @other is already in an error state
+or any other error occurs.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the newly allocated surface. The caller</doc>
+          <type name="cairo.Surface" c:type="cairo_surface_t*"/>
+        </return-value>
+        <parameters>
+          <parameter name="content" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the content for the new surface</doc>
+            <type name="cairo.Content" c:type="cairo_content_t"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width of the new surface</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height of the new surface</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="deiconify" c:identifier="gdk_window_deiconify">
+        <doc xml:whitespace="preserve">Attempt to deiconify (unminimize) @window. On X11 the window manager may
+choose to ignore the request to deiconify. When using GTK+,
+use gtk_window_deiconify() instead of the #GdkWindow variant. Or better yet,
+you probably want to use gtk_window_present(), which raises the window, focuses it,
+unminimizes it, and puts it on the current desktop.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="destroy" c:identifier="gdk_window_destroy">
+        <doc xml:whitespace="preserve">Destroys the window system resources associated with @window and decrements @window's
+reference count. The window system resources for all children of @window are also
+destroyed, but the children's reference counts are not decremented.
+Note that a window will not be destroyed automatically when its reference count
+reaches zero. You must call this function yourself before that happens.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="destroy_notify" c:identifier="gdk_window_destroy_notify">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="enable_synchronized_configure"
+              c:identifier="gdk_window_enable_synchronized_configure"
+              version="2.6">
+        <doc xml:whitespace="preserve">Indicates that the application will cooperate with the window
+system in synchronizing the window repaint with the window
+manager during resizing operations. After an application calls
+this function, it must call gdk_window_configure_finished() every
+time it has finished all processing associated with a set of
+Configure events. Toplevel GTK+ windows automatically use this
+protocol.
+On X, calling this function makes @window participate in the
+_NET_WM_SYNC_REQUEST window manager protocol.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="end_paint" c:identifier="gdk_window_end_paint">
+        <doc xml:whitespace="preserve">Indicates that the backing store created by the most recent call to
+gdk_window_begin_paint_region() should be copied onscreen and
+deleted, leaving the next-most-recent backing store or no backing
+store at all as the active paint region. See
+gdk_window_begin_paint_region() for full details. It is an error to
+call this function without a matching
+gdk_window_begin_paint_region() first.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="ensure_native"
+              c:identifier="gdk_window_ensure_native"
+              version="2.18">
+        <doc xml:whitespace="preserve">Tries to ensure that there is a window-system native window for this
+GdkWindow. This may fail in some situations, returning %FALSE.
+Offscreen window and children of them can never have native windows.
+Some backends may not support native child windows.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the window has a native window, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="flush" c:identifier="gdk_window_flush" version="2.18">
+        <doc xml:whitespace="preserve">Flush all outstanding cached operations on a window, leaving the
+window in a state which reflects all that has been drawn before.
+Gdk uses multiple kinds of caching to get better performance and
+nicer drawing. For instance, during exposes all paints to a window
+using double buffered rendering are keep on a pixmap until the last
+window has been exposed. It also delays window moves/scrolls until
+as long as possible until next update to avoid tearing when moving
+windows.
+Normally this should be completely invisible to applications, as
+we automatically flush the windows when required, but this might
+be needed if you for instance mix direct native drawing with
+gdk drawing. For Gtk widgets that don't use double buffering this
+will be called automatically before sending the expose event.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="focus" c:identifier="gdk_window_focus">
+        <doc xml:whitespace="preserve">Sets keyboard focus to @window. In most cases, gtk_window_present() 
+should be used on a #GtkWindow, rather than calling this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">timestamp of the event triggering the window focus</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="freeze_toplevel_updates_libgtk_only"
+              c:identifier="gdk_window_freeze_toplevel_updates_libgtk_only">
+        <doc xml:whitespace="preserve">Temporarily freezes a window and all its descendants such that it won't
+receive expose events.  The window will begin receiving expose events
+again when gdk_window_thaw_toplevel_updates_libgtk_only() is called. If
+gdk_window_freeze_toplevel_updates_libgtk_only()
+has been called more than once,
+gdk_window_thaw_toplevel_updates_libgtk_only() must be called
+an equal number of times to begin processing exposes.
+This function is not part of the GDK public API and is only
+for use by GTK+.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="freeze_updates" c:identifier="gdk_window_freeze_updates">
+        <doc xml:whitespace="preserve">Temporarily freezes a window such that it won't receive expose
+events.  The window will begin receiving expose events again when
+gdk_window_thaw_updates() is called. If gdk_window_freeze_updates()
+has been called more than once, gdk_window_thaw_updates() must be called
+an equal number of times to begin processing exposes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="fullscreen"
+              c:identifier="gdk_window_fullscreen"
+              version="2.2">
+        <doc xml:whitespace="preserve">Moves the window into fullscreen mode. This means the
+window covers the entire screen and is above any panels
+or task bars.
+If the window was already fullscreen, then this function does nothing.
+On X11, asks the window manager to put @window in a fullscreen
+state, if the window manager supports this operation. Not all
+window managers support this, and some deliberately ignore it or
+don't have a concept of "fullscreen"; so you can't rely on the
+fullscreenification actually happening. But it will happen with
+most standard window managers, and GDK makes a best effort to get
+it to happen.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="geometry_changed"
+              c:identifier="gdk_window_geometry_changed"
+              version="2.18">
+        <doc xml:whitespace="preserve">This function informs GDK that the geometry of an embedded
+offscreen window has changed. This is necessary for GDK to keep
+track of which offscreen window the pointer is in.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_accept_focus"
+              c:identifier="gdk_window_get_accept_focus"
+              version="2.22">
+        <doc xml:whitespace="preserve">Determines whether or not the desktop environment shuld be hinted that
+the window does not want to receive input focus.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether or not the window should receive input focus.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_background_pattern"
+              c:identifier="gdk_window_get_background_pattern"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the pattern used to clear the background on @window. If @window
+does not have its own background and reuses the parent's, %NULL is
+returned and you'll have to query it yourself.
+parent's background.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The pattern to use for the background or %NULL to use the</doc>
+          <type name="cairo.Pattern" c:type="cairo_pattern_t*"/>
+        </return-value>
+      </method>
+      <method name="get_children" c:identifier="gdk_window_get_children">
+        <doc xml:whitespace="preserve">Gets the list of children of @window known to GDK.
+This function only returns children created via GDK,
+so for example it's useless when used with the root window;
+it only returns windows an application created itself.
+The returned list must be freed, but the elements in the
+list need not be.
+list of child windows inside @window</doc>
+        <return-value transfer-ownership="container">
+          <type name="GLib.List" c:type="GList*">
+            <type name="Window"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_composited"
+              c:identifier="gdk_window_get_composited"
+              version="2.22">
+        <doc xml:whitespace="preserve">Determines whether @window is composited.
+See gdk_window_set_composited().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the window is composited.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_cursor"
+              c:identifier="gdk_window_get_cursor"
+              version="2.18">
+        <doc xml:whitespace="preserve">Retrieves a #GdkCursor pointer for the cursor currently set on the
+specified #GdkWindow, or %NULL.  If the return value is %NULL then
+there is no custom cursor set on the specified window, and it is
+using the cursor for its parent window.
+by the #GdkWindow and should not be unreferenced directly. Use
+gdk_window_set_cursor() to unset the cursor of the window</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GdkCursor, or %NULL. The returned object is owned</doc>
+          <type name="Cursor" c:type="GdkCursor*"/>
+        </return-value>
+      </method>
+      <method name="get_decorations" c:identifier="gdk_window_get_decorations">
+        <doc xml:whitespace="preserve">Returns the decorations set on the GdkWindow with
+gdk_window_set_decorations().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the window has decorations set, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="decorations" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The window decorations will be written here</doc>
+            <type name="WMDecoration" c:type="GdkWMDecoration*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_device_cursor"
+              c:identifier="gdk_window_get_device_cursor"
+              version="3.0">
+        <doc xml:whitespace="preserve">Retrieves a #GdkCursor pointer for the @device currently set on the
+specified #GdkWindow, or %NULL.  If the return value is %NULL then
+there is no custom cursor set on the specified window, and it is
+using the cursor for its parent window.
+by the #GdkWindow and should not be unreferenced directly. Use
+gdk_window_set_cursor() to unset the cursor of the window</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GdkCursor, or %NULL. The returned object is owned</doc>
+          <type name="Cursor" c:type="GdkCursor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkDevice.</doc>
+            <type name="Device" c:type="GdkDevice*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_device_events"
+              c:identifier="gdk_window_get_device_events"
+              version="3.0">
+        <doc xml:whitespace="preserve">Returns the event mask for @window corresponding to an specific device.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">device event mask for @window</doc>
+          <type name="EventMask" c:type="GdkEventMask"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkDevice.</doc>
+            <type name="Device" c:type="GdkDevice*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_device_position"
+              c:identifier="gdk_window_get_device_position"
+              version="3.0">
+        <doc xml:whitespace="preserve">Obtains the current device position and modifier state.
+The position is given in coordinates relative to the upper left
+corner of @window.
+gdk_display_get_window_at_device_position()), or %NULL if the
+window is not known to GDK.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The window underneath @device (as with</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GdkDevice to query to.</doc>
+            <type name="Device" c:type="GdkDevice*"/>
+          </parameter>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the X coordinate of @device, or %NULL.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the Y coordinate of @device, or %NULL.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="mask"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the modifier mask, or %NULL.</doc>
+            <type name="ModifierType" c:type="GdkModifierType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_effective_parent"
+              c:identifier="gdk_window_get_effective_parent"
+              version="2.22">
+        <doc xml:whitespace="preserve">Obtains the parent of @window, as known to GDK. Works like
+gdk_window_get_parent() for normal windows, but returns the
+window's embedder for offscreen windows.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">effective parent of @window</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_effective_toplevel"
+              c:identifier="gdk_window_get_effective_toplevel"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the toplevel window that's an ancestor of @window.
+Works like gdk_window_get_toplevel(), but treats an offscreen window's
+embedder as its parent, using gdk_window_get_effective_parent().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the effective toplevel window containing @window</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_events" c:identifier="gdk_window_get_events">
+        <doc xml:whitespace="preserve">Gets the event mask for @window for all master input devices. See
+gdk_window_set_events().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">event mask for @window</doc>
+          <type name="EventMask" c:type="GdkEventMask"/>
+        </return-value>
+      </method>
+      <method name="get_focus_on_map"
+              c:identifier="gdk_window_get_focus_on_map"
+              version="2.22">
+        <doc xml:whitespace="preserve">Determines whether or not the desktop environment should be hinted that the
+window does not want to receive input focus when it is mapped.
+it is mapped.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether or not the window wants to receive input focus when</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_frame_extents"
+              c:identifier="gdk_window_get_frame_extents">
+        <doc xml:whitespace="preserve">Obtains the bounding box of the window, including window manager
+titlebar/borders if any. The frame position is given in root window
+coordinates. To get the position of the window itself (rather than
+the frame) in root window coordinates, use gdk_window_get_origin().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle to fill with bounding box of the window frame</doc>
+            <type name="Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_geometry" c:identifier="gdk_window_get_geometry">
+        <doc xml:whitespace="preserve">Any of the return location arguments to this function may be %NULL,
+if you aren't interested in getting the value of that field.
+The X and Y coordinates returned are relative to the parent window
+of @window, which for toplevels usually means relative to the
+window decorations (titlebar, etc.) rather than relative to the
+root window (screen-size background window).
+On the X11 platform, the geometry is obtained from the X server,
+so reflects the latest position of @window; this may be out-of-sync
+with the position of @window delivered in the most-recently-processed
+#GdkEventConfigure. gdk_window_get_position() in contrast gets the
+position from the most recent configure event.
+&lt;note&gt;
+If @window is not a toplevel, it is &lt;emphasis&gt;much&lt;/emphasis&gt; better
+to call gdk_window_get_position() and gdk_drawable_get_size() instead,
+because it avoids the roundtrip to the X server and because
+gdk_drawable_get_size() supports the full 32-bit coordinate space,
+whereas gdk_window_get_geometry() is restricted to the 16-bit
+coordinates of X11.
+&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for X coordinate of window (relative to its parent)</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for Y coordinate of window (relative to its parent)</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for width of window</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for height of window</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="depth" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for bit depth of window</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_group"
+              c:identifier="gdk_window_get_group"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the group leader window for @window. See gdk_window_set_group().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the group leader window for @window</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_internal_paint_info"
+              c:identifier="gdk_window_get_internal_paint_info">
+        <doc xml:whitespace="preserve">If you bypass the GDK layer and use windowing system primitives to
+draw directly onto a #GdkWindow, then you need to deal with two
+system coordinates, and GDK may have redirected drawing to a offscreen
+pixmap as the result of a gdk_window_begin_paint_region() calls.
+This function allows retrieving the information you need to compensate
+for these effects.
+This function exposes details of the GDK implementation, and is thus
+likely to change in future releases of GDK.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="real_drawable"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location to store the drawable to which drawing should be done.</doc>
+            <type name="Drawable" c:type="GdkDrawable**"/>
+          </parameter>
+          <parameter name="x_offset"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location to store the X offset between coordinates in @window, and the underlying window system primitive coordinates for *@real_drawable.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y_offset"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location to store the Y offset between coordinates in @window, and the underlying window system primitive coordinates for *@real_drawable.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_modal_hint"
+              c:identifier="gdk_window_get_modal_hint"
+              version="2.22">
+        <doc xml:whitespace="preserve">Determines whether or not the window manager is hinted that @window
+has modal behaviour.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether or not the window has the modal hint set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_origin" c:identifier="gdk_window_get_origin">
+        <doc xml:whitespace="preserve">Obtains the position of a window in root window coordinates.
+(Compare with gdk_window_get_position() and
+gdk_window_get_geometry() which return the position of a window
+relative to its parent window.)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">not meaningful, ignore</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for X coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for Y coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_parent" c:identifier="gdk_window_get_parent">
+        <doc xml:whitespace="preserve">Obtains the parent of @window, as known to GDK. Does not query the
+X server; thus this returns the parent as passed to gdk_window_new(),
+not the actual parent. This should never matter unless you're using
+Xlib calls mixed with GDK calls on the X11 platform. It may also
+matter for toplevel windows, because the window manager may choose
+to reparent them.
+Note that you should use gdk_window_get_effective_parent() when
+writing generic code that walks up a window hierarchy, because
+gdk_window_get_parent() will most likely not do what you expect if
+there are offscreen windows in the hierarchy.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">parent of @window</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_pointer"
+              c:identifier="gdk_window_get_pointer"
+              deprecated="Use gdk_window_get_device_position() instead."
+              deprecated-version="3.0">
+        <doc xml:whitespace="preserve">Obtains the current pointer position and modifier state.
+The position is given in coordinates relative to the upper left
+corner of @window.
+gdk_window_at_pointer()), or %NULL if the window containing the
+pointer isn't known to GDK</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the window containing the pointer (as with</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for X coordinate of pointer or %NULL to not return the X coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for Y coordinate of pointer or %NULL to not return the Y coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="mask"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for modifier mask or %NULL to not return the modifier mask</doc>
+            <type name="ModifierType" c:type="GdkModifierType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_position" c:identifier="gdk_window_get_position">
+        <doc xml:whitespace="preserve">Obtains the position of the window as reported in the
+most-recently-processed #GdkEventConfigure. Contrast with
+gdk_window_get_geometry() which queries the X server for the
+current window position, regardless of which events have been
+received or processed.
+The position coordinates are relative to the window's parent window.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of window</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of window</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_root_coords"
+              c:identifier="gdk_window_get_root_coords"
+              version="2.18">
+        <doc xml:whitespace="preserve">Obtains the position of a window position in root
+window coordinates. This is similar to
+gdk_window_get_origin() but allows you go pass
+in any position in the window, not just the origin.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate in window</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate in window</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="root_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for X coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="root_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for Y coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_root_origin" c:identifier="gdk_window_get_root_origin">
+        <doc xml:whitespace="preserve">Obtains the top-left corner of the window manager frame in root
+window coordinates.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for X position of window frame</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for Y position of window frame</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_state" c:identifier="gdk_window_get_state">
+        <doc xml:whitespace="preserve">Gets the bitwise OR of the currently active window state flags,
+from the #GdkWindowState enumeration.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">window state bitfield</doc>
+          <type name="WindowState" c:type="GdkWindowState"/>
+        </return-value>
+      </method>
+      <method name="get_support_multidevice"
+              c:identifier="gdk_window_get_support_multidevice"
+              version="3.0">
+        <doc xml:whitespace="preserve">Returns %TRUE if the window is aware of the existence of multiple
+devices.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the window handles multidevice features.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_toplevel" c:identifier="gdk_window_get_toplevel">
+        <doc xml:whitespace="preserve">Gets the toplevel window that's an ancestor of @window.
+Any window type but %GDK_WINDOW_CHILD is considered a
+toplevel window, as is a %GDK_WINDOW_CHILD window that
+has a root window as parent.
+Note that you should use gdk_window_get_effective_toplevel() when
+you want to get to a window's toplevel as seen on screen, because
+gdk_window_get_toplevel() will most likely not do what you expect
+if there are offscreen windows in the hierarchy.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the toplevel window containing @window</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_type_hint"
+              c:identifier="gdk_window_get_type_hint"
+              version="2.10">
+        <doc xml:whitespace="preserve">This function returns the type hint set for a window.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The type hint set for @window</doc>
+          <type name="WindowTypeHint" c:type="GdkWindowTypeHint"/>
+        </return-value>
+      </method>
+      <method name="get_update_area" c:identifier="gdk_window_get_update_area">
+        <doc xml:whitespace="preserve">Transfers ownership of the update area from @window to the caller
+of the function. That is, after calling this function, @window will
+no longer have an invalid/dirty region; the update area is removed
+from @window and handed to you. If a window has no update area,
+gdk_window_get_update_area() returns %NULL. You are responsible for
+calling cairo_region_destroy() on the returned region if it's non-%NULL.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the update area for @window</doc>
+          <type name="cairo.Region" c:type="cairo_region_t*"/>
+        </return-value>
+      </method>
+      <method name="get_user_data" c:identifier="gdk_window_get_user_data">
+        <doc xml:whitespace="preserve">Retrieves the user data for @window, which is normally the widget
+that @window belongs to. See gdk_window_set_user_data().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for user data</doc>
+            <type name="gpointer" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_window_type" c:identifier="gdk_window_get_window_type">
+        <doc xml:whitespace="preserve">Gets the type of the window. See #GdkWindowType.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">type of window</doc>
+          <type name="WindowType" c:type="GdkWindowType"/>
+        </return-value>
+      </method>
+      <method name="has_native"
+              c:identifier="gdk_window_has_native"
+              version="2.22">
+        <doc xml:whitespace="preserve">Checks whether the window has a native window or not. Note that
+you can use gdk_window_ensure_native() if a native window is needed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the %window has a native window, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="hide" c:identifier="gdk_window_hide">
+        <doc xml:whitespace="preserve">For toplevel windows, withdraws them, so they will no longer be
+known to the window manager; for all windows, unmaps them, so
+they won't be displayed. Normally done automatically as
+part of gtk_widget_hide().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="iconify" c:identifier="gdk_window_iconify">
+        <doc xml:whitespace="preserve">Asks to iconify (minimize) @window. The window manager may choose
+to ignore the request, but normally will honor it. Using
+gtk_window_iconify() is preferred, if you have a #GtkWindow widget.
+This function only makes sense when @window is a toplevel window.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="input_shape_combine_mask"
+              c:identifier="gdk_window_input_shape_combine_mask"
+              version="2.10">
+        <doc xml:whitespace="preserve">Like gdk_window_shape_combine_mask(), but the shape applies
+only to event handling. Mouse events which happen while
+the pointer position corresponds to an unset bit in the
+mask will be passed on the window below @window.
+An input shape is typically used with RGBA windows.
+The alpha channel of the window defines which pixels are
+invisible and allows for nicely antialiased borders,
+and the input shape controls where the window is
+"clickable".
+On the X11 platform, this requires version 1.1 of the
+shape extension.
+On the Win32 platform, this functionality is not present and the
+function does nothing.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mask" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">shape mask, or %NULL</doc>
+            <type name="Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X position of shape mask with respect to @window</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y position of shape mask with respect to @window</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="input_shape_combine_region"
+              c:identifier="gdk_window_input_shape_combine_region"
+              version="2.10">
+        <doc xml:whitespace="preserve">Like gdk_window_shape_combine_region(), but the shape applies
+only to event handling. Mouse events which happen while
+the pointer position corresponds to an unset bit in the
+mask will be passed on the window below @window.
+An input shape is typically used with RGBA windows.
+The alpha channel of the window defines which pixels are
+invisible and allows for nicely antialiased borders,
+and the input shape controls where the window is
+"clickable".
+On the X11 platform, this requires version 1.1 of the
+shape extension.
+On the Win32 platform, this functionality is not present and the
+function does nothing.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="shape_region" transfer-ownership="none">
+            <doc xml:whitespace="preserve">region of window to be non-transparent</doc>
+            <type name="cairo.Region" c:type="cairo_region_t*"/>
+          </parameter>
+          <parameter name="offset_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X position of @shape_region in @window coordinates</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="offset_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y position of @shape_region in @window coordinates</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="invalidate_maybe_recurse"
+              c:identifier="gdk_window_invalidate_maybe_recurse">
+        <doc xml:whitespace="preserve">Adds @region to the update area for @window. The update area is the
+region that needs to be redrawn, or "dirty region." The call
+gdk_window_process_updates() sends one or more expose events to the
+window, which together cover the entire update area. An
+application would normally redraw the contents of @window in
+response to those expose events.
+GDK will call gdk_window_process_all_updates() on your behalf
+whenever your program returns to the main loop and becomes idle, so
+normally there's no need to do that manually, you just need to
+invalidate regions that you know should be redrawn.
+The @child_func parameter controls whether the region of
+each child window that intersects @region will also be invalidated.
+Only children for which @child_func returns TRUE will have the area
+invalidated.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="region" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #cairo_region_t</doc>
+            <type name="cairo.Region" c:type="cairo_region_t*"/>
+          </parameter>
+          <parameter name="child_func" transfer-ownership="none">
+            <doc xml:whitespace="preserve">function to use to decide if to recurse to a child, %NULL means never recurse.</doc>
+            <type name="gpointer" c:type="gpointer*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data passed to @child_func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="invalidate_rect" c:identifier="gdk_window_invalidate_rect">
+        <doc xml:whitespace="preserve">A convenience wrapper around gdk_window_invalidate_region() which
+invalidates a rectangular region. See
+gdk_window_invalidate_region() for details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rect" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">rectangle to invalidate or %NULL to invalidate the whole window</doc>
+            <type name="Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="invalidate_children" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to also invalidate child windows</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="invalidate_region"
+              c:identifier="gdk_window_invalidate_region">
+        <doc xml:whitespace="preserve">Adds @region to the update area for @window. The update area is the
+region that needs to be redrawn, or "dirty region." The call
+gdk_window_process_updates() sends one or more expose events to the
+window, which together cover the entire update area. An
+application would normally redraw the contents of @window in
+response to those expose events.
+GDK will call gdk_window_process_all_updates() on your behalf
+whenever your program returns to the main loop and becomes idle, so
+normally there's no need to do that manually, you just need to
+invalidate regions that you know should be redrawn.
+The @invalidate_children parameter controls whether the region of
+each child window that intersects @region will also be invalidated.
+If %FALSE, then the update area for child windows will remain
+unaffected. See gdk_window_invalidate_maybe_recurse if you need
+fine grained control over which children are invalidated.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="region" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #cairo_region_t</doc>
+            <type name="cairo.Region" c:type="cairo_region_t*"/>
+          </parameter>
+          <parameter name="invalidate_children" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to also invalidate child windows</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_destroyed"
+              c:identifier="gdk_window_is_destroyed"
+              version="2.18">
+        <doc xml:whitespace="preserve">Check to see if a window is destroyed..</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the window is destroyed</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_input_only"
+              c:identifier="gdk_window_is_input_only"
+              version="2.22">
+        <doc xml:whitespace="preserve">Determines whether or not the window is an input only window.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @window is input only</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_shaped"
+              c:identifier="gdk_window_is_shaped"
+              version="2.22">
+        <doc xml:whitespace="preserve">Determines whether or not the window is shaped.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @window is shaped</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_viewable" c:identifier="gdk_window_is_viewable">
+        <doc xml:whitespace="preserve">Check if the window and all ancestors of the window are
+mapped. (This is not necessarily "viewable" in the X sense, since
+we only check as far as we have GDK window parents, not to the root
+window.)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the window is viewable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_visible" c:identifier="gdk_window_is_visible">
+        <doc xml:whitespace="preserve">Checks whether the window has been mapped (with gdk_window_show() or
+gdk_window_show_unraised()).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the window is mapped</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="lower" c:identifier="gdk_window_lower">
+        <doc xml:whitespace="preserve">Lowers @window to the bottom of the Z-order (stacking order), so that
+other windows with the same parent window appear above @window.
+This is true whether or not the other windows are visible.
+If @window is a toplevel, the window manager may choose to deny the
+request to move the window in the Z-order, gdk_window_lower() only
+requests the restack, does not guarantee it.
+Note that gdk_window_show() raises the window again, so don't call this
+function before gdk_window_show(). (Try gdk_window_show_unraised().)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="maximize" c:identifier="gdk_window_maximize">
+        <doc xml:whitespace="preserve">Maximizes the window. If the window was already maximized, then
+this function does nothing.
+On X11, asks the window manager to maximize @window, if the window
+manager supports this operation. Not all window managers support
+this, and some deliberately ignore it or don't have a concept of
+"maximized"; so you can't rely on the maximization actually
+happening. But it will happen with most standard window managers,
+and GDK makes a best effort to get it to happen.
+On Windows, reliably maximizes the window.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="merge_child_input_shapes"
+              c:identifier="gdk_window_merge_child_input_shapes"
+              version="2.10">
+        <doc xml:whitespace="preserve">Merges the input shape masks for any child windows into the
+input shape mask for @window. i.e. the union of all input masks
+for @window and its children will become the new input mask
+for @window. See gdk_window_input_shape_combine_mask().
+This function is distinct from gdk_window_set_child_input_shapes()
+because it includes @window's input shape mask in the set of
+shapes to be merged.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="merge_child_shapes"
+              c:identifier="gdk_window_merge_child_shapes">
+        <doc xml:whitespace="preserve">Merges the shape masks for any child windows into the
+shape mask for @window. i.e. the union of all masks
+for @window and its children will become the new mask
+for @window. See gdk_window_shape_combine_mask().
+This function is distinct from gdk_window_set_child_shapes()
+because it includes @window's shape mask in the set of shapes to
+be merged.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="move" c:identifier="gdk_window_move">
+        <doc xml:whitespace="preserve">Repositions a window relative to its parent window.
+For toplevel windows, window managers may ignore or modify the move;
+you should probably use gtk_window_move() on a #GtkWindow widget
+anyway, instead of using GDK functions. For child windows,
+the move will reliably succeed.
+If you're also planning to resize the window, use gdk_window_move_resize()
+to both move and resize simultaneously, for a nicer visual effect.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate relative to window's parent</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate relative to window's parent</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_region"
+              c:identifier="gdk_window_move_region"
+              version="2.8">
+        <doc xml:whitespace="preserve">Move the part of @window indicated by @region by @dy pixels in the Y
+direction and @dx pixels in the X direction. The portions of @region
+that not covered by the new position of @region are invalidated.
+Child windows are not moved.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="region" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #cairo_region_t to move</doc>
+            <type name="cairo.Region" c:type="cairo_region_t*"/>
+          </parameter>
+          <parameter name="dx" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Amount to move in the X direction</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="dy" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Amount to move in the Y direction</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_resize" c:identifier="gdk_window_move_resize">
+        <doc xml:whitespace="preserve">Equivalent to calling gdk_window_move() and gdk_window_resize(),
+except that both operations are performed at once, avoiding strange
+visual effects. (i.e. the user may be able to see the window first
+move, then resize, if you don't use gdk_window_move_resize().)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new X position relative to window's parent</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new Y position relative to window's parent</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new width</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new height</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="new" c:identifier="gdk_window_new">
+        <doc xml:whitespace="preserve">Creates a new #GdkWindow using the attributes from
+display, @parent must be specified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new #GdkWindow</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">attributes of the new window</doc>
+            <type name="WindowAttr" c:type="GdkWindowAttr*"/>
+          </parameter>
+          <parameter name="attributes_mask" transfer-ownership="none">
+            <doc xml:whitespace="preserve">mask indicating which fields in @attributes are valid</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_children" c:identifier="gdk_window_peek_children">
+        <doc xml:whitespace="preserve">Like gdk_window_get_children(), but does not copy the list of
+children, so the list does not need to be freed.
+a reference to the list of child windows in @window</doc>
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="Window"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="process_updates" c:identifier="gdk_window_process_updates">
+        <doc xml:whitespace="preserve">Sends one or more expose events to @window. The areas in each
+expose event will cover the entire update area for the window (see
+gdk_window_invalidate_region() for details). Normally GDK calls
+gdk_window_process_all_updates() on your behalf, so there's no
+need to call this function unless you want to force expose events
+to be delivered immediately and synchronously (vs. the usual
+case, where GDK delivers them in an idle handler). Occasionally
+this is useful to produce nicer scrolling behavior, for example.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="update_children" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to also process updates for child windows</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="raise" c:identifier="gdk_window_raise">
+        <doc xml:whitespace="preserve">Raises @window to the top of the Z-order (stacking order), so that
+other windows with the same parent window appear below @window.
+This is true whether or not the windows are visible.
+If @window is a toplevel, the window manager may choose to deny the
+request to move the window in the Z-order, gdk_window_raise() only
+requests the restack, does not guarantee it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="redirect_to_drawable"
+              c:identifier="gdk_window_redirect_to_drawable"
+              version="2.14">
+        <doc xml:whitespace="preserve">Redirects drawing into @window so that drawing to the
+window in the rectangle specified by @src_x, @src_y,
+Only drawing between gdk_window_begin_paint_region() or
+gdk_window_begin_paint_rect() and gdk_window_end_paint() is
+redirected.
+Redirection is active until gdk_window_remove_redirection()
+is called.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="drawable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkDrawable</doc>
+            <type name="Drawable" c:type="GdkDrawable*"/>
+          </parameter>
+          <parameter name="src_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x position in @window</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="src_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y position in @window</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="dest_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x position in @drawable</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="dest_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y position in @drawable</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width of redirection, or -1 to use the width of @window</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height of redirection or -1 to use the height of @window</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="register_dnd" c:identifier="gdk_window_register_dnd">
+        <doc xml:whitespace="preserve">Registers a window as a potential drop destination.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="remove_filter"
+              c:identifier="gdk_window_remove_filter"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Remove a filter previously added with gdk_window_add_filter().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="function" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">previously-added filter function</doc>
+            <type name="FilterFunc" c:type="GdkFilterFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data for previously-added filter function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_redirection"
+              c:identifier="gdk_window_remove_redirection"
+              version="2.14">
+        <doc xml:whitespace="preserve">Removes any active redirection started by
+gdk_window_redirect_to_drawable().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="reparent" c:identifier="gdk_window_reparent">
+        <doc xml:whitespace="preserve">Reparents @window into the given @new_parent. The window being
+reparented will be unmapped as a side effect.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_parent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new parent to move @window into</doc>
+            <type name="Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X location inside the new parent</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y location inside the new parent</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="resize" c:identifier="gdk_window_resize">
+        <doc xml:whitespace="preserve">Resizes @window; for toplevel windows, asks the window manager to resize
+the window. The window manager may not allow the resize. When using GTK+,
+use gtk_window_resize() instead of this low-level GDK function.
+Windows may not be resized below 1x1.
+If you're also planning to move the window, use gdk_window_move_resize()
+to both move and resize simultaneously, for a nicer visual effect.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new width of the window</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new height of the window</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="restack" c:identifier="gdk_window_restack" version="2.18">
+        <doc xml:whitespace="preserve">Changes the position of  @window in the Z-order (stacking order), so that
+it is above @sibling (if @above is %TRUE) or below @sibling (if @above is
+%FALSE).
+If @sibling is %NULL, then this either raises (if @above is %TRUE) or
+lowers the window.
+If @window is a toplevel, the window manager may choose to deny the
+request to move the window in the Z-order, gdk_window_restack() only
+requests the restack, does not guarantee it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sibling" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdkWindow that is a sibling of @window, or %NULL</doc>
+            <type name="Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="above" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a boolean</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scroll" c:identifier="gdk_window_scroll">
+        <doc xml:whitespace="preserve">Scroll the contents of @window, both pixels and children, by the
+given amount. @window itself does not move. Portions of the window
+that the scroll operation brings in from offscreen areas are
+invalidated. The invalidated region may be bigger than what would
+strictly be necessary.
+For X11, a minimum area will be invalidated if the window has no
+subwindows, or if the edges of the window's parent do not extend
+beyond the edges of the window. In other cases, a multi-step process
+is used to scroll the window which may produce temporary visual
+artifacts and unnecessary invalidations.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dx" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Amount to scroll in the X direction</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="dy" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Amount to scroll in the Y direction</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_accept_focus"
+              c:identifier="gdk_window_set_accept_focus"
+              version="2.4 ">
+        <doc xml:whitespace="preserve">Setting @accept_focus to %FALSE hints the desktop environment that the
+window doesn't want to receive input focus. 
+On X, it is the responsibility of the window manager to interpret this 
+hint. ICCCM-compliant window manager usually respect it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accept_focus" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the window should receive input focus</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_back_pixmap" c:identifier="gdk_window_set_back_pixmap">
+        <doc xml:whitespace="preserve">Sets the background pixmap of @window. May also be used to set a
+background of "None" on @window, by setting a background pixmap
+of %NULL.
+A background pixmap will be tiled, positioning the first tile at
+the origin of @window, or if @parent_relative is %TRUE, the tiling
+will be done based on the origin of the parent window (useful to
+align tiles in a parent with tiles in a child).
+A background pixmap of %NULL means that the window will have no
+background.  A window with no background will never have its
+background filled by the windowing system, instead the window will
+contain whatever pixels were already in the corresponding area of
+the display.
+The windowing system will normally fill a window with its background
+when the window is obscured then exposed, and when you call
+gdk_window_clear().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixmap" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdkPixmap, or %NULL</doc>
+            <type name="Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="parent_relative" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the tiling origin is at the origin of</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_background" c:identifier="gdk_window_set_background">
+        <doc xml:whitespace="preserve">Sets the background color of @window. (However, when using GTK+,
+set the background of a widget with gtk_widget_modify_bg() - if
+you're an application - or gtk_style_set_background() - if you're
+implementing a custom widget.)
+See also gdk_window_set_background_pixmap().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an allocated #GdkColor</doc>
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_child_input_shapes"
+              c:identifier="gdk_window_set_child_input_shapes"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the input shape mask of @window to the union of input shape masks
+for all children of @window, ignoring the input shape mask of @window
+itself. Contrast with gdk_window_merge_child_input_shapes() which includes
+the input shape mask of @window in the masks to be merged.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_child_shapes"
+              c:identifier="gdk_window_set_child_shapes">
+        <doc xml:whitespace="preserve">Sets the shape mask of @window to the union of shape masks
+for all children of @window, ignoring the shape mask of @window
+itself. Contrast with gdk_window_merge_child_shapes() which includes
+the shape mask of @window in the masks to be merged.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_composited"
+              c:identifier="gdk_window_set_composited"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets a #GdkWindow as composited, or unsets it. Composited
+windows do not automatically have their contents drawn to
+the screen. Drawing is redirected to an offscreen buffer
+and an expose event is emitted on the parent of the composited
+window. It is the responsibility of the parent's expose handler
+to manually merge the off-screen content onto the screen in
+whatever way it sees fit. See &lt;xref linkend="composited-window-example"/&gt;
+for an example.
+It only makes sense for child windows to be composited; see
+gdk_window_set_opacity() if you need translucent toplevel
+windows.
+An additional effect of this call is that the area of this
+window is no longer clipped from regions marked for
+invalidation on its parent. Draws done on the parent
+window are also no longer clipped by the child.
+This call is only supported on some systems (currently,
+only X11 with new enough Xcomposite and Xdamage extensions).
+You must call gdk_display_supports_composite() to check if
+setting a window as composited is supported before
+attempting to do so.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="composited" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to set the window as composited</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor" c:identifier="gdk_window_set_cursor">
+        <doc xml:whitespace="preserve">Sets the default mouse pointer for a #GdkWindow. Use gdk_cursor_new_for_display()
+or gdk_cursor_new_from_pixmap() to create the cursor. To make the cursor
+invisible, use %GDK_BLANK_CURSOR. Passing %NULL for the @cursor argument
+to gdk_window_set_cursor() means that @window will use the cursor of its
+parent window. Most windows should use this default.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cursor" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a cursor</doc>
+            <type name="Cursor" c:type="GdkCursor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_decorations" c:identifier="gdk_window_set_decorations">
+        <doc xml:whitespace="preserve">"Decorations" are the features the window manager adds to a toplevel #GdkWindow.
+This function sets the traditional Motif window manager hints that tell the
+window manager which decorations you would like your window to have.
+Usually you should use gtk_window_set_decorated() on a #GtkWindow instead of
+using the GDK function directly.
+The @decorations argument is the logical OR of the fields in
+the #GdkWMDecoration enumeration. If #GDK_DECOR_ALL is included in the
+mask, the other bits indicate which decorations should be turned off.
+If #GDK_DECOR_ALL is not included, then the other bits indicate
+which decorations should be turned on.
+Most window managers honor a decorations hint of 0 to disable all decorations,
+but very few honor all possible combinations of bits.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="decorations" transfer-ownership="none">
+            <doc xml:whitespace="preserve">decoration hint mask</doc>
+            <type name="WMDecoration" c:type="GdkWMDecoration"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_device_cursor"
+              c:identifier="gdk_window_set_device_cursor"
+              version="3.0">
+        <doc xml:whitespace="preserve">Sets a specific #GdkCursor for a given device when it gets inside @window.
+Use gdk_cursor_new_for_display() or gdk_cursor_new_from_pixmap() to create
+the cursor. To make the cursor invisible, use %GDK_BLANK_CURSOR. Passing
+%NULL for the @cursor argument to gdk_window_set_cursor() means that
+use this default.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkDevice</doc>
+            <type name="Device" c:type="GdkDevice*"/>
+          </parameter>
+          <parameter name="cursor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkCursor</doc>
+            <type name="Cursor" c:type="GdkCursor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_device_events"
+              c:identifier="gdk_window_set_device_events"
+              version="3.0">
+        <doc xml:whitespace="preserve">Sets the event mask for a given device (Normally a floating device, not
+attached to any visible pointer) to @window. For example, an event mask
+including #GDK_BUTTON_PRESS_MASK means the window should report button
+press events. The event mask is the bitwise OR of values from the
+#GdkEventMask enumeration.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GdkDevice to enable events for.</doc>
+            <type name="Device" c:type="GdkDevice*"/>
+          </parameter>
+          <parameter name="event_mask" transfer-ownership="none">
+            <doc xml:whitespace="preserve">event mask for @window</doc>
+            <type name="EventMask" c:type="GdkEventMask"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_events" c:identifier="gdk_window_set_events">
+        <doc xml:whitespace="preserve">The event mask for a window determines which events will be reported
+for that window from all master input devices. For example, an event mask
+including #GDK_BUTTON_PRESS_MASK means the window should report button
+press events. The event mask is the bitwise OR of values from the
+#GdkEventMask enumeration.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="event_mask" transfer-ownership="none">
+            <doc xml:whitespace="preserve">event mask for @window</doc>
+            <type name="EventMask" c:type="GdkEventMask"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_focus_on_map"
+              c:identifier="gdk_window_set_focus_on_map"
+              version="2.6 ">
+        <doc xml:whitespace="preserve">Setting @focus_on_map to %FALSE hints the desktop environment that the
+window doesn't want to receive input focus when it is mapped.  
+focus_on_map should be turned off for windows that aren't triggered
+interactively (such as popups from network activity).
+On X, it is the responsibility of the window manager to interpret
+this hint. Window managers following the freedesktop.org window
+manager extension specification should respect it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="focus_on_map" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the window should receive input focus when mapped</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_functions" c:identifier="gdk_window_set_functions">
+        <doc xml:whitespace="preserve">Sets hints about the window management functions to make available
+via buttons on the window frame.
+On the X backend, this function sets the traditional Motif window 
+manager hint for this purpose. However, few window managers do
+anything reliable or interesting with this hint. Many ignore it
+entirely.
+The @functions argument is the logical OR of values from the
+#GdkWMFunction enumeration. If the bitmask includes #GDK_FUNC_ALL,
+then the other bits indicate which functions to disable; if
+it doesn't include #GDK_FUNC_ALL, it indicates which functions to
+enable.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="functions" transfer-ownership="none">
+            <doc xml:whitespace="preserve">bitmask of operations to allow on @window</doc>
+            <type name="WMFunction" c:type="GdkWMFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_geometry_hints"
+              c:identifier="gdk_window_set_geometry_hints">
+        <doc xml:whitespace="preserve">Sets the geometry hints for @window. Hints flagged in @geom_mask
+are set, hints not flagged in @geom_mask are unset.
+To unset all hints, use a @geom_mask of 0 and a @geometry of %NULL.
+This function provides hints to the windowing system about
+acceptable sizes for a toplevel window. The purpose of 
+this is to constrain user resizing, but the windowing system
+will typically  (but is not required to) also constrain the
+current size of the window to the provided values and
+constrain programatic resizing via gdk_window_resize() or
+gdk_window_move_resize().
+Note that on X11, this effect has no effect on windows
+of type %GDK_WINDOW_TEMP or windows where override redirect
+has been turned on via gdk_window_set_override_redirect()
+since these windows are not resizable by the user.
+Since you can't count on the windowing system doing the
+constraints for programmatic resizes, you should generally
+call gdk_window_constrain_size() yourself to determine
+appropriate sizes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry" transfer-ownership="none">
+            <doc xml:whitespace="preserve">geometry hints</doc>
+            <type name="Geometry" c:type="GdkGeometry*"/>
+          </parameter>
+          <parameter name="geom_mask" transfer-ownership="none">
+            <doc xml:whitespace="preserve">bitmask indicating fields of @geometry to pay attention to</doc>
+            <type name="WindowHints" c:type="GdkWindowHints"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_group" c:identifier="gdk_window_set_group">
+        <doc xml:whitespace="preserve">Sets the group leader window for @window. By default,
+GDK sets the group leader for all toplevel windows
+to a global window implicitly created by GDK. With this function
+you can override this default.
+The group leader window allows the window manager to distinguish
+all windows that belong to a single application. It may for example
+allow users to minimize/unminimize all windows belonging to an
+application at once. You should only set a non-default group window
+if your application pretends to be multiple applications.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="leader" transfer-ownership="none">
+            <doc xml:whitespace="preserve">group leader window, or %NULL to restore the default group leader window</doc>
+            <type name="Window" c:type="GdkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon" c:identifier="gdk_window_set_icon">
+        <doc xml:whitespace="preserve">Sets the icon of @window as a pixmap or window. If using GTK+, investigate
+gtk_window_set_default_icon_list() first, and then gtk_window_set_icon_list()
+and gtk_window_set_icon(). If those don't meet your needs, look at
+gdk_window_set_icon_list(). Only if all those are too high-level do you
+want to fall back to gdk_window_set_icon().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkWindow to use for the icon, or %NULL to unset</doc>
+            <type name="Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="pixmap" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkPixmap to use as the icon, or %NULL to unset</doc>
+            <type name="Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a 1-bit pixmap (#GdkBitmap) to use as mask for @pixmap, or %NULL to have none</doc>
+            <type name="Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_list" c:identifier="gdk_window_set_icon_list">
+        <doc xml:whitespace="preserve">Sets a list of icons for the window. One of these will be used
+to represent the window when it has been iconified. The icon is
+usually shown in an icon box or some sort of task bar. Which icon
+size is shown depends on the window manager. The window manager
+can scale the icon  but setting several size icons can give better
+image quality since the window manager may only need to scale the
+icon by a small amount or not at all.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbufs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A list of pixbufs, of different sizes.</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="GdkPixbuf.Pixbuf"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_name" c:identifier="gdk_window_set_icon_name">
+        <doc xml:whitespace="preserve">Windows may have a name used while minimized, distinct from the
+name they display in their titlebar. Most of the time this is a bad
+idea from a user interface standpoint. But you can set such a name
+with this function, if you like.
+After calling this with a non-%NULL @name, calls to gdk_window_set_title()
+will not update the icon title.
+Using %NULL for @name unsets the icon title; further calls to
+gdk_window_set_title() will again update the icon title as well.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of window while iconified (minimized)</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_keep_above"
+              c:identifier="gdk_window_set_keep_above"
+              version="2.4">
+        <doc xml:whitespace="preserve">Set if @window must be kept above other windows. If the
+window was already above, then this function does nothing.
+On X11, asks the window manager to keep @window above, if the window
+manager supports this operation. Not all window managers support
+this, and some deliberately ignore it or don't have a concept of
+"keep above"; so you can't rely on the window being kept above.
+But it will happen with most standard window managers,
+and GDK makes a best effort to get it to happen.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to keep @window above other windows</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_keep_below"
+              c:identifier="gdk_window_set_keep_below"
+              version="2.4">
+        <doc xml:whitespace="preserve">Set if @window must be kept below other windows. If the
+window was already below, then this function does nothing.
+On X11, asks the window manager to keep @window below, if the window
+manager supports this operation. Not all window managers support
+this, and some deliberately ignore it or don't have a concept of
+"keep below"; so you can't rely on the window being kept below.
+But it will happen with most standard window managers,
+and GDK makes a best effort to get it to happen.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to keep @window below other windows</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_modal_hint" c:identifier="gdk_window_set_modal_hint">
+        <doc xml:whitespace="preserve">The application can use this hint to tell the window manager
+that a certain window has modal behaviour. The window manager
+can use this information to handle modal windows in a special
+way.
+You should only use this on windows for which you have
+previously called gdk_window_set_transient_for()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="modal" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the window is modal, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_opacity"
+              c:identifier="gdk_window_set_opacity"
+              version="2.12">
+        <doc xml:whitespace="preserve">Request the windowing system to make @window partially transparent,
+with opacity 0 being fully transparent and 1 fully opaque. (Values
+of the opacity parameter are clamped to the [0,1] range.) 
+On X11, this works only on X screens with a compositing manager 
+running.
+For setting up per-pixel alpha, see gdk_screen_get_rgba_colormap().
+For making non-toplevel windows translucent, see 
+gdk_window_set_composited().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="opacity" transfer-ownership="none">
+            <doc xml:whitespace="preserve">opacity</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_override_redirect"
+              c:identifier="gdk_window_set_override_redirect">
+        <doc xml:whitespace="preserve">An override redirect window is not under the control of the window manager.
+This means it won't have a titlebar, won't be minimizable, etc. - it will
+be entirely under the control of the application. The window manager
+can't see the override redirect window at all.
+Override redirect should only be used for short-lived temporary
+windows, such as popup menus. #GtkMenu uses an override redirect
+window in its implementation, for example.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="override_redirect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if window should be override redirect</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_role" c:identifier="gdk_window_set_role">
+        <doc xml:whitespace="preserve">When using GTK+, typically you should use gtk_window_set_role() instead
+of this low-level function.
+The window manager and session manager use a window's role to
+distinguish it from other kinds of window in the same application.
+When an application is restarted after being saved in a previous
+session, all windows with the same title and role are treated as
+interchangeable.  So if you have two windows with the same title
+that should be distinguished for session management purposes, you
+should set the role on those windows. It doesn't matter what string
+you use for the role, as long as you have a different role for each
+non-interchangeable kind of window.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="role" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string indicating its role</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_skip_pager_hint"
+              c:identifier="gdk_window_set_skip_pager_hint"
+              version="2.2">
+        <doc xml:whitespace="preserve">Toggles whether a window should appear in a pager (workspace
+switcher, or other desktop utility program that displays a small
+thumbnail representation of the windows on the desktop). If a
+window's semantic type as specified with gdk_window_set_type_hint()
+already fully describes the window, this function should 
+&lt;emphasis&gt;not&lt;/emphasis&gt; be called in addition, instead you should 
+allow the window to be treated according to standard policy for 
+its semantic type.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="skips_pager" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to skip the pager</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_skip_taskbar_hint"
+              c:identifier="gdk_window_set_skip_taskbar_hint"
+              version="2.2">
+        <doc xml:whitespace="preserve">Toggles whether a window should appear in a task list or window
+list. If a window's semantic type as specified with
+gdk_window_set_type_hint() already fully describes the window, this
+function should &lt;emphasis&gt;not&lt;/emphasis&gt; be called in addition, 
+instead you should allow the window to be treated according to 
+standard policy for its semantic type.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="skips_taskbar" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to skip the taskbar</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_startup_id"
+              c:identifier="gdk_window_set_startup_id"
+              version="2.12">
+        <doc xml:whitespace="preserve">When using GTK+, typically you should use gtk_window_set_startup_id()
+instead of this low-level function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="startup_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string with startup-notification identifier</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_static_gravities"
+              c:identifier="gdk_window_set_static_gravities">
+        <doc xml:whitespace="preserve">Set the bit gravity of the given window to static, and flag it so
+all children get static subwindow gravity. This is used if you are
+implementing scary features that involve deep knowledge of the
+windowing system. Don't worry about it unless you have to.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the server supports static gravity</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_static" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to turn on static gravity</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_support_multidevice"
+              c:identifier="gdk_window_set_support_multidevice"
+              version="3.0">
+        <doc xml:whitespace="preserve">This function will enable multidevice features in @window.
+Multidevice aware windows will need to handle properly multiple,
+per device enter/leave events, device grabs and grab ownerships.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="support_multidevice" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to enable multidevice support in @window.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_title" c:identifier="gdk_window_set_title">
+        <doc xml:whitespace="preserve">Sets the title of a toplevel window, to be displayed in the titlebar.
+If you haven't explicitly set the icon name for the window
+(using gdk_window_set_icon_name()), the icon name will be set to
+user-readable strings in GDK/GTK+). @title may not be %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <doc xml:whitespace="preserve">title of @window</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_transient_for"
+              c:identifier="gdk_window_set_transient_for">
+        <doc xml:whitespace="preserve">Indicates to the window manager that @window is a transient dialog
+associated with the application window @parent. This allows the
+window manager to do things like center @window on @parent and
+keep @window above @parent.
+See gtk_window_set_transient_for() if you're using #GtkWindow or
+#GtkDialog.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">another toplevel #GdkWindow</doc>
+            <type name="Window" c:type="GdkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_type_hint" c:identifier="gdk_window_set_type_hint">
+        <doc xml:whitespace="preserve">The application can use this call to provide a hint to the window
+manager about the functionality of a window. The window manager
+can use this information when determining the decoration and behaviour
+of the window.
+The hint must be set before the window is mapped.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hint" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A hint of the function this window will have</doc>
+            <type name="WindowTypeHint" c:type="GdkWindowTypeHint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_urgency_hint"
+              c:identifier="gdk_window_set_urgency_hint"
+              version="2.8">
+        <doc xml:whitespace="preserve">Toggles whether a window needs the user's
+urgent attention.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="urgent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the window is urgent</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_user_data" c:identifier="gdk_window_set_user_data">
+        <doc xml:whitespace="preserve">For most purposes this function is deprecated in favor of
+g_object_set_data(). However, for historical reasons GTK+ stores
+the #GtkWidget that owns a #GdkWindow as user data on the
+#GdkWindow. So, custom widget implementations should use
+this function for that. If GTK+ receives an event for a #GdkWindow,
+and the user data for the window is non-%NULL, GTK+ will assume the
+user data is a #GtkWidget, and forward the event to that widget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="shape_combine_mask"
+              c:identifier="gdk_window_shape_combine_mask">
+        <doc xml:whitespace="preserve">Applies a shape mask to @window. Pixels in @window corresponding to
+set bits in the @mask will be visible; pixels in @window
+corresponding to unset bits in the @mask will be transparent. This
+gives a non-rectangular window.
+If @mask is %NULL, the shape mask will be unset, and the @x/@y
+parameters are not used.
+On the X11 platform, this uses an X server extension which is
+widely available on most common platforms, but not available on
+very old X servers, and occasionally the implementation will be
+buggy. On servers without the shape extension, this function
+will do nothing.
+This function works on both toplevel and child windows.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mask" transfer-ownership="none">
+            <doc xml:whitespace="preserve">shape mask</doc>
+            <type name="Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X position of shape mask with respect to @window</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y position of shape mask with respect to @window</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="shape_combine_region"
+              c:identifier="gdk_window_shape_combine_region">
+        <doc xml:whitespace="preserve">Makes pixels in @window outside @shape_region be transparent,
+so that the window may be nonrectangular. See also
+gdk_window_shape_combine_mask() to use a bitmap as the mask.
+If @shape_region is %NULL, the shape will be unset, so the whole
+window will be opaque again. @offset_x and @offset_y are ignored
+if @shape_region is %NULL.
+On the X11 platform, this uses an X server extension which is
+widely available on most common platforms, but not available on
+very old X servers, and occasionally the implementation will be
+buggy. On servers without the shape extension, this function
+will do nothing.
+This function works on both toplevel and child windows.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="shape_region" transfer-ownership="none">
+            <doc xml:whitespace="preserve">region of window to be non-transparent</doc>
+            <type name="cairo.Region" c:type="cairo_region_t*"/>
+          </parameter>
+          <parameter name="offset_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X position of @shape_region in @window coordinates</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="offset_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y position of @shape_region in @window coordinates</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="show" c:identifier="gdk_window_show">
+        <doc xml:whitespace="preserve">Like gdk_window_show_unraised(), but also raises the window to the
+top of the window stack (moves the window to the front of the
+Z-order).
+This function maps a window so it's visible onscreen. Its opposite
+is gdk_window_hide().
+When implementing a #GtkWidget, you should call this function on the widget's
+#GdkWindow as part of the "map" method.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="show_unraised" c:identifier="gdk_window_show_unraised">
+        <doc xml:whitespace="preserve">Shows a #GdkWindow onscreen, but does not modify its stacking
+order. In contrast, gdk_window_show() will raise the window
+to the top of the window stack.
+On the X11 platform, in Xlib terms, this function calls
+XMapWindow() (it also updates some internal GDK state, which means
+that you can't really use XMapWindow() directly on a GDK window).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="stick" c:identifier="gdk_window_stick">
+        <doc xml:whitespace="preserve">"Pins" a window such that it's on all workspaces and does not scroll
+with viewports, for window managers that have scrollable viewports.
+(When using #GtkWindow, gtk_window_stick() may be more useful.)
+On the X11 platform, this function depends on window manager
+support, so may have no effect with many window managers. However,
+GDK will do the best it can to convince the window manager to stick
+the window. For window managers that don't support this operation,
+there's nothing you can do to force it to happen.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="thaw_toplevel_updates_libgtk_only"
+              c:identifier="gdk_window_thaw_toplevel_updates_libgtk_only">
+        <doc xml:whitespace="preserve">Thaws a window frozen with
+gdk_window_freeze_toplevel_updates_libgtk_only().
+This function is not part of the GDK public API and is only
+for use by GTK+.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="thaw_updates" c:identifier="gdk_window_thaw_updates">
+        <doc xml:whitespace="preserve">Thaws a window frozen with gdk_window_freeze_updates().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unfullscreen"
+              c:identifier="gdk_window_unfullscreen"
+              version="2.2">
+        <doc xml:whitespace="preserve">Moves the window out of fullscreen mode. If the window was not
+fullscreen, does nothing.
+On X11, asks the window manager to move @window out of the fullscreen
+state, if the window manager supports this operation. Not all
+window managers support this, and some deliberately ignore it or
+don't have a concept of "fullscreen"; so you can't rely on the
+unfullscreenification actually happening. But it will happen with
+most standard window managers, and GDK makes a best effort to get
+it to happen.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unmaximize" c:identifier="gdk_window_unmaximize">
+        <doc xml:whitespace="preserve">Unmaximizes the window. If the window wasn't maximized, then this
+function does nothing.
+On X11, asks the window manager to unmaximize @window, if the
+window manager supports this operation. Not all window managers
+support this, and some deliberately ignore it or don't have a
+concept of "maximized"; so you can't rely on the unmaximization
+actually happening. But it will happen with most standard window
+managers, and GDK makes a best effort to get it to happen.
+On Windows, reliably unmaximizes the window.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unstick" c:identifier="gdk_window_unstick">
+        <doc xml:whitespace="preserve">Reverse operation for gdk_window_stick(); see gdk_window_stick(),
+and gtk_window_unstick().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="withdraw" c:identifier="gdk_window_withdraw">
+        <doc xml:whitespace="preserve">Withdraws a window (unmaps it and asks the window manager to forget about it).
+This function is not really useful as gdk_window_hide() automatically
+withdraws toplevel windows before hiding them.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="cursor"
+                version="2.18"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The mouse pointer for a #GdkWindow. See gdk_window_set_cursor() and
+gdk_window_get_cursor() for details.</doc>
+        <type name="Cursor"/>
+      </property>
+      <glib:signal name="from-embedder" version="2.18">
+        <doc xml:whitespace="preserve">The ::from-embedder signal is emitted to translate coordinates
+in the embedder of an offscreen window to the offscreen window.
+See also #GtkWindow::to-embedder.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x coordinate in the embedder window</doc>
+            <type name="gdouble"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y coordinate in the embedder window</doc>
+            <type name="gdouble"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the x coordinate in the offscreen window</doc>
+            <type name="gpointer"/>
+          </parameter>
+          <parameter name="p2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the y coordinate in the offscreen window</doc>
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="pick-embedded-child"
+                   version="2.18"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">The ::pick-embedded-child signal is emitted to find an embedded
+child at the given position.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the #GdkWindow of the embedded child at @x, @y, or %NULL</doc>
+          <type name="Window"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x coordinate in the window</doc>
+            <type name="gdouble"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y coordinate in the window</doc>
+            <type name="gdouble"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="to-embedder" version="2.18">
+        <doc xml:whitespace="preserve">The ::to-embedder signal is emitted to translate coordinates
+in an offscreen window to its embedder.
+See also #GtkWindow::from-embedder.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x coordinate in the offscreen window</doc>
+            <type name="gdouble"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y coordinate in the offscreen window</doc>
+            <type name="gdouble"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the x coordinate in the embedder window</doc>
+            <type name="gpointer"/>
+          </parameter>
+          <parameter name="p2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the y coordinate in the embedder window</doc>
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="WindowAttr" c:type="GdkWindowAttr">
+      <doc xml:whitespace="preserve">Attributes to use for a newly-created window.</doc>
+      <field name="title" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="event_mask" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="width" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="height" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="wclass" writable="1">
+        <type name="WindowClass" c:type="GdkWindowClass"/>
+      </field>
+      <field name="visual" writable="1">
+        <type name="Visual" c:type="GdkVisual*"/>
+      </field>
+      <field name="colormap" writable="1">
+        <type name="Colormap" c:type="GdkColormap*"/>
+      </field>
+      <field name="window_type" writable="1">
+        <type name="WindowType" c:type="GdkWindowType"/>
+      </field>
+      <field name="cursor" writable="1">
+        <type name="Cursor" c:type="GdkCursor*"/>
+      </field>
+      <field name="wmclass_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="wmclass_class" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="override_redirect" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="type_hint" writable="1">
+        <type name="WindowTypeHint" c:type="GdkWindowTypeHint"/>
+      </field>
+    </record>
+    <bitfield name="WindowAttributesType"
+              glib:type-name="GdkWindowAttributesType"
+              glib:get-type="gdk_window_attributes_type_get_type"
+              c:type="GdkWindowAttributesType">
+      <doc xml:whitespace="preserve">Used to indicate which fields in the #GdkWindowAttr struct should be honored.
+For example, if you filled in the "cursor" and "x" fields of #GdkWindowAttr,
+pass "@GDK_WA_X | @GDK_WA_CURSOR" to gdk_window_new(). Fields in
+#GdkWindowAttr not covered by a bit in this enum are required; for example,
+the @width/@height, @wclass, and @window_type fields are required, they have
+no corresponding flag in #GdkWindowAttributesType.</doc>
+      <member name="title"
+              value="2"
+              c:identifier="GDK_WA_TITLE"
+              glib:nick="title"/>
+      <member name="x" value="4" c:identifier="GDK_WA_X" glib:nick="x"/>
+      <member name="y" value="8" c:identifier="GDK_WA_Y" glib:nick="y"/>
+      <member name="cursor"
+              value="16"
+              c:identifier="GDK_WA_CURSOR"
+              glib:nick="cursor"/>
+      <member name="colormap"
+              value="32"
+              c:identifier="GDK_WA_COLORMAP"
+              glib:nick="colormap"/>
+      <member name="visual"
+              value="64"
+              c:identifier="GDK_WA_VISUAL"
+              glib:nick="visual"/>
+      <member name="wmclass"
+              value="128"
+              c:identifier="GDK_WA_WMCLASS"
+              glib:nick="wmclass"/>
+      <member name="noredir"
+              value="256"
+              c:identifier="GDK_WA_NOREDIR"
+              glib:nick="noredir"/>
+      <member name="type_hint"
+              value="512"
+              c:identifier="GDK_WA_TYPE_HINT"
+              glib:nick="type-hint"/>
+    </bitfield>
+    <enumeration name="WindowClass"
+                 glib:type-name="GdkWindowClass"
+                 glib:get-type="gdk_window_class_get_type"
+                 c:type="GdkWindowClass">
+      <doc xml:whitespace="preserve">Such windows receive events and are also displayed on screen.
+windows in order to trap or filter the events. You can't draw on</doc>
+      <member name="output"
+              value="0"
+              c:identifier="GDK_INPUT_OUTPUT"
+              glib:nick="output"/>
+      <member name="only"
+              value="1"
+              c:identifier="GDK_INPUT_ONLY"
+              glib:nick="only"/>
+    </enumeration>
+    <enumeration name="WindowEdge"
+                 glib:type-name="GdkWindowEdge"
+                 glib:get-type="gdk_window_edge_get_type"
+                 c:type="GdkWindowEdge">
+      <doc xml:whitespace="preserve">Determines a window edge or corner.</doc>
+      <member name="north_west"
+              value="0"
+              c:identifier="GDK_WINDOW_EDGE_NORTH_WEST"
+              glib:nick="north-west"/>
+      <member name="north"
+              value="1"
+              c:identifier="GDK_WINDOW_EDGE_NORTH"
+              glib:nick="north"/>
+      <member name="north_east"
+              value="2"
+              c:identifier="GDK_WINDOW_EDGE_NORTH_EAST"
+              glib:nick="north-east"/>
+      <member name="west"
+              value="3"
+              c:identifier="GDK_WINDOW_EDGE_WEST"
+              glib:nick="west"/>
+      <member name="east"
+              value="4"
+              c:identifier="GDK_WINDOW_EDGE_EAST"
+              glib:nick="east"/>
+      <member name="south_west"
+              value="5"
+              c:identifier="GDK_WINDOW_EDGE_SOUTH_WEST"
+              glib:nick="south-west"/>
+      <member name="south"
+              value="6"
+              c:identifier="GDK_WINDOW_EDGE_SOUTH"
+              glib:nick="south"/>
+      <member name="south_east"
+              value="7"
+              c:identifier="GDK_WINDOW_EDGE_SOUTH_EAST"
+              glib:nick="south-east"/>
+    </enumeration>
+    <bitfield name="WindowHints"
+              glib:type-name="GdkWindowHints"
+              glib:get-type="gdk_window_hints_get_type"
+              c:type="GdkWindowHints">
+      <doc xml:whitespace="preserve">Used to indicate which fields of a #GdkGeometry struct should be paid
+attention to. Also, the presence/absence of @GDK_HINT_POS,
+directly refer to #GdkGeometry fields. @GDK_HINT_USER_POS will be set
+automatically by #GtkWindow if you call gtk_window_move().
+specified a size/position using a --geometry command-line argument;
+gtk_window_parse_geometry() automatically sets these flags.</doc>
+      <member name="pos"
+              value="1"
+              c:identifier="GDK_HINT_POS"
+              glib:nick="pos"/>
+      <member name="min_size"
+              value="2"
+              c:identifier="GDK_HINT_MIN_SIZE"
+              glib:nick="min-size"/>
+      <member name="max_size"
+              value="4"
+              c:identifier="GDK_HINT_MAX_SIZE"
+              glib:nick="max-size"/>
+      <member name="base_size"
+              value="8"
+              c:identifier="GDK_HINT_BASE_SIZE"
+              glib:nick="base-size"/>
+      <member name="aspect"
+              value="16"
+              c:identifier="GDK_HINT_ASPECT"
+              glib:nick="aspect"/>
+      <member name="resize_inc"
+              value="32"
+              c:identifier="GDK_HINT_RESIZE_INC"
+              glib:nick="resize-inc"/>
+      <member name="win_gravity"
+              value="64"
+              c:identifier="GDK_HINT_WIN_GRAVITY"
+              glib:nick="win-gravity"/>
+      <member name="user_pos"
+              value="128"
+              c:identifier="GDK_HINT_USER_POS"
+              glib:nick="user-pos"/>
+      <member name="user_size"
+              value="256"
+              c:identifier="GDK_HINT_USER_SIZE"
+              glib:nick="user-size"/>
+    </bitfield>
+    <record name="WindowObject" c:type="GdkWindowObject" disguised="1">
+    </record>
+    <record name="WindowObjectClass" c:type="GdkWindowObjectClass">
+      <field name="parent_class" writable="1">
+        <type name="DrawableClass" c:type="GdkDrawableClass"/>
+      </field>
+    </record>
+    <record name="WindowRedirect" c:type="GdkWindowRedirect" disguised="1">
+    </record>
+    <bitfield name="WindowState"
+              glib:type-name="GdkWindowState"
+              glib:get-type="gdk_window_state_get_type"
+              c:type="GdkWindowState">
+      <member name="withdrawn"
+              value="1"
+              c:identifier="GDK_WINDOW_STATE_WITHDRAWN"
+              glib:nick="withdrawn"/>
+      <member name="iconified"
+              value="2"
+              c:identifier="GDK_WINDOW_STATE_ICONIFIED"
+              glib:nick="iconified"/>
+      <member name="maximized"
+              value="4"
+              c:identifier="GDK_WINDOW_STATE_MAXIMIZED"
+              glib:nick="maximized"/>
+      <member name="sticky"
+              value="8"
+              c:identifier="GDK_WINDOW_STATE_STICKY"
+              glib:nick="sticky"/>
+      <member name="fullscreen"
+              value="16"
+              c:identifier="GDK_WINDOW_STATE_FULLSCREEN"
+              glib:nick="fullscreen"/>
+      <member name="above"
+              value="32"
+              c:identifier="GDK_WINDOW_STATE_ABOVE"
+              glib:nick="above"/>
+      <member name="below"
+              value="64"
+              c:identifier="GDK_WINDOW_STATE_BELOW"
+              glib:nick="below"/>
+    </bitfield>
+    <enumeration name="WindowType"
+                 glib:type-name="GdkWindowType"
+                 glib:get-type="gdk_window_type_get_type"
+                 c:type="GdkWindowType">
+      <doc xml:whitespace="preserve">Describes the kind of window.</doc>
+      <member name="root"
+              value="0"
+              c:identifier="GDK_WINDOW_ROOT"
+              glib:nick="root"/>
+      <member name="toplevel"
+              value="1"
+              c:identifier="GDK_WINDOW_TOPLEVEL"
+              glib:nick="toplevel"/>
+      <member name="child"
+              value="2"
+              c:identifier="GDK_WINDOW_CHILD"
+              glib:nick="child"/>
+      <member name="temp"
+              value="3"
+              c:identifier="GDK_WINDOW_TEMP"
+              glib:nick="temp"/>
+      <member name="foreign"
+              value="4"
+              c:identifier="GDK_WINDOW_FOREIGN"
+              glib:nick="foreign"/>
+      <member name="offscreen"
+              value="5"
+              c:identifier="GDK_WINDOW_OFFSCREEN"
+              glib:nick="offscreen"/>
+    </enumeration>
+    <enumeration name="WindowTypeHint"
+                 glib:type-name="GdkWindowTypeHint"
+                 glib:get-type="gdk_window_type_hint_get_type"
+                 c:type="GdkWindowTypeHint">
+      <doc xml:whitespace="preserve">These are hints for the window manager that indicate what type of function
+the window has. The window manager can use this when determining decoration
+and behaviour of the window. The hint must be set before mapping the window.
+See the
+&lt;ulink url="http://www.freedesktop.org/Standards/wm-spec"&gt;Extended
+Window Manager Hints&lt;/ulink&gt; specification for more details about
+window types.</doc>
+      <member name="normal"
+              value="0"
+              c:identifier="GDK_WINDOW_TYPE_HINT_NORMAL"
+              glib:nick="normal"/>
+      <member name="dialog"
+              value="1"
+              c:identifier="GDK_WINDOW_TYPE_HINT_DIALOG"
+              glib:nick="dialog"/>
+      <member name="menu"
+              value="2"
+              c:identifier="GDK_WINDOW_TYPE_HINT_MENU"
+              glib:nick="menu"/>
+      <member name="toolbar"
+              value="3"
+              c:identifier="GDK_WINDOW_TYPE_HINT_TOOLBAR"
+              glib:nick="toolbar"/>
+      <member name="splashscreen"
+              value="4"
+              c:identifier="GDK_WINDOW_TYPE_HINT_SPLASHSCREEN"
+              glib:nick="splashscreen"/>
+      <member name="utility"
+              value="5"
+              c:identifier="GDK_WINDOW_TYPE_HINT_UTILITY"
+              glib:nick="utility"/>
+      <member name="dock"
+              value="6"
+              c:identifier="GDK_WINDOW_TYPE_HINT_DOCK"
+              glib:nick="dock"/>
+      <member name="desktop"
+              value="7"
+              c:identifier="GDK_WINDOW_TYPE_HINT_DESKTOP"
+              glib:nick="desktop"/>
+      <member name="dropdown_menu"
+              value="8"
+              c:identifier="GDK_WINDOW_TYPE_HINT_DROPDOWN_MENU"
+              glib:nick="dropdown-menu"/>
+      <member name="popup_menu"
+              value="9"
+              c:identifier="GDK_WINDOW_TYPE_HINT_POPUP_MENU"
+              glib:nick="popup-menu"/>
+      <member name="tooltip"
+              value="10"
+              c:identifier="GDK_WINDOW_TYPE_HINT_TOOLTIP"
+              glib:nick="tooltip"/>
+      <member name="notification"
+              value="11"
+              c:identifier="GDK_WINDOW_TYPE_HINT_NOTIFICATION"
+              glib:nick="notification"/>
+      <member name="combo"
+              value="12"
+              c:identifier="GDK_WINDOW_TYPE_HINT_COMBO"
+              glib:nick="combo"/>
+      <member name="dnd"
+              value="13"
+              c:identifier="GDK_WINDOW_TYPE_HINT_DND"
+              glib:nick="dnd"/>
+    </enumeration>
+    <function name="add_client_message_filter"
+              c:identifier="gdk_add_client_message_filter"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Adds a filter to the default display to be called when X ClientMessage events
+are received. See gdk_display_add_client_message_filter().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="message_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of ClientMessage events to receive. This will be checked against the &lt;structfield&gt;message_type&lt;/structfield&gt; field of the XClientMessage event struct.</doc>
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">the function to call to process the event.</doc>
+          <type name="FilterFunc" c:type="GdkFilterFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data to pass to @func.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="add_option_entries_libgtk_only"
+              c:identifier="gdk_add_option_entries_libgtk_only">
+      <doc xml:whitespace="preserve">Appends gdk option entries to the passed in option group. This is
+not public API and must not be used by applications.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="group" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An option group.</doc>
+          <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="atom_intern"
+              c:identifier="gdk_atom_intern"
+              introspectable="0">
+      <return-value>
+        <type name="Atom" c:type="GdkAtom"/>
+      </return-value>
+      <parameters>
+        <parameter name="atom_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="only_if_exists" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="atom_intern_static_string"
+              c:identifier="gdk_atom_intern_static_string"
+              version="2.10"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Finds or creates an atom corresponding to a given string.
+Note that this function is identical to gdk_atom_intern() except
+that if a new #GdkAtom is created the string itself is used rather 
+than a copy. This saves memory, but can only be used if the string 
+will &lt;emphasis&gt;always&lt;/emphasis&gt; exist. It can be used with statically
+allocated strings in the main program, but not with statically 
+allocated memory in dynamically loaded modules, if you expect to
+ever unload the module again (e.g. do not use this function in
+GTK+ theme engines).</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the atom corresponding to @atom_name</doc>
+        <type name="Atom" c:type="GdkAtom"/>
+      </return-value>
+      <parameters>
+        <parameter name="atom_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a static string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="atom_name" c:identifier="gdk_atom_name">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="atom" transfer-ownership="none">
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="beep" c:identifier="gdk_beep">
+      <doc xml:whitespace="preserve">Emits a short beep on the default display.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="cairo_create"
+              c:identifier="gdk_cairo_create"
+              version="2.8">
+      <doc xml:whitespace="preserve">Creates a Cairo context for drawing to @drawable.
+&lt;note&gt;&lt;para&gt;
+Note that due to double-buffering, Cairo contexts created 
+in a GTK+ expose event handler cannot be cached and reused 
+between different expose events. 
+&lt;/para&gt;&lt;/note&gt;
+cairo_destroy() when you are done drawing.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">A newly created Cairo context. Free with</doc>
+        <type name="cairo.Context" c:type="cairo_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="drawable" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkDrawable</doc>
+          <type name="Drawable" c:type="GdkDrawable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cairo_rectangle"
+              c:identifier="gdk_cairo_rectangle"
+              version="2.8">
+      <doc xml:whitespace="preserve">Adds the given rectangle to the current path of @cr.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cr" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #cairo_t</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </parameter>
+        <parameter name="rectangle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkRectangle</doc>
+          <type name="Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cairo_region"
+              c:identifier="gdk_cairo_region"
+              version="2.8">
+      <doc xml:whitespace="preserve">Adds the given region to the current path of @cr.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cr" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #cairo_t</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </parameter>
+        <parameter name="region" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #cairo_region_t</doc>
+          <type name="cairo.Region" c:type="cairo_region_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cairo_reset_clip"
+              c:identifier="gdk_cairo_reset_clip"
+              version="2.18">
+      <doc xml:whitespace="preserve">Resets the clip region for a Cairo context created by gdk_cairo_create().
+This resets the clip region to the "empty" state for the given drawable.
+This is required for non-native windows since a direct call to
+cairo_reset_clip() would unset the clip region inherited from the
+drawable (i.e. the window clip region), and thus let you e.g.
+draw outside your window.
+This is rarely needed though, since most code just create a new cairo_t
+using gdk_cairo_create() each time they want to draw something.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cr" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #cairo_t</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </parameter>
+        <parameter name="drawable" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkDrawable</doc>
+          <type name="Drawable" c:type="GdkDrawable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cairo_set_source_color"
+              c:identifier="gdk_cairo_set_source_color"
+              version="2.8">
+      <doc xml:whitespace="preserve">Sets the specified #GdkColor as the source color of @cr.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cr" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #cairo_t</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkColor</doc>
+          <type name="Color" c:type="GdkColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cairo_set_source_pixbuf"
+              c:identifier="gdk_cairo_set_source_pixbuf"
+              version="2.8">
+      <doc xml:whitespace="preserve">Sets the given pixbuf as the source pattern for the Cairo context.
+The pattern has an extend mode of %CAIRO_EXTEND_NONE and is aligned
+so that the origin of @pixbuf is @pixbuf_x, @pixbuf_y</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cr" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #Cairo context</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </parameter>
+        <parameter name="pixbuf" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkPixbuf</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+        <parameter name="pixbuf_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of location to place upper left corner of @pixbuf</doc>
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+        <parameter name="pixbuf_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of location to place upper left corner of @pixbuf</doc>
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cairo_set_source_pixmap"
+              c:identifier="gdk_cairo_set_source_pixmap"
+              version="2.10">
+      <doc xml:whitespace="preserve">Sets the given pixmap as the source pattern for the Cairo context.
+The pattern has an extend mode of %CAIRO_EXTEND_NONE and is aligned
+so that the origin of @pixmap is @pixmap_x, @pixmap_y</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cr" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #Cairo context</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </parameter>
+        <parameter name="pixmap" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkPixmap</doc>
+          <type name="Pixmap" c:type="GdkPixmap*"/>
+        </parameter>
+        <parameter name="pixmap_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of location to place upper left corner of @pixmap</doc>
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+        <parameter name="pixmap_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of location to place upper left corner of @pixmap</doc>
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="color_parse" c:identifier="gdk_color_parse">
+      <doc xml:whitespace="preserve">Parses a textual specification of a color and fill in the
+&lt;structfield&gt;red&lt;/structfield&gt;, &lt;structfield&gt;green&lt;/structfield&gt;,
+and &lt;structfield&gt;blue&lt;/structfield&gt; fields of a #GdkColor
+structure. The color is &lt;emphasis&gt;not&lt;/emphasis&gt; allocated, you
+must call gdk_colormap_alloc_color() yourself. The string can
+either one of a large set of standard names. (Taken from the X11
+&lt;filename&gt;rgb.txt&lt;/filename&gt; file), or it can be a hex value in the
+form '&amp;num;rgb' '&amp;num;rrggbb' '&amp;num;rrrgggbbb' or
+'&amp;num;rrrrggggbbbb' where 'r', 'g' and 'b' are hex digits of the
+red, green, and blue components of the color, respectively. (White
+in the four forms is '&amp;num;fff' '&amp;num;ffffff' '&amp;num;fffffffff' and
+'&amp;num;ffffffffffff')</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the parsing succeeded.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="spec" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the string specifying the color.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="color"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkColor to fill in</doc>
+          <type name="Color" c:type="GdkColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="devices_list"
+              c:identifier="gdk_devices_list"
+              deprecated="Use gdk_device_manager_list_devices() instead."
+              deprecated-version="3.0">
+      <doc xml:whitespace="preserve">Returns the list of available input devices for the default display.
+The list is statically allocated and should not be freed.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a list of #GdkDevice</doc>
+        <type name="GLib.List" c:type="GList*">
+          <type name="Device"/>
+        </type>
+      </return-value>
+    </function>
+    <function name="drag_abort" c:identifier="gdk_drag_abort">
+      <doc xml:whitespace="preserve">Aborts a drag without dropping. 
+This function is called by the drag source.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkDragContext.</doc>
+          <type name="DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the timestamp for this operation.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_begin"
+              c:identifier="gdk_drag_begin"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Starts a drag and creates a new drag context for it.
+This function is called by the drag source.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly created #GdkDragContext.</doc>
+        <type name="DragContext" c:type="GdkDragContext*"/>
+      </return-value>
+      <parameters>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the source window for this drag.</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="targets" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the offered targets, as list of #GdkAtom&lt;!-- --&gt;s</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Atom"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_drop" c:identifier="gdk_drag_drop">
+      <doc xml:whitespace="preserve">Drops on the current destination.
+This function is called by the drag source.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkDragContext.</doc>
+          <type name="DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the timestamp for this operation.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_drop_succeeded"
+              c:identifier="gdk_drag_drop_succeeded"
+              version="2.6">
+      <doc xml:whitespace="preserve">Returns whether the dropped data has been successfully 
+transferred. This function is intended to be used while 
+handling a %GDK_DROP_FINISHED event, its return value is
+meaningless at other times.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the drop was successful.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkDragContext</doc>
+          <type name="DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_find_window" c:identifier="gdk_drag_find_window">
+      <doc xml:whitespace="preserve">Finds the destination window and DND protocol to use at the
+given pointer position.
+This function is called by the drag source to obtain the</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkDragContext.</doc>
+          <type name="DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+        <parameter name="drag_window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a window which may be at the pointer position, but should be ignored, since it is put up by the drag source as an icon.</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="x_root" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the x position of the pointer in root coordinates.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y_root" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the y position of the pointer in root coordinates.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="dest_window"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">location to store the destination window in.</doc>
+          <type name="Window" c:type="GdkWindow**"/>
+        </parameter>
+        <parameter name="protocol"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store the DND protocol in.</doc>
+          <type name="DragProtocol" c:type="GdkDragProtocol*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_find_window_for_screen"
+              c:identifier="gdk_drag_find_window_for_screen"
+              version="2.2">
+      <doc xml:whitespace="preserve">Finds the destination window and DND protocol to use at the
+given pointer position.
+This function is called by the drag source to obtain the</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkDragContext</doc>
+          <type name="DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+        <parameter name="drag_window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a window which may be at the pointer position, but should be ignored, since it is put up by the drag source as an icon.</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="screen" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the screen where the destination window is sought.</doc>
+          <type name="Screen" c:type="GdkScreen*"/>
+        </parameter>
+        <parameter name="x_root" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the x position of the pointer in root coordinates.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y_root" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the y position of the pointer in root coordinates.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="dest_window"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">location to store the destination window in.</doc>
+          <type name="Window" c:type="GdkWindow**"/>
+        </parameter>
+        <parameter name="protocol"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store the DND protocol in.</doc>
+          <type name="DragProtocol" c:type="GdkDragProtocol*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_get_protocol" c:identifier="gdk_drag_get_protocol">
+      <doc xml:whitespace="preserve">Finds out the DND protocol supported by a window.
+the drop should happen. This may be @xid or the id of a proxy
+window, or zero if @xid doesn't support Drag and Drop.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the windowing system specific id for the window where</doc>
+        <type name="NativeWindow" c:type="GdkNativeWindow"/>
+      </return-value>
+      <parameters>
+        <parameter name="xid" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the windowing system id of the destination window.</doc>
+          <type name="NativeWindow" c:type="GdkNativeWindow"/>
+        </parameter>
+        <parameter name="protocol" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location where the supported DND protocol is returned.</doc>
+          <type name="DragProtocol" c:type="GdkDragProtocol*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_get_protocol_for_display"
+              c:identifier="gdk_drag_get_protocol_for_display"
+              version="2.2">
+      <doc xml:whitespace="preserve">Finds out the DND protocol supported by a window.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the windowing system id of the window where the drop should happen. This may be @xid or the id of a proxy window, or zero if @xid doesn't support Drag and Drop.</doc>
+        <type name="NativeWindow" c:type="GdkNativeWindow"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkDisplay where the destination window resides</doc>
+          <type name="Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <parameter name="xid" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the windowing system id of the destination window.</doc>
+          <type name="NativeWindow" c:type="GdkNativeWindow"/>
+        </parameter>
+        <parameter name="protocol" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location where the supported DND protocol is returned.</doc>
+          <type name="DragProtocol" c:type="GdkDragProtocol*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_get_selection"
+              c:identifier="gdk_drag_get_selection"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Returns the selection atom for the current source window.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the selection atom.</doc>
+        <type name="Atom" c:type="GdkAtom"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkDragContext.</doc>
+          <type name="DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_motion" c:identifier="gdk_drag_motion">
+      <doc xml:whitespace="preserve">Updates the drag context when the pointer moves or the 
+set of actions changes.
+This function is called by the drag source.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">FIXME</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkDragContext.</doc>
+          <type name="DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+        <parameter name="dest_window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new destination window, obtained by gdk_drag_find_window().</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="protocol" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the DND protocol in use, obtained by gdk_drag_find_window().</doc>
+          <type name="DragProtocol" c:type="GdkDragProtocol"/>
+        </parameter>
+        <parameter name="x_root" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the x position of the pointer in root coordinates.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y_root" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the y position of the pointer in root coordinates.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="suggested_action" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the suggested action.</doc>
+          <type name="DragAction" c:type="GdkDragAction"/>
+        </parameter>
+        <parameter name="possible_actions" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the possible actions.</doc>
+          <type name="DragAction" c:type="GdkDragAction"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the timestamp for this operation.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_status" c:identifier="gdk_drag_status">
+      <doc xml:whitespace="preserve">Selects one of the actions offered by the drag source.
+This function is called by the drag destination in response to
+gdk_drag_motion() called by the drag source.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkDragContext.</doc>
+          <type name="DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+        <parameter name="action" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the selected action which will be taken when a drop happens, or 0 to indicate that a drop will not be accepted.</doc>
+          <type name="DragAction" c:type="GdkDragAction"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the timestamp for this operation.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drop_finish" c:identifier="gdk_drop_finish">
+      <doc xml:whitespace="preserve">Ends the drag operation after a drop.
+This function is called by the drag destination.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkDragContext.</doc>
+          <type name="DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+        <parameter name="success" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the data was successfully received.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the timestamp for this operation.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drop_reply" c:identifier="gdk_drop_reply">
+      <doc xml:whitespace="preserve">Accepts or rejects a drop. 
+This function is called by the drag destination in response
+to a drop initiated by the drag source.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkDragContext.</doc>
+          <type name="DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+        <parameter name="ok" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the drop is accepted.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the timestamp for this operation.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="enable_multidevice"
+              c:identifier="gdk_enable_multidevice"
+              version="3.0">
+      <doc xml:whitespace="preserve">Enables multidevice support in GDK. This call must happen prior
+to gdk_display_open(), gtk_init(), gtk_init_with_args() or
+gtk_init_check() in order to take effect.
+Note that individual #GdkWindow&lt;!-- --&gt;s still need to explicitly
+enable multidevice awareness through gdk_window_set_support_multidevice().
+This function must be called before initializing GDK.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="error_trap_pop" c:identifier="gdk_error_trap_pop">
+      <doc xml:whitespace="preserve">Removes an error trap pushed with gdk_error_trap_push().
+May block until an error has been definitively received
+or not received from the X server. gdk_error_trap_pop_ignored()
+is preferred if you don't need to know whether an error
+occurred, because it never has to block. If you don't
+need the return value of gdk_error_trap_pop(), use
+gdk_error_trap_pop_ignored().
+Prior to GDK 3.0, this function would not automatically
+sync for you, so you had to gdk_flush() if your last
+call to Xlib was not a blocking round trip.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">X error code or 0 on success</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+    </function>
+    <function name="error_trap_pop_ignored"
+              c:identifier="gdk_error_trap_pop_ignored"
+              version="3.0">
+      <doc xml:whitespace="preserve">Removes an error trap pushed with gdk_error_trap_push(), but
+without bothering to wait and see whether an error occurred.  If an
+error arrives later asynchronously that was triggered while the
+trap was pushed, that error will be ignored.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="error_trap_push" c:identifier="gdk_error_trap_push">
+      <doc xml:whitespace="preserve">This function allows X errors to be trapped instead of the normal
+behavior of exiting the application. It should only be used if it
+is not possible to avoid the X error in any other way. Errors are
+ignored on all #GdkDisplay currently known to the
+#GdkDisplayManager. If you don't care which error happens and just
+want to ignore everything, pop with gdk_error_trap_pop_ignored().
+If you need the error code, use gdk_error_trap_pop() which may have
+to block and wait for the error to arrive from the X server.
+This API exists on all platforms but only does anything on X.
+You can use gdk_x11_display_error_trap_push() to ignore errors
+on only a single display.
+&lt;example&gt;
+&lt;title&gt;Trapping an X error&lt;/title&gt;
+&lt;programlisting&gt;
+gdk_error_trap_push (&lt;!-- --&gt;);
+// ... Call the X function which may cause an error here ...
+if (gdk_error_trap_pop (&lt;!-- --&gt;))
+{
+// ... Handle the error here ...
+}
+&lt;/programlisting&gt;
+&lt;/example&gt;</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="event_get" c:identifier="gdk_event_get">
+      <doc xml:whitespace="preserve">Checks all open displays for a #GdkEvent to process,to be processed
+on, fetching events from the windowing system if necessary.
+See gdk_display_get_event().
+are pending. The returned #GdkEvent should be freed with gdk_event_free().</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the next #GdkEvent to be processed, or %NULL if no events</doc>
+        <type name="Event" c:type="GdkEvent*"/>
+      </return-value>
+    </function>
+    <function name="event_handler_set" c:identifier="gdk_event_handler_set">
+      <doc xml:whitespace="preserve">Sets the function to call to handle all events from GDK.
+Note that GTK+ uses this to install its own event handler, so it is
+usually not useful for GTK+ applications. (Although an application
+can call this function then call gtk_main_do_event() to pass
+events to GTK+.)</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="1"
+                   destroy="2">
+          <doc xml:whitespace="preserve">the function to call to handle events from GDK.</doc>
+          <type name="EventFunc" c:type="GdkEventFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data to pass to the function.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="async">
+          <doc xml:whitespace="preserve">the function to call when the handler function is removed, i.e. when gdk_event_handler_set() is called with another event handler.</doc>
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="event_peek" c:identifier="gdk_event_peek">
+      <doc xml:whitespace="preserve">If there is an event waiting in the event queue of some open
+display, returns a copy of it. See gdk_display_peek_event().
+events are in any queues. The returned #GdkEvent should be freed with
+gdk_event_free().</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a copy of the first #GdkEvent on some event queue, or %NULL if no</doc>
+        <type name="Event" c:type="GdkEvent*"/>
+      </return-value>
+    </function>
+    <function name="event_request_motions"
+              c:identifier="gdk_event_request_motions"
+              version="2.12">
+      <doc xml:whitespace="preserve">Request more motion notifies if @event is a motion notify hint event.
+This function should be used instead of gdk_window_get_pointer() to
+request further motion notifies, because it also works for extension
+events where motion notifies are provided for devices other than the
+core pointer. Coordinate extraction, processing and requesting more
+motion events from a %GDK_MOTION_NOTIFY event usually works like this:
+|[
+{ 
+/&amp;ast; motion_event handler &amp;ast;/
+x = motion_event-&gt;x;
+y = motion_event-&gt;y;
+/&amp;ast; handle (x,y) motion &amp;ast;/
+gdk_event_request_motions (motion_event); /&amp;ast; handles is_hint events &amp;ast;/
+}
+]|</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="event" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a valid #GdkEvent</doc>
+          <type name="EventMotion" c:type="GdkEventMotion*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="event_send_client_message_for_display"
+              c:identifier="gdk_event_send_client_message_for_display"
+              version="2.2">
+      <doc xml:whitespace="preserve">On X11, sends an X ClientMessage event to a given window. On
+Windows, sends a message registered with the name
+GDK_WIN32_CLIENT_MESSAGE.
+This could be used for communicating between different
+applications, though the amount of data is limited to 20 bytes on
+X11, and to just four bytes on Windows.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">non-zero on success.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkDisplay for the window where the message is to be sent.</doc>
+          <type name="Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <parameter name="event" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkEvent to send, which should be a #GdkEventClient.</doc>
+          <type name="Event" c:type="GdkEvent*"/>
+        </parameter>
+        <parameter name="winid" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the window to send the client message to.</doc>
+          <type name="NativeWindow" c:type="GdkNativeWindow"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="events_pending" c:identifier="gdk_events_pending">
+      <doc xml:whitespace="preserve">Checks if any events are ready to be processed for any display.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if any events are pending.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="flush" c:identifier="gdk_flush">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="free_compound_text" c:identifier="gdk_free_compound_text">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ctext" transfer-ownership="none">
+          <type name="guint8" c:type="guchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="free_text_list" c:identifier="gdk_free_text_list">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_default_root_window"
+              c:identifier="gdk_get_default_root_window"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Obtains the root window (parent all other windows are inside)
+for the default display and screen.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the default root window</doc>
+        <type name="Window" c:type="GdkWindow*"/>
+      </return-value>
+    </function>
+    <function name="get_display" c:identifier="gdk_get_display">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="get_display_arg_name"
+              c:identifier="gdk_get_display_arg_name">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="get_program_class" c:identifier="gdk_get_program_class">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+    </function>
+    <function name="get_show_events" c:identifier="gdk_get_show_events">
+      <doc xml:whitespace="preserve">Gets whether event debugging output is enabled.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if event debugging output is enabled.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="init" c:identifier="gdk_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <array length="0" c:type="gchar***">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_check" c:identifier="gdk_init_check">
+      <doc xml:whitespace="preserve">Initialize the library for use.
+Arguments:
+"argc" is the number of arguments.
+"argv" is an array of strings.
+Results:
+"argc" and "argv" are modified to reflect any arguments
+which were not handled. (Such arguments should either
+be handled by the application or dismissed). If initialization
+fails, returns FALSE, otherwise TRUE.
+Side effects:
+The library is initialized.
+--------------------------------------------------------------</doc>
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <array length="0" c:type="gchar***">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="input_set_extension_events"
+              c:identifier="gdk_input_set_extension_events"
+              deprecated="Use gdk_window_set_device_events() instead."
+              deprecated-version="3.0">
+      <doc xml:whitespace="preserve">Turns extension events on or off for a particular window,
+and specifies the event mask for extension events.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow.</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="mask" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the event mask</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of extension events that are desired.</doc>
+          <type name="ExtensionMode" c:type="GdkExtensionMode"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="keyboard_grab"
+              c:identifier="gdk_keyboard_grab"
+              deprecated="Use gdk_device_grab() instead."
+              deprecated-version="3.0">
+      <doc xml:whitespace="preserve">Grabs the keyboard so that all events are passed to this
+application until the keyboard is ungrabbed with gdk_keyboard_ungrab().
+This overrides any previous keyboard grab by this client.
+If you set up anything at the time you take the grab that needs to be cleaned
+up when the grab ends, you should handle the #GdkEventGrabBroken events that
+are emitted when the grab ends unvoluntarily.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%GDK_GRAB_SUCCESS if the grab was successful.</doc>
+        <type name="GrabStatus" c:type="GdkGrabStatus"/>
+      </return-value>
+      <parameters>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkWindow which will own the grab (the grab window).</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="owner_events" transfer-ownership="none">
+          <doc xml:whitespace="preserve">if %FALSE then all keyboard events are reported with respect to reported as normal, but keyboard events outside this application are reported with respect to @window. Both key press and key release events are always reported, independant of the event mask set by the application.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="keyboard_ungrab"
+              c:identifier="gdk_keyboard_ungrab"
+              deprecated="Use gdk_device_ungrab(), together with gdk_device_grab()"
+              deprecated-version="3.0">
+      <doc xml:whitespace="preserve">Ungrabs the keyboard on the default display, if it is grabbed by this 
+application.
+instead.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="time_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a timestamp from a #GdkEvent, or %GDK_CURRENT_TIME if no timestamp is available.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="keyval_convert_case"
+              c:identifier="gdk_keyval_convert_case">
+      <doc xml:whitespace="preserve">Obtains the upper- and lower-case versions of the keyval @symbol.
+Examples of keyvals are #GDK_KEY_a, #GDK_KEY_Enter, #GDK_KEY_F1, etc.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="symbol" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a keyval</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="lower"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">return location for lowercase version of @symbol</doc>
+          <type name="guint" c:type="guint*"/>
+        </parameter>
+        <parameter name="upper"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">return location for uppercase version of @symbol</doc>
+          <type name="guint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="keyval_from_name" c:identifier="gdk_keyval_from_name">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="keyval_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="keyval_is_lower" c:identifier="gdk_keyval_is_lower">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="keyval" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="keyval_is_upper" c:identifier="gdk_keyval_is_upper">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="keyval" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="keyval_name" c:identifier="gdk_keyval_name">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="keyval" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="keyval_to_lower" c:identifier="gdk_keyval_to_lower">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="keyval" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="keyval_to_unicode" c:identifier="gdk_keyval_to_unicode">
+      <doc xml:whitespace="preserve">Convert from a GDK key symbol to the corresponding ISO10646 (Unicode)
+character.
+is no corresponding character.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the corresponding unicode character, or 0 if there</doc>
+        <type name="guint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="keyval" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GDK key symbol</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="keyval_to_upper" c:identifier="gdk_keyval_to_upper">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="keyval" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_visuals" c:identifier="gdk_list_visuals">
+      <doc xml:whitespace="preserve">Lists the available visuals for the default screen.
+(See gdk_screen_list_visuals())
+A visual describes a hardware image data format.
+For example, a visual might support 24-bit color, or 8-bit color,
+and might expect pixels to be in a certain format.
+Call g_list_free() on the return value when you're finished with it.
+a list of visuals; the list must be freed, but not its contents</doc>
+      <return-value transfer-ownership="container">
+        <type name="GLib.List" c:type="GList*">
+          <type name="Visual"/>
+        </type>
+      </return-value>
+    </function>
+    <function name="notify_startup_complete"
+              c:identifier="gdk_notify_startup_complete"
+              version="2.2">
+      <doc xml:whitespace="preserve">Indicates to the GUI environment that the application has finished
+loading. If the applications opens windows, this function is
+normally called after opening the application's initial set of
+windows.
+GTK+ will call this function automatically after opening the first
+#GtkWindow unless gtk_window_set_auto_startup_notification() is called 
+to disable that feature.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="notify_startup_complete_with_id"
+              c:identifier="gdk_notify_startup_complete_with_id"
+              version="2.12">
+      <doc xml:whitespace="preserve">Indicates to the GUI environment that the application has finished
+loading, using a given identifier.
+GTK+ will call this function automatically for #GtkWindow with custom
+startup-notification identifier unless
+gtk_window_set_auto_startup_notification() is called to disable
+that feature.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="startup_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a startup-notification identifier, for which notification process should be completed</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="offscreen_window_get_embedder"
+              c:identifier="gdk_offscreen_window_get_embedder"
+              version="2.18"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Gets the window that @window is embedded in.
+embedded offscreen window</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the embedding #GdkWindow, or %NULL if @window is not an</doc>
+        <type name="Window" c:type="GdkWindow*"/>
+      </return-value>
+      <parameters>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="offscreen_window_get_pixmap"
+              c:identifier="gdk_offscreen_window_get_pixmap"
+              version="2.18"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Gets the offscreen pixmap that an offscreen window renders into.
+If you need to keep this around over window resizes, you need to
+add a reference to it.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">The offscreen pixmap, or %NULL if not offscreen</doc>
+        <type name="Pixmap" c:type="GdkPixmap*"/>
+      </return-value>
+      <parameters>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="offscreen_window_set_embedder"
+              c:identifier="gdk_offscreen_window_set_embedder"
+              version="2.18">
+      <doc xml:whitespace="preserve">Sets @window to be embedded in @embedder.
+To fully embed an offscreen window, in addition to calling this
+function, it is also necessary to handle the #GdkWindow::pick-embedded-child
+signal on the @embedder and the #GdkWindow::to-embedder and
+#GdkWindow::from-embedder signals on @window.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="embedder" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkWindow that @window gets embedded in</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pango_context_get"
+              c:identifier="gdk_pango_context_get"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a #PangoContext for the default GDK screen.
+The context must be freed when you're finished with it.
+When using GTK+, normally you should use gtk_widget_get_pango_context()
+instead of this function, to get the appropriate context for
+the widget you intend to render text onto.
+The newly created context will have the default font options (see
+#cairo_font_options_t) for the default screen; if these options
+change it will not be updated. Using gtk_widget_get_pango_context()
+is more convenient if you want to keep a context around and track
+changes to the screen's font rendering settings.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a new #PangoContext for the default display</doc>
+        <type name="Pango.Context" c:type="PangoContext*"/>
+      </return-value>
+    </function>
+    <function name="pango_context_get_for_screen"
+              c:identifier="gdk_pango_context_get_for_screen"
+              version="2.2"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a #PangoContext for @screen.
+The context must be freed when you're finished with it.
+When using GTK+, normally you should use gtk_widget_get_pango_context()
+instead of this function, to get the appropriate context for
+the widget you intend to render text onto.
+The newly created context will have the default font options
+(see #cairo_font_options_t) for the screen; if these options
+change it will not be updated. Using gtk_widget_get_pango_context()
+is more convenient if you want to keep a context around and track
+changes to the screen's font rendering settings.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a new #PangoContext for @screen</doc>
+        <type name="Pango.Context" c:type="PangoContext*"/>
+      </return-value>
+      <parameters>
+        <parameter name="screen" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkScreen for which the context is to be created.</doc>
+          <type name="Screen" c:type="GdkScreen*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pango_layout_get_clip_region"
+              c:identifier="gdk_pango_layout_get_clip_region">
+      <doc xml:whitespace="preserve">Obtains a clip region which contains the areas where the given ranges
+of text would be drawn. @x_origin and @y_origin are the top left point
+to center the layout. @index_ranges should contain
+ranges of bytes in the layout's text.
+Note that the regions returned correspond to logical extents of the text
+ranges, not ink extents. So the drawn layout may in fact touch areas out of
+the clip region.  The clip region is mainly useful for highlightling parts
+of text, such as when text is selected.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a clip region containing the given ranges</doc>
+        <type name="cairo.Region" c:type="cairo_region_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="layout" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoLayout</doc>
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </parameter>
+        <parameter name="x_origin" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X pixel where you intend to draw the layout with this clip</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y_origin" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y pixel where you intend to draw the layout with this clip</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="index_ranges" transfer-ownership="none">
+          <doc xml:whitespace="preserve">array of byte indexes into the layout, where even members of array are start indexes and odd elements are end indexes</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="n_ranges" transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of ranges in @index_ranges, i.e. half the size of @index_ranges</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pango_layout_line_get_clip_region"
+              c:identifier="gdk_pango_layout_line_get_clip_region">
+      <doc xml:whitespace="preserve">Obtains a clip region which contains the areas where the given
+ranges of text would be drawn. @x_origin and @y_origin are the top left
+position of the layout. @index_ranges
+should contain ranges of bytes in the layout's text. The clip
+region will include space to the left or right of the line (to the
+layout bounding box) if you have indexes above or below the indexes
+contained inside the line. This is to draw the selection all the way
+to the side of the layout. However, the clip region is in line coordinates,
+not layout coordinates.
+Note that the regions returned correspond to logical extents of the text
+ranges, not ink extents. So the drawn line may in fact touch areas out of
+the clip region.  The clip region is mainly useful for highlightling parts
+of text, such as when text is selected.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a clip region containing the given ranges</doc>
+        <type name="cairo.Region" c:type="cairo_region_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="line" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoLayoutLine</doc>
+          <type name="Pango.LayoutLine" c:type="PangoLayoutLine*"/>
+        </parameter>
+        <parameter name="x_origin" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X pixel where you intend to draw the layout line with this clip</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y_origin" transfer-ownership="none">
+          <doc xml:whitespace="preserve">baseline pixel where you intend to draw the layout line with this clip</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="index_ranges" transfer-ownership="none">
+          <doc xml:whitespace="preserve">array of byte indexes into the layout, where even members of array are start indexes and odd elements are end indexes</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="n_ranges" transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of ranges in @index_ranges, i.e. half the size of @index_ranges</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_args" c:identifier="gdk_parse_args" version="2.2">
+      <doc xml:whitespace="preserve">Parse command line arguments, and store for future
+use by calls to gdk_display_open().
+Any arguments used by GDK are removed from the array and @argc and @argv are
+updated accordingly.
+You shouldn't call this function explicitely if you are using
+gtk_init(), gtk_init_check(), gdk_init(), or gdk_init_check().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of command line arguments.</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="argv" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the array of command line arguments.</doc>
+          <type name="utf8" c:type="gchar***"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pixbuf_get_from_drawable"
+              c:identifier="gdk_pixbuf_get_from_drawable"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Transfers image data from a #GdkDrawable and converts it to an RGB(A)
+representation inside a #GdkPixbuf. In other words, copies
+image data from a server-side drawable to a client-side RGB(A) buffer.
+This allows you to efficiently read individual pixels on the client side.
+If the drawable @src has no colormap (gdk_drawable_get_colormap()
+returns %NULL), then a suitable colormap must be specified.
+Typically a #GdkWindow or a pixmap created by passing a #GdkWindow
+to gdk_pixmap_new() will already have a colormap associated with
+it.  If the drawable has a colormap, the @cmap argument will be
+ignored.  If the drawable is a bitmap (1 bit per pixel pixmap),
+then a colormap is not required; pixels with a value of 1 are
+assumed to be white, and pixels with a value of 0 are assumed to be
+black. For taking screenshots, gdk_colormap_get_system() returns
+the correct colormap to use.
+If the specified destination pixbuf @dest is %NULL, then this
+function will create an RGB pixbuf with 8 bits per channel and no
+alpha, with the same size specified by the @width and @height
+arguments.  In this case, the @dest_x and @dest_y arguments must be
+specified as 0.  If the specified destination pixbuf is not %NULL
+and it contains alpha information, then the filled pixels will be
+set to full opacity (alpha = 255).
+If the specified drawable is a pixmap, then the requested source
+rectangle must be completely contained within the pixmap, otherwise
+the function will return %NULL. For pixmaps only (not for windows)
+passing -1 for width or height is allowed to mean the full width
+or height of the pixmap.
+If the specified drawable is a window, and the window is off the
+screen, then there is no image data in the obscured/offscreen
+regions to be placed in the pixbuf. The contents of portions of the
+pixbuf corresponding to the offscreen region are undefined.
+If the window you're obtaining data from is partially obscured by
+other windows, then the contents of the pixbuf areas corresponding
+to the obscured regions are undefined.
+If the target drawable is not mapped (typically because it's
+iconified/minimized or not on the current workspace), then %NULL
+will be returned.
+If memory can't be allocated for the return value, %NULL will be returned
+instead.
+(In short, there are several ways this function can fail, and if it fails
+it returns %NULL; so check the return value.)
+pixbuf with a reference count of 1 if no destination pixbuf was specified, or %NULL on error</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">The same pixbuf as @dest if it was non-%NULL, or a newly-created</doc>
+        <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">Destination pixbuf, or %NULL if a new pixbuf should be created.</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Source drawable.</doc>
+          <type name="Drawable" c:type="GdkDrawable*"/>
+        </parameter>
+        <parameter name="cmap" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A colormap if @src doesn't have one set.</doc>
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </parameter>
+        <parameter name="src_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Source X coordinate within drawable.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="src_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Source Y coordinate within drawable.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="dest_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Destination X coordinate in pixbuf, or 0 if @dest is NULL.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="dest_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Destination Y coordinate in pixbuf, or 0 if @dest is NULL.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Width in pixels of region to get.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Height in pixels of region to get.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pixbuf_get_from_surface"
+              c:identifier="gdk_pixbuf_get_from_surface"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Transfers image data from a #cairo_surface_t and converts it to an RGB(A)
+representation inside a #GdkPixbuf. This allows you to efficiently read individual
+pixels from Cairo surfaces. For #GdkWindows, use gdk_pixbuf_get_from_drawable()
+instead.
+If the specified destination pixbuf @dest is %NULL, then this
+function will create an RGB pixbuf with 8 bits per channel. The pixbuf will
+contain an alpha channel if the @surface contains one. In this case, the @dest_x 
+and @dest_y arguments must be specified as 0.
+If the specified drawable is a window, and the window is off the
+screen, then there is no image data in the obscured/offscreen
+regions to be placed in the pixbuf. The contents of portions of the
+pixbuf corresponding to the offscreen region are undefined.
+If the window you're obtaining data from is partially obscured by
+other windows, then the contents of the pixbuf areas corresponding
+to the obscured regions are undefined.
+If memory can't be allocated for the return value, %NULL will be returned
+instead.
+(In short, there are several ways this function can fail, and if it fails
+it returns %NULL; so check the return value.)
+pixbuf with a reference count of 1 if no destination pixbuf was specified, or %NULL on error</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">The same pixbuf as @dest if it was non-%NULL, or a newly-created</doc>
+        <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">Destination pixbuf, or %NULL if a new pixbuf should be created.</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+        <parameter name="surface" transfer-ownership="none">
+          <doc xml:whitespace="preserve">surface to copy from</doc>
+          <type name="cairo.Surface" c:type="cairo_surface_t*"/>
+        </parameter>
+        <parameter name="src_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Source X coordinate within drawable.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="src_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Source Y coordinate within drawable.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="dest_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Destination X coordinate in pixbuf, or 0 if @dest is NULL.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="dest_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Destination Y coordinate in pixbuf, or 0 if @dest is NULL.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Width in pixels of region to get.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Height in pixels of region to get.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pixbuf_render_pixmap_and_mask"
+              c:identifier="gdk_pixbuf_render_pixmap_and_mask">
+      <doc xml:whitespace="preserve">Creates a pixmap and a mask bitmap which are returned in the @pixmap_return
+and @mask_return arguments, respectively, and renders a pixbuf and its
+corresponding thresholded alpha mask to them.  This is merely a convenience
+function; applications that need to render pixbufs with dither offsets or to
+given drawables should use Cairo and gdk_pixbuf_render_threshold_alpha().
+The pixmap that is created is created for the colormap returned
+by gdk_colormap_get_system(). You normally will want to instead use
+the actual colormap for a widget, and use
+gdk_pixbuf_render_pixmap_and_mask_for_colormap().
+If the pixbuf does not have an alpha channel, then *@mask_return will be set
+to %NULL.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pixbuf" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A pixbuf.</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+        <parameter name="pixmap_return" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Location to store a pointer to the created pixmap, or %NULL if the pixmap is not needed.</doc>
+          <type name="Pixmap" c:type="GdkPixmap**"/>
+        </parameter>
+        <parameter name="mask_return" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Location to store a pointer to the created mask, or %NULL if the mask is not needed.</doc>
+          <type name="Bitmap" c:type="GdkBitmap**"/>
+        </parameter>
+        <parameter name="alpha_threshold" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Threshold value for opacity values.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pixbuf_render_pixmap_and_mask_for_colormap"
+              c:identifier="gdk_pixbuf_render_pixmap_and_mask_for_colormap">
+      <doc xml:whitespace="preserve">Creates a pixmap and a mask bitmap which are returned in the @pixmap_return
+and @mask_return arguments, respectively, and renders a pixbuf and its
+corresponding tresholded alpha mask to them.  This is merely a convenience
+function; applications that need to render pixbufs with dither offsets or to
+given drawables should use Cairo and gdk_pixbuf_render_threshold_alpha().
+The pixmap that is created uses the #GdkColormap specified by @colormap.
+This colormap must match the colormap of the window where the pixmap
+will eventually be used or an error will result.
+If the pixbuf does not have an alpha channel, then *@mask_return will be set
+to %NULL.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pixbuf" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A pixbuf.</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+        <parameter name="colormap" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GdkColormap</doc>
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </parameter>
+        <parameter name="pixmap_return" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Location to store a pointer to the created pixmap, or %NULL if the pixmap is not needed.</doc>
+          <type name="Pixmap" c:type="GdkPixmap**"/>
+        </parameter>
+        <parameter name="mask_return" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Location to store a pointer to the created mask, or %NULL if the mask is not needed.</doc>
+          <type name="Bitmap" c:type="GdkBitmap**"/>
+        </parameter>
+        <parameter name="alpha_threshold" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Threshold value for opacity values.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pixbuf_render_threshold_alpha"
+              c:identifier="gdk_pixbuf_render_threshold_alpha">
+      <doc xml:whitespace="preserve">Takes the opacity values in a rectangular portion of a pixbuf and thresholds
+them to produce a bi-level alpha mask that can be used as a clipping mask for
+a drawable.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pixbuf" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A pixbuf.</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+        <parameter name="bitmap" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Bitmap where the bilevel mask will be painted to.</doc>
+          <type name="Bitmap" c:type="GdkBitmap*"/>
+        </parameter>
+        <parameter name="src_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Source X coordinate.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="src_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">source Y coordinate.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="dest_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Destination X coordinate.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="dest_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Destination Y coordinate.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Width of region to threshold, or -1 to use pixbuf width</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Height of region to threshold, or -1 to use pixbuf height</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="alpha_threshold" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Opacity values below this will be painted as zero; all other values will be painted as one.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pointer_grab"
+              c:identifier="gdk_pointer_grab"
+              deprecated="Use gdk_device_grab() instead."
+              deprecated-version="3.0">
+      <doc xml:whitespace="preserve">Grabs the pointer (usually a mouse) so that all events are passed to this
+application until the pointer is ungrabbed with gdk_pointer_ungrab(), or
+the grab window becomes unviewable.
+This overrides any previous pointer grab by this client.
+Pointer grabs are used for operations which need complete control over mouse
+events, even if the mouse leaves the application.
+For example in GTK+ it is used for Drag and Drop, for dragging the handle in
+the #GtkHPaned and #GtkVPaned widgets, and for resizing columns in #GtkCList
+widgets.
+Note that if the event mask of an X window has selected both button press and
+button release events, then a button press event will cause an automatic
+pointer grab until the button is released.
+X does this automatically since most applications expect to receive button
+press and release events in pairs.
+It is equivalent to a pointer grab on the window with @owner_events set to
+%TRUE.
+If you set up anything at the time you take the grab that needs to be cleaned
+up when the grab ends, you should handle the #GdkEventGrabBroken events that
+are emitted when the grab ends unvoluntarily.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%GDK_GRAB_SUCCESS if the grab was successful.</doc>
+        <type name="GrabStatus" c:type="GdkGrabStatus"/>
+      </return-value>
+      <parameters>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkWindow which will own the grab (the grab window).</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="owner_events" transfer-ownership="none">
+          <doc xml:whitespace="preserve">if %FALSE then all pointer events are reported with respect to events for this application are reported as normal, but pointer events outside this application are reported with respect to @window and only if selected by</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="event_mask" transfer-ownership="none">
+          <doc xml:whitespace="preserve">specifies the event mask, which is used in accordance with may be selected.</doc>
+          <type name="EventMask" c:type="GdkEventMask"/>
+        </parameter>
+        <parameter name="confine_to" transfer-ownership="none">
+          <doc xml:whitespace="preserve">If non-%NULL, the pointer will be confined to this window during the grab. If the pointer is outside @confine_to, it will automatically be moved to the closest edge of @confine_to and enter and leave events will be generated as necessary.</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="cursor" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the cursor to display while the grab is active. If this is %NULL then the normal cursors are used for @window and its descendants, and the cursor for @window is used for all other windows.</doc>
+          <type name="Cursor" c:type="GdkCursor*"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the timestamp of the event which led to this pointer grab. This usually comes from a #GdkEventButton struct, though %GDK_CURRENT_TIME can be used if the time isn't known.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pointer_is_grabbed"
+              c:identifier="gdk_pointer_is_grabbed"
+              deprecated="Use gdk_display_device_is_grabbed() instead."
+              deprecated-version="3.0">
+      <doc xml:whitespace="preserve">Returns %TRUE if the pointer on the default display is currently 
+grabbed by this application.
+Note that this does not take the inmplicit pointer grab on button
+presses into account.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the pointer is currently grabbed by this application.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="pointer_ungrab"
+              c:identifier="gdk_pointer_ungrab"
+              deprecated="Use gdk_device_ungrab(), together with gdk_device_grab()"
+              deprecated-version="3.0">
+      <doc xml:whitespace="preserve">Ungrabs the pointer on the default display, if it is grabbed by this 
+application.
+instead.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="time_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a timestamp from a #GdkEvent, or %GDK_CURRENT_TIME if no timestamp is available.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pre_parse_libgtk_only"
+              c:identifier="gdk_pre_parse_libgtk_only">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="property_change" c:identifier="gdk_property_change">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="window" transfer-ownership="none">
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="property" transfer-ownership="none">
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="PropMode" c:type="GdkPropMode"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="guint8" c:type="guchar*"/>
+        </parameter>
+        <parameter name="nelements" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="property_delete" c:identifier="gdk_property_delete">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="window" transfer-ownership="none">
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="property" transfer-ownership="none">
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="property_get" c:identifier="gdk_property_get">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="window" transfer-ownership="none">
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="property" transfer-ownership="none">
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <type name="gulong" c:type="gulong"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="gulong" c:type="gulong"/>
+        </parameter>
+        <parameter name="pdelete" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="actual_property_type" transfer-ownership="none">
+          <type name="Atom" c:type="GdkAtom*"/>
+        </parameter>
+        <parameter name="actual_format" transfer-ownership="none">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="actual_length" transfer-ownership="none">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="guint8" c:type="guchar**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_depths" c:identifier="gdk_query_depths">
+      <doc xml:whitespace="preserve">This function returns the available bit depths for the default
+screen. It's equivalent to listing the visuals
+(gdk_list_visuals()) and then looking at the depth field in each
+visual, removing duplicates.
+The array returned by this function should not be freed.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="depths"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">return location for available depths</doc>
+          <array c:type="gint**">
+            <type name="gint"/>
+          </array>
+        </parameter>
+        <parameter name="count"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">return location for number of available depths</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_visual_types" c:identifier="gdk_query_visual_types">
+      <doc xml:whitespace="preserve">This function returns the available visual types for the default
+screen. It's equivalent to listing the visuals
+(gdk_list_visuals()) and then looking at the type field in each
+visual, removing duplicates.
+The array returned by this function should not be freed.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="visual_types" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for the available visual types</doc>
+          <type name="VisualType" c:type="GdkVisualType**"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for the number of available visual types</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rectangle_get_type" c:identifier="gdk_rectangle_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="rectangle_intersect"
+              c:identifier="gdk_rectangle_intersect">
+      <doc xml:whitespace="preserve">Calculates the intersection of two rectangles. It is allowed for
+do not intersect, @dest's width and height is set to 0 and its x 
+and y values are undefined. If you are only interested in whether
+the rectangles intersect, but not in the intersecting area itself,
+pass %NULL for @dest.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the rectangles intersect.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="src1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkRectangle</doc>
+          <type name="Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="src2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkRectangle</doc>
+          <type name="Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="dest"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">return location for the intersection of @src1 and @src2, or %NULL</doc>
+          <type name="Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rectangle_union" c:identifier="gdk_rectangle_union">
+      <doc xml:whitespace="preserve">Calculates the union of two rectangles.
+The union of rectangles @src1 and @src2 is the smallest rectangle which
+includes both @src1 and @src2 within it.
+It is allowed for @dest to be the same as either @src1 or @src2.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="src1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkRectangle</doc>
+          <type name="Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="src2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkRectangle</doc>
+          <type name="Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="dest" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for the union of @src1 and @src2</doc>
+          <type name="Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_convert" c:identifier="gdk_selection_convert">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="requestor" transfer-ownership="none">
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="selection" transfer-ownership="none">
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="target" transfer-ownership="none">
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_owner_get"
+              c:identifier="gdk_selection_owner_get"
+              introspectable="0">
+      <return-value>
+        <type name="Window" c:type="GdkWindow*"/>
+      </return-value>
+      <parameters>
+        <parameter name="selection" transfer-ownership="none">
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_owner_get_for_display"
+              c:identifier="gdk_selection_owner_get_for_display"
+              version="2.2"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Determine the owner of the given selection.
+Note that the return value may be owned by a different 
+process if a foreign window was previously created for that
+window, but a new foreign window will never be created by this call. 
+window known to the current process, the #GdkWindow that owns the 
+selection, otherwise %NULL.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">if there is a selection owner for this window, and it is a</doc>
+        <type name="Window" c:type="GdkWindow*"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkDisplay.</doc>
+          <type name="Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <parameter name="selection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an atom indentifying a selection.</doc>
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_owner_set"
+              c:identifier="gdk_selection_owner_set">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="owner" transfer-ownership="none">
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="selection" transfer-ownership="none">
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+        <parameter name="send_event" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_owner_set_for_display"
+              c:identifier="gdk_selection_owner_set_for_display"
+              version="2.2">
+      <doc xml:whitespace="preserve">Sets the #GdkWindow @owner as the current owner of the selection @selection.
+otherwise %FALSE.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the selection owner was successfully changed to owner,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkDisplay.</doc>
+          <type name="Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <parameter name="owner" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow or %NULL to indicate that the owner for the given should be unset.</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="selection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an atom identifying a selection.</doc>
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">timestamp to use when setting the selection. If this is older than the timestamp given last time the owner was set for the given selection, the request will be ignored.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+        <parameter name="send_event" transfer-ownership="none">
+          <doc xml:whitespace="preserve">if %TRUE, and the new owner is different from the current owner, the current owner will be sent a SelectionClear event.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_property_get"
+              c:identifier="gdk_selection_property_get">
+      <doc xml:whitespace="preserve">Retrieves selection data that was stored by the selection
+data in response to a call to gdk_selection_convert(). This function
+will not be used by applications, who should use the #GtkClipboard
+API instead.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the length of the retrieved data.</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="requestor" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the window on which the data is stored</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store a pointer to the retrieved data.</doc>
+          <type name="guint8" c:type="guchar**"/>
+        </parameter>
+        <parameter name="prop_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store the type of the property.</doc>
+          <type name="Atom" c:type="GdkAtom*"/>
+        </parameter>
+        <parameter name="prop_format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store the format of the property.</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_send_notify"
+              c:identifier="gdk_selection_send_notify">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="requestor" transfer-ownership="none">
+          <type name="NativeWindow" c:type="GdkNativeWindow"/>
+        </parameter>
+        <parameter name="selection" transfer-ownership="none">
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="target" transfer-ownership="none">
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="property" transfer-ownership="none">
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_send_notify_for_display"
+              c:identifier="gdk_selection_send_notify_for_display"
+              version="2.2">
+      <doc xml:whitespace="preserve">Send a response to SelectionRequest event.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkDisplay where @requestor is realized</doc>
+          <type name="Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <parameter name="requestor" transfer-ownership="none">
+          <doc xml:whitespace="preserve">window to which to deliver response.</doc>
+          <type name="NativeWindow" c:type="GdkNativeWindow"/>
+        </parameter>
+        <parameter name="selection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">selection that was requested.</doc>
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="target" transfer-ownership="none">
+          <doc xml:whitespace="preserve">target that was selected.</doc>
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="property" transfer-ownership="none">
+          <doc xml:whitespace="preserve">property in which the selection owner stored the data, or %GDK_NONE to indicate that the request was rejected.</doc>
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">timestamp.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_double_click_time"
+              c:identifier="gdk_set_double_click_time">
+      <doc xml:whitespace="preserve">Set the double click time for the default display. See
+gdk_display_set_double_click_time(). 
+See also gdk_display_set_double_click_distance().
+Applications should &lt;emphasis&gt;not&lt;/emphasis&gt; set this, it is a 
+global user-configured setting.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="msec" transfer-ownership="none">
+          <doc xml:whitespace="preserve">double click time in milliseconds (thousandths of a second)</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_locale" c:identifier="gdk_set_locale">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="set_pointer_hooks"
+              c:identifier="gdk_set_pointer_hooks"
+              introspectable="0"
+              deprecated="Use gdk_display_set_device_hooks() instead."
+              deprecated-version="3.0">
+      <doc xml:whitespace="preserve">This function allows for hooking into the operation
+of getting the current location of the pointer. This
+is only useful for such low-level tools as an
+event recorder. Applications should never have any
+reason to use this facility.
+This function is not multihead safe. For multihead operation,
+see gdk_display_set_pointer_hooks().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the previous pointer hook table</doc>
+        <type name="PointerHooks" c:type="GdkPointerHooks*"/>
+      </return-value>
+      <parameters>
+        <parameter name="new_hooks" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a table of pointers to functions for getting quantities related to the current pointer position, or %NULL to restore the default table.</doc>
+          <type name="PointerHooks" c:type="GdkPointerHooks*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_program_class" c:identifier="gdk_set_program_class">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="program_class" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_show_events" c:identifier="gdk_set_show_events">
+      <doc xml:whitespace="preserve">Sets whether a trace of received events is output.
+Note that GTK+ must be compiled with debugging (that is,
+configured using the &lt;option&gt;--enable-debug&lt;/option&gt; option)
+to use this option.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="show_events" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to output event debugging information.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_sm_client_id" c:identifier="gdk_set_sm_client_id">
+      <doc xml:whitespace="preserve">Sets the &lt;literal&gt;SM_CLIENT_ID&lt;/literal&gt; property on the application's leader window so that
+the window manager can save the application's state using the X11R6 ICCCM
+session management protocol.
+See the X Session Management Library documentation for more information on
+session management and the Inter-Client Communication Conventions Manual
+(ICCCM) for information on the &lt;literal&gt;WM_CLIENT_LEADER&lt;/literal&gt; property. 
+(Both documents are part of the X Window System distribution.)</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="sm_client_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the client id assigned by the session manager when the connection was opened, or %NULL to remove the property.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="setting_get" c:identifier="gdk_setting_get">
+      <doc xml:whitespace="preserve">Obtains a desktop-wide setting, such as the double-click time,
+for the default screen. See gdk_screen_get_setting().
+in @value, %FALSE otherwise.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the setting existed and a value was stored</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the setting.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store the value of the setting.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="spawn_command_line_on_screen"
+              c:identifier="gdk_spawn_command_line_on_screen"
+              version="2.4"
+              throws="1">
+      <doc xml:whitespace="preserve">Like g_spawn_command_line_async(), except the child process is
+spawned in such an environment that on calling gdk_display_open()
+it would be returned a #GdkDisplay with @screen as the default
+screen.
+This is useful for applications which wish to launch an application
+on a specific screen.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE on success, %FALSE if error is set.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="screen" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkScreen</doc>
+          <type name="Screen" c:type="GdkScreen*"/>
+        </parameter>
+        <parameter name="command_line" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a command line</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="spawn_on_screen"
+              c:identifier="gdk_spawn_on_screen"
+              version="2.4"
+              introspectable="0"
+              throws="1">
+      <doc xml:whitespace="preserve">Like g_spawn_async(), except the child process is spawned in such
+an environment that on calling gdk_display_open() it would be
+returned a #GdkDisplay with @screen as the default screen.
+This is useful for applications which wish to launch an application
+on a specific screen.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE on success, %FALSE if error is set</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="screen" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkScreen</doc>
+          <type name="Screen" c:type="GdkScreen*"/>
+        </parameter>
+        <parameter name="working_directory" transfer-ownership="none">
+          <doc xml:whitespace="preserve">child's current working directory, or %NULL to inherit parent's</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="argv" transfer-ownership="none">
+          <doc xml:whitespace="preserve">child's argument vector</doc>
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="envp" transfer-ownership="none">
+          <doc xml:whitespace="preserve">child's environment, or %NULL to inherit parent's</doc>
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags from #GSpawnFlags</doc>
+          <type name="GLib.SpawnFlags" c:type="GSpawnFlags"/>
+        </parameter>
+        <parameter name="child_setup" transfer-ownership="none" closure="6">
+          <doc xml:whitespace="preserve">function to run in the child just before exec()</doc>
+          <type name="GLib.SpawnChildSetupFunc" c:type="GSpawnChildSetupFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data for @child_setup</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="child_pid" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for child process ID, or %NULL</doc>
+          <type name="GLib.Pid" c:type="GPid*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="spawn_on_screen_with_pipes"
+              c:identifier="gdk_spawn_on_screen_with_pipes"
+              version="2.4"
+              introspectable="0"
+              throws="1">
+      <doc xml:whitespace="preserve">Like g_spawn_async_with_pipes(), except the child process is
+spawned in such an environment that on calling gdk_display_open()
+it would be returned a #GdkDisplay with @screen as the default
+screen.
+This is useful for applications which wish to launch an application
+on a specific screen.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE on success, %FALSE if an error was set</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="screen" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkScreen</doc>
+          <type name="Screen" c:type="GdkScreen*"/>
+        </parameter>
+        <parameter name="working_directory" transfer-ownership="none">
+          <doc xml:whitespace="preserve">child's current working directory, or %NULL to inherit parent's</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="argv" transfer-ownership="none">
+          <doc xml:whitespace="preserve">child's argument vector</doc>
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="envp" transfer-ownership="none">
+          <doc xml:whitespace="preserve">child's environment, or %NULL to inherit parent's</doc>
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags from #GSpawnFlags</doc>
+          <type name="GLib.SpawnFlags" c:type="GSpawnFlags"/>
+        </parameter>
+        <parameter name="child_setup" transfer-ownership="none" closure="6">
+          <doc xml:whitespace="preserve">function to run in the child just before exec()</doc>
+          <type name="GLib.SpawnChildSetupFunc" c:type="GSpawnChildSetupFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data for @child_setup</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="child_pid" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for child process ID, or %NULL</doc>
+          <type name="GLib.Pid" c:type="GPid*"/>
+        </parameter>
+        <parameter name="standard_input" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for file descriptor to write to child's stdin, or %NULL</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="standard_output" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for file descriptor to read child's stdout, or %NULL</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="standard_error" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for file descriptor to read child's stderr, or %NULL</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_to_compound_text"
+              c:identifier="gdk_string_to_compound_text">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="encoding" transfer-ownership="none">
+          <type name="Atom" c:type="GdkAtom*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="ctext" transfer-ownership="none">
+          <type name="guint8" c:type="guchar**"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_to_compound_text_for_display"
+              c:identifier="gdk_string_to_compound_text_for_display"
+              version="2.2">
+      <doc xml:whitespace="preserve">Convert a string from the encoding of the current 
+locale into a form suitable for storing in a window property.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">0 upon success, non-zero upon failure.</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkDisplay where the encoding is defined.</doc>
+          <type name="Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <parameter name="str" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a nul-terminated string.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="encoding" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store the encoding atom (to be used as the type for the property).</doc>
+          <type name="Atom" c:type="GdkAtom*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store the format of the property</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="ctext" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store newly allocated data for the property.</doc>
+          <type name="guint8" c:type="guchar**"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the length of @text, in bytes</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="synthesize_window_state"
+              c:identifier="gdk_synthesize_window_state">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="window" transfer-ownership="none">
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="unset_flags" transfer-ownership="none">
+          <type name="WindowState" c:type="GdkWindowState"/>
+        </parameter>
+        <parameter name="set_flags" transfer-ownership="none">
+          <type name="WindowState" c:type="GdkWindowState"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_render_sync"
+              c:identifier="gdk_test_render_sync"
+              version="2.14">
+      <doc xml:whitespace="preserve">This function retrieves a pixel from @window to force the windowing
+system to carry out any pending rendering commands.
+This function is intended to be used to syncronize with rendering
+pipelines, to benchmark windowing system rendering operations.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a mapped #GdkWindow</doc>
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_simulate_button"
+              c:identifier="gdk_test_simulate_button">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="window" transfer-ownership="none">
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="button" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="modifiers" transfer-ownership="none">
+          <type name="ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+        <parameter name="button_pressrelease" transfer-ownership="none">
+          <type name="EventType" c:type="GdkEventType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_simulate_key" c:identifier="gdk_test_simulate_key">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="window" transfer-ownership="none">
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="keyval" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="modifiers" transfer-ownership="none">
+          <type name="ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+        <parameter name="key_pressrelease" transfer-ownership="none">
+          <type name="EventType" c:type="GdkEventType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="text_property_to_text_list"
+              c:identifier="gdk_text_property_to_text_list">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="encoding" transfer-ownership="none">
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <type name="guint8" c:type="guchar*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="list" transfer-ownership="none">
+          <type name="utf8" c:type="gchar***"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="text_property_to_text_list_for_display"
+              c:identifier="gdk_text_property_to_text_list_for_display"
+              version="2.2">
+      <doc xml:whitespace="preserve">Convert a text string from the encoding as it is stored 
+in a property into an array of strings in the encoding of
+the current locale. (The elements of the array represent the
+nul-separated elements of the original text string.)
+if the conversion failed.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the number of strings stored in list, or 0,</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GdkDisplay where the encoding is defined.</doc>
+          <type name="Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <parameter name="encoding" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an atom representing the encoding. The most common values for this are STRING, or COMPOUND_TEXT. This is value used as the type for the property.</doc>
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the format of the property.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The text data.</doc>
+          <type name="guint8" c:type="guchar*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of items to transform.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="list" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store a terminated array of strings in the encoding of the current locale. This array should be freed using gdk_free_text_list().</doc>
+          <type name="utf8" c:type="gchar***"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="text_property_to_utf8_list"
+              c:identifier="gdk_text_property_to_utf8_list">
+      <doc xml:whitespace="preserve">Convert a text property in the giving encoding to
+a list of UTF-8 strings. 
+list.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the number of strings in the resulting</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="encoding" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an atom representing the encoding of the text</doc>
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the format of the property</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the text to convert</doc>
+          <type name="guint8" c:type="guchar*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the length of @text, in bytes</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="list" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">location to store the list of strings or %NULL. The list should be freed with g_strfreev().</doc>
+          <type name="utf8" c:type="gchar***"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="text_property_to_utf8_list_for_display"
+              c:identifier="gdk_text_property_to_utf8_list_for_display"
+              version="2.2">
+      <doc xml:whitespace="preserve">Converts a text property in the given encoding to
+a list of UTF-8 strings. 
+list.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the number of strings in the resulting</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkDisplay</doc>
+          <type name="Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <parameter name="encoding" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an atom representing the encoding of the text</doc>
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the format of the property</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the text to convert</doc>
+          <type name="guint8" c:type="guchar*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the length of @text, in bytes</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="list" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store the list of strings or %NULL. The list should be freed with g_strfreev().</doc>
+          <type name="utf8" c:type="gchar***"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_idle"
+              c:identifier="gdk_threads_add_idle"
+              version="2.12"
+              introspectable="0">
+      <doc xml:whitespace="preserve">A wrapper for the common usage of gdk_threads_add_idle_full() 
+assigning the default priority, #G_PRIORITY_DEFAULT_IDLE.
+See gdk_threads_add_idle_full().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the ID (greater than 0) of the event source.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="function" transfer-ownership="none" closure="1">
+          <doc xml:whitespace="preserve">function to call</doc>
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to @function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_idle_full"
+              c:identifier="gdk_threads_add_idle_full"
+              version="2.12">
+      <doc xml:whitespace="preserve">Adds a function to be called whenever there are no higher priority
+events pending.  If the function returns %FALSE it is automatically
+removed from the list of event sources and will not be called again.
+This variant of g_idle_add_full() calls @function with the GDK lock
+held. It can be thought of a MT-safe version for GTK+ widgets for the 
+following use case, where you have to worry about idle_callback()
+running in thread A and accessing @self after it has been finalized
+in thread B:
+|[
+static gboolean
+idle_callback (gpointer data)
+{
+/&amp;ast; gdk_threads_enter(); would be needed for g_idle_add() &amp;ast;/
+SomeWidget *self = data;
+/&amp;ast; do stuff with self &amp;ast;/
+self-&gt;idle_id = 0;
+/&amp;ast; gdk_threads_leave(); would be needed for g_idle_add() &amp;ast;/
+return FALSE;
+}
+static void
+some_widget_do_stuff_later (SomeWidget *self)
+{
+self-&gt;idle_id = gdk_threads_add_idle (idle_callback, self)
+/&amp;ast; using g_idle_add() here would require thread protection in the callback &amp;ast;/
+}
+static void
+some_widget_finalize (GObject *object)
+{
+SomeWidget *self = SOME_WIDGET (object);
+if (self-&gt;idle_id)
+g_source_remove (self-&gt;idle_id);
+G_OBJECT_CLASS (parent_class)-&gt;finalize (object);
+}
+]|</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the ID (greater than 0) of the event source.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the priority of the idle source. Typically this will be in the range btweeen #G_PRIORITY_DEFAULT_IDLE and #G_PRIORITY_HIGH_IDLE</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="function"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <doc xml:whitespace="preserve">function to call</doc>
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to @function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   scope="async">
+          <doc xml:whitespace="preserve">function to call when the idle is removed, or %NULL</doc>
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_timeout"
+              c:identifier="gdk_threads_add_timeout"
+              version="2.12"
+              introspectable="0">
+      <doc xml:whitespace="preserve">A wrapper for the common usage of gdk_threads_add_timeout_full() 
+assigning the default priority, #G_PRIORITY_DEFAULT.
+See gdk_threads_add_timeout_full().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the ID (greater than 0) of the event source.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="interval" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the time between calls to the function, in milliseconds (1/1000ths of a second)</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="function" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">function to call</doc>
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to @function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_timeout_full"
+              c:identifier="gdk_threads_add_timeout_full"
+              version="2.12">
+      <doc xml:whitespace="preserve">Sets a function to be called at regular intervals holding the GDK lock,
+with the given priority.  The function is called repeatedly until it 
+returns %FALSE, at which point the timeout is automatically destroyed 
+and the function will not be called again.  The @notify function is
+called when the timeout is destroyed.  The first call to the
+function will be at the end of the first @interval.
+Note that timeout functions may be delayed, due to the processing of other
+event sources. Thus they should not be relied on for precise timing.
+After each call to the timeout function, the time of the next
+timeout is recalculated based on the current time and the given interval
+(it does not try to 'catch up' time lost in delays).
+This variant of g_timeout_add_full() can be thought of a MT-safe version 
+for GTK+ widgets for the following use case:
+|[
+static gboolean timeout_callback (gpointer data)
+{
+SomeWidget *self = data;
+/&amp;ast; do stuff with self &amp;ast;/
+self-&gt;timeout_id = 0;
+return FALSE;
+}
+static void some_widget_do_stuff_later (SomeWidget *self)
+{
+self-&gt;timeout_id = g_timeout_add (timeout_callback, self)
+}
+static void some_widget_finalize (GObject *object)
+{
+SomeWidget *self = SOME_WIDGET (object);
+if (self-&gt;timeout_id)
+g_source_remove (self-&gt;timeout_id);
+G_OBJECT_CLASS (parent_class)-&gt;finalize (object);
+}
+]|</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the ID (greater than 0) of the event source.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the priority of the timeout source. Typically this will be in the range between #G_PRIORITY_DEFAULT_IDLE and #G_PRIORITY_HIGH_IDLE.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="interval" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the time between calls to the function, in milliseconds (1/1000ths of a second)</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="function"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="3"
+                   destroy="4">
+          <doc xml:whitespace="preserve">function to call</doc>
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to @function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   scope="async">
+          <doc xml:whitespace="preserve">function to call when the timeout is removed, or %NULL</doc>
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_timeout_seconds"
+              c:identifier="gdk_threads_add_timeout_seconds"
+              version="2.14"
+              introspectable="0">
+      <doc xml:whitespace="preserve">A wrapper for the common usage of gdk_threads_add_timeout_seconds_full() 
+assigning the default priority, #G_PRIORITY_DEFAULT.
+For details, see gdk_threads_add_timeout_full().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the ID (greater than 0) of the event source.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="interval" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the time between calls to the function, in seconds</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="function" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">function to call</doc>
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to @function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_timeout_seconds_full"
+              c:identifier="gdk_threads_add_timeout_seconds_full"
+              version="2.14">
+      <doc xml:whitespace="preserve">A variant of gdk_threads_add_timout_full() with second-granularity.
+See g_timeout_add_seconds_full() for a discussion of why it is
+a good idea to use this function if you don't need finer granularity.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the ID (greater than 0) of the event source.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the priority of the timeout source. Typically this will be in the range between #G_PRIORITY_DEFAULT_IDLE and #G_PRIORITY_HIGH_IDLE.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="interval" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the time between calls to the function, in seconds</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="function"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="3"
+                   destroy="4">
+          <doc xml:whitespace="preserve">function to call</doc>
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to @function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   scope="async">
+          <doc xml:whitespace="preserve">function to call when the timeout is removed, or %NULL</doc>
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_enter" c:identifier="gdk_threads_enter">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="threads_init" c:identifier="gdk_threads_init">
+      <doc xml:whitespace="preserve">Initializes GDK so that it can be used from multiple threads
+in conjunction with gdk_threads_enter() and gdk_threads_leave().
+g_thread_init() must be called previous to this function.
+This call must be made before any use of the main loop from
+GTK+; to be safe, call it before gtk_init().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="threads_leave" c:identifier="gdk_threads_leave">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="threads_set_lock_functions"
+              c:identifier="gdk_threads_set_lock_functions"
+              version="2.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Allows the application to replace the standard method that
+GDK uses to protect its data structures. Normally, GDK
+creates a single #GMutex that is locked by gdk_threads_enter(),
+and released by gdk_threads_leave(); using this function an
+application provides, instead, a function @enter_fn that is
+called by gdk_threads_enter() and a function @leave_fn that is
+called by gdk_threads_leave().
+The functions must provide at least same locking functionality
+as the default implementation, but can also do extra application
+specific processing.
+As an example, consider an application that has its own recursive
+lock that when held, holds the GTK+ lock as well. When GTK+ unlocks
+the GTK+ lock when entering a recursive main loop, the application
+must temporarily release its lock as well.
+Most threaded GTK+ apps won't need to use this method.
+This method must be called before gdk_threads_init(), and cannot
+be called multiple times.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="enter_fn" transfer-ownership="none">
+          <doc xml:whitespace="preserve">function called to guard GDK</doc>
+          <type name="GObject.Callback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="leave_fn" transfer-ownership="none">
+          <doc xml:whitespace="preserve">function called to release the guard</doc>
+          <type name="GObject.Callback" c:type="GCallback"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unicode_to_keyval" c:identifier="gdk_unicode_to_keyval">
+      <doc xml:whitespace="preserve">Convert from a ISO10646 character to a key symbol.
+or, if there is no corresponding symbol, 
+wc | 0x01000000</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the corresponding GDK key symbol, if one exists.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="wc" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a ISO10646 encoded character</doc>
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_to_compound_text"
+              c:identifier="gdk_utf8_to_compound_text">
+      <doc xml:whitespace="preserve">Convert from UTF-8 to compound text. 
+false.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the conversion succeeded, otherwise</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a UTF-8 string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="encoding" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store resulting encoding</doc>
+          <type name="Atom" c:type="GdkAtom*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store format of the result</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="ctext" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store the data of the result</doc>
+          <type name="guint8" c:type="guchar**"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store the length of the data stored in @ctext</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_to_compound_text_for_display"
+              c:identifier="gdk_utf8_to_compound_text_for_display"
+              version="2.2">
+      <doc xml:whitespace="preserve">Converts from UTF-8 to compound text. 
+%FALSE.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the conversion succeeded, otherwise</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkDisplay</doc>
+          <type name="Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <parameter name="str" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a UTF-8 string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="encoding" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store resulting encoding</doc>
+          <type name="Atom" c:type="GdkAtom*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store format of the result</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="ctext" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store the data of the result</doc>
+          <type name="guint8" c:type="guchar**"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store the length of the data stored in @ctext</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_to_string_target"
+              c:identifier="gdk_utf8_to_string_target">
+      <doc xml:whitespace="preserve">Converts an UTF-8 string into the best possible representation
+as a STRING. The representation of characters not in STRING
+is not specified; it may be as pseudo-escape sequences
+\x{ABCD}, or it may be in some other form of approximation.
+conversion failed. (It should not fail for
+any properly formed UTF-8 string unless system
+limits like memory or file descriptors are exceeded.)</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the newly-allocated string, or %NULL if the</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a UTF-8 string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="window_at_pointer"
+              c:identifier="gdk_window_at_pointer"
+              deprecated="Use gdk_display_get_window_at_device_position() instead."
+              deprecated-version="3.0">
+      <doc xml:whitespace="preserve">Obtains the window underneath the mouse pointer, returning the
+location of that window in @win_x, @win_y. Returns %NULL if the
+window under the mouse pointer is not known to GDK (if the window
+belongs to another application and a #GdkWindow hasn't been created
+for it with gdk_window_foreign_new())
+gdk_display_get_window_at_pointer() instead.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">window under the mouse pointer</doc>
+        <type name="Window" c:type="GdkWindow*"/>
+      </return-value>
+      <parameters>
+        <parameter name="win_x"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">return location for origin of the window under the pointer</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="win_y"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">return location for origin of the window under the pointer</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="window_constrain_size"
+              c:identifier="gdk_window_constrain_size">
+      <doc xml:whitespace="preserve">Constrains a desired width and height according to a
+set of geometry hints (such as minimum and maximum size).</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="geometry" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkGeometry structure</doc>
+          <type name="Geometry" c:type="GdkGeometry*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a mask indicating what portions of @geometry are set</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">desired width of window</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">desired height of the window</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="new_width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store resulting width</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="new_height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store resulting height</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="window_foreign_new"
+              c:identifier="gdk_window_foreign_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Wraps a native window for the default display in a #GdkWindow.
+This may fail if the window has been destroyed.
+For example in the X backend, a native window handle is an Xlib
+&lt;type&gt;XID&lt;/type&gt;.
+native window or %NULL if the window has been destroyed.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly-created #GdkWindow wrapper for the</doc>
+        <type name="Window" c:type="GdkWindow*"/>
+      </return-value>
+      <parameters>
+        <parameter name="anid" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a native window handle.</doc>
+          <type name="NativeWindow" c:type="GdkNativeWindow"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="window_foreign_new_for_display"
+              c:identifier="gdk_window_foreign_new_for_display"
+              version="2.2"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Wraps a native window in a #GdkWindow.
+This may fail if the window has been destroyed. If the window
+was already known to GDK, a new reference to the existing 
+#GdkWindow is returned.
+For example in the X backend, a native window handle is an Xlib
+&lt;type&gt;XID&lt;/type&gt;.
+%NULL if the window has been destroyed. The wrapper will be
+newly created, if one doesn't exist already.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a #GdkWindow wrapper for the native window or</doc>
+        <type name="Window" c:type="GdkWindow*"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkDisplay where the window handle comes from.</doc>
+          <type name="Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <parameter name="anid" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a native window handle.</doc>
+          <type name="NativeWindow" c:type="GdkNativeWindow"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="window_lookup"
+              c:identifier="gdk_window_lookup"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Looks up the #GdkWindow that wraps the given native window handle. 
+For example in the X backend, a native window handle is an Xlib
+&lt;type&gt;XID&lt;/type&gt;.
+or %NULL if there is none.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the #GdkWindow wrapper for the native window,</doc>
+        <type name="Window" c:type="GdkWindow*"/>
+      </return-value>
+      <parameters>
+        <parameter name="anid" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a native window handle.</doc>
+          <type name="NativeWindow" c:type="GdkNativeWindow"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="window_lookup_for_display"
+              c:identifier="gdk_window_lookup_for_display"
+              version="2.2"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Looks up the #GdkWindow that wraps the given native window handle.
+For example in the X backend, a native window handle is an Xlib
+&lt;type&gt;XID&lt;/type&gt;.
+or %NULL if there is none.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the #GdkWindow wrapper for the native window,</doc>
+        <type name="Window" c:type="GdkWindow*"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkDisplay corresponding to the window handle</doc>
+          <type name="Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <parameter name="anid" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a native window handle.</doc>
+          <type name="NativeWindow" c:type="GdkNativeWindow"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="window_process_all_updates"
+              c:identifier="gdk_window_process_all_updates">
+      <doc xml:whitespace="preserve">Calls gdk_window_process_updates() for all windows (see #GdkWindow)
+in the application.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="window_set_debug_updates"
+              c:identifier="gdk_window_set_debug_updates">
+      <doc xml:whitespace="preserve">With update debugging enabled, calls to
+gdk_window_invalidate_region() clear the invalidated region of the
+screen to a noticeable color, and GDK pauses for a short time
+before sending exposes to windows during
+gdk_window_process_updates().  The net effect is that you can see
+the invalid region for each window and watch redraws as they
+occur. This allows you to diagnose inefficiencies in your application.
+In essence, because the GDK rendering model prevents all flicker,
+if you are redrawing the same region 400 times you may never
+notice, aside from noticing a speed problem. Enabling update
+debugging causes GTK to flicker slowly and noticeably, so you can
+see exactly what's being redrawn when, in what order.
+The --gtk-debug=updates command line option passed to GTK+ programs
+enables this debug option at application startup time. That's
+usually more useful than calling gdk_window_set_debug_updates()
+yourself, though you might want to use this function to enable
+updates sometime after application startup time.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="setting" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to turn on update debugging</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/basis/gdk/authors.txt b/basis/gdk/authors.txt
new file mode 100644 (file)
index 0000000..ce9bcc8
--- /dev/null
@@ -0,0 +1 @@
+Anton Gorenko
\ No newline at end of file
diff --git a/basis/gdk/ffi/ffi.factor b/basis/gdk/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..7107b52
--- /dev/null
@@ -0,0 +1,104 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.destructors alien.libraries
+alien.syntax cairo.ffi classes.struct combinators
+gobject-introspection gobject-introspection.standard-types
+kernel system vocabs.loader ;
+IN: gdk.ffi
+
+<<
+"pango.ffi" require
+"gdk.pixbuf.ffi" require
+>>
+
+LIBRARY: gdk
+
+<<
+"gdk" {
+    { [ os winnt? ] [ "libgdk-win32-2.0-0.dll" cdecl add-library ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgdk-x11-2.0.so" cdecl add-library ] }
+} cond
+>>
+
+! <workaround these types are from cairo 1.10
+STRUCT: cairo_rectangle_int_t
+    { x int } { y int } { width int } { height int } ;
+
+C-TYPE: cairo_region_t
+! workaround>
+
+FOREIGN-RECORD-TYPE: cairo.RectangleInt cairo_rectangle_int_t
+FOREIGN-RECORD-TYPE: cairo.Region cairo_region_t
+FOREIGN-RECORD-TYPE: cairo.FontOptions cairo_font_options_t
+FOREIGN-RECORD-TYPE: cairo.Surface cairo_surface_t
+FOREIGN-RECORD-TYPE: cairo.Pattern cairo_pattern_t
+FOREIGN-RECORD-TYPE: cairo.Context cairo_t
+FOREIGN-ENUM-TYPE: cairo.Content cairo_content_t
+
+GIR: vocab:gdk/Gdk-3.0.gir
+
+DESTRUCTOR: gdk_cursor_unref
+
+STRUCT: GdkEventButton
+    { type GdkEventType }
+    { window GdkWindow* }
+    { send_event gint8 }
+    { time guint32 }
+    { x gdouble }
+    { y gdouble }
+    { axes* gdouble }
+    { state guint }
+    { button guint }
+    { device GdkDevice* }
+    { x_root gdouble }
+    { y_root gdouble } ;
+
+STRUCT: GdkEventConfigure
+    { type GdkEventType }
+    { window GdkWindow* }
+    { send_event gint8 }
+    { x gint }
+    { y gint }
+    { width gint }
+    { height gint } ;
+
+STRUCT: GdkEventKey
+    { type GdkEventType }
+    { window GdkWindow* }
+    { send_event gint8 }
+    { time guint32 }
+    { state guint }
+    { keyval guint }
+    { length gint }
+    { string gchar* }
+    { hardware_keycode guint16 }
+    { group guint8 }
+    { is_modifier uint bits: 1 } ;
+
+STRUCT: GdkEventMotion
+    { type GdkEventType }
+    { window GdkWindow* }
+    { send_event gint8 }
+    { time guint32 }
+    { x gdouble }
+    { y gdouble }
+    { axes gdouble* }
+    { state guint }
+    { is_hint gint16 }
+    { device GdkDevice* }
+    { x_root gdouble }
+    { y_root gdouble } ;
+
+STRUCT: GdkEventScroll
+    { type GdkEventType }
+    { window GdkWindow* }
+    { send_event gint8 }
+    { time guint32 }
+    { x gdouble }
+    { y gdouble }
+    { state guint }
+    { direction GdkScrollDirection }
+    { device GdkDevice* }
+    { x_root gdouble }
+    { y_root gdouble } ;
diff --git a/basis/gdk/gdk.factor b/basis/gdk/gdk.factor
new file mode 100644 (file)
index 0000000..fa7c4d1
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gdk.ffi ;
+IN: gdk
+
diff --git a/basis/gdk/gl/GdkGLExt-1.0.gir b/basis/gdk/gl/GdkGLExt-1.0.gir
new file mode 100644 (file)
index 0000000..bc18af6
--- /dev/null
@@ -0,0 +1,1601 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gdk" version="3.0"/>
+  <include name="GdkPixbuf" version="2.0"/>
+  <include name="Gio" version="2.0"/>
+  <include name="Pango" version="1.0"/>
+  <include name="cairo" version="1.0"/>
+  <package name="gdkglext-1.0"/>
+  <namespace name="GdkGL"
+             version="1.0"
+             shared-library="libgdkglext-x11-1.0.so.0"
+             c:identifier-prefixes="GdkGL,Gdk"
+             c:symbol-prefixes="gdk_gl,gdk">
+    <constant name="ATTRIB_LIST_NONE" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <bitfield name="BufferMask"
+              glib:type-name="GdkGLBufferMask"
+              glib:get-type="gdk_gl_buffer_mask_get_type"
+              c:type="GdkGLBufferMask">
+      <member name="front_left_buffer_bit"
+              value="1"
+              c:identifier="GDK_GL_FRONT_LEFT_BUFFER_BIT"
+              glib:nick="front-left-buffer-bit"/>
+      <member name="front_right_buffer_bit"
+              value="2"
+              c:identifier="GDK_GL_FRONT_RIGHT_BUFFER_BIT"
+              glib:nick="front-right-buffer-bit"/>
+      <member name="back_left_buffer_bit"
+              value="4"
+              c:identifier="GDK_GL_BACK_LEFT_BUFFER_BIT"
+              glib:nick="back-left-buffer-bit"/>
+      <member name="back_right_buffer_bit"
+              value="8"
+              c:identifier="GDK_GL_BACK_RIGHT_BUFFER_BIT"
+              glib:nick="back-right-buffer-bit"/>
+      <member name="aux_buffers_bit"
+              value="16"
+              c:identifier="GDK_GL_AUX_BUFFERS_BIT"
+              glib:nick="aux-buffers-bit"/>
+      <member name="depth_buffer_bit"
+              value="32"
+              c:identifier="GDK_GL_DEPTH_BUFFER_BIT"
+              glib:nick="depth-buffer-bit"/>
+      <member name="stencil_buffer_bit"
+              value="64"
+              c:identifier="GDK_GL_STENCIL_BUFFER_BIT"
+              glib:nick="stencil-buffer-bit"/>
+      <member name="accum_buffer_bit"
+              value="128"
+              c:identifier="GDK_GL_ACCUM_BUFFER_BIT"
+              glib:nick="accum-buffer-bit"/>
+    </bitfield>
+    <class name="Config"
+           c:symbol-prefix="config"
+           c:type="GdkGLConfig"
+           parent="GObject.Object"
+           glib:type-name="GdkGLConfig"
+           glib:get-type="gdk_gl_config_get_type"
+           glib:type-struct="ConfigClass">
+      <constructor name="new" c:identifier="gdk_gl_config_new">
+        <doc xml:whitespace="preserve">Returns an OpenGL frame buffer configuration that match the specified
+attributes.
+attrib_list is a int array that contains the attribute/value pairs.
+GDK_GL_USE_GL, GDK_GL_BUFFER_SIZE, GDK_GL_LEVEL, GDK_GL_RGBA,
+GDK_GL_DOUBLEBUFFER, GDK_GL_STEREO, GDK_GL_AUX_BUFFERS,
+GDK_GL_RED_SIZE, GDK_GL_GREEN_SIZE, GDK_GL_BLUE_SIZE, GDK_GL_ALPHA_SIZE,
+GDK_GL_DEPTH_SIZE, GDK_GL_STENCIL_SIZE, GDK_GL_ACCUM_RED_SIZE,
+GDK_GL_ACCUM_GREEN_SIZE, GDK_GL_ACCUM_BLUE_SIZE, GDK_GL_ACCUM_ALPHA_SIZE.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GdkGLConfig.</doc>
+          <type name="Config" c:type="GdkGLConfig*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attrib_list" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a list of attribute/value pairs. The last attribute must be GDK_GL_ATTRIB_LIST_NONE.</doc>
+            <array c:type="int*">
+              <type name="gint"/>
+            </array>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_by_mode" c:identifier="gdk_gl_config_new_by_mode">
+        <doc xml:whitespace="preserve">Returns an OpenGL frame buffer configuration that match the specified
+display mode.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GdkGLConfig.</doc>
+          <type name="Config" c:type="GdkGLConfig*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">display mode bit mask.</doc>
+            <type name="ConfigMode" c:type="GdkGLConfigMode"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_by_mode_for_screen"
+                   c:identifier="gdk_gl_config_new_by_mode_for_screen">
+        <doc xml:whitespace="preserve">Returns an OpenGL frame buffer configuration that match the specified
+display mode.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GdkGLConfig.</doc>
+          <type name="Config" c:type="GdkGLConfig*"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen" transfer-ownership="none">
+            <doc xml:whitespace="preserve">target screen.</doc>
+            <type name="Gdk.Screen" c:type="GdkScreen*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">display mode bit mask.</doc>
+            <type name="ConfigMode" c:type="GdkGLConfigMode"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_for_screen"
+                   c:identifier="gdk_gl_config_new_for_screen">
+        <doc xml:whitespace="preserve">Returns an OpenGL frame buffer configuration that match the specified
+attributes.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GdkGLConfig.</doc>
+          <type name="Config" c:type="GdkGLConfig*"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen" transfer-ownership="none">
+            <doc xml:whitespace="preserve">target screen.</doc>
+            <type name="Gdk.Screen" c:type="GdkScreen*"/>
+          </parameter>
+          <parameter name="attrib_list" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a list of attribute/value pairs. The last attribute must be GDK_GL_ATTRIB_LIST_NONE.</doc>
+            <array c:type="int*">
+              <type name="gint"/>
+            </array>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_attrib" c:identifier="gdk_gl_config_get_attrib">
+        <doc xml:whitespace="preserve">Gets information about a OpenGL frame buffer configuration.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if it succeeded, FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the attribute to be returned.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">returns the requested value.</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_colormap" c:identifier="gdk_gl_config_get_colormap">
+        <doc xml:whitespace="preserve">Gets the #GdkColormap that is appropriate for the OpenGL frame buffer
+configuration.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the appropriate #GdkColormap.</doc>
+          <type name="Gdk.Colormap" c:type="GdkColormap*"/>
+        </return-value>
+      </method>
+      <method name="get_depth" c:identifier="gdk_gl_config_get_depth">
+        <doc xml:whitespace="preserve">Gets the color depth of the OpenGL-capable visual.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of bits per pixel</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_layer_plane"
+              c:identifier="gdk_gl_config_get_layer_plane">
+        <doc xml:whitespace="preserve">Gets the layer plane (level) of the frame buffer.
+Zero is the default frame buffer.
+Positive layer planes correspond to frame buffers that overlay the default
+buffer, and negative layer planes correspond to frame buffers that underlie
+the default frame buffer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">layer plane.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_n_aux_buffers"
+              c:identifier="gdk_gl_config_get_n_aux_buffers">
+        <doc xml:whitespace="preserve">Gets the number of auxiliary color buffers.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of auxiliary color buffers.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_n_sample_buffers"
+              c:identifier="gdk_gl_config_get_n_sample_buffers">
+        <doc xml:whitespace="preserve">Gets the number of multisample buffers.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of multisample buffers.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_screen" c:identifier="gdk_gl_config_get_screen">
+        <doc xml:whitespace="preserve">Gets #GdkScreen.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkScreen.</doc>
+          <type name="Gdk.Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </method>
+      <method name="get_visual" c:identifier="gdk_gl_config_get_visual">
+        <doc xml:whitespace="preserve">Gets the #GdkVisual that is appropriate for the OpenGL frame buffer
+configuration.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the appropriate #GdkVisual.</doc>
+          <type name="Gdk.Visual" c:type="GdkVisual*"/>
+        </return-value>
+      </method>
+      <method name="has_accum_buffer"
+              c:identifier="gdk_gl_config_has_accum_buffer">
+        <doc xml:whitespace="preserve">Returns whether the configured frame buffer has accumulation buffer.
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the frame buffer has accumulation buffer, FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_alpha" c:identifier="gdk_gl_config_has_alpha">
+        <doc xml:whitespace="preserve">Returns whether the configured color buffer has alpha bits.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the color buffer has alpha bits, FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_depth_buffer"
+              c:identifier="gdk_gl_config_has_depth_buffer">
+        <doc xml:whitespace="preserve">Returns whether the configured frame buffer has depth buffer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the frame buffer has depth buffer, FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_stencil_buffer"
+              c:identifier="gdk_gl_config_has_stencil_buffer">
+        <doc xml:whitespace="preserve">Returns whether the configured frame buffer has stencil buffer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the frame buffer has stencil buffer, FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_double_buffered"
+              c:identifier="gdk_gl_config_is_double_buffered">
+        <doc xml:whitespace="preserve">Returns whether the configuration supports the double-buffered visual.
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the double-buffered visual is supported, FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_rgba" c:identifier="gdk_gl_config_is_rgba">
+        <doc xml:whitespace="preserve">Returns whether the configured frame buffer is RGBA mode.
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the configured frame buffer is RGBA mode, FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_stereo" c:identifier="gdk_gl_config_is_stereo">
+        <doc xml:whitespace="preserve">Returns whether the configuration supports the stereo visual.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the stereo visual is supported, FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="layer_plane">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="n_aux_buffers">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="n_sample_buffers">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="is_rgba" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="is_double_buffered" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="as_single_mode" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="is_stereo" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="has_alpha" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="has_depth_buffer" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="has_stencil_buffer" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="has_accum_buffer" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </class>
+    <enumeration name="ConfigAttrib"
+                 glib:type-name="GdkGLConfigAttrib"
+                 glib:get-type="gdk_gl_config_attrib_get_type"
+                 c:type="GdkGLConfigAttrib">
+      <member name="use_gl"
+              value="1"
+              c:identifier="GDK_GL_USE_GL"
+              glib:nick="use-gl"/>
+      <member name="buffer_size"
+              value="2"
+              c:identifier="GDK_GL_BUFFER_SIZE"
+              glib:nick="buffer-size"/>
+      <member name="level"
+              value="3"
+              c:identifier="GDK_GL_LEVEL"
+              glib:nick="level"/>
+      <member name="rgba"
+              value="4"
+              c:identifier="GDK_GL_RGBA"
+              glib:nick="rgba"/>
+      <member name="doublebuffer"
+              value="5"
+              c:identifier="GDK_GL_DOUBLEBUFFER"
+              glib:nick="doublebuffer"/>
+      <member name="stereo"
+              value="6"
+              c:identifier="GDK_GL_STEREO"
+              glib:nick="stereo"/>
+      <member name="aux_buffers"
+              value="7"
+              c:identifier="GDK_GL_AUX_BUFFERS"
+              glib:nick="aux-buffers"/>
+      <member name="red_size"
+              value="8"
+              c:identifier="GDK_GL_RED_SIZE"
+              glib:nick="red-size"/>
+      <member name="green_size"
+              value="9"
+              c:identifier="GDK_GL_GREEN_SIZE"
+              glib:nick="green-size"/>
+      <member name="blue_size"
+              value="10"
+              c:identifier="GDK_GL_BLUE_SIZE"
+              glib:nick="blue-size"/>
+      <member name="alpha_size"
+              value="11"
+              c:identifier="GDK_GL_ALPHA_SIZE"
+              glib:nick="alpha-size"/>
+      <member name="depth_size"
+              value="12"
+              c:identifier="GDK_GL_DEPTH_SIZE"
+              glib:nick="depth-size"/>
+      <member name="stencil_size"
+              value="13"
+              c:identifier="GDK_GL_STENCIL_SIZE"
+              glib:nick="stencil-size"/>
+      <member name="accum_red_size"
+              value="14"
+              c:identifier="GDK_GL_ACCUM_RED_SIZE"
+              glib:nick="accum-red-size"/>
+      <member name="accum_green_size"
+              value="15"
+              c:identifier="GDK_GL_ACCUM_GREEN_SIZE"
+              glib:nick="accum-green-size"/>
+      <member name="accum_blue_size"
+              value="16"
+              c:identifier="GDK_GL_ACCUM_BLUE_SIZE"
+              glib:nick="accum-blue-size"/>
+      <member name="accum_alpha_size"
+              value="17"
+              c:identifier="GDK_GL_ACCUM_ALPHA_SIZE"
+              glib:nick="accum-alpha-size"/>
+      <member name="config_caveat"
+              value="32"
+              c:identifier="GDK_GL_CONFIG_CAVEAT"
+              glib:nick="config-caveat"/>
+      <member name="x_visual_type"
+              value="34"
+              c:identifier="GDK_GL_X_VISUAL_TYPE"
+              glib:nick="x-visual-type"/>
+      <member name="transparent_type"
+              value="35"
+              c:identifier="GDK_GL_TRANSPARENT_TYPE"
+              glib:nick="transparent-type"/>
+      <member name="transparent_index_value"
+              value="36"
+              c:identifier="GDK_GL_TRANSPARENT_INDEX_VALUE"
+              glib:nick="transparent-index-value"/>
+      <member name="transparent_red_value"
+              value="37"
+              c:identifier="GDK_GL_TRANSPARENT_RED_VALUE"
+              glib:nick="transparent-red-value"/>
+      <member name="transparent_green_value"
+              value="38"
+              c:identifier="GDK_GL_TRANSPARENT_GREEN_VALUE"
+              glib:nick="transparent-green-value"/>
+      <member name="transparent_blue_value"
+              value="39"
+              c:identifier="GDK_GL_TRANSPARENT_BLUE_VALUE"
+              glib:nick="transparent-blue-value"/>
+      <member name="transparent_alpha_value"
+              value="40"
+              c:identifier="GDK_GL_TRANSPARENT_ALPHA_VALUE"
+              glib:nick="transparent-alpha-value"/>
+      <member name="drawable_type"
+              value="32784"
+              c:identifier="GDK_GL_DRAWABLE_TYPE"
+              glib:nick="drawable-type"/>
+      <member name="render_type"
+              value="32785"
+              c:identifier="GDK_GL_RENDER_TYPE"
+              glib:nick="render-type"/>
+      <member name="x_renderable"
+              value="32786"
+              c:identifier="GDK_GL_X_RENDERABLE"
+              glib:nick="x-renderable"/>
+      <member name="fbconfig_id"
+              value="32787"
+              c:identifier="GDK_GL_FBCONFIG_ID"
+              glib:nick="fbconfig-id"/>
+      <member name="max_pbuffer_width"
+              value="32790"
+              c:identifier="GDK_GL_MAX_PBUFFER_WIDTH"
+              glib:nick="max-pbuffer-width"/>
+      <member name="max_pbuffer_height"
+              value="32791"
+              c:identifier="GDK_GL_MAX_PBUFFER_HEIGHT"
+              glib:nick="max-pbuffer-height"/>
+      <member name="max_pbuffer_pixels"
+              value="32792"
+              c:identifier="GDK_GL_MAX_PBUFFER_PIXELS"
+              glib:nick="max-pbuffer-pixels"/>
+      <member name="visual_id"
+              value="32779"
+              c:identifier="GDK_GL_VISUAL_ID"
+              glib:nick="visual-id"/>
+      <member name="screen"
+              value="32780"
+              c:identifier="GDK_GL_SCREEN"
+              glib:nick="screen"/>
+      <member name="sample_buffers"
+              value="100000"
+              c:identifier="GDK_GL_SAMPLE_BUFFERS"
+              glib:nick="sample-buffers"/>
+      <member name="samples"
+              value="100001"
+              c:identifier="GDK_GL_SAMPLES"
+              glib:nick="samples"/>
+    </enumeration>
+    <enumeration name="ConfigCaveat"
+                 glib:type-name="GdkGLConfigCaveat"
+                 glib:get-type="gdk_gl_config_caveat_get_type"
+                 c:type="GdkGLConfigCaveat">
+      <member name="config_caveat_dont_care"
+              value="-1"
+              c:identifier="GDK_GL_CONFIG_CAVEAT_DONT_CARE"
+              glib:nick="config-caveat-dont-care"/>
+      <member name="config_caveat_none"
+              value="32768"
+              c:identifier="GDK_GL_CONFIG_CAVEAT_NONE"
+              glib:nick="config-caveat-none"/>
+      <member name="slow_config"
+              value="32769"
+              c:identifier="GDK_GL_SLOW_CONFIG"
+              glib:nick="slow-config"/>
+      <member name="non_conformant_config"
+              value="32781"
+              c:identifier="GDK_GL_NON_CONFORMANT_CONFIG"
+              glib:nick="non-conformant-config"/>
+    </enumeration>
+    <record name="ConfigClass"
+            c:type="GdkGLConfigClass"
+            glib:is-gtype-struct-for="Config">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <enumeration name="ConfigError"
+                 glib:type-name="GdkGLConfigError"
+                 glib:get-type="gdk_gl_config_error_get_type"
+                 c:type="GdkGLConfigError">
+      <member name="bad_screen"
+              value="1"
+              c:identifier="GDK_GL_BAD_SCREEN"
+              glib:nick="bad-screen"/>
+      <member name="bad_attribute"
+              value="2"
+              c:identifier="GDK_GL_BAD_ATTRIBUTE"
+              glib:nick="bad-attribute"/>
+      <member name="no_extension"
+              value="3"
+              c:identifier="GDK_GL_NO_EXTENSION"
+              glib:nick="no-extension"/>
+      <member name="bad_visual"
+              value="4"
+              c:identifier="GDK_GL_BAD_VISUAL"
+              glib:nick="bad-visual"/>
+      <member name="bad_context"
+              value="5"
+              c:identifier="GDK_GL_BAD_CONTEXT"
+              glib:nick="bad-context"/>
+      <member name="bad_value"
+              value="6"
+              c:identifier="GDK_GL_BAD_VALUE"
+              glib:nick="bad-value"/>
+      <member name="bad_enum"
+              value="7"
+              c:identifier="GDK_GL_BAD_ENUM"
+              glib:nick="bad-enum"/>
+    </enumeration>
+    <bitfield name="ConfigMode"
+              glib:type-name="GdkGLConfigMode"
+              glib:get-type="gdk_gl_config_mode_get_type"
+              c:type="GdkGLConfigMode">
+      <member name="rgb"
+              value="0"
+              c:identifier="GDK_GL_MODE_RGB"
+              glib:nick="rgb"/>
+      <member name="rgba"
+              value="0"
+              c:identifier="GDK_GL_MODE_RGBA"
+              glib:nick="rgba"/>
+      <member name="index"
+              value="1"
+              c:identifier="GDK_GL_MODE_INDEX"
+              glib:nick="index"/>
+      <member name="single"
+              value="0"
+              c:identifier="GDK_GL_MODE_SINGLE"
+              glib:nick="single"/>
+      <member name="double"
+              value="2"
+              c:identifier="GDK_GL_MODE_DOUBLE"
+              glib:nick="double"/>
+      <member name="stereo"
+              value="4"
+              c:identifier="GDK_GL_MODE_STEREO"
+              glib:nick="stereo"/>
+      <member name="alpha"
+              value="8"
+              c:identifier="GDK_GL_MODE_ALPHA"
+              glib:nick="alpha"/>
+      <member name="depth"
+              value="16"
+              c:identifier="GDK_GL_MODE_DEPTH"
+              glib:nick="depth"/>
+      <member name="stencil"
+              value="32"
+              c:identifier="GDK_GL_MODE_STENCIL"
+              glib:nick="stencil"/>
+      <member name="accum"
+              value="64"
+              c:identifier="GDK_GL_MODE_ACCUM"
+              glib:nick="accum"/>
+      <member name="multisample"
+              value="128"
+              c:identifier="GDK_GL_MODE_MULTISAMPLE"
+              glib:nick="multisample"/>
+    </bitfield>
+    <class name="Context"
+           c:symbol-prefix="context"
+           c:type="GdkGLContext"
+           parent="GObject.Object"
+           glib:type-name="GdkGLContext"
+           glib:get-type="gdk_gl_context_get_type"
+           glib:type-struct="ContextClass">
+      <constructor name="new" c:identifier="gdk_gl_context_new">
+        <doc xml:whitespace="preserve">Creates a new OpenGL rendering context.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GdkGLContext.</doc>
+          <type name="Context" c:type="GdkGLContext*"/>
+        </return-value>
+        <parameters>
+          <parameter name="gldrawable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkGLDrawable.</doc>
+            <type name="Drawable" c:type="GdkGLDrawable*"/>
+          </parameter>
+          <parameter name="share_list"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the #GdkGLContext with which to share display lists and texture objects. NULL indicates that no sharing is to take place.</doc>
+            <type name="Context" c:type="GdkGLContext*"/>
+          </parameter>
+          <parameter name="direct" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether rendering is to be done with a direct connection to the graphics system.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="render_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">GDK_GL_RGBA_TYPE or GDK_GL_COLOR_INDEX_TYPE (currently not used).</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="get_current" c:identifier="gdk_gl_context_get_current">
+        <doc xml:whitespace="preserve">Returns the current #GdkGLContext.
+context.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current #GdkGLContext or NULL if there is no current</doc>
+          <type name="Context" c:type="GdkGLContext*"/>
+        </return-value>
+      </function>
+      <method name="copy" c:identifier="gdk_gl_context_copy">
+        <doc xml:whitespace="preserve">Copy state from @src rendering context to @glcontext.
+the glPushAttrib() function. You can use GL_ALL_ATTRIB_BITS to copy all the
+rendering state information.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">FALSE if it fails, TRUE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the source context.</doc>
+            <type name="Context" c:type="GdkGLContext*"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none">
+            <doc xml:whitespace="preserve">which portions of @src state are to be copied to @glcontext.</doc>
+            <type name="gulong" c:type="unsigned long"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_gl_config" c:identifier="gdk_gl_context_get_gl_config">
+        <doc xml:whitespace="preserve">Gets #GdkGLConfig with which the @glcontext is configured.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkGLConfig.</doc>
+          <type name="Config" c:type="GdkGLConfig*"/>
+        </return-value>
+      </method>
+      <method name="get_gl_drawable"
+              c:identifier="gdk_gl_context_get_gl_drawable">
+        <doc xml:whitespace="preserve">Gets #GdkGLDrawable to which the @glcontext is bound.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkGLDrawable or NULL if no #GdkGLDrawable is bound.</doc>
+          <type name="Drawable" c:type="GdkGLDrawable*"/>
+        </return-value>
+      </method>
+      <method name="get_render_type"
+              c:identifier="gdk_gl_context_get_render_type">
+        <doc xml:whitespace="preserve">Gets render_type of the @glcontext.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">GDK_GL_RGBA_TYPE or GDK_GL_COLOR_INDEX_TYPE.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_share_list"
+              c:identifier="gdk_gl_context_get_share_list">
+        <doc xml:whitespace="preserve">Gets #GdkGLContext with which the @glcontext shares the display lists and
+texture objects.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkGLContext.</doc>
+          <type name="Context" c:type="GdkGLContext*"/>
+        </return-value>
+      </method>
+      <method name="is_direct" c:identifier="gdk_gl_context_is_direct">
+        <doc xml:whitespace="preserve">Returns whether the @glcontext is a direct rendering context.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the @glcontext is a direct rendering contest.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+    </class>
+    <record name="ContextClass"
+            c:type="GdkGLContextClass"
+            glib:is-gtype-struct-for="Context">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <constant name="DONT_CARE" value="-1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <bitfield name="DebugFlag" c:type="GdkGLDebugFlag">
+      <member name="misc" value="1" c:identifier="GDK_GL_DEBUG_MISC"/>
+      <member name="func" value="2" c:identifier="GDK_GL_DEBUG_FUNC"/>
+      <member name="impl" value="4" c:identifier="GDK_GL_DEBUG_IMPL"/>
+    </bitfield>
+    <interface name="Drawable"
+               c:symbol-prefix="drawable"
+               c:type="GdkGLDrawable"
+               glib:type-name="GdkGLDrawable"
+               glib:get-type="gdk_gl_drawable_get_type">
+      <method name="get_gl_config"
+              c:identifier="gdk_gl_drawable_get_gl_config">
+        <doc xml:whitespace="preserve">Gets #GdkGLConfig with which the @gldrawable is configured.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkGLConfig.</doc>
+          <type name="Config" c:type="GdkGLConfig*"/>
+        </return-value>
+      </method>
+      <method name="get_size" c:identifier="gdk_gl_drawable_get_size">
+        <doc xml:whitespace="preserve">Fills *width and *height with the size of GL drawable.
+width or height can be NULL if you only want the other one.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store drawable's width, or NULL.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store drawable's height, or NULL.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="gl_begin" c:identifier="gdk_gl_drawable_gl_begin">
+        <doc xml:whitespace="preserve">Delimits the begining of the OpenGL execution.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if it is successful, FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="glcontext" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkGLContext.</doc>
+            <type name="Context" c:type="GdkGLContext*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="gl_end" c:identifier="gdk_gl_drawable_gl_end">
+        <doc xml:whitespace="preserve">Delimits the end of the OpenGL execution.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="is_double_buffered"
+              c:identifier="gdk_gl_drawable_is_double_buffered">
+        <doc xml:whitespace="preserve">Returns whether the @gldrawable supports the double-buffered visual.
+FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the double-buffered visual is supported,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="make_current" c:identifier="gdk_gl_drawable_make_current">
+        <doc xml:whitespace="preserve">Attach an OpenGL rendering context to a @gldrawable.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if it is successful, FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="glcontext" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkGLContext.</doc>
+            <type name="Context" c:type="GdkGLContext*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="swap_buffers" c:identifier="gdk_gl_drawable_swap_buffers">
+        <doc xml:whitespace="preserve">Exchange front and back buffers.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="wait_gdk" c:identifier="gdk_gl_drawable_wait_gdk">
+        <doc xml:whitespace="preserve">Complete GDK drawing execution prior to subsequent OpenGL calls.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="wait_gl" c:identifier="gdk_gl_drawable_wait_gl">
+        <doc xml:whitespace="preserve">Complete OpenGL execution prior to subsequent GDK drawing calls.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </interface>
+    <enumeration name="DrawableAttrib"
+                 glib:type-name="GdkGLDrawableAttrib"
+                 glib:get-type="gdk_gl_drawable_attrib_get_type"
+                 c:type="GdkGLDrawableAttrib">
+      <member name="preserved_contents"
+              value="32795"
+              c:identifier="GDK_GL_PRESERVED_CONTENTS"
+              glib:nick="preserved-contents"/>
+      <member name="largest_pbuffer"
+              value="32796"
+              c:identifier="GDK_GL_LARGEST_PBUFFER"
+              glib:nick="largest-pbuffer"/>
+      <member name="width"
+              value="32797"
+              c:identifier="GDK_GL_WIDTH"
+              glib:nick="width"/>
+      <member name="height"
+              value="32798"
+              c:identifier="GDK_GL_HEIGHT"
+              glib:nick="height"/>
+      <member name="event_mask"
+              value="32799"
+              c:identifier="GDK_GL_EVENT_MASK"
+              glib:nick="event-mask"/>
+    </enumeration>
+    <record name="DrawableClass" c:type="GdkGLDrawableClass">
+      <field name="base_iface" writable="1">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="create_new_context" introspectable="0">
+        <callback name="create_new_context" introspectable="0">
+          <return-value>
+            <type name="Context" c:type="GdkGLContext*"/>
+          </return-value>
+          <parameters>
+            <parameter name="gldrawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkGLDrawable*"/>
+            </parameter>
+            <parameter name="share_list" transfer-ownership="none">
+              <type name="Context" c:type="GdkGLContext*"/>
+            </parameter>
+            <parameter name="direct" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="render_type" transfer-ownership="none">
+              <type name="gint" c:type="int"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="make_context_current">
+        <callback name="make_context_current">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="draw" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkGLDrawable*"/>
+            </parameter>
+            <parameter name="read" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkGLDrawable*"/>
+            </parameter>
+            <parameter name="glcontext" transfer-ownership="none">
+              <type name="Context" c:type="GdkGLContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_double_buffered">
+        <callback name="is_double_buffered">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="gldrawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkGLDrawable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="swap_buffers">
+        <callback name="swap_buffers">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="gldrawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkGLDrawable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="wait_gl">
+        <callback name="wait_gl">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="gldrawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkGLDrawable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="wait_gdk">
+        <callback name="wait_gdk">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="gldrawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkGLDrawable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gl_begin">
+        <callback name="gl_begin">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="draw" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkGLDrawable*"/>
+            </parameter>
+            <parameter name="read" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkGLDrawable*"/>
+            </parameter>
+            <parameter name="glcontext" transfer-ownership="none">
+              <type name="Context" c:type="GdkGLContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gl_end">
+        <callback name="gl_end">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="gldrawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkGLDrawable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_gl_config" introspectable="0">
+        <callback name="get_gl_config" introspectable="0">
+          <return-value>
+            <type name="Config" c:type="GdkGLConfig*"/>
+          </return-value>
+          <parameters>
+            <parameter name="gldrawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkGLDrawable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_size">
+        <callback name="get_size">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="gldrawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkGLDrawable*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="DrawableType"
+                 glib:type-name="GdkGLDrawableType"
+                 glib:get-type="gdk_gl_drawable_type_get_type"
+                 c:type="GdkGLDrawableType">
+      <member name="window"
+              value="32802"
+              c:identifier="GDK_GL_WINDOW"
+              glib:nick="window"/>
+      <member name="pbuffer"
+              value="32803"
+              c:identifier="GDK_GL_PBUFFER"
+              glib:nick="pbuffer"/>
+    </enumeration>
+    <bitfield name="DrawableTypeMask"
+              glib:type-name="GdkGLDrawableTypeMask"
+              glib:get-type="gdk_gl_drawable_type_mask_get_type"
+              c:type="GdkGLDrawableTypeMask">
+      <member name="window_bit"
+              value="1"
+              c:identifier="GDK_GL_WINDOW_BIT"
+              glib:nick="window-bit"/>
+      <member name="pixmap_bit"
+              value="2"
+              c:identifier="GDK_GL_PIXMAP_BIT"
+              glib:nick="pixmap-bit"/>
+      <member name="pbuffer_bit"
+              value="4"
+              c:identifier="GDK_GL_PBUFFER_BIT"
+              glib:nick="pbuffer-bit"/>
+    </bitfield>
+    <bitfield name="EventMask"
+              glib:type-name="GdkGLEventMask"
+              glib:get-type="gdk_gl_event_mask_get_type"
+              c:type="GdkGLEventMask">
+      <member name="mask"
+              value="134217728"
+              c:identifier="GDK_GL_PBUFFER_CLOBBER_MASK"
+              glib:nick="mask"/>
+    </bitfield>
+    <enumeration name="EventType"
+                 glib:type-name="GdkGLEventType"
+                 glib:get-type="gdk_gl_event_type_get_type"
+                 c:type="GdkGLEventType">
+      <member name="damaged"
+              value="32800"
+              c:identifier="GDK_GL_DAMAGED"
+              glib:nick="damaged"/>
+      <member name="saved"
+              value="32801"
+              c:identifier="GDK_GL_SAVED"
+              glib:nick="saved"/>
+    </enumeration>
+    <constant name="NONE" value="32768">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="PbufferAttrib"
+                 glib:type-name="GdkGLPbufferAttrib"
+                 glib:get-type="gdk_gl_pbuffer_attrib_get_type"
+                 c:type="GdkGLPbufferAttrib">
+      <member name="preserved_contents"
+              value="32795"
+              c:identifier="GDK_GL_PBUFFER_PRESERVED_CONTENTS"
+              glib:nick="preserved-contents"/>
+      <member name="largest_pbuffer"
+              value="32796"
+              c:identifier="GDK_GL_PBUFFER_LARGEST_PBUFFER"
+              glib:nick="largest-pbuffer"/>
+      <member name="height"
+              value="32832"
+              c:identifier="GDK_GL_PBUFFER_HEIGHT"
+              glib:nick="height"/>
+      <member name="width"
+              value="32833"
+              c:identifier="GDK_GL_PBUFFER_WIDTH"
+              glib:nick="width"/>
+    </enumeration>
+    <class name="Pixmap"
+           c:symbol-prefix="pixmap"
+           c:type="GdkGLPixmap"
+           parent="Gdk.Drawable"
+           glib:type-name="GdkGLPixmap"
+           glib:get-type="gdk_gl_pixmap_get_type"
+           glib:type-struct="PixmapClass">
+      <constructor name="new" c:identifier="gdk_gl_pixmap_new">
+        <doc xml:whitespace="preserve">Creates an off-screen rendering area.
+attrib_list is currently unused. This must be set to NULL or empty
+(first attribute of None). See GLX 1.3 spec.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GdkGLPixmap.</doc>
+          <type name="Pixmap" c:type="GdkGLPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="glconfig" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkGLConfig.</doc>
+            <type name="Config" c:type="GdkGLConfig*"/>
+          </parameter>
+          <parameter name="pixmap" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkPixmap to be used as the rendering area.</doc>
+            <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="attrib_list"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">this must be set to NULL or empty (first attribute of None).</doc>
+            <array c:type="int*">
+              <type name="gint"/>
+            </array>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="get_gl_pixmap" c:identifier="gdk_pixmap_get_gl_pixmap">
+        <doc xml:whitespace="preserve">Returns the #GdkGLPixmap held by the @pixmap.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkGLPixmap.</doc>
+          <type name="Pixmap" c:type="GdkGLPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixmap" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkPixmap.</doc>
+            <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="is_gl_capable" c:identifier="gdk_pixmap_is_gl_capable">
+        <doc xml:whitespace="preserve">Returns whether the @pixmap is OpenGL-capable.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the @pixmap is OpenGL-capable, FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixmap" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkPixmap.</doc>
+            <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="set_gl_capability"
+                c:identifier="gdk_pixmap_set_gl_capability">
+        <doc xml:whitespace="preserve">Set the OpenGL-capability to the @pixmap.
+This function creates a new #GdkGLPixmap held by the @pixmap.
+attrib_list is currently unused. This must be set to NULL or empty
+(first attribute of None).
+NULL otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkGLPixmap used by the @pixmap if it is successful,</doc>
+          <type name="Pixmap" c:type="GdkGLPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixmap" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkPixmap to be used as the rendering area.</doc>
+            <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="glconfig" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkGLConfig.</doc>
+            <type name="Config" c:type="GdkGLConfig*"/>
+          </parameter>
+          <parameter name="attrib_list"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">this must be set to NULL or empty (first attribute of None).</doc>
+            <array c:type="int*">
+              <type name="gint"/>
+            </array>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="unset_gl_capability"
+                c:identifier="gdk_pixmap_unset_gl_capability">
+        <doc xml:whitespace="preserve">Unset the OpenGL-capability of the @pixmap.
+This function destroys the #GdkGLPixmap held by the @pixmap.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixmap" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkPixmap.</doc>
+            <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_pixmap" c:identifier="gdk_gl_pixmap_get_pixmap">
+        <doc xml:whitespace="preserve">Returns the #GdkPixmap associated with @glpixmap.
+Notice that #GdkGLPixmap is not #GdkPixmap, but another
+#GdkDrawable which have an associated #GdkPixmap.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkPixmap associated with @glpixmap.</doc>
+          <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="Gdk.Drawable" c:type="GdkDrawable"/>
+      </field>
+      <field name="drawable">
+        <type name="Gdk.Drawable" c:type="GdkDrawable*"/>
+      </field>
+    </class>
+    <record name="PixmapClass"
+            c:type="GdkGLPixmapClass"
+            glib:is-gtype-struct-for="Pixmap">
+      <field name="parent_class">
+        <type name="Gdk.DrawableClass" c:type="GdkDrawableClass"/>
+      </field>
+    </record>
+    <callback name="Proc" c:type="GdkGLProc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <enumeration name="RenderType"
+                 glib:type-name="GdkGLRenderType"
+                 glib:get-type="gdk_gl_render_type_get_type"
+                 c:type="GdkGLRenderType">
+      <member name="rgba_type"
+              value="32788"
+              c:identifier="GDK_GL_RGBA_TYPE"
+              glib:nick="rgba-type"/>
+      <member name="color_index_type"
+              value="32789"
+              c:identifier="GDK_GL_COLOR_INDEX_TYPE"
+              glib:nick="color-index-type"/>
+    </enumeration>
+    <bitfield name="RenderTypeMask"
+              glib:type-name="GdkGLRenderTypeMask"
+              glib:get-type="gdk_gl_render_type_mask_get_type"
+              c:type="GdkGLRenderTypeMask">
+      <member name="rgba_bit"
+              value="1"
+              c:identifier="GDK_GL_RGBA_BIT"
+              glib:nick="rgba-bit"/>
+      <member name="color_index_bit"
+              value="2"
+              c:identifier="GDK_GL_COLOR_INDEX_BIT"
+              glib:nick="color-index-bit"/>
+    </bitfield>
+    <constant name="SUCCESS" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="TransparentType"
+                 glib:type-name="GdkGLTransparentType"
+                 glib:get-type="gdk_gl_transparent_type_get_type"
+                 c:type="GdkGLTransparentType">
+      <member name="none"
+              value="32768"
+              c:identifier="GDK_GL_TRANSPARENT_NONE"
+              glib:nick="none"/>
+      <member name="rgb"
+              value="32776"
+              c:identifier="GDK_GL_TRANSPARENT_RGB"
+              glib:nick="rgb"/>
+      <member name="index"
+              value="32777"
+              c:identifier="GDK_GL_TRANSPARENT_INDEX"
+              glib:nick="index"/>
+    </enumeration>
+    <enumeration name="VisualType"
+                 glib:type-name="GdkGLVisualType"
+                 glib:get-type="gdk_gl_visual_type_get_type"
+                 c:type="GdkGLVisualType">
+      <member name="visual_type_dont_care"
+              value="-1"
+              c:identifier="GDK_GL_VISUAL_TYPE_DONT_CARE"
+              glib:nick="visual-type-dont-care"/>
+      <member name="true_color"
+              value="32770"
+              c:identifier="GDK_GL_TRUE_COLOR"
+              glib:nick="true-color"/>
+      <member name="direct_color"
+              value="32771"
+              c:identifier="GDK_GL_DIRECT_COLOR"
+              glib:nick="direct-color"/>
+      <member name="pseudo_color"
+              value="32772"
+              c:identifier="GDK_GL_PSEUDO_COLOR"
+              glib:nick="pseudo-color"/>
+      <member name="static_color"
+              value="32773"
+              c:identifier="GDK_GL_STATIC_COLOR"
+              glib:nick="static-color"/>
+      <member name="gray_scale"
+              value="32774"
+              c:identifier="GDK_GL_GRAY_SCALE"
+              glib:nick="gray-scale"/>
+      <member name="static_gray"
+              value="32775"
+              c:identifier="GDK_GL_STATIC_GRAY"
+              glib:nick="static-gray"/>
+    </enumeration>
+    <class name="Window"
+           c:symbol-prefix="window"
+           c:type="GdkGLWindow"
+           parent="Gdk.Drawable"
+           glib:type-name="GdkGLWindow"
+           glib:get-type="gdk_gl_window_get_type"
+           glib:type-struct="WindowClass">
+      <constructor name="new" c:identifier="gdk_gl_window_new">
+        <doc xml:whitespace="preserve">Creates an on-screen rendering area.
+attrib_list is currently unused. This must be set to NULL or empty
+(first attribute of None). See GLX 1.3 spec.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GdkGLWindow.</doc>
+          <type name="Window" c:type="GdkGLWindow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="glconfig" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkGLConfig.</doc>
+            <type name="Config" c:type="GdkGLConfig*"/>
+          </parameter>
+          <parameter name="window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkWindow to be used as the rendering area.</doc>
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="attrib_list"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">this must be set to NULL or empty (first attribute of None).</doc>
+            <array c:type="int*">
+              <type name="gint"/>
+            </array>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="get_gl_window" c:identifier="gdk_window_get_gl_window">
+        <doc xml:whitespace="preserve">Returns the #GdkGLWindow held by the @window.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkGLWindow.</doc>
+          <type name="Window" c:type="GdkGLWindow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkWindow.</doc>
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="is_gl_capable" c:identifier="gdk_window_is_gl_capable">
+        <doc xml:whitespace="preserve">Returns whether the @window is OpenGL-capable.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the @window is OpenGL-capable, FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkWindow.</doc>
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="set_gl_capability"
+                c:identifier="gdk_window_set_gl_capability">
+        <doc xml:whitespace="preserve">Set the OpenGL-capability to the @window.
+This function creates a new #GdkGLWindow held by the @window.
+attrib_list is currently unused. This must be set to NULL or empty
+(first attribute of None).
+NULL otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkGLWindow used by the @window if it is successful,</doc>
+          <type name="Window" c:type="GdkGLWindow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkWindow to be used as the rendering area.</doc>
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="glconfig" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkGLConfig.</doc>
+            <type name="Config" c:type="GdkGLConfig*"/>
+          </parameter>
+          <parameter name="attrib_list"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">this must be set to NULL or empty (first attribute of None).</doc>
+            <array c:type="int*">
+              <type name="gint"/>
+            </array>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="unset_gl_capability"
+                c:identifier="gdk_window_unset_gl_capability">
+        <doc xml:whitespace="preserve">Unset the OpenGL-capability of the @window.
+This function destroys the #GdkGLWindow held by the @window.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkWindow.</doc>
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_window" c:identifier="gdk_gl_window_get_window">
+        <doc xml:whitespace="preserve">Returns the #GdkWindow associated with @glwindow.
+Notice that #GdkGLWindow is not #GdkWindow, but another
+#GdkDrawable which have an associated #GdkWindow.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkWindow associated with @glwindow.</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="Gdk.Drawable" c:type="GdkDrawable"/>
+      </field>
+      <field name="drawable">
+        <type name="Gdk.Drawable" c:type="GdkDrawable*"/>
+      </field>
+    </class>
+    <record name="WindowClass"
+            c:type="GdkGLWindowClass"
+            glib:is-gtype-struct-for="Window">
+      <field name="parent_class">
+        <type name="Gdk.DrawableClass" c:type="GdkDrawableClass"/>
+      </field>
+    </record>
+    <function name="drawable_get_current"
+              c:identifier="gdk_gl_drawable_get_current">
+      <doc xml:whitespace="preserve">Returns the current #GdkGLDrawable.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the current #GdkGLDrawable or NULL if there is no current drawable.</doc>
+        <type name="Drawable" c:type="GdkGLDrawable*"/>
+      </return-value>
+    </function>
+    <function name="get_binary_age" c:identifier="gdk_gl_get_binary_age">
+      <doc xml:whitespace="preserve">Returns the GtkGLExt library binary age.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The binary age of the GtkGLExt library.</doc>
+        <type name="gint" c:type="int"/>
+      </return-value>
+    </function>
+    <function name="get_interface_age" c:identifier="gdk_gl_get_interface_age">
+      <doc xml:whitespace="preserve">Returns the GtkGLExt library interface age.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The interface age of the GtkGLExt library.</doc>
+        <type name="gint" c:type="int"/>
+      </return-value>
+    </function>
+    <function name="get_major_version" c:identifier="gdk_gl_get_major_version">
+      <doc xml:whitespace="preserve">Returns the GtkGLExt library major version number.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The major version number of the GtkGLExt library.</doc>
+        <type name="gint" c:type="int"/>
+      </return-value>
+    </function>
+    <function name="get_micro_version" c:identifier="gdk_gl_get_micro_version">
+      <doc xml:whitespace="preserve">Returns the GtkGLExt library micro version number.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The micro version number of the GtkGLExt library.</doc>
+        <type name="gint" c:type="int"/>
+      </return-value>
+    </function>
+    <function name="get_minor_version" c:identifier="gdk_gl_get_minor_version">
+      <doc xml:whitespace="preserve">Returns the GtkGLExt library minor version number.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The minor version number of the GtkGLExt library.</doc>
+        <type name="gint" c:type="int"/>
+      </return-value>
+    </function>
+    <function name="get_proc_address" c:identifier="gdk_gl_get_proc_address">
+      <doc xml:whitespace="preserve">Returns the address of the OpenGL, GLU, or GLX function.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the address of the function named by @proc_name.</doc>
+        <type name="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="proc_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">function name.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init" c:identifier="gdk_gl_init">
+      <doc xml:whitespace="preserve">Call this function before using any other GdkGLExt functions in your
+applications.  It will initialize everything needed to operate the
+library and parses some standard command line options. @argc and
+standard arguments.
+&lt;note&gt;&lt;para&gt;This function will terminate your program if it was
+unable to initialize the library for some reason. If you want your
+program to fall back to a textual interface you want to call
+gdk_gl_init_check() instead.&lt;/para&gt;&lt;/note&gt;</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">Address of the &lt;parameter&gt;argc&lt;/parameter&gt; parameter of your main() function. Changed if any arguments were handled.</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">Address of the &lt;parameter&gt;argv&lt;/parameter&gt; parameter of main(). Any parameters understood by gdk_gl_init() are stripped before return.</doc>
+          <array length="0" c:type="char***">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_check" c:identifier="gdk_gl_init_check">
+      <doc xml:whitespace="preserve">This function does the same work as gdk_gl_init() with only
+initialized. Instead it returns %FALSE on failure.
+This way the application can fall back to some other means of communication
+with the user - for example a curses or command line interface.
+%FALSE otherwise.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the GUI has been successfully initialized,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">Address of the &lt;parameter&gt;argc&lt;/parameter&gt; parameter of your &lt;function&gt;main()&lt;/function&gt; function. Changed if any arguments were handled.</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">Address of the &lt;parameter&gt;argv&lt;/parameter&gt; parameter of &lt;function&gt;main()&lt;/function&gt;. Any parameters understood by gdk_gl_init() are stripped before return.</doc>
+          <array length="0" c:type="char***">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_extension" c:identifier="gdk_gl_query_extension">
+      <doc xml:whitespace="preserve">Indicates whether the window system supports the OpenGL extension
+(GLX, WGL, etc.).</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if OpenGL is supported, FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="query_extension_for_display"
+              c:identifier="gdk_gl_query_extension_for_display">
+      <doc xml:whitespace="preserve">Indicates whether the window system supports the OpenGL extension
+(GLX, WGL, etc.).</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if OpenGL is supported, FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkDisplay where the query is sent to.</doc>
+          <type name="Gdk.Display" c:type="GdkDisplay*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_gl_extension"
+              c:identifier="gdk_gl_query_gl_extension">
+      <doc xml:whitespace="preserve">Determines whether a given OpenGL extension is supported.
+There must be a valid current rendering context to call
+gdk_gl_query_gl_extension().
+gdk_gl_query_gl_extension() returns information about OpenGL extensions
+only. This means that window system dependent extensions (for example,
+GLX extensions) are not reported by gdk_gl_query_gl_extension().
+supported.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if the OpenGL extension is supported, FALSE if not</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="extension" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of OpenGL extension.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_version" c:identifier="gdk_gl_query_version">
+      <doc xml:whitespace="preserve">Returns the version numbers of the OpenGL extension to the window system.
+In the X Window System, it returns the GLX version.
+In the Microsoft Windows, it returns the Windows version.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">FALSE if it fails, TRUE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="major"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">returns the major version number of the OpenGL extension.</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="minor"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">returns the minor version number of the OpenGL extension.</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_version_for_display"
+              c:identifier="gdk_gl_query_version_for_display">
+      <doc xml:whitespace="preserve">Returns the version numbers of the OpenGL extension to the window system.
+In the X Window System, it returns the GLX version.
+In the Microsoft Windows, it returns the Windows version.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">FALSE if it fails, TRUE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkDisplay where the query is sent to.</doc>
+          <type name="Gdk.Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <parameter name="major"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">returns the major version number of the OpenGL extension.</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="minor"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">returns the minor version number of the OpenGL extension.</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/basis/gdk/gl/authors.txt b/basis/gdk/gl/authors.txt
new file mode 100644 (file)
index 0000000..ce9bcc8
--- /dev/null
@@ -0,0 +1 @@
+Anton Gorenko
\ No newline at end of file
diff --git a/basis/gdk/gl/ffi/ffi.factor b/basis/gdk/gl/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..27ea883
--- /dev/null
@@ -0,0 +1,21 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries alien.syntax combinators
+gobject-introspection kernel system vocabs.loader ;
+IN: gdk.gl.ffi
+
+<<
+"gdk.ffi" require
+>>
+
+LIBRARY: gdk.gl
+
+<<
+"gdk.gl" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgdkglext-x11-1.0.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gdk/gl/GdkGLExt-1.0.gir
diff --git a/basis/gdk/gl/gl.factor b/basis/gdk/gl/gl.factor
new file mode 100644 (file)
index 0000000..ab64b5f
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gdk.gl.ffi ;
+IN: gdk.gl
+
diff --git a/basis/gdk/gl/summary.txt b/basis/gdk/gl/summary.txt
new file mode 100644 (file)
index 0000000..bf5a1e3
--- /dev/null
@@ -0,0 +1 @@
+GdkGLExt binding
diff --git a/basis/gdk/gl/tags.txt b/basis/gdk/gl/tags.txt
new file mode 100755 (executable)
index 0000000..bb863cf
--- /dev/null
@@ -0,0 +1 @@
+bindings
diff --git a/basis/gdk/pixbuf/GdkPixbuf-2.0.gir b/basis/gdk/pixbuf/GdkPixbuf-2.0.gir
new file mode 100644 (file)
index 0000000..7775a91
--- /dev/null
@@ -0,0 +1,2986 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gio" version="2.0"/>
+  <namespace name="GdkPixbuf"
+             version="2.0"
+             shared-library="libgdk_pixbuf-2.0.so.0"
+             c:identifier-prefixes="Gdk"
+             c:symbol-prefixes="gdk">
+    <enumeration name="Colorspace"
+                 glib:type-name="GdkColorspace"
+                 glib:get-type="gdk_colorspace_get_type"
+                 c:type="GdkColorspace">
+      <member name="rgb"
+              value="0"
+              c:identifier="GDK_COLORSPACE_RGB"
+              glib:nick="rgb"/>
+    </enumeration>
+    <enumeration name="InterpType"
+                 glib:type-name="GdkInterpType"
+                 glib:get-type="gdk_interp_type_get_type"
+                 c:type="GdkInterpType">
+      <member name="nearest"
+              value="0"
+              c:identifier="GDK_INTERP_NEAREST"
+              glib:nick="nearest"/>
+      <member name="tiles"
+              value="1"
+              c:identifier="GDK_INTERP_TILES"
+              glib:nick="tiles"/>
+      <member name="bilinear"
+              value="2"
+              c:identifier="GDK_INTERP_BILINEAR"
+              glib:nick="bilinear"/>
+      <member name="hyper"
+              value="3"
+              c:identifier="GDK_INTERP_HYPER"
+              glib:nick="hyper"/>
+    </enumeration>
+    <constant name="PIXBUF_FEATURES_H" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PIXBUF_MAGIC_NUMBER" value="1197763408">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PIXBUF_MAJOR" value="2">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PIXBUF_MICRO" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PIXBUF_MINOR" value="22">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PIXBUF_VERSION" value="2.22.1">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PIXDATA_HEADER_LENGTH" value="24">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Pixbuf"
+           c:symbol-prefix="pixbuf"
+           c:type="GdkPixbuf"
+           parent="GObject.Object"
+           glib:type-name="GdkPixbuf"
+           glib:get-type="gdk_pixbuf_get_type">
+      <constructor name="new" c:identifier="gdk_pixbuf_new">
+        <doc xml:whitespace="preserve">Creates a new #GdkPixbuf structure and allocates a buffer for it.  The 
+buffer has an optimal rowstride.  Note that the buffer is not cleared;
+you will have to fill it completely yourself.
+%NULL if not enough memory could be allocated for the image buffer.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly-created #GdkPixbuf with a reference count of 1, or</doc>
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="colorspace" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Color space for image</doc>
+            <type name="Colorspace" c:type="GdkColorspace"/>
+          </parameter>
+          <parameter name="has_alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Whether the image should have transparency information</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="bits_per_sample" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Number of bits per color sample</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Width of image in pixels, must be &gt; 0</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Height of image in pixels, must be &gt; 0</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_data"
+                   c:identifier="gdk_pixbuf_new_from_data">
+        <doc xml:whitespace="preserve">Creates a new #GdkPixbuf out of in-memory image data.  Currently only RGB
+images with 8 bits per sample are supported.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly-created #GdkPixbuf structure with a reference count of 1.</doc>
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Image data in 8-bit/sample packed format</doc>
+            <type name="guint8" c:type="guchar*"/>
+          </parameter>
+          <parameter name="colorspace" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Colorspace for the image data</doc>
+            <type name="Colorspace" c:type="GdkColorspace"/>
+          </parameter>
+          <parameter name="has_alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Whether the data has an opacity channel</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="bits_per_sample" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Number of bits per sample</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Width of the image in pixels, must be &gt; 0</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Height of the image in pixels, must be &gt; 0</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="rowstride" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Distance in bytes between row starts</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="destroy_fn"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="8">
+            <doc xml:whitespace="preserve">Function used to free the data when the pixbuf's reference count drops to zero, or %NULL if the data should not be freed</doc>
+            <type name="PixbufDestroyNotify" c:type="GdkPixbufDestroyNotify"/>
+          </parameter>
+          <parameter name="destroy_fn_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Closure data to pass to the destroy notification function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_file"
+                   c:identifier="gdk_pixbuf_new_from_file"
+                   throws="1">
+        <doc xml:whitespace="preserve">Creates a new pixbuf by loading an image from a file.  The file format is
+detected automatically. If %NULL is returned, then @error will be set.
+Possible errors are in the #GDK_PIXBUF_ERROR and #G_FILE_ERROR domains.
+there was no loader for the file's format, there was not enough memory to
+allocate the image buffer, or the image file contained invalid data.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly-created pixbuf with a reference count of 1, or %NULL if</doc>
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Name of file to load, in the GLib file name encoding</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_file_at_scale"
+                   c:identifier="gdk_pixbuf_new_from_file_at_scale"
+                   version="2.6"
+                   throws="1">
+        <doc xml:whitespace="preserve">Creates a new pixbuf by loading an image from a file.  The file format is
+detected automatically. If %NULL is returned, then @error will be set.
+Possible errors are in the #GDK_PIXBUF_ERROR and #G_FILE_ERROR domains.
+The image will be scaled to fit in the requested size, optionally preserving
+the image's aspect ratio. 
+When preserving the aspect ratio, a @width of -1 will cause the image
+to be scaled to the exact given height, and a @height of -1 will cause
+the image to be scaled to the exact given width. When not preserving
+aspect ratio, a @width or @height of -1 means to not scale the image 
+at all in that dimension. Negative values for @width and @height are 
+allowed since 2.8.
+there was no loader for the file's format, there was not enough memory to
+allocate the image buffer, or the image file contained invalid data.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly-created pixbuf with a reference count of 1, or %NULL</doc>
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Name of file to load, in the GLib file name encoding</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The width the image should have or -1 to not constrain the width</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The height the image should have or -1 to not constrain the height</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="preserve_aspect_ratio" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to preserve the image's aspect ratio</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_file_at_size"
+                   c:identifier="gdk_pixbuf_new_from_file_at_size"
+                   version="2.4"
+                   throws="1">
+        <doc xml:whitespace="preserve">Creates a new pixbuf by loading an image from a file.  
+The file format is detected automatically. If %NULL is returned, then 
+#G_FILE_ERROR domains.
+The image will be scaled to fit in the requested size, preserving
+the image's aspect ratio. Note that the returned pixbuf may be smaller
+than @width x @height, if the aspect ratio requires it. To load
+and image at the requested size, regardless of aspect ratio, use
+gdk_pixbuf_new_from_file_at_scale().
+%NULL if any of several error conditions occurred:  the file could not 
+be opened, there was no loader for the file's format, there was not 
+enough memory to allocate the image buffer, or the image file contained 
+invalid data.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly-created pixbuf with a reference count of 1, or</doc>
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Name of file to load, in the GLib file name encoding</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The width the image should have or -1 to not constrain the width</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The height the image should have or -1 to not constrain the height</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_inline"
+                   c:identifier="gdk_pixbuf_new_from_inline"
+                   throws="1">
+        <doc xml:whitespace="preserve">Create a #GdkPixbuf from a flat representation that is suitable for
+storing as inline data in a program. This is useful if you want to
+ship a program with images, but don't want to depend on any
+external files.
+gdk-pixbuf ships with a program called &lt;command&gt;gdk-pixbuf-csource&lt;/command&gt; 
+which allows for conversion of #GdkPixbufs into such a inline representation.
+In almost all cases, you should pass the &lt;option&gt;--raw&lt;/option&gt; flag to
+&lt;command&gt;gdk-pixbuf-csource&lt;/command&gt;. A sample invocation would be:
+&lt;informalexample&gt;&lt;programlisting&gt;
+gdk-pixbuf-csource --raw --name=myimage_inline myimage.png
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+For the typical case where the inline pixbuf is read-only static data,
+you don't need to copy the pixel data unless you intend to write to
+it, so you can pass %FALSE for @copy_pixels.  (If you pass 
+&lt;option&gt;--rle&lt;/option&gt; to &lt;command&gt;gdk-pixbuf-csource&lt;/command&gt;, a copy 
+will be made even if @copy_pixels is %FALSE, so using this option is 
+generally a bad idea.)
+If you create a pixbuf from const inline data compiled into your
+program, it's probably safe to ignore errors and disable length checks, 
+since things will always succeed:
+&lt;informalexample&gt;&lt;programlisting&gt;
+pixbuf = gdk_pixbuf_new_from_inline (-1, myimage_inline, FALSE, NULL);
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+For non-const inline data, you could get out of memory. For untrusted 
+inline data located at runtime, you could have corrupt inline data in 
+addition.
+count of 1, or %NULL if an error occurred.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly-created #GdkPixbuf structure with a reference,</doc>
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data_length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Length in bytes of the @data argument or -1 to disable length checks</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Byte data containing a serialized #GdkPixdata structure</doc>
+            <type name="guint8" c:type="guint8*"/>
+          </parameter>
+          <parameter name="copy_pixels" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Whether to copy the pixel data, or use direct pointers</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_stream"
+                   c:identifier="gdk_pixbuf_new_from_stream"
+                   version="2.14"
+                   throws="1">
+        <doc xml:whitespace="preserve">Creates a new pixbuf by loading an image from an input stream.  
+The file format is detected automatically. If %NULL is returned, then 
+from another thread. If the operation was cancelled, the error 
+%GIO_ERROR_CANCELLED will be returned. Other possible errors are in 
+the #GDK_PIXBUF_ERROR and %G_IO_ERROR domains. 
+The stream is not closed.
+not supported, there was not enough memory to allocate the image buffer, 
+the stream contained invalid data, or the operation was cancelled.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly-created pixbuf, or %NULL if any of several error</doc>
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stream" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GInputStream to load the pixbuf from</doc>
+            <type name="Gio.InputStream" c:type="GInputStream*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+            <type name="Gio.Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_stream_at_scale"
+                   c:identifier="gdk_pixbuf_new_from_stream_at_scale"
+                   version="2.14"
+                   throws="1">
+        <doc xml:whitespace="preserve">Creates a new pixbuf by loading an image from an input stream.  
+The file format is detected automatically. If %NULL is returned, then 
+from another thread. If the operation was cancelled, the error 
+%GIO_ERROR_CANCELLED will be returned. Other possible errors are in 
+the #GDK_PIXBUF_ERROR and %G_IO_ERROR domains. 
+The image will be scaled to fit in the requested size, optionally 
+preserving the image's aspect ratio. When preserving the aspect ratio, 
+a @width of -1 will cause the image to be scaled to the exact given 
+height, and a @height of -1 will cause the image to be scaled to the 
+exact given width. When not preserving aspect ratio, a @width or 
+The stream is not closed.
+not supported, there was not enough memory to allocate the image buffer, 
+the stream contained invalid data, or the operation was cancelled.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly-created pixbuf, or %NULL if any of several error</doc>
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stream" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GInputStream to load the pixbuf from</doc>
+            <type name="Gio.InputStream" c:type="GInputStream*"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The width the image should have or -1 to not constrain the width</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The height the image should have or -1 to not constrain the height</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="preserve_aspect_ratio" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to preserve the image's aspect ratio</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+            <type name="Gio.Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_xpm_data"
+                   c:identifier="gdk_pixbuf_new_from_xpm_data">
+        <doc xml:whitespace="preserve">Creates a new pixbuf by parsing XPM data in memory.  This data is commonly
+the result of including an XPM file into a program's C source.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly-created pixbuf with a reference count of 1.</doc>
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to inline XPM data.</doc>
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="from_pixdata"
+                c:identifier="gdk_pixbuf_from_pixdata"
+                introspectable="0"
+                throws="1">
+        <doc xml:whitespace="preserve">Converts a #GdkPixdata to a #GdkPixbuf. If @copy_pixels is %TRUE or
+if the pixel data is run-length-encoded, the pixel data is copied into
+newly-allocated memory; otherwise it is reused.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a new #GdkPixbuf.</doc>
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixdata" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkPixdata to convert into a #GdkPixbuf.</doc>
+            <type name="Pixdata" c:type="GdkPixdata*"/>
+          </parameter>
+          <parameter name="copy_pixels" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to copy raw pixel data; run-length encoded pixel data is always copied.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_file_info"
+                c:identifier="gdk_pixbuf_get_file_info"
+                version="2.4">
+        <doc xml:whitespace="preserve">Parses an image file far enough to determine its format and size.
+or %NULL if the image format wasn't recognized. The return value 
+is owned by GdkPixbuf and should not be freed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GdkPixbufFormat describing the image format of the file</doc>
+          <type name="PixbufFormat" c:type="GdkPixbufFormat*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The name of the file to identify.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Return location for the width of the image, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Return location for the height of the image, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_formats"
+                c:identifier="gdk_pixbuf_get_formats"
+                version="2.2">
+        <doc xml:whitespace="preserve">Obtains the available information about the image formats supported
+by GdkPixbuf.
+#GdkPixbufFormat&lt;!-- --&gt;s describing the supported
+image formats.  The list should be freed when it is no longer needed,
+but the structures themselves are owned by #GdkPixbuf and should not be
+freed.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">A list of</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="PixbufFormat"/>
+          </type>
+        </return-value>
+      </function>
+      <function name="gettext" c:identifier="gdk_pixbuf_gettext">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="msgid" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="add_alpha" c:identifier="gdk_pixbuf_add_alpha">
+        <doc xml:whitespace="preserve">Takes an existing pixbuf and adds an alpha channel to it.
+If the existing pixbuf already had an alpha channel, the channel
+values are copied from the original; otherwise, the alpha channel
+is initialized to 255 (full opacity).
+If @substitute_color is %TRUE, then the color specified by (@r, @g, @b) will be
+assigned zero opacity. That is, if you pass (255, 255, 255) for the
+substitute color, all white pixels will become fully transparent.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly-created pixbuf with a reference count of 1.</doc>
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="substitute_color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Whether to set a color to zero opacity.  If this is %FALSE, then the (@r, @g, @b) arguments will be ignored.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="r" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Red value to substitute.</doc>
+            <type name="guint8" c:type="guchar"/>
+          </parameter>
+          <parameter name="g" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Green value to substitute.</doc>
+            <type name="guint8" c:type="guchar"/>
+          </parameter>
+          <parameter name="b" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Blue value to substitute.</doc>
+            <type name="guint8" c:type="guchar"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="apply_embedded_orientation"
+              c:identifier="gdk_pixbuf_apply_embedded_orientation"
+              version="2.12">
+        <doc xml:whitespace="preserve">Takes an existing pixbuf and checks for the presence of an
+associated "orientation" option, which may be provided by the 
+jpeg loader (which reads the exif orientation tag) or the 
+tiff loader (which reads the tiff orientation tag, and
+compensates it for the partial transforms performed by 
+libtiff). If an orientation option/tag is present, the
+appropriate transform will be performed so that the pixbuf
+is oriented correctly.
+input pixbuf (with an increased reference count).</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly-created pixbuf, or a reference to the</doc>
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="composite" c:identifier="gdk_pixbuf_composite">
+        <doc xml:whitespace="preserve">Creates a transformation of the source image @src by scaling by
+This gives an image in the coordinates of the destination pixbuf.
+The rectangle (@dest_x, @dest_y, @dest_width, @dest_height)
+is then composited onto the corresponding rectangle of the
+original destination image.
+When the destination rectangle contains parts not in the source 
+image, the data at the edges of the source image is replicated
+to infinity. 
+&lt;figure id="pixbuf-composite-diagram"&gt;
+&lt;title&gt;Compositing of pixbufs&lt;/title&gt;
+&lt;graphic fileref="composite.png" format="PNG"/&gt;
+&lt;/figure&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkPixbuf into which to render the results</doc>
+            <type name="Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+          <parameter name="dest_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the left coordinate for region to render</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="dest_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the top coordinate for region to render</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="dest_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the width of the region to render</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="dest_height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the height of the region to render</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="offset_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset in the X direction (currently rounded to an integer)</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="offset_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset in the Y direction (currently rounded to an integer)</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="scale_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the scale factor in the X direction</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="scale_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the scale factor in the Y direction</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="interp_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the interpolation type for the transformation.</doc>
+            <type name="InterpType" c:type="GdkInterpType"/>
+          </parameter>
+          <parameter name="overall_alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">overall alpha for source image (0..255)</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="composite_color" c:identifier="gdk_pixbuf_composite_color">
+        <doc xml:whitespace="preserve">Creates a transformation of the source image @src by scaling by
+then composites the rectangle (@dest_x ,@dest_y, @dest_width,
+colors @color1 and @color2 and renders it onto the destination
+image.
+See gdk_pixbuf_composite_color_simple() for a simpler variant of this
+function suitable for many tasks.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkPixbuf into which to render the results</doc>
+            <type name="Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+          <parameter name="dest_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the left coordinate for region to render</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="dest_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the top coordinate for region to render</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="dest_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the width of the region to render</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="dest_height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the height of the region to render</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="offset_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset in the X direction (currently rounded to an integer)</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="offset_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset in the Y direction (currently rounded to an integer)</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="scale_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the scale factor in the X direction</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="scale_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the scale factor in the Y direction</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="interp_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the interpolation type for the transformation.</doc>
+            <type name="InterpType" c:type="GdkInterpType"/>
+          </parameter>
+          <parameter name="overall_alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">overall alpha for source image (0..255)</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="check_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the X offset for the checkboard (origin of checkboard is at -@check_x, -@check_y)</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="check_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the Y offset for the checkboard</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="check_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of checks in the checkboard (must be a power of two)</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="color1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the color of check at upper left</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="color2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the color of the other check</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="composite_color_simple"
+              c:identifier="gdk_pixbuf_composite_color_simple">
+        <doc xml:whitespace="preserve">Creates a new #GdkPixbuf by scaling @src to @dest_width x
+allocated for it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GdkPixbuf, or %NULL if not enough memory could be</doc>
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the width of destination image</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="dest_height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the height of destination image</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="interp_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the interpolation type for the transformation.</doc>
+            <type name="InterpType" c:type="GdkInterpType"/>
+          </parameter>
+          <parameter name="overall_alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">overall alpha for source image (0..255)</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="check_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of checks in the checkboard (must be a power of two)</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="color1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the color of check at upper left</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="color2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the color of the other check</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="gdk_pixbuf_copy">
+        <doc xml:whitespace="preserve">Creates a new #GdkPixbuf with a copy of the information in the specified
+not enough memory could be allocated.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly-created pixbuf with a reference count of 1, or %NULL if</doc>
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="copy_area" c:identifier="gdk_pixbuf_copy_area">
+        <doc xml:whitespace="preserve">Copies a rectangular area from @src_pixbuf to @dest_pixbuf.  Conversion of
+pixbuf formats is done automatically.
+If the source rectangle overlaps the destination rectangle on the
+same pixbuf, it will be overwritten during the copy operation.
+Therefore, you can not use this function to scroll a pixbuf.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Source X coordinate within @src_pixbuf.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="src_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Source Y coordinate within @src_pixbuf.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Width of the area to copy.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Height of the area to copy.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="dest_pixbuf" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Destination pixbuf.</doc>
+            <type name="Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+          <parameter name="dest_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate within @dest_pixbuf.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="dest_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate within @dest_pixbuf.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fill" c:identifier="gdk_pixbuf_fill">
+        <doc xml:whitespace="preserve">Clears a pixbuf to the given RGBA value, converting the RGBA value into
+the pixbuf's pixel format. The alpha will be ignored if the pixbuf
+doesn't have an alpha channel.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixel" transfer-ownership="none">
+            <doc xml:whitespace="preserve">RGBA pixel to clear to (0xffffffff is opaque white, 0x00000000 transparent black)</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="flip" c:identifier="gdk_pixbuf_flip" version="2.6">
+        <doc xml:whitespace="preserve">Flips a pixbuf horizontally or vertically and returns the
+result in a new pixbuf.
+allocated for it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GdkPixbuf, or %NULL if not enough memory could be</doc>
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="horizontal" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to flip horizontally, %FALSE to flip vertically</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bits_per_sample"
+              c:identifier="gdk_pixbuf_get_bits_per_sample">
+        <doc xml:whitespace="preserve">Queries the number of bits per color sample in a pixbuf.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Number of bits per color sample.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_colorspace" c:identifier="gdk_pixbuf_get_colorspace">
+        <doc xml:whitespace="preserve">Queries the color space of a pixbuf.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Color space.</doc>
+          <type name="Colorspace" c:type="GdkColorspace"/>
+        </return-value>
+      </method>
+      <method name="get_has_alpha" c:identifier="gdk_pixbuf_get_has_alpha">
+        <doc xml:whitespace="preserve">Queries whether a pixbuf has an alpha channel (opacity information).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if it has an alpha channel, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_height" c:identifier="gdk_pixbuf_get_height">
+        <doc xml:whitespace="preserve">Queries the height of a pixbuf.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Height in pixels.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_n_channels" c:identifier="gdk_pixbuf_get_n_channels">
+        <doc xml:whitespace="preserve">Queries the number of channels of a pixbuf.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Number of channels.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_option" c:identifier="gdk_pixbuf_get_option">
+        <doc xml:whitespace="preserve">Looks up @key in the list of options that may have been attached to the
+function using gdk_pixbuf_set_option().
+For instance, the ANI loader provides "Title" and "Artist" options. 
+The ICO, XBM, and XPM loaders provide "x_hot" and "y_hot" hot-spot 
+options for cursor definitions. The PNG loader provides the tEXt ancillary
+chunk key/value pairs as options. Since 2.12, the TIFF and JPEG loaders
+return an "orientation" option string that corresponds to the embedded 
+TIFF/Exif orientation tag (if present).
+string that should not be freed or %NULL if @key was not found.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value associated with @key. This is a nul-terminated</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a nul-terminated string.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pixels" c:identifier="gdk_pixbuf_get_pixels">
+        <doc xml:whitespace="preserve">Queries a pointer to the pixel data of a pixbuf.
+for information about how the pixel data is stored in
+memory.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A pointer to the pixbuf's pixel data.  Please see &lt;xref linkend="image-data"/&gt;</doc>
+          <type name="guint8" c:type="guchar*"/>
+        </return-value>
+      </method>
+      <method name="get_rowstride" c:identifier="gdk_pixbuf_get_rowstride">
+        <doc xml:whitespace="preserve">Queries the rowstride of a pixbuf, which is the number of bytes between the start of a row
+and the start of the next row.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Distance between row starts.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_width" c:identifier="gdk_pixbuf_get_width">
+        <doc xml:whitespace="preserve">Queries the width of a pixbuf.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Width in pixels.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="new_subpixbuf" c:identifier="gdk_pixbuf_new_subpixbuf">
+        <doc xml:whitespace="preserve">Creates a new pixbuf which represents a sub-region of
+original pixbuf, so writing to one affects both.
+The new pixbuf holds a reference to @src_pixbuf, so
+is finalized.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new pixbuf</doc>
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coord in @src_pixbuf</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="src_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coord in @src_pixbuf</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width of region in @src_pixbuf</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height of region in @src_pixbuf</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref"
+              c:identifier="gdk_pixbuf_ref"
+              introspectable="0"
+              deprecated="Use g_object_ref()."
+              deprecated-version="2.0">
+        <doc xml:whitespace="preserve">Adds a reference to a pixbuf.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">The same as the @pixbuf argument.</doc>
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="rotate_simple"
+              c:identifier="gdk_pixbuf_rotate_simple"
+              version="2.6">
+        <doc xml:whitespace="preserve">Rotates a pixbuf by a multiple of 90 degrees, and returns the
+result in a new pixbuf.
+allocated for it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GdkPixbuf, or %NULL if not enough memory could be</doc>
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the angle to rotate by</doc>
+            <type name="PixbufRotation" c:type="GdkPixbufRotation"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="saturate_and_pixelate"
+              c:identifier="gdk_pixbuf_saturate_and_pixelate">
+        <doc xml:whitespace="preserve">Modifies saturation and optionally pixelates @src, placing the result in
+saturation is reduced (the image turns toward grayscale); if greater than
+1.0, saturation is increased (the image gets more vivid colors). If @pixelate
+is %TRUE, then pixels are faded in a checkerboard pattern to create a
+pixelated image. @src and @dest must have the same image format, size, and
+rowstride.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <doc xml:whitespace="preserve">place to write modified version of @src</doc>
+            <type name="Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+          <parameter name="saturation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">saturation factor</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="pixelate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to pixelate</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="save" c:identifier="gdk_pixbuf_save" introspectable="0">
+        <doc xml:whitespace="preserve">Saves pixbuf to a file in format @type. By default, "jpeg", "png", "ico" 
+and "bmp" are possible file formats to save in, but more formats may be
+installed. The list of all writable formats can be determined in the 
+following way:
+|[
+void add_if_writable (GdkPixbufFormat *data, GSList **list)
+{
+if (gdk_pixbuf_format_is_writable (data))
+*list = g_slist_prepend (*list, data);
+}
+GSList *formats = gdk_pixbuf_get_formats ();
+GSList *writable_formats = NULL;
+g_slist_foreach (formats, add_if_writable, &amp;writable_formats);
+g_slist_free (formats);
+]|
+If @error is set, %FALSE will be returned. Possible errors include 
+those in the #GDK_PIXBUF_ERROR domain and those in the #G_FILE_ERROR domain.
+The variable argument list should be %NULL-terminated; if not empty,
+it should contain pairs of strings that modify the save
+parameters. For example:
+&lt;informalexample&gt;&lt;programlisting&gt;
+gdk_pixbuf_save (pixbuf, handle, "jpeg", &amp;amp;error,
+"quality", "100", NULL);
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+Currently only few parameters exist. JPEG images can be saved with a
+"quality" parameter; its value should be in the range [0,100].
+Text chunks can be attached to PNG images by specifying parameters of
+the form "tEXt::key", where key is an ASCII string of length 1-79.
+The values are UTF-8 encoded strings. The PNG compression level can
+be specified using the "compression" parameter; it's value is in an
+integer in the range of [0,9].
+ICC color profiles can also be embedded into PNG and TIFF images.
+The "icc-profile" value should be the complete ICC profile encoded
+into base64.
+&lt;informalexample&gt;&lt;programlisting&gt;
+gchar *contents;
+gchar *contents_encode;
+gsize length;
+g_file_get_contents ("/home/hughsie/.color/icc/L225W.icm", &amp;contents, &amp;length, NULL);
+contents_encode = g_base64_encode ((const guchar *) contents, length);
+gdk_pixbuf_save (pixbuf, handle, "png", &amp;amp;error,
+"icc-profile", contents_encode,
+NULL);
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+TIFF images recognize a "compression" option which acceps an integer value.
+Among the codecs are 1 None, 2 Huffman, 5 LZW, 7 JPEG and 8 Deflate, see
+the libtiff documentation and tiff.h for all supported codec values.
+ICO images can be saved in depth 16, 24, or 32, by using the "depth"
+parameter. When the ICO saver is given "x_hot" and "y_hot" parameters,
+it produces a CUR instead of an ICO.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether an error was set</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of file to save.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of file format.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">return location for error, or %NULL</doc>
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="save_to_buffer"
+              c:identifier="gdk_pixbuf_save_to_buffer"
+              version="2.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Saves pixbuf to a new buffer in format @type, which is currently "jpeg",
+"png", "tiff", "ico" or "bmp".  This is a convenience function that uses
+gdk_pixbuf_save_to_callback() to do the real work. Note that the buffer 
+is not nul-terminated and may contain embedded  nuls.
+If @error is set, %FALSE will be returned and @buffer will be set to
+%NULL. Possible errors include those in the #GDK_PIXBUF_ERROR
+domain.
+See gdk_pixbuf_save() for more details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether an error was set</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to receive a pointer to the new buffer.</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="buffer_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to receive the size of the new buffer.</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of file format.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">return location for error, or %NULL</doc>
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="save_to_bufferv"
+              c:identifier="gdk_pixbuf_save_to_bufferv"
+              version="2.4"
+              throws="1">
+        <doc xml:whitespace="preserve">Saves pixbuf to a new buffer in format @type, which is currently "jpeg",
+"tiff", "png", "ico" or "bmp".  See gdk_pixbuf_save_to_buffer() 
+for more details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether an error was set</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to receive a pointer to the new buffer.</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="buffer_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to receive the size of the new buffer.</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of file format.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="option_keys" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of options to set, %NULL-terminated</doc>
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+          <parameter name="option_values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">values for named options</doc>
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="save_to_callback"
+              c:identifier="gdk_pixbuf_save_to_callback"
+              version="2.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Saves pixbuf in format @type by feeding the produced data to a 
+callback. Can be used when you want to store the image to something 
+other than a file, such as an in-memory buffer or a socket.  
+If @error is set, %FALSE will be returned. Possible errors
+include those in the #GDK_PIXBUF_ERROR domain and whatever the save
+function generates.
+See gdk_pixbuf_save() for more details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether an error was set</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="save_func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">a function that is called to save each block of data that the save routine generates.</doc>
+            <type name="PixbufSaveFunc" c:type="GdkPixbufSaveFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to the save function.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of file format.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">return location for error, or %NULL</doc>
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="save_to_callbackv"
+              c:identifier="gdk_pixbuf_save_to_callbackv"
+              version="2.4"
+              throws="1">
+        <doc xml:whitespace="preserve">Saves pixbuf to a callback in format @type, which is currently "jpeg",
+"png", "tiff", "ico" or "bmp".  If @error is set, %FALSE will be returned. See
+gdk_pixbuf_save_to_callback () for more details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether an error was set</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="save_func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">a function that is called to save each block of data that the save routine generates.</doc>
+            <type name="PixbufSaveFunc" c:type="GdkPixbufSaveFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to the save function.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of file format.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="option_keys" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of options to set, %NULL-terminated</doc>
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+          <parameter name="option_values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">values for named options</doc>
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="save_to_stream"
+              c:identifier="gdk_pixbuf_save_to_stream"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="stream" transfer-ownership="none">
+            <type name="Gio.OutputStream" c:type="GOutputStream*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Gio.Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none">
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="savev" c:identifier="gdk_pixbuf_savev" throws="1">
+        <doc xml:whitespace="preserve">Saves pixbuf to a file in @type, which is currently "jpeg", "png", "tiff", "ico" or "bmp".
+If @error is set, %FALSE will be returned. 
+See gdk_pixbuf_save () for more details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether an error was set</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of file to save.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of file format.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="option_keys" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of options to set, %NULL-terminated</doc>
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+          <parameter name="option_values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">values for named options</doc>
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scale" c:identifier="gdk_pixbuf_scale">
+        <doc xml:whitespace="preserve">Creates a transformation of the source image @src by scaling by
+then renders the rectangle (@dest_x, @dest_y, @dest_width,
+replacing the previous contents.
+Try to use gdk_pixbuf_scale_simple() first, this function is
+the industrial-strength power tool you can fall back to if
+gdk_pixbuf_scale_simple() isn't powerful enough.
+If the source rectangle overlaps the destination rectangle on the
+same pixbuf, it will be overwritten during the scaling which
+results in rendering artifacts.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkPixbuf into which to render the results</doc>
+            <type name="Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+          <parameter name="dest_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the left coordinate for region to render</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="dest_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the top coordinate for region to render</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="dest_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the width of the region to render</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="dest_height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the height of the region to render</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="offset_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset in the X direction (currently rounded to an integer)</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="offset_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset in the Y direction (currently rounded to an integer)</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="scale_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the scale factor in the X direction</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="scale_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the scale factor in the Y direction</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="interp_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the interpolation type for the transformation.</doc>
+            <type name="InterpType" c:type="GdkInterpType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scale_simple" c:identifier="gdk_pixbuf_scale_simple">
+        <doc xml:whitespace="preserve">Create a new #GdkPixbuf containing a copy of @src scaled to
+should be #GDK_INTERP_NEAREST if you want maximum speed (but when
+scaling down #GDK_INTERP_NEAREST is usually unusably ugly).  The
+default @interp_type should be #GDK_INTERP_BILINEAR which offers
+reasonable quality and speed.
+You can scale a sub-portion of @src by creating a sub-pixbuf
+pointing into @src; see gdk_pixbuf_new_subpixbuf().
+For more complicated scaling/compositing see gdk_pixbuf_scale()
+and gdk_pixbuf_composite().
+allocated for it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GdkPixbuf, or %NULL if not enough memory could be</doc>
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the width of destination image</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="dest_height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the height of destination image</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="interp_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the interpolation type for the transformation.</doc>
+            <type name="InterpType" c:type="GdkInterpType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_option"
+              c:identifier="gdk_pixbuf_set_option"
+              version="2.2">
+        <doc xml:whitespace="preserve">Attaches a key/value pair as an option to a #GdkPixbuf. If %key already
+exists in the list of options attached to @pixbuf, the new value is 
+ignored and %FALSE is returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a nul-terminated string.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a nul-terminated string.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unref"
+              c:identifier="gdk_pixbuf_unref"
+              introspectable="0"
+              deprecated="Use g_object_unref()."
+              deprecated-version="2.0">
+        <doc xml:whitespace="preserve">Removes a reference from a pixbuf.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="bits-per-sample"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The number of bits per sample. 
+Currently only 8 bit per sample are supported.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="colorspace"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="Colorspace"/>
+      </property>
+      <property name="has-alpha"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="height"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="n-channels"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The number of samples per pixel. 
+Currently, only 3 or 4 samples per pixel are supported.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="pixels"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="gpointer"/>
+      </property>
+      <property name="rowstride"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The number of bytes between the start of a row and 
+the start of the next row. This number must (obviously)
+be at least as large as the width of the pixbuf.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="width"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+    </class>
+    <enumeration name="PixbufAlphaMode"
+                 glib:type-name="GdkPixbufAlphaMode"
+                 glib:get-type="gdk_pixbuf_alpha_mode_get_type"
+                 c:type="GdkPixbufAlphaMode">
+      <member name="bilevel"
+              value="0"
+              c:identifier="GDK_PIXBUF_ALPHA_BILEVEL"
+              glib:nick="bilevel"/>
+      <member name="full"
+              value="1"
+              c:identifier="GDK_PIXBUF_ALPHA_FULL"
+              glib:nick="full"/>
+    </enumeration>
+    <class name="PixbufAnimation"
+           c:symbol-prefix="pixbuf_animation"
+           c:type="GdkPixbufAnimation"
+           parent="GObject.Object"
+           glib:type-name="GdkPixbufAnimation"
+           glib:get-type="gdk_pixbuf_animation_get_type"
+           glib:type-struct="PixbufAnimationClass">
+      <constructor name="new_from_file"
+                   c:identifier="gdk_pixbuf_animation_new_from_file"
+                   throws="1">
+        <doc xml:whitespace="preserve">Creates a new animation by loading it from a file.  The file format is
+detected automatically.  If the file's format does not support multi-frame
+images, then an animation with a single frame will be created. Possible errors
+are in the #GDK_PIXBUF_ERROR and #G_FILE_ERROR domains.
+there was no loader for the file's format, there was not enough memory to
+allocate the image buffer, or the image file contained invalid data.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly-created animation with a reference count of 1, or %NULL</doc>
+          <type name="PixbufAnimation" c:type="GdkPixbufAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Name of file to load, in the GLib file name encoding</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="get_iter" invoker="get_iter">
+        <doc xml:whitespace="preserve">Get an iterator for displaying an animation. The iterator provides
+the frames that should be displayed at a given time.
+It should be freed after use with g_object_unref().
+marks the beginning of animation playback. After creating an
+iterator, you should immediately display the pixbuf returned by
+gdk_pixbuf_animation_iter_get_pixbuf(). Then, you should install a
+timeout (with g_timeout_add()) or by some other mechanism ensure
+that you'll update the image after
+gdk_pixbuf_animation_iter_get_delay_time() milliseconds. Each time
+the image is updated, you should reinstall the timeout with the new,
+possibly-changed delay time.
+As a shortcut, if @start_time is %NULL, the result of
+g_get_current_time() will be used automatically.
+To update the image (i.e. possibly change the result of
+gdk_pixbuf_animation_iter_get_pixbuf() to a new frame of the animation),
+call gdk_pixbuf_animation_iter_advance().
+If you're using #GdkPixbufLoader, in addition to updating the image
+after the delay time, you should also update it whenever you
+receive the area_updated signal and
+gdk_pixbuf_animation_iter_on_currently_loading_frame() returns
+%TRUE. In this case, the frame currently being fed into the loader
+has received new data, so needs to be refreshed. The delay time for
+a frame may also be modified after an area_updated signal, for
+example if the delay time for a frame is encoded in the data after
+the frame itself. So your timeout should be reinstalled after any
+area_updated signal.
+A delay time of -1 is possible, indicating "infinite."</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">an iterator to move over the animation</doc>
+          <type name="PixbufAnimationIter" c:type="GdkPixbufAnimationIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_time" transfer-ownership="none">
+            <doc xml:whitespace="preserve">time when the animation starts playing</doc>
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_size">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gint" c:type="int*"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gint" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_static_image" invoker="get_static_image">
+        <doc xml:whitespace="preserve">If an animation is really just a plain image (has only one frame),
+this function returns that image. If the animation is an animation,
+this function returns a reasonable thing to display as a static
+unanimated image, which might be the first frame, or something more
+sophisticated. If an animation hasn't loaded any frames yet, this
+function will return %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">unanimated image representing the animation</doc>
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="is_static_image" invoker="is_static_image">
+        <doc xml:whitespace="preserve">If you load a file with gdk_pixbuf_animation_new_from_file() and it turns
+out to be a plain, unanimated image, then this function will return
+%TRUE. Use gdk_pixbuf_animation_get_static_image() to retrieve
+the image.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the "animation" was really just an image</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_height" c:identifier="gdk_pixbuf_animation_get_height">
+        <doc xml:whitespace="preserve">Queries the height of the bounding box of a pixbuf animation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Height of the bounding box of the animation.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_iter" c:identifier="gdk_pixbuf_animation_get_iter">
+        <doc xml:whitespace="preserve">Get an iterator for displaying an animation. The iterator provides
+the frames that should be displayed at a given time.
+It should be freed after use with g_object_unref().
+marks the beginning of animation playback. After creating an
+iterator, you should immediately display the pixbuf returned by
+gdk_pixbuf_animation_iter_get_pixbuf(). Then, you should install a
+timeout (with g_timeout_add()) or by some other mechanism ensure
+that you'll update the image after
+gdk_pixbuf_animation_iter_get_delay_time() milliseconds. Each time
+the image is updated, you should reinstall the timeout with the new,
+possibly-changed delay time.
+As a shortcut, if @start_time is %NULL, the result of
+g_get_current_time() will be used automatically.
+To update the image (i.e. possibly change the result of
+gdk_pixbuf_animation_iter_get_pixbuf() to a new frame of the animation),
+call gdk_pixbuf_animation_iter_advance().
+If you're using #GdkPixbufLoader, in addition to updating the image
+after the delay time, you should also update it whenever you
+receive the area_updated signal and
+gdk_pixbuf_animation_iter_on_currently_loading_frame() returns
+%TRUE. In this case, the frame currently being fed into the loader
+has received new data, so needs to be refreshed. The delay time for
+a frame may also be modified after an area_updated signal, for
+example if the delay time for a frame is encoded in the data after
+the frame itself. So your timeout should be reinstalled after any
+area_updated signal.
+A delay time of -1 is possible, indicating "infinite."</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">an iterator to move over the animation</doc>
+          <type name="PixbufAnimationIter" c:type="GdkPixbufAnimationIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_time" transfer-ownership="none">
+            <doc xml:whitespace="preserve">time when the animation starts playing</doc>
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_static_image"
+              c:identifier="gdk_pixbuf_animation_get_static_image">
+        <doc xml:whitespace="preserve">If an animation is really just a plain image (has only one frame),
+this function returns that image. If the animation is an animation,
+this function returns a reasonable thing to display as a static
+unanimated image, which might be the first frame, or something more
+sophisticated. If an animation hasn't loaded any frames yet, this
+function will return %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">unanimated image representing the animation</doc>
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="get_width" c:identifier="gdk_pixbuf_animation_get_width">
+        <doc xml:whitespace="preserve">Queries the width of the bounding box of a pixbuf animation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Width of the bounding box of the animation.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="is_static_image"
+              c:identifier="gdk_pixbuf_animation_is_static_image">
+        <doc xml:whitespace="preserve">If you load a file with gdk_pixbuf_animation_new_from_file() and it turns
+out to be a plain, unanimated image, then this function will return
+%TRUE. Use gdk_pixbuf_animation_get_static_image() to retrieve
+the image.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the "animation" was really just an image</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="ref"
+              c:identifier="gdk_pixbuf_animation_ref"
+              introspectable="0"
+              deprecated="Use g_object_ref()."
+              deprecated-version="2.0">
+        <doc xml:whitespace="preserve">Adds a reference to an animation.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">The same as the @animation argument.</doc>
+          <type name="PixbufAnimation" c:type="GdkPixbufAnimation*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gdk_pixbuf_animation_unref"
+              introspectable="0"
+              deprecated="Use g_object_unref()."
+              deprecated-version="2.0">
+        <doc xml:whitespace="preserve">Removes a reference from an animation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+    </class>
+    <record name="PixbufAnimationClass"
+            c:type="GdkPixbufAnimationClass"
+            glib:is-gtype-struct-for="PixbufAnimation">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="is_static_image">
+        <callback name="is_static_image">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the "animation" was really just an image</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="anim" transfer-ownership="none">
+              <type name="PixbufAnimation" c:type="GdkPixbufAnimation*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_static_image">
+        <callback name="get_static_image">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">unanimated image representing the animation</doc>
+            <type name="Pixbuf" c:type="GdkPixbuf*"/>
+          </return-value>
+          <parameters>
+            <parameter name="anim" transfer-ownership="none">
+              <type name="PixbufAnimation" c:type="GdkPixbufAnimation*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_size">
+        <callback name="get_size">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="anim" transfer-ownership="none">
+              <type name="PixbufAnimation" c:type="GdkPixbufAnimation*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="int*"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="int*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_iter">
+        <callback name="get_iter">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">an iterator to move over the animation</doc>
+            <type name="PixbufAnimationIter" c:type="GdkPixbufAnimationIter*"/>
+          </return-value>
+          <parameters>
+            <parameter name="anim" transfer-ownership="none">
+              <type name="PixbufAnimation" c:type="GdkPixbufAnimation*"/>
+            </parameter>
+            <parameter name="start_time" transfer-ownership="none">
+              <doc xml:whitespace="preserve">time when the animation starts playing</doc>
+              <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="PixbufAnimationIter"
+           c:symbol-prefix="pixbuf_animation_iter"
+           c:type="GdkPixbufAnimationIter"
+           parent="GObject.Object"
+           glib:type-name="GdkPixbufAnimationIter"
+           glib:get-type="gdk_pixbuf_animation_iter_get_type"
+           glib:type-struct="PixbufAnimationIterClass">
+      <virtual-method name="advance" invoker="advance">
+        <doc xml:whitespace="preserve">Possibly advances an animation to a new frame. Chooses the frame based
+on the start time passed to gdk_pixbuf_animation_get_iter().
+must be greater than or equal to the time passed to
+gdk_pixbuf_animation_get_iter(), and must increase or remain
+unchanged each time gdk_pixbuf_animation_iter_get_pixbuf() is
+called. That is, you can't go backward in time; animations only
+play forward.
+As a shortcut, pass %NULL for the current time and g_get_current_time()
+will be invoked on your behalf. So you only need to explicitly pass
+at double speed.
+If this function returns %FALSE, there's no need to update the animation
+display, assuming the display had been rendered prior to advancing;
+if %TRUE, you need to call gdk_animation_iter_get_pixbuf() and update the
+display with the new pixbuf.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the image may need updating</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="current_time" transfer-ownership="none">
+            <doc xml:whitespace="preserve">current time</doc>
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_delay_time" invoker="get_delay_time">
+        <doc xml:whitespace="preserve">Gets the number of milliseconds the current pixbuf should be displayed,
+or -1 if the current pixbuf should be displayed forever. g_timeout_add()
+conveniently takes a timeout in milliseconds, so you can use a timeout
+to schedule the next update.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">delay time in milliseconds (thousandths of a second)</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_pixbuf" invoker="get_pixbuf">
+        <doc xml:whitespace="preserve">Gets the current pixbuf which should be displayed; the pixbuf will
+be the same size as the animation itself
+(gdk_pixbuf_animation_get_width(), gdk_pixbuf_animation_get_height()). 
+This pixbuf should be displayed for 
+gdk_pixbuf_animation_iter_get_delay_time() milliseconds.  The caller
+of this function does not own a reference to the returned pixbuf;
+the returned pixbuf will become invalid when the iterator advances
+to the next frame, which may happen anytime you call
+gdk_pixbuf_animation_iter_advance(). Copy the pixbuf to keep it
+(don't just add a reference), as it may get recycled as you advance
+the iterator.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the pixbuf to be displayed</doc>
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="on_currently_loading_frame"
+                      invoker="on_currently_loading_frame">
+        <doc xml:whitespace="preserve">Used to determine how to respond to the area_updated signal on
+#GdkPixbufLoader when loading an animation. area_updated is emitted
+for an area of the frame currently streaming in to the loader. So if
+you're on the currently loading frame, you need to redraw the screen for
+the updated area.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the frame we're on is partially loaded, or the last frame</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <method name="advance" c:identifier="gdk_pixbuf_animation_iter_advance">
+        <doc xml:whitespace="preserve">Possibly advances an animation to a new frame. Chooses the frame based
+on the start time passed to gdk_pixbuf_animation_get_iter().
+must be greater than or equal to the time passed to
+gdk_pixbuf_animation_get_iter(), and must increase or remain
+unchanged each time gdk_pixbuf_animation_iter_get_pixbuf() is
+called. That is, you can't go backward in time; animations only
+play forward.
+As a shortcut, pass %NULL for the current time and g_get_current_time()
+will be invoked on your behalf. So you only need to explicitly pass
+at double speed.
+If this function returns %FALSE, there's no need to update the animation
+display, assuming the display had been rendered prior to advancing;
+if %TRUE, you need to call gdk_animation_iter_get_pixbuf() and update the
+display with the new pixbuf.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the image may need updating</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="current_time" transfer-ownership="none">
+            <doc xml:whitespace="preserve">current time</doc>
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_delay_time"
+              c:identifier="gdk_pixbuf_animation_iter_get_delay_time">
+        <doc xml:whitespace="preserve">Gets the number of milliseconds the current pixbuf should be displayed,
+or -1 if the current pixbuf should be displayed forever. g_timeout_add()
+conveniently takes a timeout in milliseconds, so you can use a timeout
+to schedule the next update.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">delay time in milliseconds (thousandths of a second)</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_pixbuf"
+              c:identifier="gdk_pixbuf_animation_iter_get_pixbuf">
+        <doc xml:whitespace="preserve">Gets the current pixbuf which should be displayed; the pixbuf will
+be the same size as the animation itself
+(gdk_pixbuf_animation_get_width(), gdk_pixbuf_animation_get_height()). 
+This pixbuf should be displayed for 
+gdk_pixbuf_animation_iter_get_delay_time() milliseconds.  The caller
+of this function does not own a reference to the returned pixbuf;
+the returned pixbuf will become invalid when the iterator advances
+to the next frame, which may happen anytime you call
+gdk_pixbuf_animation_iter_advance(). Copy the pixbuf to keep it
+(don't just add a reference), as it may get recycled as you advance
+the iterator.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the pixbuf to be displayed</doc>
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="on_currently_loading_frame"
+              c:identifier="gdk_pixbuf_animation_iter_on_currently_loading_frame">
+        <doc xml:whitespace="preserve">Used to determine how to respond to the area_updated signal on
+#GdkPixbufLoader when loading an animation. area_updated is emitted
+for an area of the frame currently streaming in to the loader. So if
+you're on the currently loading frame, you need to redraw the screen for
+the updated area.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the frame we're on is partially loaded, or the last frame</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+    </class>
+    <record name="PixbufAnimationIterClass"
+            c:type="GdkPixbufAnimationIterClass"
+            glib:is-gtype-struct-for="PixbufAnimationIter">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_delay_time">
+        <callback name="get_delay_time">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">delay time in milliseconds (thousandths of a second)</doc>
+            <type name="gint" c:type="int"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="PixbufAnimationIter"
+                    c:type="GdkPixbufAnimationIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_pixbuf">
+        <callback name="get_pixbuf">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the pixbuf to be displayed</doc>
+            <type name="Pixbuf" c:type="GdkPixbuf*"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="PixbufAnimationIter"
+                    c:type="GdkPixbufAnimationIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="on_currently_loading_frame">
+        <callback name="on_currently_loading_frame">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the frame we're on is partially loaded, or the last frame</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="PixbufAnimationIter"
+                    c:type="GdkPixbufAnimationIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="advance">
+        <callback name="advance">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the image may need updating</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="PixbufAnimationIter"
+                    c:type="GdkPixbufAnimationIter*"/>
+            </parameter>
+            <parameter name="current_time" transfer-ownership="none">
+              <doc xml:whitespace="preserve">current time</doc>
+              <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <callback name="PixbufDestroyNotify" c:type="GdkPixbufDestroyNotify">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pixels" transfer-ownership="none">
+          <type name="guint8" c:type="guchar*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="PixbufError"
+                 glib:type-name="GdkPixbufError"
+                 glib:get-type="gdk_pixbuf_error_get_type"
+                 c:type="GdkPixbufError"
+                 glib:error-quark="gdk_pixbuf_error_quark">
+      <member name="corrupt_image"
+              value="0"
+              c:identifier="GDK_PIXBUF_ERROR_CORRUPT_IMAGE"
+              glib:nick="corrupt-image"/>
+      <member name="insufficient_memory"
+              value="1"
+              c:identifier="GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY"
+              glib:nick="insufficient-memory"/>
+      <member name="bad_option"
+              value="2"
+              c:identifier="GDK_PIXBUF_ERROR_BAD_OPTION"
+              glib:nick="bad-option"/>
+      <member name="unknown_type"
+              value="3"
+              c:identifier="GDK_PIXBUF_ERROR_UNKNOWN_TYPE"
+              glib:nick="unknown-type"/>
+      <member name="unsupported_operation"
+              value="4"
+              c:identifier="GDK_PIXBUF_ERROR_UNSUPPORTED_OPERATION"
+              glib:nick="unsupported-operation"/>
+      <member name="failed"
+              value="5"
+              c:identifier="GDK_PIXBUF_ERROR_FAILED"
+              glib:nick="failed"/>
+    </enumeration>
+    <record name="PixbufFormat"
+            c:type="GdkPixbufFormat"
+            glib:type-name="GdkPixbufFormat"
+            glib:get-type="gdk_pixbuf_format_get_type"
+            c:symbol-prefix="pixbuf_format">
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="signature" writable="1">
+        <type name="PixbufModulePattern" c:type="GdkPixbufModulePattern*"/>
+      </field>
+      <field name="domain" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="mime_types" writable="1">
+        <type name="utf8" c:type="gchar**"/>
+      </field>
+      <field name="extensions" writable="1">
+        <type name="utf8" c:type="gchar**"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="disabled" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="license" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <method name="copy" c:identifier="gdk_pixbuf_format_copy" version="2.22">
+        <doc xml:whitespace="preserve">Creates a copy of @format
+gdk_pixbuf_format_free() to free the resources when done</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated copy of a #GdkPixbufFormat. Use</doc>
+          <type name="PixbufFormat" c:type="GdkPixbufFormat*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gdk_pixbuf_format_free" version="2.22">
+        <doc xml:whitespace="preserve">Frees the resources allocated when copying a #GdkPixbufFormat
+using gdk_pixbuf_format_copy()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_description"
+              c:identifier="gdk_pixbuf_format_get_description"
+              version="2.2">
+        <doc xml:whitespace="preserve">Returns a description of the format.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a description of the format.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_extensions"
+              c:identifier="gdk_pixbuf_format_get_extensions"
+              version="2.2">
+        <doc xml:whitespace="preserve">Returns the filename extensions typically used for files in the 
+given format.
+freed with g_strfreev() when it is no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a %NULL-terminated array of filename extensions which must be</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_license"
+              c:identifier="gdk_pixbuf_format_get_license"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns information about the license of the image loader for the format. The
+returned string should be a shorthand for a wellknown license, e.g. "LGPL",
+"GPL", "QPL", "GPL/QPL", or "other" to indicate some other license.  This
+string should be freed with g_free() when it's no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a string describing the license of @format.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_mime_types"
+              c:identifier="gdk_pixbuf_format_get_mime_types"
+              version="2.2">
+        <doc xml:whitespace="preserve">Returns the mime types supported by the format.
+g_strfreev() when it is no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a %NULL-terminated array of mime types which must be freed with</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_name"
+              c:identifier="gdk_pixbuf_format_get_name"
+              version="2.2">
+        <doc xml:whitespace="preserve">Returns the name of the format.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the name of the format.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="is_disabled"
+              c:identifier="gdk_pixbuf_format_is_disabled"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns whether this image format is disabled. See
+gdk_pixbuf_format_set_disabled().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether this image format is disabled.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_scalable"
+              c:identifier="gdk_pixbuf_format_is_scalable"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns whether this image format is scalable. If a file is in a 
+scalable format, it is preferable to load it at the desired size, 
+rather than loading it at the default size and scaling the 
+resulting pixbuf to the desired size.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether this image format is scalable.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_writable"
+              c:identifier="gdk_pixbuf_format_is_writable"
+              version="2.2">
+        <doc xml:whitespace="preserve">Returns whether pixbufs can be saved in the given format.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether pixbufs can be saved in the given format.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_disabled"
+              c:identifier="gdk_pixbuf_format_set_disabled"
+              version="2.6">
+        <doc xml:whitespace="preserve">Disables or enables an image format. If a format is disabled, 
+gdk-pixbuf won't use the image loader for this format to load 
+images. Applications can use this to avoid using image loaders 
+with an inappropriate license, see gdk_pixbuf_format_get_license().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="disabled" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to disable the format @format</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <bitfield name="PixbufFormatFlags" c:type="GdkPixbufFormatFlags">
+      <member name="writable"
+              value="1"
+              c:identifier="GDK_PIXBUF_FORMAT_WRITABLE"/>
+      <member name="scalable"
+              value="2"
+              c:identifier="GDK_PIXBUF_FORMAT_SCALABLE"/>
+      <member name="threadsafe"
+              value="4"
+              c:identifier="GDK_PIXBUF_FORMAT_THREADSAFE"/>
+    </bitfield>
+    <class name="PixbufLoader"
+           c:symbol-prefix="pixbuf_loader"
+           c:type="GdkPixbufLoader"
+           parent="GObject.Object"
+           glib:type-name="GdkPixbufLoader"
+           glib:get-type="gdk_pixbuf_loader_get_type"
+           glib:type-struct="PixbufLoaderClass">
+      <constructor name="new" c:identifier="gdk_pixbuf_loader_new">
+        <doc xml:whitespace="preserve">Creates a new pixbuf loader object.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly-created pixbuf loader.</doc>
+          <type name="PixbufLoader" c:type="GdkPixbufLoader*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_mime_type"
+                   c:identifier="gdk_pixbuf_loader_new_with_mime_type"
+                   version="2.4"
+                   throws="1">
+        <doc xml:whitespace="preserve">Creates a new pixbuf loader object that always attempts to parse
+image data as if it were an image of mime type @mime_type, instead of
+identifying the type automatically. Useful if you want an error if
+the image isn't the expected mime type, for loading image formats
+that can't be reliably identified by looking at the data, or if
+the user manually forces a specific mime type.
+The list of supported mime types depends on what image loaders
+are installed, but typically "image/png", "image/jpeg", "image/gif", 
+"image/tiff" and "image/x-xpixmap" are among the supported mime types. 
+To obtain the full list of supported mime types, call 
+gdk_pixbuf_format_get_mime_types() on each of the #GdkPixbufFormat 
+structs returned by gdk_pixbuf_get_formats().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly-created pixbuf loader.</doc>
+          <type name="PixbufLoader" c:type="GdkPixbufLoader*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mime_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mime type to be loaded</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_type"
+                   c:identifier="gdk_pixbuf_loader_new_with_type"
+                   throws="1">
+        <doc xml:whitespace="preserve">Creates a new pixbuf loader object that always attempts to parse
+image data as if it were an image of type @image_type, instead of
+identifying the type automatically. Useful if you want an error if
+the image isn't the expected type, for loading image formats
+that can't be reliably identified by looking at the data, or if
+the user manually forces a specific type.
+The list of supported image formats depends on what image loaders
+are installed, but typically "png", "jpeg", "gif", "tiff" and 
+"xpm" are among the supported formats. To obtain the full list of
+supported image formats, call gdk_pixbuf_format_get_name() on each 
+of the #GdkPixbufFormat structs returned by gdk_pixbuf_get_formats().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly-created pixbuf loader.</doc>
+          <type name="PixbufLoader" c:type="GdkPixbufLoader*"/>
+        </return-value>
+        <parameters>
+          <parameter name="image_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the image format to be loaded with the image</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="close" c:identifier="gdk_pixbuf_loader_close" throws="1">
+        <doc xml:whitespace="preserve">Informs a pixbuf loader that no further writes with
+gdk_pixbuf_loader_write() will occur, so that it can free its
+internal loading structures. Also, tries to parse any data that
+hasn't yet been parsed; if the remaining data is partial or
+corrupt, an error will be returned.  If %FALSE is returned, @error
+will be set to an error from the #GDK_PIXBUF_ERROR or #G_FILE_ERROR
+domains. If you're just cancelling a load rather than expecting it
+to be finished, passing %NULL for @error to ignore it is
+reasonable.
+Remember that this does not unref the loader, so if you plan not to
+use it anymore, please g_object_unref() it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if all image data written so far was successfully</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_animation"
+              c:identifier="gdk_pixbuf_loader_get_animation">
+        <doc xml:whitespace="preserve">Queries the #GdkPixbufAnimation that a pixbuf loader is currently creating.
+In general it only makes sense to call this function after the "area-prepared"
+signal has been emitted by the loader. If the loader doesn't have enough
+bytes yet (hasn't emitted the "area-prepared" signal) this function will 
+return %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GdkPixbufAnimation that the loader is loading, or %NULL if</doc>
+          <type name="PixbufAnimation" c:type="GdkPixbufAnimation*"/>
+        </return-value>
+      </method>
+      <method name="get_format"
+              c:identifier="gdk_pixbuf_loader_get_format"
+              version="2.2">
+        <doc xml:whitespace="preserve">Obtains the available information about the format of the 
+currently loading image file.
+by GdkPixbuf and should not be freed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GdkPixbufFormat or %NULL. The return value is owned</doc>
+          <type name="PixbufFormat" c:type="GdkPixbufFormat*"/>
+        </return-value>
+      </method>
+      <method name="get_pixbuf" c:identifier="gdk_pixbuf_loader_get_pixbuf">
+        <doc xml:whitespace="preserve">Queries the #GdkPixbuf that a pixbuf loader is currently creating.
+In general it only makes sense to call this function after the
+"area-prepared" signal has been emitted by the loader; this means
+that enough data has been read to know the size of the image that
+will be allocated.  If the loader has not received enough data via
+gdk_pixbuf_loader_write(), then this function returns %NULL.  The
+returned pixbuf will be the same in all future calls to the loader,
+so simply calling g_object_ref() should be sufficient to continue
+using it.  Additionally, if the loader is an animation, it will
+return the "static image" of the animation
+(see gdk_pixbuf_animation_get_static_image()).
+enough data has been read to determine how to create the image buffer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GdkPixbuf that the loader is creating, or %NULL if not</doc>
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="set_size"
+              c:identifier="gdk_pixbuf_loader_set_size"
+              version="2.2">
+        <doc xml:whitespace="preserve">Causes the image to be scaled while it is loaded. The desired
+image size can be determined relative to the original size of
+the image by calling gdk_pixbuf_loader_set_size() from a
+signal handler for the ::size-prepared signal.
+Attempts to set the desired image size  are ignored after the 
+emission of the ::size-prepared signal.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The desired width of the image being loaded.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The desired height of the image being loaded.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="write" c:identifier="gdk_pixbuf_loader_write" throws="1">
+        <doc xml:whitespace="preserve">This will cause a pixbuf loader to parse the next @count bytes of
+an image.  It will return %TRUE if the data was loaded successfully,
+and %FALSE if an error occurred.  In the latter case, the loader
+will be closed, and will not accept further writes. If %FALSE is
+returned, @error will be set to an error from the #GDK_PIXBUF_ERROR
+or #G_FILE_ERROR domains.
+cannot parse the buffer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the write was successful, or %FALSE if the loader</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to image data.</doc>
+            <type name="guint8" c:type="guchar*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Length of the @buf buffer in bytes.</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <glib:signal name="area-prepared">
+        <doc xml:whitespace="preserve">This signal is emitted when the pixbuf loader has allocated the 
+pixbuf in the desired size.  After this signal is emitted, 
+applications can call gdk_pixbuf_loader_get_pixbuf() to fetch 
+the partially-loaded pixbuf.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="area-updated">
+        <doc xml:whitespace="preserve">This signal is emitted when a significant area of the image being
+loaded has been updated.  Normally it means that a complete
+scanline has been read in, but it could be a different area as
+well.  Applications can use this signal to know when to repaint
+areas of an image that is being loaded.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X offset of upper-left corner of the updated area.</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y offset of upper-left corner of the updated area.</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Width of updated area.</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Height of updated area.</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="closed">
+        <doc xml:whitespace="preserve">This signal is emitted when gdk_pixbuf_loader_close() is called.
+It can be used by different parts of an application to receive
+notification when an image loader is closed by the code that
+drives it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="size-prepared">
+        <doc xml:whitespace="preserve">This signal is emitted when the pixbuf loader has been fed the
+initial amount of data that is required to figure out the size
+of the image that it will create.  Applications can call  
+gdk_pixbuf_loader_set_size() in response to this signal to set
+the desired size to which the image should be scaled.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the original width of the image</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the original height of the image</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="PixbufLoaderClass"
+            c:type="GdkPixbufLoaderClass"
+            glib:is-gtype-struct-for="PixbufLoader">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="size_prepared">
+        <callback name="size_prepared">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="loader" transfer-ownership="none">
+              <type name="PixbufLoader" c:type="GdkPixbufLoader*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="int"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="area_prepared">
+        <callback name="area_prepared">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="loader" transfer-ownership="none">
+              <type name="PixbufLoader" c:type="GdkPixbufLoader*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="area_updated">
+        <callback name="area_updated">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="loader" transfer-ownership="none">
+              <type name="PixbufLoader" c:type="GdkPixbufLoader*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="int"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="closed">
+        <callback name="closed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="loader" transfer-ownership="none">
+              <type name="PixbufLoader" c:type="GdkPixbufLoader*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="PixbufModule" c:type="GdkPixbufModule">
+      <field name="module_name" writable="1">
+        <type name="utf8" c:type="char*"/>
+      </field>
+      <field name="module_path" writable="1">
+        <type name="utf8" c:type="char*"/>
+      </field>
+      <field name="module" writable="1">
+        <type name="GModule.Module" c:type="GModule*"/>
+      </field>
+      <field name="info" writable="1">
+        <type name="PixbufFormat" c:type="GdkPixbufFormat*"/>
+      </field>
+      <field name="load" introspectable="0">
+        <callback name="load" introspectable="0" throws="1">
+          <return-value>
+            <type name="Pixbuf" c:type="GdkPixbuf*"/>
+          </return-value>
+          <parameters>
+            <parameter name="f" transfer-ownership="none">
+              <type name="gpointer" c:type="FILE*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="load_xpm_data" introspectable="0">
+        <callback name="load_xpm_data" introspectable="0">
+          <return-value>
+            <type name="Pixbuf" c:type="GdkPixbuf*"/>
+          </return-value>
+          <parameters>
+            <parameter name="data" transfer-ownership="none">
+              <type name="utf8" c:type="char**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="begin_load" introspectable="0">
+        <callback name="begin_load" introspectable="0" throws="1">
+          <return-value>
+            <type name="gpointer" c:type="gpointer"/>
+          </return-value>
+          <parameters>
+            <parameter name="size_func" transfer-ownership="none">
+              <type name="PixbufModuleSizeFunc"
+                    c:type="GdkPixbufModuleSizeFunc"/>
+            </parameter>
+            <parameter name="prepare_func" transfer-ownership="none">
+              <type name="PixbufModulePreparedFunc"
+                    c:type="GdkPixbufModulePreparedFunc"/>
+            </parameter>
+            <parameter name="update_func"
+                       transfer-ownership="none"
+                       closure="3">
+              <type name="PixbufModuleUpdatedFunc"
+                    c:type="GdkPixbufModuleUpdatedFunc"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="3">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stop_load">
+        <callback name="stop_load" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="load_increment">
+        <callback name="load_increment" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="guint8" c:type="guchar*"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="load_animation" introspectable="0">
+        <callback name="load_animation" introspectable="0" throws="1">
+          <return-value>
+            <type name="PixbufAnimation" c:type="GdkPixbufAnimation*"/>
+          </return-value>
+          <parameters>
+            <parameter name="f" transfer-ownership="none">
+              <type name="gpointer" c:type="FILE*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="save">
+        <callback name="save" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="f" transfer-ownership="none">
+              <type name="gpointer" c:type="FILE*"/>
+            </parameter>
+            <parameter name="pixbuf" transfer-ownership="none">
+              <type name="Pixbuf" c:type="GdkPixbuf*"/>
+            </parameter>
+            <parameter name="param_keys" transfer-ownership="none">
+              <type name="utf8" c:type="gchar**"/>
+            </parameter>
+            <parameter name="param_values" transfer-ownership="none">
+              <type name="utf8" c:type="gchar**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="save_to_callback" introspectable="0">
+        <callback name="save_to_callback" introspectable="0" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="save_func" transfer-ownership="none" closure="1">
+              <type name="PixbufSaveFunc" c:type="GdkPixbufSaveFunc"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="1">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+            <parameter name="pixbuf" transfer-ownership="none">
+              <type name="Pixbuf" c:type="GdkPixbuf*"/>
+            </parameter>
+            <parameter name="option_keys" transfer-ownership="none">
+              <type name="utf8" c:type="gchar**"/>
+            </parameter>
+            <parameter name="option_values" transfer-ownership="none">
+              <type name="utf8" c:type="gchar**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_reserved1" introspectable="0">
+        <callback name="_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_reserved2" introspectable="0">
+        <callback name="_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_reserved3" introspectable="0">
+        <callback name="_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_reserved4" introspectable="0">
+        <callback name="_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_reserved5" introspectable="0">
+        <callback name="_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="PixbufModuleFillInfoFunc"
+              c:type="GdkPixbufModuleFillInfoFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="info" transfer-ownership="none">
+          <type name="PixbufFormat" c:type="GdkPixbufFormat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PixbufModuleFillVtableFunc"
+              c:type="GdkPixbufModuleFillVtableFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="module" transfer-ownership="none">
+          <type name="PixbufModule" c:type="GdkPixbufModule*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="PixbufModulePattern" c:type="GdkPixbufModulePattern">
+      <field name="prefix" writable="1">
+        <type name="utf8" c:type="char*"/>
+      </field>
+      <field name="mask" writable="1">
+        <type name="utf8" c:type="char*"/>
+      </field>
+      <field name="relevance" writable="1">
+        <type name="gint" c:type="int"/>
+      </field>
+    </record>
+    <callback name="PixbufModulePreparedFunc"
+              c:type="GdkPixbufModulePreparedFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pixbuf" transfer-ownership="none">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+        <parameter name="anim" transfer-ownership="none">
+          <type name="PixbufAnimation" c:type="GdkPixbufAnimation*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PixbufModuleSizeFunc" c:type="GdkPixbufModuleSizeFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="width" transfer-ownership="none">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PixbufModuleUpdatedFunc"
+              c:type="GdkPixbufModuleUpdatedFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pixbuf" transfer-ownership="none">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="5">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="PixbufNonAnim"
+           c:symbol-prefix="pixbuf_non_anim"
+           parent="PixbufAnimation"
+           glib:type-name="GdkPixbufNonAnim"
+           glib:get-type="gdk_pixbuf_non_anim_get_type">
+      <constructor name="new" c:identifier="gdk_pixbuf_non_anim_new">
+        <return-value transfer-ownership="full">
+          <type name="PixbufAnimation" c:type="GdkPixbufAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <type name="Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+    </class>
+    <enumeration name="PixbufRotation"
+                 glib:type-name="GdkPixbufRotation"
+                 glib:get-type="gdk_pixbuf_rotation_get_type"
+                 c:type="GdkPixbufRotation">
+      <member name="none"
+              value="0"
+              c:identifier="GDK_PIXBUF_ROTATE_NONE"
+              glib:nick="none"/>
+      <member name="counterclockwise"
+              value="90"
+              c:identifier="GDK_PIXBUF_ROTATE_COUNTERCLOCKWISE"
+              glib:nick="counterclockwise"/>
+      <member name="upsidedown"
+              value="180"
+              c:identifier="GDK_PIXBUF_ROTATE_UPSIDEDOWN"
+              glib:nick="upsidedown"/>
+      <member name="clockwise"
+              value="270"
+              c:identifier="GDK_PIXBUF_ROTATE_CLOCKWISE"
+              glib:nick="clockwise"/>
+    </enumeration>
+    <callback name="PixbufSaveFunc" c:type="GdkPixbufSaveFunc">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+        <parameter name="error" transfer-ownership="none">
+          <type name="GLib.Error" c:type="GError**"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="PixbufSimpleAnim"
+           c:symbol-prefix="pixbuf_simple_anim"
+           c:type="GdkPixbufSimpleAnim"
+           parent="PixbufAnimation"
+           glib:type-name="GdkPixbufSimpleAnim"
+           glib:get-type="gdk_pixbuf_simple_anim_get_type"
+           glib:type-struct="PixbufSimpleAnimClass">
+      <constructor name="new"
+                   c:identifier="gdk_pixbuf_simple_anim_new"
+                   version="2.8">
+        <doc xml:whitespace="preserve">Creates a new, empty animation.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated #GdkPixbufSimpleAnim</doc>
+          <type name="PixbufSimpleAnim" c:type="GdkPixbufSimpleAnim*"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the width of the animation</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the height of the animation</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the speed of the animation, in frames per second</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add_frame"
+              c:identifier="gdk_pixbuf_simple_anim_add_frame"
+              version="2.8">
+        <doc xml:whitespace="preserve">Adds a new frame to @animation. The @pixbuf must
+have the dimensions specified when the animation 
+was constructed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the pixbuf to add</doc>
+            <type name="Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_loop"
+              c:identifier="gdk_pixbuf_simple_anim_get_loop"
+              version="2.18">
+        <doc xml:whitespace="preserve">Gets whether @animation should loop indefinitely when it reaches the end.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the animation loops forever, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_loop"
+              c:identifier="gdk_pixbuf_simple_anim_set_loop"
+              version="2.18">
+        <doc xml:whitespace="preserve">Sets whether @animation should loop indefinitely when it reaches the end.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="loop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to loop the animation</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="loop"
+                version="2.18"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the animation should loop when it reaches the end.</doc>
+        <type name="gboolean"/>
+      </property>
+    </class>
+    <record name="PixbufSimpleAnimClass"
+            c:type="GdkPixbufSimpleAnimClass"
+            disguised="1"
+            glib:is-gtype-struct-for="PixbufSimpleAnim">
+    </record>
+    <class name="PixbufSimpleAnimIter"
+           c:symbol-prefix="pixbuf_simple_anim_iter"
+           parent="PixbufAnimationIter"
+           glib:type-name="GdkPixbufSimpleAnimIter"
+           glib:get-type="gdk_pixbuf_simple_anim_iter_get_type">
+    </class>
+    <record name="Pixdata" c:type="GdkPixdata">
+      <doc xml:whitespace="preserve">A #GdkPixdata contains pixbuf information in a form suitable for 
+serialization and streaming.</doc>
+      <field name="magic" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="length" writable="1">
+        <type name="gint32" c:type="gint32"/>
+      </field>
+      <field name="pixdata_type" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="rowstride" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="width" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="height" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="pixel_data" writable="1">
+        <type name="guint8" c:type="guint8*"/>
+      </field>
+      <method name="deserialize"
+              c:identifier="gdk_pixdata_deserialize"
+              throws="1">
+        <doc xml:whitespace="preserve">Deserializes (reconstruct) a #GdkPixdata structure from a byte stream.
+The byte stream consists of a straightforward writeout of the
+#GdkPixdata fields in network byte order, plus the @pixel_data
+bytes the structure points to.
+The @pixdata contents are reconstructed byte by byte and are checked
+for validity. This function may fail with %GDK_PIXBUF_CORRUPT_IMAGE
+or %GDK_PIXBUF_ERROR_UNKNOWN_TYPE.
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Upon successful deserialization %TRUE is returned,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="stream_length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">length of the stream used for deserialization.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="stream" transfer-ownership="none">
+            <doc xml:whitespace="preserve">stream of bytes containing a serialized #GdkPixdata structure.</doc>
+            <type name="guint8" c:type="guint8*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_pixbuf"
+              c:identifier="gdk_pixdata_from_pixbuf"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Converts a #GdkPixbuf to a #GdkPixdata. If @use_rle is %TRUE, the
+pixel data is run-length encoded into newly-allocated memory and a 
+pointer to that memory is returned. 
+for the run-length encoded pixel data, otherwise %NULL.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">If @ure_rle is %TRUE, a pointer to the newly-allocated memory</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to fill @pixdata with.</doc>
+            <type name="Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+          <parameter name="use_rle" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to use run-length encoding for the pixel data.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="serialize" c:identifier="gdk_pixdata_serialize">
+        <doc xml:whitespace="preserve">Serializes a #GdkPixdata structure into a byte stream.
+The byte stream consists of a straightforward writeout of the
+#GdkPixdata fields in network byte order, plus the @pixel_data
+bytes the structure points to.
+#GdkPixdata structure.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A newly-allocated string containing the serialized</doc>
+          <type name="guint8" c:type="guint8*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stream_length_p" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the resulting stream length in.</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_csource"
+              c:identifier="gdk_pixdata_to_csource"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Generates C source code suitable for compiling images directly 
+into programs. 
+gdk-pixbuf ships with a program called &lt;command&gt;gdk-pixbuf-csource&lt;/command&gt; 
+which offers a command line interface to this function.
+of @pixdata.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a newly-allocated string containing the C source form</doc>
+          <type name="GLib.String" c:type="GString*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">used for naming generated data structures or macros.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="dump_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkPixdataDumpType determining the kind of C source to be generated.</doc>
+            <type name="PixdataDumpType" c:type="GdkPixdataDumpType"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <bitfield name="PixdataDumpType" c:type="GdkPixdataDumpType">
+      <member name="pixdata_stream"
+              value="0"
+              c:identifier="GDK_PIXDATA_DUMP_PIXDATA_STREAM"/>
+      <member name="pixdata_struct"
+              value="1"
+              c:identifier="GDK_PIXDATA_DUMP_PIXDATA_STRUCT"/>
+      <member name="macros" value="2" c:identifier="GDK_PIXDATA_DUMP_MACROS"/>
+      <member name="gtypes" value="0" c:identifier="GDK_PIXDATA_DUMP_GTYPES"/>
+      <member name="ctypes"
+              value="256"
+              c:identifier="GDK_PIXDATA_DUMP_CTYPES"/>
+      <member name="static"
+              value="512"
+              c:identifier="GDK_PIXDATA_DUMP_STATIC"/>
+      <member name="const" value="1024" c:identifier="GDK_PIXDATA_DUMP_CONST"/>
+      <member name="rle_decoder"
+              value="65536"
+              c:identifier="GDK_PIXDATA_DUMP_RLE_DECODER"/>
+    </bitfield>
+    <bitfield name="PixdataType" c:type="GdkPixdataType">
+      <doc xml:whitespace="preserve">one for the used colorspace, one for the width of the samples and one 
+for the encoding of the pixel data.</doc>
+      <member name="color_type_rgb"
+              value="1"
+              c:identifier="GDK_PIXDATA_COLOR_TYPE_RGB"/>
+      <member name="color_type_rgba"
+              value="2"
+              c:identifier="GDK_PIXDATA_COLOR_TYPE_RGBA"/>
+      <member name="color_type_mask"
+              value="255"
+              c:identifier="GDK_PIXDATA_COLOR_TYPE_MASK"/>
+      <member name="sample_width_8"
+              value="65536"
+              c:identifier="GDK_PIXDATA_SAMPLE_WIDTH_8"/>
+      <member name="sample_width_mask"
+              value="983040"
+              c:identifier="GDK_PIXDATA_SAMPLE_WIDTH_MASK"/>
+      <member name="encoding_raw"
+              value="16777216"
+              c:identifier="GDK_PIXDATA_ENCODING_RAW"/>
+      <member name="encoding_rle"
+              value="33554432"
+              c:identifier="GDK_PIXDATA_ENCODING_RLE"/>
+      <member name="encoding_mask"
+              value="251658240"
+              c:identifier="GDK_PIXDATA_ENCODING_MASK"/>
+    </bitfield>
+    <function name="pixbuf_error_quark" c:identifier="gdk_pixbuf_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+  </namespace>
+</repository>
diff --git a/basis/gdk/pixbuf/authors.txt b/basis/gdk/pixbuf/authors.txt
new file mode 100644 (file)
index 0000000..ce9bcc8
--- /dev/null
@@ -0,0 +1 @@
+Anton Gorenko
\ No newline at end of file
diff --git a/basis/gdk/pixbuf/ffi/ffi.factor b/basis/gdk/pixbuf/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..ecc73bd
--- /dev/null
@@ -0,0 +1,21 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries alien.syntax combinators
+gobject-introspection kernel system vocabs.loader ;
+IN: gdk.pixbuf.ffi
+
+<<
+"gio.ffi" require
+>>
+
+LIBRARY: gdk.pixbuf
+
+<<
+"gdk.pixbuf" {
+    { [ os winnt? ] [ "libgdk_pixbuf-2.0-0.dll" cdecl add-library ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgdk_pixbuf-2.0.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gdk/pixbuf/GdkPixbuf-2.0.gir
diff --git a/basis/gdk/pixbuf/pixbuf.factor b/basis/gdk/pixbuf/pixbuf.factor
new file mode 100644 (file)
index 0000000..35bbe9a
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gdk.pixbuf.ffi ;
+IN: gdk.pixbuf
+
diff --git a/basis/gdk/pixbuf/summary.txt b/basis/gdk/pixbuf/summary.txt
new file mode 100644 (file)
index 0000000..6cf28e8
--- /dev/null
@@ -0,0 +1 @@
+GdkPixbuf binding
diff --git a/basis/gdk/pixbuf/tags.txt b/basis/gdk/pixbuf/tags.txt
new file mode 100755 (executable)
index 0000000..bb863cf
--- /dev/null
@@ -0,0 +1 @@
+bindings
diff --git a/basis/gdk/summary.txt b/basis/gdk/summary.txt
new file mode 100644 (file)
index 0000000..c8abd2c
--- /dev/null
@@ -0,0 +1 @@
+Gdk binding
diff --git a/basis/gdk/tags.txt b/basis/gdk/tags.txt
new file mode 100755 (executable)
index 0000000..bb863cf
--- /dev/null
@@ -0,0 +1 @@
+bindings
diff --git a/basis/gio/Gio-2.0.gir b/basis/gio/Gio-2.0.gir
new file mode 100644 (file)
index 0000000..df74801
--- /dev/null
@@ -0,0 +1,44841 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <package name="gio-2.0"/>
+  <package name="gio-unix-2.0"/>
+  <c:include name="gio/gio.h"/>
+  <namespace name="Gio"
+             version="2.0"
+             shared-library="libgio-2.0.so.0"
+             c:identifier-prefixes="G"
+             c:symbol-prefixes="g">
+    <interface name="Action"
+               c:symbol-prefix="action"
+               c:type="GAction"
+               glib:type-name="GAction"
+               glib:get-type="g_action_get_type"
+               glib:type-struct="ActionInterface">
+      <virtual-method name="activate" invoker="activate" version="2.26">
+        <doc xml:whitespace="preserve">Activates the action.
+the parameter type given at construction time).  If the parameter
+type was %NULL then @parameter must also be %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parameter" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the parameter to the activation</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_enabled" invoker="get_enabled" version="2.26">
+        <doc xml:whitespace="preserve">Checks if @action is currently enabled.
+An action must be enabled in order to be activated or in order to
+have its state changed from outside callers.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the action is enabled</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_name" invoker="get_name" version="2.26">
+        <doc xml:whitespace="preserve">Queries the name of @action.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the action</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_parameter_type"
+                      invoker="get_parameter_type"
+                      version="2.26">
+        <doc xml:whitespace="preserve">Queries the type of the parameter that must be given when activating
+When activating the action using g_action_activate(), the #GVariant
+given to that function must be of the type returned by this function.
+In the case that this function returns %NULL, you must not give any
+#GVariant, but %NULL instead.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the parameter type</doc>
+          <type name="GLib.VariantType" c:type="GVariantType*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_state" invoker="get_state" version="2.26">
+        <doc xml:whitespace="preserve">Queries the current state of @action.
+If the action is not stateful then %NULL will be returned.  If the
+action is stateful then the type of the return value is the type
+given by g_action_get_state_type().
+The return value (if non-%NULL) should be freed with
+g_variant_unref() when it is no longer required.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the current state of the action</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_state_hint"
+                      invoker="get_state_hint"
+                      version="2.26">
+        <doc xml:whitespace="preserve">Requests a hint about the valid range of values for the state of
+If %NULL is returned it either means that the action is not stateful
+or that there is no hint about the valid range of values for the
+state of the action.
+If a #GVariant array is returned then each item in the array is a
+returned then the tuple specifies the inclusive lower and upper bound
+of valid values for the state.
+In any case, the information is merely a hint.  It may be possible to
+have a state value outside of the hinted range and setting a value
+within the range may fail.
+The return value (if non-%NULL) should be freed with
+g_variant_unref() when it is no longer required.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the state range hint</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_state_type"
+                      invoker="get_state_type"
+                      version="2.26">
+        <doc xml:whitespace="preserve">Queries the type of the state of @action.
+g_action_new_stateful()) then this function returns the #GVariantType
+of the state.  This is the type of the initial value given as the
+state.  All calls to g_action_set_state() must give a #GVariant of
+this type and g_action_get_state() will return a #GVariant of the
+same type.
+this function will return %NULL.  In that case, g_action_get_state()
+will return %NULL and you must not call g_action_set_state().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the state type, if the action is stateful</doc>
+          <type name="GLib.VariantType" c:type="GVariantType*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_state" invoker="set_state" version="2.26">
+        <doc xml:whitespace="preserve">Request for the state of @action to be changed to @value.
+The action must be stateful and @value must be of the correct type.
+See g_action_get_state_type().
+This call merely requests a change.  The action may refuse to change
+its state or may change its state to something other than @value.
+See g_action_get_state_hint().
+If the @value GVariant is floating, it is consumed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="activate" c:identifier="g_action_activate" version="2.26">
+        <doc xml:whitespace="preserve">Activates the action.
+the parameter type given at construction time).  If the parameter
+type was %NULL then @parameter must also be %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parameter" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the parameter to the activation</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_enabled"
+              c:identifier="g_action_get_enabled"
+              version="2.26">
+        <doc xml:whitespace="preserve">Checks if @action is currently enabled.
+An action must be enabled in order to be activated or in order to
+have its state changed from outside callers.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the action is enabled</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_name" c:identifier="g_action_get_name" version="2.26">
+        <doc xml:whitespace="preserve">Queries the name of @action.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the action</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_parameter_type"
+              c:identifier="g_action_get_parameter_type"
+              version="2.26">
+        <doc xml:whitespace="preserve">Queries the type of the parameter that must be given when activating
+When activating the action using g_action_activate(), the #GVariant
+given to that function must be of the type returned by this function.
+In the case that this function returns %NULL, you must not give any
+#GVariant, but %NULL instead.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the parameter type</doc>
+          <type name="GLib.VariantType" c:type="GVariantType*"/>
+        </return-value>
+      </method>
+      <method name="get_state"
+              c:identifier="g_action_get_state"
+              version="2.26">
+        <doc xml:whitespace="preserve">Queries the current state of @action.
+If the action is not stateful then %NULL will be returned.  If the
+action is stateful then the type of the return value is the type
+given by g_action_get_state_type().
+The return value (if non-%NULL) should be freed with
+g_variant_unref() when it is no longer required.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the current state of the action</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+      </method>
+      <method name="get_state_hint"
+              c:identifier="g_action_get_state_hint"
+              version="2.26">
+        <doc xml:whitespace="preserve">Requests a hint about the valid range of values for the state of
+If %NULL is returned it either means that the action is not stateful
+or that there is no hint about the valid range of values for the
+state of the action.
+If a #GVariant array is returned then each item in the array is a
+returned then the tuple specifies the inclusive lower and upper bound
+of valid values for the state.
+In any case, the information is merely a hint.  It may be possible to
+have a state value outside of the hinted range and setting a value
+within the range may fail.
+The return value (if non-%NULL) should be freed with
+g_variant_unref() when it is no longer required.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the state range hint</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+      </method>
+      <method name="get_state_type"
+              c:identifier="g_action_get_state_type"
+              version="2.26">
+        <doc xml:whitespace="preserve">Queries the type of the state of @action.
+g_action_new_stateful()) then this function returns the #GVariantType
+of the state.  This is the type of the initial value given as the
+state.  All calls to g_action_set_state() must give a #GVariant of
+this type and g_action_get_state() will return a #GVariant of the
+same type.
+this function will return %NULL.  In that case, g_action_get_state()
+will return %NULL and you must not call g_action_set_state().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the state type, if the action is stateful</doc>
+          <type name="GLib.VariantType" c:type="GVariantType*"/>
+        </return-value>
+      </method>
+      <method name="set_state"
+              c:identifier="g_action_set_state"
+              version="2.26">
+        <doc xml:whitespace="preserve">Request for the state of @action to be changed to @value.
+The action must be stateful and @value must be of the correct type.
+See g_action_get_state_type().
+This call merely requests a change.  The action may refuse to change
+its state or may change its state to something other than @value.
+See g_action_get_state_hint().
+If the @value GVariant is floating, it is consumed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new state</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="enabled" version="2.26" transfer-ownership="none">
+        <doc xml:whitespace="preserve">If @action is currently enabled.
+If the action is disabled then calls to g_action_activate() and
+g_action_set_state() have no effect.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="name" version="2.26" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The name of the action.  This is mostly meaningful for identifying
+the action once it has been added to a #GActionGroup.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="parameter-type"
+                version="2.26"
+                introspectable="0"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The type of the parameter that must be given when activating the
+action.</doc>
+        <type/>
+      </property>
+      <property name="state"
+                version="2.26"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The state of the action, or %NULL if the action is stateless.</doc>
+        <type name="GLib.Variant"/>
+      </property>
+      <property name="state-type"
+                version="2.26"
+                introspectable="0"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GVariantType of the state that the action has, or %NULL if the
+action is stateless.</doc>
+        <type/>
+      </property>
+    </interface>
+    <interface name="ActionGroup"
+               c:symbol-prefix="action_group"
+               c:type="GActionGroup"
+               glib:type-name="GActionGroup"
+               glib:get-type="g_action_group_get_type"
+               glib:type-struct="ActionGroupInterface">
+      <virtual-method name="activate" invoker="activate" version="2.26">
+        <doc xml:whitespace="preserve">Activate the named action within @action_group.
+If the action is expecting a parameter, then the correct type of
+parameter must be given as @parameter.  If the action is expecting no
+parameters then @parameter must be %NULL.  See
+g_action_group_get_parameter_type().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action to activate</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="parameter" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">parameters to the activation</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_enabled" invoker="get_enabled" version="2.26">
+        <doc xml:whitespace="preserve">Checks if the named action within @action_group is currently enabled.
+An action must be enabled in order to be activated or in order to
+have its state changed from outside callers.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether or not the action is currently enabled</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action to query</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_parameter_type"
+                      invoker="get_parameter_type"
+                      version="2.26">
+        <doc xml:whitespace="preserve">Queries the type of the parameter that must be given when activating
+the named action within @action_group.
+When activating the action using g_action_group_activate(), the
+#GVariant given to that function must be of the type returned by this
+function.
+In the case that this function returns %NULL, you must not give any
+#GVariant, but %NULL instead.
+The parameter type of a particular action will never change but it is
+possible for an action to be removed and for a new action to be added
+with the same name but a different parameter type.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the parameter type</doc>
+          <type name="GLib.VariantType" c:type="GVariantType*"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action to query</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_state" invoker="get_state" version="2.26">
+        <doc xml:whitespace="preserve">Queries the current state of the named action within @action_group.
+If the action is not stateful then %NULL will be returned.  If the
+action is stateful then the type of the return value is the type
+given by g_action_group_get_state_type().
+The return value (if non-%NULL) should be freed with
+g_variant_unref() when it is no longer required.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the current state of the action</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action to query</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_state_hint"
+                      invoker="get_state_hint"
+                      version="2.26">
+        <doc xml:whitespace="preserve">Requests a hint about the valid range of values for the state of the
+named action within @action_group.
+If %NULL is returned it either means that the action is not stateful
+or that there is no hint about the valid range of values for the
+state of the action.
+If a #GVariant array is returned then each item in the array is a
+returned then the tuple specifies the inclusive lower and upper bound
+of valid values for the state.
+In any case, the information is merely a hint.  It may be possible to
+have a state value outside of the hinted range and setting a value
+within the range may fail.
+The return value (if non-%NULL) should be freed with
+g_variant_unref() when it is no longer required.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the state range hint</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action to query</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_state_type"
+                      invoker="get_state_type"
+                      version="2.26"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Queries the type of the state of the named action within
+If the action is stateful then this function returns the
+#GVariantType of the state.  All calls to g_action_group_set_state()
+must give a #GVariant of this type and g_action_group_get_state()
+will return a #GVariant of the same type.
+If the action is not stateful then this function will return %NULL.
+In that case, g_action_group_get_state() will return %NULL and you
+must not call g_action_group_set_state().
+The state type of a particular action will never change but it is
+possible for an action to be removed and for a new action to be added
+with the same name but a different state type.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the state type, if the action is stateful</doc>
+          <type name="GLib.VariantType" c:type="GVariantType*"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action to query</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="has_action" invoker="has_action" version="2.26">
+        <doc xml:whitespace="preserve">Checks if the named action exists within @action_group.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the named action exists</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action to check for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="list_actions"
+                      invoker="list_actions"
+                      version="2.26">
+        <doc xml:whitespace="preserve">Lists the actions contained within @action_group.
+The caller is responsible for freeing the list with g_strfreev() when
+it is no longer required.
+actions in the groupb</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a %NULL-terminated array of the names of the</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_state" invoker="set_state" version="2.26">
+        <doc xml:whitespace="preserve">Request for the state of the named action within @action_group to be
+changed to @value.
+The action must be stateful and @value must be of the correct type.
+See g_action_group_get_state_type().
+This call merely requests a change.  The action may refuse to change
+its state or may change its state to something other than @value.
+See g_action_group_get_state_hint().
+If the @value GVariant is floating, it is consumed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action to request the change on</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new state</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="action_added"
+              c:identifier="g_action_group_action_added"
+              version="2.26">
+        <doc xml:whitespace="preserve">Emits the #GActionGroup::action-added signal on @action_group.
+This function should only be called by #GActionGroup implementations.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of an action in the group</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="action_enabled_changed"
+              c:identifier="g_action_group_action_enabled_changed"
+              version="2.26">
+        <doc xml:whitespace="preserve">Emits the #GActionGroup::action-enabled-changed signal on @action_group.
+This function should only be called by #GActionGroup implementations.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of an action in the group</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="enabled" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether or not the action is now enabled</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="action_removed"
+              c:identifier="g_action_group_action_removed"
+              version="2.26">
+        <doc xml:whitespace="preserve">Emits the #GActionGroup::action-removed signal on @action_group.
+This function should only be called by #GActionGroup implementations.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of an action in the group</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="action_state_changed"
+              c:identifier="g_action_group_action_state_changed"
+              version="2.26">
+        <doc xml:whitespace="preserve">Emits the #GActionGroup::action-state-changed signal on @action_group.
+This function should only be called by #GActionGroup implementations.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of an action in the group</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="state" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new state of the named action</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="activate"
+              c:identifier="g_action_group_activate"
+              version="2.26">
+        <doc xml:whitespace="preserve">Activate the named action within @action_group.
+If the action is expecting a parameter, then the correct type of
+parameter must be given as @parameter.  If the action is expecting no
+parameters then @parameter must be %NULL.  See
+g_action_group_get_parameter_type().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action to activate</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="parameter" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">parameters to the activation</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_enabled"
+              c:identifier="g_action_group_get_enabled"
+              version="2.26">
+        <doc xml:whitespace="preserve">Checks if the named action within @action_group is currently enabled.
+An action must be enabled in order to be activated or in order to
+have its state changed from outside callers.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether or not the action is currently enabled</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action to query</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_parameter_type"
+              c:identifier="g_action_group_get_parameter_type"
+              version="2.26">
+        <doc xml:whitespace="preserve">Queries the type of the parameter that must be given when activating
+the named action within @action_group.
+When activating the action using g_action_group_activate(), the
+#GVariant given to that function must be of the type returned by this
+function.
+In the case that this function returns %NULL, you must not give any
+#GVariant, but %NULL instead.
+The parameter type of a particular action will never change but it is
+possible for an action to be removed and for a new action to be added
+with the same name but a different parameter type.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the parameter type</doc>
+          <type name="GLib.VariantType" c:type="GVariantType*"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action to query</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_state"
+              c:identifier="g_action_group_get_state"
+              version="2.26">
+        <doc xml:whitespace="preserve">Queries the current state of the named action within @action_group.
+If the action is not stateful then %NULL will be returned.  If the
+action is stateful then the type of the return value is the type
+given by g_action_group_get_state_type().
+The return value (if non-%NULL) should be freed with
+g_variant_unref() when it is no longer required.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the current state of the action</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action to query</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_state_hint"
+              c:identifier="g_action_group_get_state_hint"
+              version="2.26">
+        <doc xml:whitespace="preserve">Requests a hint about the valid range of values for the state of the
+named action within @action_group.
+If %NULL is returned it either means that the action is not stateful
+or that there is no hint about the valid range of values for the
+state of the action.
+If a #GVariant array is returned then each item in the array is a
+returned then the tuple specifies the inclusive lower and upper bound
+of valid values for the state.
+In any case, the information is merely a hint.  It may be possible to
+have a state value outside of the hinted range and setting a value
+within the range may fail.
+The return value (if non-%NULL) should be freed with
+g_variant_unref() when it is no longer required.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the state range hint</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action to query</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_state_type"
+              c:identifier="g_action_group_get_state_type"
+              version="2.26"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Queries the type of the state of the named action within
+If the action is stateful then this function returns the
+#GVariantType of the state.  All calls to g_action_group_set_state()
+must give a #GVariant of this type and g_action_group_get_state()
+will return a #GVariant of the same type.
+If the action is not stateful then this function will return %NULL.
+In that case, g_action_group_get_state() will return %NULL and you
+must not call g_action_group_set_state().
+The state type of a particular action will never change but it is
+possible for an action to be removed and for a new action to be added
+with the same name but a different state type.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the state type, if the action is stateful</doc>
+          <type name="GLib.VariantType" c:type="GVariantType*"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action to query</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_action"
+              c:identifier="g_action_group_has_action"
+              version="2.26">
+        <doc xml:whitespace="preserve">Checks if the named action exists within @action_group.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the named action exists</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action to check for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_actions"
+              c:identifier="g_action_group_list_actions"
+              version="2.26">
+        <doc xml:whitespace="preserve">Lists the actions contained within @action_group.
+The caller is responsible for freeing the list with g_strfreev() when
+it is no longer required.
+actions in the groupb</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a %NULL-terminated array of the names of the</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="set_state"
+              c:identifier="g_action_group_set_state"
+              version="2.26">
+        <doc xml:whitespace="preserve">Request for the state of the named action within @action_group to be
+changed to @value.
+The action must be stateful and @value must be of the correct type.
+See g_action_group_get_state_type().
+This call merely requests a change.  The action may refuse to change
+its state or may change its state to something other than @value.
+See g_action_group_get_state_hint().
+If the @value GVariant is floating, it is consumed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action to request the change on</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new state</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="action-added" version="2.26">
+        <doc xml:whitespace="preserve">Signals that a new action was just added to the group.  This signal
+is emitted after the action has been added and is now visible.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action in @action_group</doc>
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="action-enabled-changed" version="2.26">
+        <doc xml:whitespace="preserve">Signals that the enabled status of the named action has changed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action in @action_group</doc>
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the action is enabled or not</doc>
+            <type name="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="action-removed" version="2.26">
+        <doc xml:whitespace="preserve">Signals that an action is just about to be removed from the group.
+This signal is emitted before the action is removed, so the action
+is still visible and can be queried from the signal handler.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action in @action_group</doc>
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="action-state-changed" version="2.26">
+        <doc xml:whitespace="preserve">Signals that the state of the named action has changed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action in @action_group</doc>
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new value of the state</doc>
+            <type name="GLib.Variant"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="ActionGroupInterface"
+            c:type="GActionGroupInterface"
+            glib:is-gtype-struct-for="ActionGroup"
+            version="2.26">
+      <doc xml:whitespace="preserve">The virtual function table for #GActionGroup.</doc>
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="has_action">
+        <callback name="has_action">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the named action exists</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="action_group" transfer-ownership="none">
+              <type name="ActionGroup" c:type="GActionGroup*"/>
+            </parameter>
+            <parameter name="action_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the action to check for</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="list_actions">
+        <callback name="list_actions">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a %NULL-terminated array of the names of the</doc>
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </return-value>
+          <parameters>
+            <parameter name="action_group" transfer-ownership="none">
+              <type name="ActionGroup" c:type="GActionGroup*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_enabled">
+        <callback name="get_enabled">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether or not the action is currently enabled</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="action_group" transfer-ownership="none">
+              <type name="ActionGroup" c:type="GActionGroup*"/>
+            </parameter>
+            <parameter name="action_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the action to query</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_parameter_type">
+        <callback name="get_parameter_type">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the parameter type</doc>
+            <type name="GLib.VariantType" c:type="GVariantType*"/>
+          </return-value>
+          <parameters>
+            <parameter name="action_group" transfer-ownership="none">
+              <type name="ActionGroup" c:type="GActionGroup*"/>
+            </parameter>
+            <parameter name="action_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the action to query</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_state_type" introspectable="0">
+        <callback name="get_state_type" introspectable="0">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the state type, if the action is stateful</doc>
+            <type name="GLib.VariantType" c:type="GVariantType*"/>
+          </return-value>
+          <parameters>
+            <parameter name="action_group" transfer-ownership="none">
+              <type name="ActionGroup" c:type="GActionGroup*"/>
+            </parameter>
+            <parameter name="action_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the action to query</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_state_hint">
+        <callback name="get_state_hint">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the state range hint</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </return-value>
+          <parameters>
+            <parameter name="action_group" transfer-ownership="none">
+              <type name="ActionGroup" c:type="GActionGroup*"/>
+            </parameter>
+            <parameter name="action_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the action to query</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_state">
+        <callback name="get_state">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the current state of the action</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </return-value>
+          <parameters>
+            <parameter name="action_group" transfer-ownership="none">
+              <type name="ActionGroup" c:type="GActionGroup*"/>
+            </parameter>
+            <parameter name="action_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the action to query</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_state">
+        <callback name="set_state">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="action_group" transfer-ownership="none">
+              <type name="ActionGroup" c:type="GActionGroup*"/>
+            </parameter>
+            <parameter name="action_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the action to request the change on</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the new state</doc>
+              <type name="GLib.Variant" c:type="GVariant*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate">
+        <callback name="activate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="action_group" transfer-ownership="none">
+              <type name="ActionGroup" c:type="GActionGroup*"/>
+            </parameter>
+            <parameter name="action_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the action to activate</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="parameter"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">parameters to the activation</doc>
+              <type name="GLib.Variant" c:type="GVariant*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="action_added">
+        <callback name="action_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="action_group" transfer-ownership="none">
+              <type name="ActionGroup" c:type="GActionGroup*"/>
+            </parameter>
+            <parameter name="action_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="action_removed">
+        <callback name="action_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="action_group" transfer-ownership="none">
+              <type name="ActionGroup" c:type="GActionGroup*"/>
+            </parameter>
+            <parameter name="action_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="action_enabled_changed">
+        <callback name="action_enabled_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="action_group" transfer-ownership="none">
+              <type name="ActionGroup" c:type="GActionGroup*"/>
+            </parameter>
+            <parameter name="action_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="enabled" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="action_state_changed">
+        <callback name="action_state_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="action_group" transfer-ownership="none">
+              <type name="ActionGroup" c:type="GActionGroup*"/>
+            </parameter>
+            <parameter name="action_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="GLib.Variant" c:type="GVariant*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="ActionInterface"
+            c:type="GActionInterface"
+            glib:is-gtype-struct-for="Action"
+            version="2.26">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_name">
+        <callback name="get_name">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="GAction*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_parameter_type">
+        <callback name="get_parameter_type">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the parameter type</doc>
+            <type name="GLib.VariantType" c:type="GVariantType*"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="GAction*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_state_type">
+        <callback name="get_state_type">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the state type, if the action is stateful</doc>
+            <type name="GLib.VariantType" c:type="GVariantType*"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="GAction*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_state_hint">
+        <callback name="get_state_hint">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the state range hint</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="GAction*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_enabled">
+        <callback name="get_enabled">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the action is enabled</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="GAction*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_state">
+        <callback name="get_state">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the current state of the action</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="GAction*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_state">
+        <callback name="set_state">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="GAction*"/>
+            </parameter>
+            <parameter name="state" transfer-ownership="none">
+              <type name="GLib.Variant" c:type="GVariant*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate">
+        <callback name="activate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="GAction*"/>
+            </parameter>
+            <parameter name="parameter"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">the parameter to the activation</doc>
+              <type name="GLib.Variant" c:type="GVariant*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <interface name="AppInfo"
+               c:symbol-prefix="app_info"
+               c:type="GAppInfo"
+               glib:type-name="GAppInfo"
+               glib:get-type="g_app_info_get_type"
+               glib:type-struct="AppInfoIface">
+      <doc xml:whitespace="preserve">Information about an installed application and methods to launch
+it (with file arguments).</doc>
+      <virtual-method name="add_supports_type"
+                      invoker="add_supports_type"
+                      throws="1">
+        <doc xml:whitespace="preserve">Adds a content type to the application information to indicate the
+application is capable of opening files with the given content type.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="content_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="can_delete" invoker="can_delete" version="2.20">
+        <doc xml:whitespace="preserve">Obtains the information whether the #GAppInfo can be deleted.
+See g_app_info_delete().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @appinfo can be deleted</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="can_remove_supports_type"
+                      invoker="can_remove_supports_type">
+        <doc xml:whitespace="preserve">Checks if a supported content type can be removed from an application.
+content types from a given @appinfo, %FALSE if not.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if it is possible to remove supported</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="do_delete" invoker="delete" version="2.20">
+        <doc xml:whitespace="preserve">Tries to delete a #GAppInfo.
+On some platforms, there may be a difference between user-defined
+#GAppInfo&lt;!-- --&gt;s which can be deleted, and system-wide ones which
+cannot. See g_app_info_can_delete().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @appinfo has been deleted</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="dup" invoker="dup">
+        <doc xml:whitespace="preserve">Creates a duplicate of a #GAppInfo.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a duplicate of @appinfo.</doc>
+          <type name="AppInfo" c:type="GAppInfo*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="equal" invoker="equal">
+        <doc xml:whitespace="preserve">Checks if two #GAppInfo&lt;!-- --&gt;s are equal.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @appinfo1 is equal to @appinfo2. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="appinfo2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the second #GAppInfo.</doc>
+            <type name="AppInfo" c:type="GAppInfo*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_commandline"
+                      invoker="get_commandline"
+                      version="2.20">
+        <doc xml:whitespace="preserve">Gets the commandline with which the application will be
+started.
+or %NULL if this information is not available</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the @appinfo's commandline,</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_description" invoker="get_description">
+        <doc xml:whitespace="preserve">Gets a human-readable description of an installed application.
+application @appinfo, or %NULL if none.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing a description of the</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_display_name"
+                      invoker="get_display_name"
+                      version="2.24">
+        <doc xml:whitespace="preserve">Gets the display name of the application. The display name is often more
+descriptive to the user than the name itself.
+no display name is available.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the display name of the application for @appinfo, or the name if</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_executable" invoker="get_executable">
+        <doc xml:whitespace="preserve">Gets the executable's name for the installed application.
+binaries name</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the @appinfo's application</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_icon" invoker="get_icon">
+        <doc xml:whitespace="preserve">Gets the icon for the application.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the default #GIcon for @appinfo.</doc>
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_id" invoker="get_id">
+        <doc xml:whitespace="preserve">Gets the ID of an application. An id is a string that
+identifies the application. The exact format of the id is
+platform dependent. For instance, on Unix this is the
+desktop file id from the xdg menu specification.
+Note that the returned ID may be %NULL, depending on how
+the @appinfo has been constructed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the application's ID.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_name" invoker="get_name">
+        <doc xml:whitespace="preserve">Gets the installed name of the application.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the application for @appinfo.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="launch" invoker="launch" throws="1">
+        <doc xml:whitespace="preserve">Launches the application. Passes @files to the launched application
+as arguments, using the optional @launch_context to get information
+about the details of the launcher (like what screen it is on).
+On error, @error will be set accordingly.
+To launch the application without arguments pass a %NULL @files list.
+Note that even if the launch is successful the application launched
+can fail to start if it runs into problems during startup. There is
+no way to detect this.
+Some URIs can be changed when passed through a GFile (for instance
+unsupported uris with strange formats like mailto:), so if you have
+a textual uri you want to pass in as argument, consider using
+g_app_info_launch_uris() instead.
+On UNIX, this function sets the &lt;envvar&gt;GIO_LAUNCHED_DESKTOP_FILE&lt;/envvar&gt;
+environment variable with the path of the launched desktop file and
+&lt;envvar&gt;GIO_LAUNCHED_DESKTOP_FILE_PID&lt;/envvar&gt; to the process
+id of the launched process. This can be used to ignore
+&lt;envvar&gt;GIO_LAUNCHED_DESKTOP_FILE&lt;/envvar&gt;, should it be inherited
+by further processes. The &lt;envvar&gt;DISPLAY&lt;/envvar&gt; and
+&lt;envvar&gt;DESKTOP_STARTUP_ID&lt;/envvar&gt; environment variables are also
+set, based on information provided in @launch_context.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on successful launch, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filenames" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+          <parameter name="launch_context"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GAppLaunchContext or %NULL</doc>
+            <type name="AppLaunchContext" c:type="GAppLaunchContext*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="launch_uris" invoker="launch_uris" throws="1">
+        <doc xml:whitespace="preserve">Launches the application. Passes @uris to the launched application
+as arguments, using the optional @launch_context to get information
+about the details of the launcher (like what screen it is on).
+On error, @error will be set accordingly.
+To lauch the application without arguments pass a %NULL @uris list.
+Note that even if the launch is successful the application launched
+can fail to start if it runs into problems during startup. There is
+no way to detect this.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on successful launch, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uris" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GList containing URIs to launch.</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="utf8"/>
+            </type>
+          </parameter>
+          <parameter name="launch_context"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GAppLaunchContext or %NULL</doc>
+            <type name="AppLaunchContext" c:type="GAppLaunchContext*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove_supports_type"
+                      invoker="remove_supports_type"
+                      throws="1">
+        <doc xml:whitespace="preserve">Removes a supported type from an application, if possible.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="content_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_as_default_for_extension"
+                      invoker="set_as_default_for_extension"
+                      throws="1">
+        <doc xml:whitespace="preserve">Sets the application as the default handler for the given file extension.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="extension" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing the file extension (without the dot).</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_as_default_for_type"
+                      invoker="set_as_default_for_type"
+                      throws="1">
+        <doc xml:whitespace="preserve">Sets the application as the default handler for a given type.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="content_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the content type.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="should_show" invoker="should_show">
+        <doc xml:whitespace="preserve">Checks if the application info should be shown in menus that
+list available applications.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @appinfo should be shown, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="supports_files" invoker="supports_files">
+        <doc xml:whitespace="preserve">Checks if the application accepts files as arguments.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @appinfo supports files.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="supports_uris" invoker="supports_uris">
+        <doc xml:whitespace="preserve">Checks if the application supports reading files and directories from URIs.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @appinfo supports URIs.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <method name="add_supports_type"
+              c:identifier="g_app_info_add_supports_type"
+              throws="1">
+        <doc xml:whitespace="preserve">Adds a content type to the application information to indicate the
+application is capable of opening files with the given content type.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="content_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_delete"
+              c:identifier="g_app_info_can_delete"
+              version="2.20">
+        <doc xml:whitespace="preserve">Obtains the information whether the #GAppInfo can be deleted.
+See g_app_info_delete().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @appinfo can be deleted</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="can_remove_supports_type"
+              c:identifier="g_app_info_can_remove_supports_type">
+        <doc xml:whitespace="preserve">Checks if a supported content type can be removed from an application.
+content types from a given @appinfo, %FALSE if not.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if it is possible to remove supported</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="delete" c:identifier="g_app_info_delete" version="2.20">
+        <doc xml:whitespace="preserve">Tries to delete a #GAppInfo.
+On some platforms, there may be a difference between user-defined
+#GAppInfo&lt;!-- --&gt;s which can be deleted, and system-wide ones which
+cannot. See g_app_info_can_delete().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @appinfo has been deleted</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="dup" c:identifier="g_app_info_dup">
+        <doc xml:whitespace="preserve">Creates a duplicate of a #GAppInfo.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a duplicate of @appinfo.</doc>
+          <type name="AppInfo" c:type="GAppInfo*"/>
+        </return-value>
+      </method>
+      <method name="equal" c:identifier="g_app_info_equal">
+        <doc xml:whitespace="preserve">Checks if two #GAppInfo&lt;!-- --&gt;s are equal.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @appinfo1 is equal to @appinfo2. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="appinfo2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the second #GAppInfo.</doc>
+            <type name="AppInfo" c:type="GAppInfo*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_commandline"
+              c:identifier="g_app_info_get_commandline"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets the commandline with which the application will be
+started.
+or %NULL if this information is not available</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the @appinfo's commandline,</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_description" c:identifier="g_app_info_get_description">
+        <doc xml:whitespace="preserve">Gets a human-readable description of an installed application.
+application @appinfo, or %NULL if none.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing a description of the</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_display_name"
+              c:identifier="g_app_info_get_display_name"
+              version="2.24">
+        <doc xml:whitespace="preserve">Gets the display name of the application. The display name is often more
+descriptive to the user than the name itself.
+no display name is available.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the display name of the application for @appinfo, or the name if</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_executable" c:identifier="g_app_info_get_executable">
+        <doc xml:whitespace="preserve">Gets the executable's name for the installed application.
+binaries name</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the @appinfo's application</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_icon" c:identifier="g_app_info_get_icon">
+        <doc xml:whitespace="preserve">Gets the icon for the application.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the default #GIcon for @appinfo.</doc>
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </method>
+      <method name="get_id" c:identifier="g_app_info_get_id">
+        <doc xml:whitespace="preserve">Gets the ID of an application. An id is a string that
+identifies the application. The exact format of the id is
+platform dependent. For instance, on Unix this is the
+desktop file id from the xdg menu specification.
+Note that the returned ID may be %NULL, depending on how
+the @appinfo has been constructed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the application's ID.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_name" c:identifier="g_app_info_get_name">
+        <doc xml:whitespace="preserve">Gets the installed name of the application.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the application for @appinfo.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="launch" c:identifier="g_app_info_launch" throws="1">
+        <doc xml:whitespace="preserve">Launches the application. Passes @files to the launched application
+as arguments, using the optional @launch_context to get information
+about the details of the launcher (like what screen it is on).
+On error, @error will be set accordingly.
+To launch the application without arguments pass a %NULL @files list.
+Note that even if the launch is successful the application launched
+can fail to start if it runs into problems during startup. There is
+no way to detect this.
+Some URIs can be changed when passed through a GFile (for instance
+unsupported uris with strange formats like mailto:), so if you have
+a textual uri you want to pass in as argument, consider using
+g_app_info_launch_uris() instead.
+On UNIX, this function sets the &lt;envvar&gt;GIO_LAUNCHED_DESKTOP_FILE&lt;/envvar&gt;
+environment variable with the path of the launched desktop file and
+&lt;envvar&gt;GIO_LAUNCHED_DESKTOP_FILE_PID&lt;/envvar&gt; to the process
+id of the launched process. This can be used to ignore
+&lt;envvar&gt;GIO_LAUNCHED_DESKTOP_FILE&lt;/envvar&gt;, should it be inherited
+by further processes. The &lt;envvar&gt;DISPLAY&lt;/envvar&gt; and
+&lt;envvar&gt;DESKTOP_STARTUP_ID&lt;/envvar&gt; environment variables are also
+set, based on information provided in @launch_context.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on successful launch, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="files" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GList of #GFile objects</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="File"/>
+            </type>
+          </parameter>
+          <parameter name="launch_context"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GAppLaunchContext or %NULL</doc>
+            <type name="AppLaunchContext" c:type="GAppLaunchContext*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="launch_uris"
+              c:identifier="g_app_info_launch_uris"
+              throws="1">
+        <doc xml:whitespace="preserve">Launches the application. Passes @uris to the launched application
+as arguments, using the optional @launch_context to get information
+about the details of the launcher (like what screen it is on).
+On error, @error will be set accordingly.
+To lauch the application without arguments pass a %NULL @uris list.
+Note that even if the launch is successful the application launched
+can fail to start if it runs into problems during startup. There is
+no way to detect this.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on successful launch, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uris" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GList containing URIs to launch.</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="utf8"/>
+            </type>
+          </parameter>
+          <parameter name="launch_context"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GAppLaunchContext or %NULL</doc>
+            <type name="AppLaunchContext" c:type="GAppLaunchContext*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_supports_type"
+              c:identifier="g_app_info_remove_supports_type"
+              throws="1">
+        <doc xml:whitespace="preserve">Removes a supported type from an application, if possible.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="content_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_as_default_for_extension"
+              c:identifier="g_app_info_set_as_default_for_extension"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets the application as the default handler for the given file extension.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="extension" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing the file extension (without the dot).</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_as_default_for_type"
+              c:identifier="g_app_info_set_as_default_for_type"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets the application as the default handler for a given type.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="content_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the content type.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="should_show" c:identifier="g_app_info_should_show">
+        <doc xml:whitespace="preserve">Checks if the application info should be shown in menus that
+list available applications.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @appinfo should be shown, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="supports_files" c:identifier="g_app_info_supports_files">
+        <doc xml:whitespace="preserve">Checks if the application accepts files as arguments.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @appinfo supports files.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="supports_uris" c:identifier="g_app_info_supports_uris">
+        <doc xml:whitespace="preserve">Checks if the application supports reading files and directories from URIs.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @appinfo supports URIs.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </interface>
+    <bitfield name="AppInfoCreateFlags"
+              glib:type-name="GAppInfoCreateFlags"
+              glib:get-type="g_app_info_create_flags_get_type"
+              c:type="GAppInfoCreateFlags">
+      <doc xml:whitespace="preserve">Flags used when creating a #GAppInfo.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="G_APP_INFO_CREATE_NONE"
+              glib:nick="none"/>
+      <member name="needs_terminal"
+              value="1"
+              c:identifier="G_APP_INFO_CREATE_NEEDS_TERMINAL"
+              glib:nick="needs-terminal"/>
+      <member name="supports_uris"
+              value="2"
+              c:identifier="G_APP_INFO_CREATE_SUPPORTS_URIS"
+              glib:nick="supports-uris"/>
+      <member name="supports_startup_notification"
+              value="4"
+              c:identifier="G_APP_INFO_CREATE_SUPPORTS_STARTUP_NOTIFICATION"
+              glib:nick="supports-startup-notification"/>
+    </bitfield>
+    <record name="AppInfoIface"
+            c:type="GAppInfoIface"
+            glib:is-gtype-struct-for="AppInfo">
+      <doc xml:whitespace="preserve">Application Information interface, for operating system portability.</doc>
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="dup">
+        <callback name="dup">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a duplicate of @appinfo.</doc>
+            <type name="AppInfo" c:type="GAppInfo*"/>
+          </return-value>
+          <parameters>
+            <parameter name="appinfo" transfer-ownership="none">
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="equal">
+        <callback name="equal">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if @appinfo1 is equal to @appinfo2. %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="appinfo1" transfer-ownership="none">
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+            <parameter name="appinfo2" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the second #GAppInfo.</doc>
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_id">
+        <callback name="get_id">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing the application's ID.</doc>
+            <type name="utf8" c:type="char*"/>
+          </return-value>
+          <parameters>
+            <parameter name="appinfo" transfer-ownership="none">
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_name">
+        <callback name="get_name">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the application for @appinfo.</doc>
+            <type name="utf8" c:type="char*"/>
+          </return-value>
+          <parameters>
+            <parameter name="appinfo" transfer-ownership="none">
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_description">
+        <callback name="get_description">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing a description of the</doc>
+            <type name="utf8" c:type="char*"/>
+          </return-value>
+          <parameters>
+            <parameter name="appinfo" transfer-ownership="none">
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_executable">
+        <callback name="get_executable">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing the @appinfo's application</doc>
+            <type name="utf8" c:type="char*"/>
+          </return-value>
+          <parameters>
+            <parameter name="appinfo" transfer-ownership="none">
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_icon">
+        <callback name="get_icon">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the default #GIcon for @appinfo.</doc>
+            <type name="Icon" c:type="GIcon*"/>
+          </return-value>
+          <parameters>
+            <parameter name="appinfo" transfer-ownership="none">
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="launch">
+        <callback name="launch" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE on successful launch, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="appinfo" transfer-ownership="none">
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+            <parameter name="filenames" transfer-ownership="none">
+              <type name="GLib.List" c:type="GList*">
+                <type name="gpointer" c:type="gpointer"/>
+              </type>
+            </parameter>
+            <parameter name="launch_context"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">a #GAppLaunchContext or %NULL</doc>
+              <type name="AppLaunchContext" c:type="GAppLaunchContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="supports_uris">
+        <callback name="supports_uris">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @appinfo supports URIs.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="appinfo" transfer-ownership="none">
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="supports_files">
+        <callback name="supports_files">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @appinfo supports files.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="appinfo" transfer-ownership="none">
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="launch_uris">
+        <callback name="launch_uris" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE on successful launch, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="appinfo" transfer-ownership="none">
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+            <parameter name="uris" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GList containing URIs to launch.</doc>
+              <type name="GLib.List" c:type="GList*">
+                <type name="utf8"/>
+              </type>
+            </parameter>
+            <parameter name="launch_context"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">a #GAppLaunchContext or %NULL</doc>
+              <type name="AppLaunchContext" c:type="GAppLaunchContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="should_show">
+        <callback name="should_show">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @appinfo should be shown, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="appinfo" transfer-ownership="none">
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_as_default_for_type">
+        <callback name="set_as_default_for_type" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="appinfo" transfer-ownership="none">
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+            <parameter name="content_type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the content type.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_as_default_for_extension">
+        <callback name="set_as_default_for_extension" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="appinfo" transfer-ownership="none">
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+            <parameter name="extension" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a string containing the file extension (without the dot).</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_supports_type">
+        <callback name="add_supports_type" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="appinfo" transfer-ownership="none">
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+            <parameter name="content_type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a string.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_remove_supports_type">
+        <callback name="can_remove_supports_type">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if it is possible to remove supported</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="appinfo" transfer-ownership="none">
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_supports_type">
+        <callback name="remove_supports_type" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="appinfo" transfer-ownership="none">
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+            <parameter name="content_type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a string.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_delete">
+        <callback name="can_delete">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if @appinfo can be deleted</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="appinfo" transfer-ownership="none">
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="do_delete">
+        <callback name="do_delete">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if @appinfo has been deleted</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="appinfo" transfer-ownership="none">
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_commandline">
+        <callback name="get_commandline">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing the @appinfo's commandline,</doc>
+            <type name="utf8" c:type="char*"/>
+          </return-value>
+          <parameters>
+            <parameter name="appinfo" transfer-ownership="none">
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_display_name">
+        <callback name="get_display_name">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the display name of the application for @appinfo, or the name if</doc>
+            <type name="utf8" c:type="char*"/>
+          </return-value>
+          <parameters>
+            <parameter name="appinfo" transfer-ownership="none">
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="AppLaunchContext"
+           c:symbol-prefix="app_launch_context"
+           c:type="GAppLaunchContext"
+           parent="GObject.Object"
+           glib:type-name="GAppLaunchContext"
+           glib:get-type="g_app_launch_context_get_type"
+           glib:type-struct="AppLaunchContextClass">
+      <doc xml:whitespace="preserve">Integrating the launch with the launching application. This is used to
+handle for instance startup notification and launching the new application
+on the same screen as the launching window.</doc>
+      <constructor name="new" c:identifier="g_app_launch_context_new">
+        <doc xml:whitespace="preserve">Creates a new application launch context. This is not normally used,
+instead you instantiate a subclass of this, such as #GdkAppLaunchContext.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GAppLaunchContext.</doc>
+          <type name="AppLaunchContext" c:type="GAppLaunchContext*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="get_display" invoker="get_display">
+        <doc xml:whitespace="preserve">Gets the display string for the @context. This is used to ensure new
+applications are started on the same display as the launching
+application, by setting the &lt;envvar&gt;DISPLAY&lt;/envvar&gt; environment variable.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a display string for the display.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAppInfo</doc>
+            <type name="AppInfo" c:type="GAppInfo*"/>
+          </parameter>
+          <parameter name="files" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GList of #GFile objects</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="File"/>
+            </type>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_startup_notify_id"
+                      invoker="get_startup_notify_id">
+        <doc xml:whitespace="preserve">Initiates startup notification for the application and returns the
+&lt;envvar&gt;DESKTOP_STARTUP_ID&lt;/envvar&gt; for the launched operation,
+if supported.
+Startup notification IDs are defined in the &lt;ulink
+url="http://standards.freedesktop.org/startup-notification-spec/startup-notification-latest.txt"&gt;
+FreeDesktop.Org Startup Notifications standard&lt;/ulink&gt;.
+not supported.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a startup notification ID for the application, or %NULL if</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAppInfo</doc>
+            <type name="AppInfo" c:type="GAppInfo*"/>
+          </parameter>
+          <parameter name="files" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GList of of #GFile objects</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="File"/>
+            </type>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="launch_failed" invoker="launch_failed">
+        <doc xml:whitespace="preserve">Called when an application has failed to launch, so that it can cancel
+the application startup notification started in g_app_launch_context_get_startup_notify_id().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="startup_notify_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the startup notification id that was returned by g_app_launch_context_get_startup_notify_id().</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_display"
+              c:identifier="g_app_launch_context_get_display">
+        <doc xml:whitespace="preserve">Gets the display string for the @context. This is used to ensure new
+applications are started on the same display as the launching
+application, by setting the &lt;envvar&gt;DISPLAY&lt;/envvar&gt; environment variable.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a display string for the display.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAppInfo</doc>
+            <type name="AppInfo" c:type="GAppInfo*"/>
+          </parameter>
+          <parameter name="files" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GList of #GFile objects</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="File"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_startup_notify_id"
+              c:identifier="g_app_launch_context_get_startup_notify_id">
+        <doc xml:whitespace="preserve">Initiates startup notification for the application and returns the
+&lt;envvar&gt;DESKTOP_STARTUP_ID&lt;/envvar&gt; for the launched operation,
+if supported.
+Startup notification IDs are defined in the &lt;ulink
+url="http://standards.freedesktop.org/startup-notification-spec/startup-notification-latest.txt"&gt;
+FreeDesktop.Org Startup Notifications standard&lt;/ulink&gt;.
+not supported.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a startup notification ID for the application, or %NULL if</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAppInfo</doc>
+            <type name="AppInfo" c:type="GAppInfo*"/>
+          </parameter>
+          <parameter name="files" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GList of of #GFile objects</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="File"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="launch_failed"
+              c:identifier="g_app_launch_context_launch_failed">
+        <doc xml:whitespace="preserve">Called when an application has failed to launch, so that it can cancel
+the application startup notification started in g_app_launch_context_get_startup_notify_id().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="startup_notify_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the startup notification id that was returned by g_app_launch_context_get_startup_notify_id().</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="AppLaunchContextPrivate"
+              c:type="GAppLaunchContextPrivate*"/>
+      </field>
+    </class>
+    <record name="AppLaunchContextClass"
+            c:type="GAppLaunchContextClass"
+            glib:is-gtype-struct-for="AppLaunchContext">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_display">
+        <callback name="get_display">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a display string for the display.</doc>
+            <type name="utf8" c:type="char*"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="AppLaunchContext" c:type="GAppLaunchContext*"/>
+            </parameter>
+            <parameter name="info" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAppInfo</doc>
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+            <parameter name="files" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GList of #GFile objects</doc>
+              <type name="GLib.List" c:type="GList*">
+                <type name="File"/>
+              </type>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_startup_notify_id">
+        <callback name="get_startup_notify_id">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a startup notification ID for the application, or %NULL if</doc>
+            <type name="utf8" c:type="char*"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="AppLaunchContext" c:type="GAppLaunchContext*"/>
+            </parameter>
+            <parameter name="info" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAppInfo</doc>
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+            <parameter name="files" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GList of of #GFile objects</doc>
+              <type name="GLib.List" c:type="GList*">
+                <type name="File"/>
+              </type>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="launch_failed">
+        <callback name="launch_failed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="AppLaunchContext" c:type="GAppLaunchContext*"/>
+            </parameter>
+            <parameter name="startup_notify_id" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the startup notification id that was returned by g_app_launch_context_get_startup_notify_id().</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="AppLaunchContextPrivate"
+            c:type="GAppLaunchContextPrivate"
+            disguised="1">
+    </record>
+    <class name="Application"
+           c:symbol-prefix="application"
+           c:type="GApplication"
+           version="2.26"
+           parent="GObject.Object"
+           glib:type-name="GApplication"
+           glib:get-type="g_application_get_type"
+           glib:type-struct="ApplicationClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;GApplication&lt;/structname&gt; structure contains private
+data and should only be accessed using the provided API</doc>
+      <implements name="Initable"/>
+      <constructor name="new" c:identifier="g_application_new" version="2.26">
+        <doc xml:whitespace="preserve">Create a new #GApplication.  This uses a platform-specific
+mechanism to ensure the current process is the unique owner of the
+application (as defined by the @appid). If successful, the
+#GApplication:is-remote property will be %FALSE, and it is safe to
+continue creating other resources such as graphics windows.
+If the given @appid is already running in another process, the the
+GApplication::activate_with_data signal will be emitted in the
+remote process, with the data from @argv and other
+platform-specific data available.  Subsequently the
+#GApplication:default-quit property will be evaluated.  If it's
+%TRUE, then the current process will terminate.  If %FALSE, then
+the application remains in the #GApplication:is-remote state, and
+you can e.g. call g_application_invoke_action(). Note that proxy
+instances should not call g_application_add_action().
+This function may do synchronous I/O to obtain unique ownership
+of the application id, and will block the calling thread in this
+case.
+If the environment does not support the basic functionality of
+#GApplication, this function will invoke g_error(), which by
+default is a fatal operation.  This may arise for example on
+UNIX systems using D-Bus when the session bus is not available.
+As a convenience, this function is defined to call g_type_init() as
+its very first action.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">An application instance</doc>
+          <type name="Application" c:type="GApplication*"/>
+        </return-value>
+        <parameters>
+          <parameter name="appid" transfer-ownership="none">
+            <doc xml:whitespace="preserve">System-dependent application identifier</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="argc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Number of arguments in @argv</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="argv" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">Argument vector, usually from the &lt;parameter&gt;argv&lt;/parameter&gt; parameter of main()</doc>
+            <array length="1" c:type="char**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="try_new"
+                   c:identifier="g_application_try_new"
+                   version="2.26"
+                   throws="1">
+        <doc xml:whitespace="preserve">This function is similar to g_application_new(), but allows for
+more graceful fallback if the environment doesn't support the
+basic #GApplication functionality.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">An application instance</doc>
+          <type name="Application" c:type="GApplication*"/>
+        </return-value>
+        <parameters>
+          <parameter name="appid" transfer-ownership="none">
+            <doc xml:whitespace="preserve">System-dependent application identifier</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="argc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Number of arguments in @argv</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="argv" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">Argument vector, usually from the &lt;parameter&gt;argv&lt;/parameter&gt; parameter of main()</doc>
+            <array length="1" c:type="char**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="unregistered_try_new"
+                   c:identifier="g_application_unregistered_try_new"
+                   version="2.26"
+                   throws="1">
+        <doc xml:whitespace="preserve">This function is similar to g_application_try_new(), but also
+sets the GApplication:register property to %FALSE.  You can later
+call g_application_register() to complete initialization.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">An application instance</doc>
+          <type name="Application" c:type="GApplication*"/>
+        </return-value>
+        <parameters>
+          <parameter name="appid" transfer-ownership="none">
+            <doc xml:whitespace="preserve">System-dependent application identifier</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="argc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Number of arguments in @argv</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="argv" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">Argument vector, usually from the &lt;parameter&gt;argv&lt;/parameter&gt; parameter of main()</doc>
+            <array length="1" c:type="char**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="get_instance"
+                c:identifier="g_application_get_instance"
+                version="2.26">
+        <doc xml:whitespace="preserve">In the normal case where there is exactly one #GApplication instance
+in this process, return that instance.  If there are multiple, the
+first one created will be returned.  Otherwise, return %NULL.
+or %NULL if none is set</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The primary instance of #GApplication,</doc>
+          <type name="Application" c:type="GApplication*"/>
+        </return-value>
+      </function>
+      <virtual-method name="run" invoker="run" version="2.26">
+        <doc xml:whitespace="preserve">Starts the application.
+The default implementation of this virtual function will simply run
+a main loop.
+It is an error to call this function if @application is a proxy for
+a remote application.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="add_action"
+              c:identifier="g_application_add_action"
+              version="2.26">
+        <doc xml:whitespace="preserve">Adds an action @name to the list of exported actions of @application.
+It is an error to call this function if @application is a proxy for
+a remote application.
+You can invoke an action using g_application_invoke_action().
+The newly added action is enabled by default; you can call
+g_application_set_action_enabled() to disable it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action description; can be a translatable string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_action_description"
+              c:identifier="g_application_get_action_description"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the description of the action @name.
+It is an error to call this function if @application is a proxy for
+a remote application.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Description for the given action named @name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Action name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_action_enabled"
+              c:identifier="g_application_get_action_enabled"
+              version="2.26">
+        <doc xml:whitespace="preserve">Retrieves whether the action @name is enabled or not.
+See g_application_set_action_enabled().
+It is an error to call this function if @application is a proxy for
+a remote application.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the action was enabled, and %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_id" c:identifier="g_application_get_id" version="2.26">
+        <doc xml:whitespace="preserve">Retrieves the platform-specific identifier for the #GApplication.
+is owned by the #GApplication instance and it should never be
+modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The platform-specific identifier. The returned string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="invoke_action"
+              c:identifier="g_application_invoke_action"
+              version="2.26">
+        <doc xml:whitespace="preserve">Invokes the action @name of the passed #GApplication.
+This function has different behavior depending on whether @application
+is acting as a proxy for another process.  In the normal case where
+the current process is hosting the application, and the specified
+action exists and is enabled, the #GApplication::action signal will
+be emitted.
+If @application is a proxy, then the specified action will be invoked
+in the remote process. It is not necessary to call
+g_application_add_action() in the current process in order to invoke
+one remotely.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action to invoke</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="platform_data"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">platform-specific event data</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_remote" c:identifier="g_application_is_remote">
+        <doc xml:whitespace="preserve">Returns whether the object represents a proxy for a remote application.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if this object represents a proxy for a remote application.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="list_actions"
+              c:identifier="g_application_list_actions"
+              version="2.26">
+        <doc xml:whitespace="preserve">Retrieves the list of action names currently exported by @application.
+It is an error to call this function if @application is a proxy for
+a remote application.
+of strings containing action names; use g_strfreev() to free the
+resources used by the returned array</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocation, %NULL-terminated array</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="quit_with_data"
+              c:identifier="g_application_quit_with_data"
+              version="2.26">
+        <doc xml:whitespace="preserve">Request that the application quits.
+This function has different behavior depending on whether @application
+is acting as a proxy for another process.  In the normal case where
+the current process is hosting the application, the default
+implementation will quit the main loop created by g_application_run().
+If @application is a proxy, then the remote process will be asked
+to quit.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the application accepted the request, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="platform_data"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">platform-specific data</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="register" c:identifier="g_application_register">
+        <doc xml:whitespace="preserve">By default, #GApplication ensures process uniqueness when
+initialized, but this behavior is controlled by the
+GApplication:register property.  If it was given as %FALSE at
+construction time, this function allows you to later attempt
+to ensure uniqueness.  Note that the GApplication:default-quit
+property no longer applies at this point; if this function returns
+%FALSE, platform activation will occur, but the current process
+will not be terminated.
+It is an error to call this function more than once.  It is
+also an error to call this function if the GApplication:register
+property was %TRUE at construction time.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if registration was successful</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="remove_action"
+              c:identifier="g_application_remove_action"
+              version="2.26">
+        <doc xml:whitespace="preserve">Removes the action @name from the list of exported actions of @application.
+It is an error to call this function if @application is a proxy for
+a remote application.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action to remove</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="run" c:identifier="g_application_run" version="2.26">
+        <doc xml:whitespace="preserve">Starts the application.
+The default implementation of this virtual function will simply run
+a main loop.
+It is an error to call this function if @application is a proxy for
+a remote application.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_action_enabled"
+              c:identifier="g_application_set_action_enabled"
+              version="2.26">
+        <doc xml:whitespace="preserve">Sets whether the action @name inside @application should be enabled
+or disabled.
+It is an error to call this function if @application is a proxy for
+a remote application.
+Invoking a disabled action will not result in the #GApplication::action
+signal being emitted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the application</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="enabled" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to enable or disable the action @name</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="application-id"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The unique identifier for this application.  See the documentation for
+#GApplication for more information about this property.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="argv"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The argument vector given to this application.  It must be a #GVariant
+with a type signature "aay".</doc>
+        <type name="GLib.Variant"/>
+      </property>
+      <property name="default-quit"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">By default, if the GApplication:register property is %TRUE, and a
+different process is running this application, the process will
+be exited.  Set this property to %FALSE to allow custom
+interaction with the remote process.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="is-remote" transfer-ownership="none">
+        <doc xml:whitespace="preserve">This property is %TRUE if this application instance represents a proxy
+to the instance of this application in another process.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="platform-data"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Platform-specific data retrieved from the operating system
+environment.  It must be a #GVariant with type signature "a{sv}".</doc>
+        <type name="GLib.Variant"/>
+      </property>
+      <property name="register"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If this property is %FALSE, the application construction will not attempt
+to ensure process uniqueness, and the application is guaranteed to be in the
+remote state.  See GApplication:is-remote.</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ApplicationPrivate" c:type="GApplicationPrivate*"/>
+      </field>
+      <glib:signal name="action-with-data">
+        <doc xml:whitespace="preserve">This signal is emitted when an action is activated. The action name
+is passed as the first argument, but also as signal detail, so it
+is possible to connect to this signal for individual actions.
+The signal is never emitted for disabled actions.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The name of the activated action</doc>
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Platform-specific data, or %NULL</doc>
+            <type name="GLib.Variant"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="prepare-activation">
+        <doc xml:whitespace="preserve">This signal is emitted when a non-primary process for a given
+application is invoked while your application is running; for
+example, when a file browser launches your program to open a
+file.  The raw operating system arguments are passed in the
+stored in @platform_data.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GVariant with the signature "aay"</doc>
+            <type name="GLib.Variant"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GVariant with the signature "a{sv}", or %NULL</doc>
+            <type name="GLib.Variant"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="quit-with-data">
+        <doc xml:whitespace="preserve">This signal is emitted when the Quit action is invoked on the
+application.
+The default handler for this signal exits the mainloop of the
+application.
+signal emission</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the signal has been handled, %FALSE to continue</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Platform-specific data, or %NULL</doc>
+            <type name="GLib.Variant"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ApplicationClass"
+            c:type="GApplicationClass"
+            glib:is-gtype-struct-for="Application"
+            version="2.26">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;GApplicationClass&lt;/structname&gt; structure contains
+private data only</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="action_with_data">
+        <callback name="action_with_data">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="application" transfer-ownership="none">
+              <type name="Application" c:type="GApplication*"/>
+            </parameter>
+            <parameter name="action_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="platform_data" transfer-ownership="none">
+              <type name="GLib.Variant" c:type="GVariant*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="quit_with_data">
+        <callback name="quit_with_data">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="application" transfer-ownership="none">
+              <type name="Application" c:type="GApplication*"/>
+            </parameter>
+            <parameter name="platform_data" transfer-ownership="none">
+              <type name="GLib.Variant" c:type="GVariant*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="prepare_activation">
+        <callback name="prepare_activation">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="application" transfer-ownership="none">
+              <type name="Application" c:type="GApplication*"/>
+            </parameter>
+            <parameter name="arguments" transfer-ownership="none">
+              <type name="GLib.Variant" c:type="GVariant*"/>
+            </parameter>
+            <parameter name="platform_data" transfer-ownership="none">
+              <type name="GLib.Variant" c:type="GVariant*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="run">
+        <callback name="run">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="application" transfer-ownership="none">
+              <type name="Application" c:type="GApplication*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved6" introspectable="0">
+        <callback name="_g_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ApplicationPrivate"
+            c:type="GApplicationPrivate"
+            disguised="1">
+    </record>
+    <bitfield name="AskPasswordFlags"
+              glib:type-name="GAskPasswordFlags"
+              glib:get-type="g_ask_password_flags_get_type"
+              c:type="GAskPasswordFlags">
+      <doc xml:whitespace="preserve">#GAskPasswordFlags are used to request specific information from the
+user, or to notify the user of their choices in an authentication
+situation.</doc>
+      <member name="need_password"
+              value="1"
+              c:identifier="G_ASK_PASSWORD_NEED_PASSWORD"
+              glib:nick="need-password"/>
+      <member name="need_username"
+              value="2"
+              c:identifier="G_ASK_PASSWORD_NEED_USERNAME"
+              glib:nick="need-username"/>
+      <member name="need_domain"
+              value="4"
+              c:identifier="G_ASK_PASSWORD_NEED_DOMAIN"
+              glib:nick="need-domain"/>
+      <member name="saving_supported"
+              value="8"
+              c:identifier="G_ASK_PASSWORD_SAVING_SUPPORTED"
+              glib:nick="saving-supported"/>
+      <member name="anonymous_supported"
+              value="16"
+              c:identifier="G_ASK_PASSWORD_ANONYMOUS_SUPPORTED"
+              glib:nick="anonymous-supported"/>
+    </bitfield>
+    <interface name="AsyncInitable"
+               c:symbol-prefix="async_initable"
+               c:type="GAsyncInitable"
+               version="2.22"
+               glib:type-name="GAsyncInitable"
+               glib:get-type="g_async_initable_get_type"
+               glib:type-struct="AsyncInitableIface">
+      <doc xml:whitespace="preserve">Interface for asynchronously initializable objects.</doc>
+      <virtual-method name="init_async" invoker="init_async" version="2.22">
+        <doc xml:whitespace="preserve">Starts asynchronous initialization of the object implementing the
+interface. This must be done before any real use of the object after
+initial construction. If the object also implements #GInitable you can
+optionally call g_initable_init() instead.
+When the initialization is finished, @callback will be called. You can
+then call g_async_initable_init_finish() to get the result of the
+initialization.
+Implementations may also support cancellation. If @cancellable is not
+%NULL, then initialization can be cancelled by triggering the cancellable
+object from another thread. If the operation was cancelled, the error
+%G_IO_ERROR_CANCELLED will be returned. If @cancellable is not %NULL, and
+the object doesn't support cancellable initialization, the error
+%G_IO_ERROR_NOT_SUPPORTED will be returned.
+If this function is not called, or returns with an error, then all
+operations on the object should fail, generally returning the
+error %G_IO_ERROR_NOT_INITIALIZED.
+to this function with the same argument should return the same results.
+Only the first call initializes the object; further calls return the result
+of the first call. This is so that it's safe to implement the singleton
+pattern in the GObject constructor function.
+For classes that also support the #GInitable interface, the default
+implementation of this method will run the g_initable_init() function
+in a thread, so if you want to support asynchronous initialization via
+threads, just implement the #GAsyncInitable interface without overriding
+any interface methods.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the operation.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="3">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="init_finish"
+                      invoker="init_finish"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes asynchronous initialization and returns the result.
+See g_async_initable_init_async().
+will return %FALSE and set @error appropriately if present.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful. If an error has occurred, this function</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="init_async"
+              c:identifier="g_async_initable_init_async"
+              version="2.22">
+        <doc xml:whitespace="preserve">Starts asynchronous initialization of the object implementing the
+interface. This must be done before any real use of the object after
+initial construction. If the object also implements #GInitable you can
+optionally call g_initable_init() instead.
+When the initialization is finished, @callback will be called. You can
+then call g_async_initable_init_finish() to get the result of the
+initialization.
+Implementations may also support cancellation. If @cancellable is not
+%NULL, then initialization can be cancelled by triggering the cancellable
+object from another thread. If the operation was cancelled, the error
+%G_IO_ERROR_CANCELLED will be returned. If @cancellable is not %NULL, and
+the object doesn't support cancellable initialization, the error
+%G_IO_ERROR_NOT_SUPPORTED will be returned.
+If this function is not called, or returns with an error, then all
+operations on the object should fail, generally returning the
+error %G_IO_ERROR_NOT_INITIALIZED.
+to this function with the same argument should return the same results.
+Only the first call initializes the object; further calls return the result
+of the first call. This is so that it's safe to implement the singleton
+pattern in the GObject constructor function.
+For classes that also support the #GInitable interface, the default
+implementation of this method will run the g_initable_init() function
+in a thread, so if you want to support asynchronous initialization via
+threads, just implement the #GAsyncInitable interface without overriding
+any interface methods.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the operation.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_finish"
+              c:identifier="g_async_initable_init_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes asynchronous initialization and returns the result.
+See g_async_initable_init_async().
+will return %FALSE and set @error appropriately if present.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful. If an error has occurred, this function</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="new_finish"
+              c:identifier="g_async_initable_new_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes the async construction for the various g_async_initable_new calls,
+returning the created object or %NULL on error.
+g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly created #GObject, or %NULL on error. Free with</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GAsyncResult.from the callback</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="AsyncInitableIface"
+            c:type="GAsyncInitableIface"
+            glib:is-gtype-struct-for="AsyncInitable"
+            version="2.22">
+      <doc xml:whitespace="preserve">Provides an interface for asynchronous initializing object such that
+initialization may fail.</doc>
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="init_async">
+        <callback name="init_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="initable" transfer-ownership="none">
+              <type name="AsyncInitable" c:type="GAsyncInitable*"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the operation.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="4">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="init_finish">
+        <callback name="init_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if successful. If an error has occurred, this function</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="initable" transfer-ownership="none">
+              <type name="AsyncInitable" c:type="GAsyncInitable*"/>
+            </parameter>
+            <parameter name="res" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <callback name="AsyncReadyCallback" c:type="GAsyncReadyCallback">
+      <doc xml:whitespace="preserve">Type definition for a function that will be called back when an asynchronous
+operation within GIO has been completed.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="source_object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object the asynchronous operation was started with.</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="res" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+          <type name="AsyncResult" c:type="GAsyncResult*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">user data passed to the callback.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <interface name="AsyncResult"
+               c:symbol-prefix="async_result"
+               c:type="GAsyncResult"
+               glib:type-name="GAsyncResult"
+               glib:get-type="g_async_result_get_type"
+               glib:type-struct="AsyncResultIface">
+      <doc xml:whitespace="preserve">Holds results information for an asynchronous operation,
+usually passed directly to a asynchronous _finish() operation.</doc>
+      <virtual-method name="get_source_object" invoker="get_source_object">
+        <doc xml:whitespace="preserve">Gets the source object from a #GAsyncResult.
+or %NULL if there is none.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new reference to the source object for the @res,</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_user_data" invoker="get_user_data">
+        <doc xml:whitespace="preserve">Gets the user data from a #GAsyncResult.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the user data for @res.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_source_object"
+              c:identifier="g_async_result_get_source_object">
+        <doc xml:whitespace="preserve">Gets the source object from a #GAsyncResult.
+or %NULL if there is none.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new reference to the source object for the @res,</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+      </method>
+      <method name="get_user_data" c:identifier="g_async_result_get_user_data">
+        <doc xml:whitespace="preserve">Gets the user data from a #GAsyncResult.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the user data for @res.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+    </interface>
+    <record name="AsyncResultIface"
+            c:type="GAsyncResultIface"
+            glib:is-gtype-struct-for="AsyncResult">
+      <doc xml:whitespace="preserve">Interface definition for #GAsyncResult.</doc>
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_user_data">
+        <callback name="get_user_data">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the user data for @res.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </return-value>
+          <parameters>
+            <parameter name="async_result" transfer-ownership="none">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_source_object">
+        <callback name="get_source_object">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a new reference to the source object for the @res,</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </return-value>
+          <parameters>
+            <parameter name="async_result" transfer-ownership="none">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="BufferedInputStream"
+           c:symbol-prefix="buffered_input_stream"
+           c:type="GBufferedInputStream"
+           parent="FilterInputStream"
+           glib:type-name="GBufferedInputStream"
+           glib:get-type="g_buffered_input_stream_get_type"
+           glib:type-struct="BufferedInputStreamClass">
+      <doc xml:whitespace="preserve">Implements #GFilterInputStream with a sized input buffer.</doc>
+      <constructor name="new" c:identifier="g_buffered_input_stream_new">
+        <doc xml:whitespace="preserve">Creates a new #GInputStream from the given @base_stream, with
+a buffer set to the default size (4 kilobytes).</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GInputStream for the given @base_stream.</doc>
+          <type name="InputStream" c:type="GInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="base_stream" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GInputStream</doc>
+            <type name="InputStream" c:type="GInputStream*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_sized"
+                   c:identifier="g_buffered_input_stream_new_sized">
+        <doc xml:whitespace="preserve">Creates a new #GBufferedInputStream from the given @base_stream,
+with a buffer set to @size.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GInputStream.</doc>
+          <type name="InputStream" c:type="GInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="base_stream" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GInputStream</doc>
+            <type name="InputStream" c:type="GInputStream*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gsize</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="fill" invoker="fill" throws="1">
+        <doc xml:whitespace="preserve">Tries to read @count bytes from the stream into the buffer.
+Will block during this read.
+If @count is zero, returns zero and does nothing. A value of @count
+larger than %G_MAXSSIZE will cause a %G_IO_ERROR_INVALID_ARGUMENT error.
+On success, the number of bytes read into the buffer is returned.
+It is not an error if this is not the same as the requested size, as it
+can happen e.g. near the end of a file. Zero is returned on end of file
+(or if @count is zero),  but never otherwise.
+If @count is -1 then the attempted read size is equal to the number of
+bytes that are required to fill the buffer.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
+operation was partially finished when the operation was cancelled the
+partial result will be returned, without an error.
+On error -1 is returned and @error is set accordingly.
+For the asynchronous, non-blocking, version of this function, see
+g_buffered_input_stream_fill_async().
+or -1 on error.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of bytes read into @stream's buffer, up to @count,</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes that will be read from the stream</doc>
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="fill_async" invoker="fill_async">
+        <doc xml:whitespace="preserve">Reads data into @stream's buffer asynchronously, up to @count size.
+version of this function, see g_buffered_input_stream_fill().
+If @count is -1 then the attempted read size is equal to the number
+of bytes that are required to fill the buffer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes that will be read from the stream</doc>
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">a #gpointer</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="fill_finish" invoker="fill_finish" throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous read.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #gssize of the read stream, or %-1 on an error.</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="fill"
+              c:identifier="g_buffered_input_stream_fill"
+              throws="1">
+        <doc xml:whitespace="preserve">Tries to read @count bytes from the stream into the buffer.
+Will block during this read.
+If @count is zero, returns zero and does nothing. A value of @count
+larger than %G_MAXSSIZE will cause a %G_IO_ERROR_INVALID_ARGUMENT error.
+On success, the number of bytes read into the buffer is returned.
+It is not an error if this is not the same as the requested size, as it
+can happen e.g. near the end of a file. Zero is returned on end of file
+(or if @count is zero),  but never otherwise.
+If @count is -1 then the attempted read size is equal to the number of
+bytes that are required to fill the buffer.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
+operation was partially finished when the operation was cancelled the
+partial result will be returned, without an error.
+On error -1 is returned and @error is set accordingly.
+For the asynchronous, non-blocking, version of this function, see
+g_buffered_input_stream_fill_async().
+or -1 on error.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of bytes read into @stream's buffer, up to @count,</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes that will be read from the stream</doc>
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fill_async"
+              c:identifier="g_buffered_input_stream_fill_async">
+        <doc xml:whitespace="preserve">Reads data into @stream's buffer asynchronously, up to @count size.
+version of this function, see g_buffered_input_stream_fill().
+If @count is -1 then the attempted read size is equal to the number
+of bytes that are required to fill the buffer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes that will be read from the stream</doc>
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gpointer</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fill_finish"
+              c:identifier="g_buffered_input_stream_fill_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous read.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #gssize of the read stream, or %-1 on an error.</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_available"
+              c:identifier="g_buffered_input_stream_get_available">
+        <doc xml:whitespace="preserve">Gets the size of the available data within the stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">size of the available stream.</doc>
+          <type name="gulong" c:type="gsize"/>
+        </return-value>
+      </method>
+      <method name="get_buffer_size"
+              c:identifier="g_buffered_input_stream_get_buffer_size">
+        <doc xml:whitespace="preserve">Gets the size of the input buffer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current buffer size.</doc>
+          <type name="gulong" c:type="gsize"/>
+        </return-value>
+      </method>
+      <method name="peek" c:identifier="g_buffered_input_stream_peek">
+        <doc xml:whitespace="preserve">Peeks in the buffer, copying data of size @count into @buffer,
+offset @offset bytes.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #gsize of the number of bytes peeked, or -1 on error.</doc>
+          <type name="gulong" c:type="gsize"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to an allocated chunk of memory</doc>
+            <type name="gpointer" c:type="void*"/>
+          </parameter>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gsize</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gsize</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_buffer"
+              c:identifier="g_buffered_input_stream_peek_buffer">
+        <doc xml:whitespace="preserve">Returns the buffer with the currently available bytes. The returned
+buffer must not be modified and will become invalid when reading from
+the stream or filling the buffer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">read-only buffer</doc>
+          <type name="gpointer" c:type="void*"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gsize to get the number of bytes available in the buffer</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_byte"
+              c:identifier="g_buffered_input_stream_read_byte"
+              throws="1">
+        <doc xml:whitespace="preserve">Tries to read a single byte from the stream or the buffer. Will block
+during this read.
+On success, the byte read from the stream is returned. On end of stream
+-1 is returned but it's not an exceptional error and @error is not set.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
+operation was partially finished when the operation was cancelled the
+partial result will be returned, without an error.
+On error -1 is returned and @error is set accordingly.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the byte read from the @stream, or -1 on end of stream or error.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_buffer_size"
+              c:identifier="g_buffered_input_stream_set_buffer_size">
+        <doc xml:whitespace="preserve">Sets the size of the internal buffer of @stream to @size, or to the
+size of the contents of the buffer. The buffer can never be resized
+smaller than its current contents.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gsize</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="buffer-size"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="FilterInputStream" c:type="GFilterInputStream"/>
+      </field>
+      <field name="priv">
+        <type name="BufferedInputStreamPrivate"
+              c:type="GBufferedInputStreamPrivate*"/>
+      </field>
+    </class>
+    <record name="BufferedInputStreamClass"
+            c:type="GBufferedInputStreamClass"
+            glib:is-gtype-struct-for="BufferedInputStream">
+      <field name="parent_class">
+        <type name="FilterInputStreamClass" c:type="GFilterInputStreamClass"/>
+      </field>
+      <field name="fill">
+        <callback name="fill" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes read into @stream's buffer, up to @count,</doc>
+            <type name="glong" c:type="gssize"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="BufferedInputStream" c:type="GBufferedInputStream*"/>
+            </parameter>
+            <parameter name="count" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the number of bytes that will be read from the stream</doc>
+              <type name="glong" c:type="gssize"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="fill_async">
+        <callback name="fill_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="BufferedInputStream" c:type="GBufferedInputStream*"/>
+            </parameter>
+            <parameter name="count" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the number of bytes that will be read from the stream</doc>
+              <type name="glong" c:type="gssize"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">a #gpointer</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="fill_finish">
+        <callback name="fill_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gssize of the read stream, or %-1 on an error.</doc>
+            <type name="glong" c:type="gssize"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="BufferedInputStream" c:type="GBufferedInputStream*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="BufferedInputStreamPrivate"
+            c:type="GBufferedInputStreamPrivate"
+            disguised="1">
+    </record>
+    <class name="BufferedOutputStream"
+           c:symbol-prefix="buffered_output_stream"
+           c:type="GBufferedOutputStream"
+           parent="FilterOutputStream"
+           glib:type-name="GBufferedOutputStream"
+           glib:get-type="g_buffered_output_stream_get_type"
+           glib:type-struct="BufferedOutputStreamClass">
+      <doc xml:whitespace="preserve">An implementation of #GFilterOutputStream with a sized buffer.</doc>
+      <constructor name="new" c:identifier="g_buffered_output_stream_new">
+        <doc xml:whitespace="preserve">Creates a new buffered output stream for a base stream.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GOutputStream for the given @base_stream.</doc>
+          <type name="OutputStream" c:type="GOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="base_stream" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GOutputStream.</doc>
+            <type name="OutputStream" c:type="GOutputStream*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_sized"
+                   c:identifier="g_buffered_output_stream_new_sized">
+        <doc xml:whitespace="preserve">Creates a new buffered output stream with a given buffer size.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GOutputStream with an internal buffer set to @size.</doc>
+          <type name="OutputStream" c:type="GOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="base_stream" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GOutputStream.</doc>
+            <type name="OutputStream" c:type="GOutputStream*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gsize.</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_auto_grow"
+              c:identifier="g_buffered_output_stream_get_auto_grow">
+        <doc xml:whitespace="preserve">Checks if the buffer automatically grows as data is added.
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @stream's buffer automatically grows,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_buffer_size"
+              c:identifier="g_buffered_output_stream_get_buffer_size">
+        <doc xml:whitespace="preserve">Gets the size of the buffer in the @stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current size of the buffer.</doc>
+          <type name="gulong" c:type="gsize"/>
+        </return-value>
+      </method>
+      <method name="set_auto_grow"
+              c:identifier="g_buffered_output_stream_set_auto_grow">
+        <doc xml:whitespace="preserve">Sets whether or not the @stream's buffer should automatically grow.
+If @auto_grow is true, then each write will just make the buffer
+larger, and you must manually flush the buffer to actually write out
+the data to the underlying stream.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="auto_grow" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gboolean.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_buffer_size"
+              c:identifier="g_buffered_output_stream_set_buffer_size">
+        <doc xml:whitespace="preserve">Sets the size of the internal buffer to @size.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gsize.</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="auto-grow" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="buffer-size"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="FilterOutputStream" c:type="GFilterOutputStream"/>
+      </field>
+      <field name="priv">
+        <type name="BufferedOutputStreamPrivate"
+              c:type="GBufferedOutputStreamPrivate*"/>
+      </field>
+    </class>
+    <record name="BufferedOutputStreamClass"
+            c:type="GBufferedOutputStreamClass"
+            glib:is-gtype-struct-for="BufferedOutputStream">
+      <field name="parent_class">
+        <type name="FilterOutputStreamClass"
+              c:type="GFilterOutputStreamClass"/>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="BufferedOutputStreamPrivate"
+            c:type="GBufferedOutputStreamPrivate"
+            disguised="1">
+    </record>
+    <callback name="BusAcquiredCallback"
+              c:type="GBusAcquiredCallback"
+              version="2.26">
+      <doc xml:whitespace="preserve">Invoked when a connection to a message bus has been obtained.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="connection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GDBusConnection to a message bus.</doc>
+          <type name="DBusConnection" c:type="GDBusConnection*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name that is requested to be owned.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">User data passed to g_bus_own_name().</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="BusNameAcquiredCallback"
+              c:type="GBusNameAcquiredCallback"
+              version="2.26">
+      <doc xml:whitespace="preserve">Invoked when the name is acquired.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="connection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GDBusConnection on which to acquired the name.</doc>
+          <type name="DBusConnection" c:type="GDBusConnection*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name being owned.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">User data passed to g_bus_own_name() or g_bus_own_name_on_connection().</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="BusNameAppearedCallback"
+              c:type="GBusNameAppearedCallback"
+              version="2.26">
+      <doc xml:whitespace="preserve">Invoked when the name being watched is known to have to have a owner.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="connection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GDBusConnection the name is being watched on.</doc>
+          <type name="DBusConnection" c:type="GDBusConnection*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name being watched.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="name_owner" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Unique name of the owner of the name being watched.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <doc xml:whitespace="preserve">User data passed to g_bus_watch_name().</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="BusNameLostCallback"
+              c:type="GBusNameLostCallback"
+              version="2.26">
+      <doc xml:whitespace="preserve">Invoked when the name is lost or @connection has been closed.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="connection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GDBusConnection on which to acquire the name or %NULL if the connection was disconnected.</doc>
+          <type name="DBusConnection" c:type="GDBusConnection*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name being owned.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">User data passed to g_bus_own_name() or g_bus_own_name_on_connection().</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="BusNameOwnerFlags"
+              version="2.26"
+              glib:type-name="GBusNameOwnerFlags"
+              glib:get-type="g_bus_name_owner_flags_get_type"
+              c:type="GBusNameOwnerFlags">
+      <doc xml:whitespace="preserve">Flags used in g_bus_own_name().</doc>
+      <member name="none"
+              value="0"
+              c:identifier="G_BUS_NAME_OWNER_FLAGS_NONE"
+              glib:nick="none"/>
+      <member name="allow_replacement"
+              value="1"
+              c:identifier="G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT"
+              glib:nick="allow-replacement"/>
+      <member name="replace"
+              value="2"
+              c:identifier="G_BUS_NAME_OWNER_FLAGS_REPLACE"
+              glib:nick="replace"/>
+    </bitfield>
+    <callback name="BusNameVanishedCallback"
+              c:type="GBusNameVanishedCallback"
+              version="2.26">
+      <doc xml:whitespace="preserve">Invoked when the name being watched is known not to have to have a owner.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="connection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GDBusConnection the name is being watched on.</doc>
+          <type name="DBusConnection" c:type="GDBusConnection*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name being watched.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">User data passed to g_bus_watch_name().</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="BusNameWatcherFlags"
+              version="2.26"
+              glib:type-name="GBusNameWatcherFlags"
+              glib:get-type="g_bus_name_watcher_flags_get_type"
+              c:type="GBusNameWatcherFlags">
+      <doc xml:whitespace="preserve">Flags used in g_bus_watch_name().</doc>
+      <member name="none"
+              value="0"
+              c:identifier="G_BUS_NAME_WATCHER_FLAGS_NONE"
+              glib:nick="none"/>
+      <member name="auto_start"
+              value="1"
+              c:identifier="G_BUS_NAME_WATCHER_FLAGS_AUTO_START"
+              glib:nick="auto-start"/>
+    </bitfield>
+    <enumeration name="BusType"
+                 version="2.26"
+                 glib:type-name="GBusType"
+                 glib:get-type="g_bus_type_get_type"
+                 c:type="GBusType">
+      <doc xml:whitespace="preserve">An enumeration for well-known message buses.</doc>
+      <member name="starter"
+              value="-1"
+              c:identifier="G_BUS_TYPE_STARTER"
+              glib:nick="starter"/>
+      <member name="none"
+              value="0"
+              c:identifier="G_BUS_TYPE_NONE"
+              glib:nick="none"/>
+      <member name="system"
+              value="1"
+              c:identifier="G_BUS_TYPE_SYSTEM"
+              glib:nick="system"/>
+      <member name="session"
+              value="2"
+              c:identifier="G_BUS_TYPE_SESSION"
+              glib:nick="session"/>
+    </enumeration>
+    <class name="Cancellable"
+           c:symbol-prefix="cancellable"
+           c:type="GCancellable"
+           parent="GObject.Object"
+           glib:type-name="GCancellable"
+           glib:get-type="g_cancellable_get_type"
+           glib:type-struct="CancellableClass">
+      <doc xml:whitespace="preserve">Allows actions to be cancelled.</doc>
+      <constructor name="new" c:identifier="g_cancellable_new">
+        <doc xml:whitespace="preserve">Creates a new #GCancellable object.
+Applications that want to start one or more operations
+that should be cancellable should create a #GCancellable
+and pass it to the operations.
+One #GCancellable can be used in multiple consecutive
+operations, but not in multiple concurrent operations.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GCancellable.</doc>
+          <type name="Cancellable" c:type="GCancellable*"/>
+        </return-value>
+      </constructor>
+      <function name="get_current" c:identifier="g_cancellable_get_current">
+        <doc xml:whitespace="preserve">Gets the top cancellable from the stack.
+if the stack is empty.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GCancellable from the top of the stack, or %NULL</doc>
+          <type name="Cancellable" c:type="GCancellable*"/>
+        </return-value>
+      </function>
+      <method name="cancel" c:identifier="g_cancellable_cancel">
+        <doc xml:whitespace="preserve">Will set @cancellable to cancelled, and will emit the
+#GCancellable::cancelled signal. (However, see the warning about
+race conditions in the documentation for that signal if you are
+planning to connect to it.)
+This function is thread-safe. In other words, you can safely call
+it from a thread other than the one running the operation that was
+passed the @cancellable.
+The convention within gio is that cancelling an asynchronous
+operation causes it to complete asynchronously. That is, if you
+cancel the operation from the same thread in which it is running,
+then the operation's #GAsyncReadyCallback will not be invoked until
+the application returns to the main loop.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="connect"
+              c:identifier="g_cancellable_connect"
+              version="2.22">
+        <doc xml:whitespace="preserve">Convenience function to connect to the #GCancellable::cancelled
+signal. Also handles the race condition that may happen
+if the cancellable is cancelled right before connecting.
+time of the connect if @cancellable is already cancelled,
+or when @cancellable is cancelled in some thread.
+disconnected, or immediately if the cancellable is already
+cancelled.
+See #GCancellable::cancelled for details on how to use this.
+been cancelled.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The id of the signal handler or 0 if @cancellable has already</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">The #GCallback to connect.</doc>
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Data to pass to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="data_destroy_func"
+                     transfer-ownership="none"
+                     scope="async">
+            <doc xml:whitespace="preserve">Free function for @data or %NULL.</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="disconnect"
+              c:identifier="g_cancellable_disconnect"
+              version="2.22">
+        <doc xml:whitespace="preserve">Disconnects a handler from a cancellable instance similar to
+g_signal_handler_disconnect().  Additionally, in the event that a
+signal handler is currently running, this call will block until the
+handler has finished.  Calling this function from a
+#GCancellable::cancelled signal handler will therefore result in a
+deadlock.
+This avoids a race condition where a thread cancels at the
+same time as the cancellable operation is finished and the
+signal handler is removed. See #GCancellable::cancelled for
+details on how to use this.
+If @cancellable is %NULL or @handler_id is %0 this function does
+nothing.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Handler id of the handler to be disconnected, or %0.</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fd" c:identifier="g_cancellable_get_fd">
+        <doc xml:whitespace="preserve">Gets the file descriptor for a cancellable job. This can be used to
+implement cancellable operations on Unix systems. The returned fd will
+turn readable when @cancellable is cancelled.
+You are not supposed to read from the fd yourself, just check for
+readable status. Reading to unset the readable status is done
+with g_cancellable_reset().
+After a successful return from this function, you should use
+g_cancellable_release_fd() to free up resources allocated for
+the returned file descriptor.
+See also g_cancellable_make_pollfd().
+is not supported, or on errors.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A valid file descriptor. %-1 if the file descriptor</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="is_cancelled" c:identifier="g_cancellable_is_cancelled">
+        <doc xml:whitespace="preserve">Checks if a cancellable job has been cancelled.
+FALSE if called with %NULL or if item is not cancelled.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @cancellable is cancelled,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="make_pollfd"
+              c:identifier="g_cancellable_make_pollfd"
+              version="2.22">
+        <doc xml:whitespace="preserve">Creates a #GPollFD corresponding to @cancellable; this can be passed
+to g_poll() and used to poll for cancellation. This is useful both
+for unix systems without a native poll and for portability to
+windows.
+When this function returns %TRUE, you should use
+g_cancellable_release_fd() to free up resources allocated for the
+If this function returns %FALSE, either no @cancellable was given or
+resource limits prevent this function from allocating the necessary
+structures for polling. (On Linux, you will likely have reached
+the maximum number of file descriptors.) The suggested way to handle
+these cases is to ignore the @cancellable.
+You are not supposed to read from the fd yourself, just check for
+readable status. Reading to unset the readable status is done
+with g_cancellable_reset().
+failure to prepare the cancellable.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @pollfd was successfully initialized, %FALSE on</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pollfd" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to a #GPollFD</doc>
+            <type name="GLib.PollFD" c:type="GPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pop_current" c:identifier="g_cancellable_pop_current">
+        <doc xml:whitespace="preserve">Pops @cancellable off the cancellable stack (verifying that @cancellable
+is on the top of the stack).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="push_current" c:identifier="g_cancellable_push_current">
+        <doc xml:whitespace="preserve">Pushes @cancellable onto the cancellable stack. The current
+cancllable can then be recieved using g_cancellable_get_current().
+This is useful when implementing cancellable operations in
+code that does not allow you to pass down the cancellable object.
+This is typically called automatically by e.g. #GFile operations,
+so you rarely have to call this yourself.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="release_fd"
+              c:identifier="g_cancellable_release_fd"
+              version="2.22">
+        <doc xml:whitespace="preserve">Releases a resources previously allocated by g_cancellable_get_fd()
+or g_cancellable_make_pollfd().
+For compatibility reasons with older releases, calling this function
+is not strictly required, the resources will be automatically freed
+when the @cancellable is finalized. However, the @cancellable will
+block scarce file descriptors until it is finalized if this function
+is not called. This can cause the application to run out of file
+descriptors when many #GCancellables are used at the same time.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="reset" c:identifier="g_cancellable_reset">
+        <doc xml:whitespace="preserve">Resets @cancellable to its uncancelled state.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_error_if_cancelled"
+              c:identifier="g_cancellable_set_error_if_cancelled"
+              throws="1">
+        <doc xml:whitespace="preserve">If the @cancellable is cancelled, sets the error to notify
+that the operation was cancelled.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @cancellable was cancelled, %FALSE if it was not.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="CancellablePrivate" c:type="GCancellablePrivate*"/>
+      </field>
+      <glib:signal name="cancelled">
+        <doc xml:whitespace="preserve">Emitted when the operation has been cancelled.
+Can be used by implementations of cancellable operations. If the
+operation is cancelled from another thread, the signal will be
+emitted in the thread that cancelled the operation, not the
+thread that is running the operation.
+Note that disconnecting from this signal (or any signal) in a
+multi-threaded program is prone to race conditions. For instance
+it is possible that a signal handler may be invoked even
+&lt;emphasis&gt;after&lt;/emphasis&gt; a call to
+g_signal_handler_disconnect() for that handler has already
+returned.
+There is also a problem when cancellation happen
+right before connecting to the signal. If this happens the
+signal will unexpectedly not be emitted, and checking before
+connecting to the signal leaves a race condition where this is
+still happening.
+In order to make it safe and easy to connect handlers there
+g_cancellable_disconnect() which protect against problems
+like this.
+An example of how to us this:
+|[
+/&lt;!-- --&gt;* Make sure we don't do any unnecessary work if already cancelled *&lt;!-- --&gt;/
+if (g_cancellable_set_error_if_cancelled (cancellable))
+return;
+/&lt;!-- --&gt;* Set up all the data needed to be able to
+* handle cancellation of the operation *&lt;!-- --&gt;/
+my_data = my_data_new (...);
+id = 0;
+if (cancellable)
+id = g_cancellable_connect (cancellable,
+G_CALLBACK (cancelled_handler)
+data, NULL);
+/&lt;!-- --&gt;* cancellable operation here... *&lt;!-- --&gt;/
+g_cancellable_disconnect (cancellable, id);
+/&lt;!-- --&gt;* cancelled_handler is never called after this, it
+* is now safe to free the data *&lt;!-- --&gt;/
+my_data_free (my_data);
+]|
+Note that the cancelled signal is emitted in the thread that
+the user cancelled from, which may be the main thread. So, the
+cancellable signal should not do something that can block.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="CancellableClass"
+            c:type="GCancellableClass"
+            glib:is-gtype-struct-for="Cancellable">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="cancelled">
+        <callback name="cancelled">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cancellable" transfer-ownership="none">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="CancellablePrivate"
+            c:type="GCancellablePrivate"
+            disguised="1">
+    </record>
+    <class name="CharsetConverter"
+           c:symbol-prefix="charset_converter"
+           c:type="GCharsetConverter"
+           parent="GObject.Object"
+           glib:type-name="GCharsetConverter"
+           glib:get-type="g_charset_converter_get_type"
+           glib:type-struct="CharsetConverterClass">
+      <doc xml:whitespace="preserve">Conversions between character sets.</doc>
+      <implements name="Converter"/>
+      <implements name="Initable"/>
+      <constructor name="new"
+                   c:identifier="g_charset_converter_new"
+                   version="2.24"
+                   throws="1">
+        <doc xml:whitespace="preserve">Creates a new #GCharsetConverter.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GCharsetConverter or %NULL on error.</doc>
+          <type name="CharsetConverter" c:type="GCharsetConverter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="to_charset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">destination charset</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="from_charset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">source charset</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_num_fallbacks"
+              c:identifier="g_charset_converter_get_num_fallbacks"
+              version="2.24">
+        <doc xml:whitespace="preserve">Gets the number of fallbacks that @converter has applied so far.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of fallbacks that @converter has applied</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_use_fallback"
+              c:identifier="g_charset_converter_get_use_fallback"
+              version="2.24">
+        <doc xml:whitespace="preserve">Gets the #GCharsetConverter:use-fallback property.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if fallbacks are used by @converter</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_use_fallback"
+              c:identifier="g_charset_converter_set_use_fallback"
+              version="2.24">
+        <doc xml:whitespace="preserve">Sets the #GCharsetConverter:use-fallback property.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_fallback" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to use fallbacks</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="from-charset"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="to-charset"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="use-fallback"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+    </class>
+    <record name="CharsetConverterClass"
+            c:type="GCharsetConverterClass"
+            glib:is-gtype-struct-for="CharsetConverter">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <interface name="Converter"
+               c:symbol-prefix="converter"
+               c:type="GConverter"
+               version="2.24"
+               glib:type-name="GConverter"
+               glib:get-type="g_converter_get_type"
+               glib:type-struct="ConverterIface">
+      <doc xml:whitespace="preserve">Seek object for streaming operations.</doc>
+      <virtual-method name="convert"
+                      invoker="convert"
+                      version="2.24"
+                      throws="1">
+        <doc xml:whitespace="preserve">This is the main operation used when converting data. It is to be called
+multiple times in a loop, and each time it will do some work, i.e.
+producing some output (in @outbuf) or consuming some input (from @inbuf) or
+both. If its not possible to do any work an error is returned.
+Note that a single call may not consume all input (or any input at all).
+Also a call may produce output even if given no input, due to state stored
+in the converter producing output.
+If any data was either produced or consumed, and then an error happens, then
+only the successful conversion is reported and the error is returned on the
+next call.
+A full conversion loop involves calling this method repeatedly, each time
+giving it new input and space output space. When there is no more input
+data after the data in @inbuf, the flag %G_CONVERTER_INPUT_AT_END must be set.
+The loop will be (unless some error happens) returning %G_CONVERTER_CONVERTED
+each time until all data is consumed and all output is produced, then
+%G_CONVERTER_FINISHED is returned instead. Note, that %G_CONVERTER_FINISHED
+may be returned even if %G_CONVERTER_INPUT_AT_END is not set, for instance
+in a decompression converter where the end of data is detectable from the
+data (and there might even be other data after the end of the compressed data).
+When some data has successfully been converted @bytes_read and is set to
+the number of bytes read from @inbuf, and @bytes_written is set to indicate
+how many bytes was written to @outbuf. If there are more data to output
+or consume (i.e. unless the G_CONVERTER_INPUT_AT_END is specified) then
+G_CONVERTER_CONVERTED is returned, and if no more data is to be output
+then G_CONVERTER_FINISHED is returned.
+On error %G_CONVERTER_ERROR is returned and @error is set accordingly.
+Some errors need special handling:
+%G_IO_ERROR_NO_SPACE is returned if there is not enough space
+to write the resulting converted data, the application should
+call the function again with a larger @outbuf to continue.
+%G_IO_ERROR_PARTIAL_INPUT is returned if there is not enough
+input to fully determine what the conversion should produce,
+and the %G_CONVERTER_INPUT_AT_END flag is not set. This happens for
+example with an incomplete multibyte sequence when converting text,
+or when a regexp matches up to the end of the input (and may match
+further input). It may also happen when @inbuf_size is zero and
+there is no more data to produce.
+When this happens the application should read more input and then
+call the function again. If further input shows that there is no
+more data call the function again with the same data but with
+the %G_CONVERTER_INPUT_AT_END flag set. This may cause the conversion
+to finish as e.g. in the regexp match case (or, to fail again with
+%G_IO_ERROR_PARTIAL_INPUT in e.g. a charset conversion where the
+input is actually partial).
+After g_converter_convert() has returned %G_CONVERTER_FINISHED the
+converter object is in an invalid state where its not allowed
+to call g_converter_convert() anymore. At this time you can only
+free the object or call g_converter_reset() to reset it to the
+initial state.
+If the flag %G_CONVERTER_FLUSH is set then conversion is modified
+to try to write out all internal state to the output. The application
+has to call the function multiple times with the flag set, and when
+the availible input has been consumed and all internal state has
+been produced then %G_CONVERTER_FLUSHED (or %G_CONVERTER_FINISHED if
+really at the end) is returned instead of %G_CONVERTER_CONVERTED.
+This is somewhat similar to what happens at the end of the input stream,
+but done in the middle of the data.
+This has different meanings for different conversions. For instance
+in a compression converter it would mean that we flush all the
+compression state into output such that if you uncompress the
+compressed data you get back all the input data. Doing this may
+make the final file larger due to padding though. Another example
+is a regexp conversion, where if you at the end of the flushed data
+have a match, but there is also a potential longer match. In the
+non-flushed case we would ask for more input, but when flushing we
+treat this as the end of input and do the match.
+Flushing is not always possible (like if a charset converter flushes
+at a partial multibyte sequence). Converters are supposed to try
+to produce as much output as possible and then return an error
+(typically %G_IO_ERROR_PARTIAL_INPUT).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GConverterResult, %G_CONVERTER_ERROR on error.</doc>
+          <type name="ConverterResult" c:type="GConverterResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="inbuf" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the buffer containing the data to convert.</doc>
+            <type name="gpointer" c:type="void*"/>
+          </parameter>
+          <parameter name="inbuf_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes in @inbuf</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="outbuf" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a buffer to write converted data in.</doc>
+            <type name="gpointer" c:type="void*"/>
+          </parameter>
+          <parameter name="outbuf_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes in @outbuf, must be at least one</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GConvertFlags controlling the conversion details</doc>
+            <type name="ConverterFlags" c:type="GConverterFlags"/>
+          </parameter>
+          <parameter name="bytes_read" transfer-ownership="none">
+            <doc xml:whitespace="preserve">will be set to the number of bytes read from @inbuf on success</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+          <parameter name="bytes_written" transfer-ownership="none">
+            <doc xml:whitespace="preserve">will be set to the number of bytes written to @outbuf on success</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="reset" invoker="reset" version="2.24">
+        <doc xml:whitespace="preserve">Resets all internal state in the converter, making it behave
+as if it was just created. If the converter has any internal
+state that would produce output then that output is lost.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="convert"
+              c:identifier="g_converter_convert"
+              version="2.24"
+              throws="1">
+        <doc xml:whitespace="preserve">This is the main operation used when converting data. It is to be called
+multiple times in a loop, and each time it will do some work, i.e.
+producing some output (in @outbuf) or consuming some input (from @inbuf) or
+both. If its not possible to do any work an error is returned.
+Note that a single call may not consume all input (or any input at all).
+Also a call may produce output even if given no input, due to state stored
+in the converter producing output.
+If any data was either produced or consumed, and then an error happens, then
+only the successful conversion is reported and the error is returned on the
+next call.
+A full conversion loop involves calling this method repeatedly, each time
+giving it new input and space output space. When there is no more input
+data after the data in @inbuf, the flag %G_CONVERTER_INPUT_AT_END must be set.
+The loop will be (unless some error happens) returning %G_CONVERTER_CONVERTED
+each time until all data is consumed and all output is produced, then
+%G_CONVERTER_FINISHED is returned instead. Note, that %G_CONVERTER_FINISHED
+may be returned even if %G_CONVERTER_INPUT_AT_END is not set, for instance
+in a decompression converter where the end of data is detectable from the
+data (and there might even be other data after the end of the compressed data).
+When some data has successfully been converted @bytes_read and is set to
+the number of bytes read from @inbuf, and @bytes_written is set to indicate
+how many bytes was written to @outbuf. If there are more data to output
+or consume (i.e. unless the G_CONVERTER_INPUT_AT_END is specified) then
+G_CONVERTER_CONVERTED is returned, and if no more data is to be output
+then G_CONVERTER_FINISHED is returned.
+On error %G_CONVERTER_ERROR is returned and @error is set accordingly.
+Some errors need special handling:
+%G_IO_ERROR_NO_SPACE is returned if there is not enough space
+to write the resulting converted data, the application should
+call the function again with a larger @outbuf to continue.
+%G_IO_ERROR_PARTIAL_INPUT is returned if there is not enough
+input to fully determine what the conversion should produce,
+and the %G_CONVERTER_INPUT_AT_END flag is not set. This happens for
+example with an incomplete multibyte sequence when converting text,
+or when a regexp matches up to the end of the input (and may match
+further input). It may also happen when @inbuf_size is zero and
+there is no more data to produce.
+When this happens the application should read more input and then
+call the function again. If further input shows that there is no
+more data call the function again with the same data but with
+the %G_CONVERTER_INPUT_AT_END flag set. This may cause the conversion
+to finish as e.g. in the regexp match case (or, to fail again with
+%G_IO_ERROR_PARTIAL_INPUT in e.g. a charset conversion where the
+input is actually partial).
+After g_converter_convert() has returned %G_CONVERTER_FINISHED the
+converter object is in an invalid state where its not allowed
+to call g_converter_convert() anymore. At this time you can only
+free the object or call g_converter_reset() to reset it to the
+initial state.
+If the flag %G_CONVERTER_FLUSH is set then conversion is modified
+to try to write out all internal state to the output. The application
+has to call the function multiple times with the flag set, and when
+the availible input has been consumed and all internal state has
+been produced then %G_CONVERTER_FLUSHED (or %G_CONVERTER_FINISHED if
+really at the end) is returned instead of %G_CONVERTER_CONVERTED.
+This is somewhat similar to what happens at the end of the input stream,
+but done in the middle of the data.
+This has different meanings for different conversions. For instance
+in a compression converter it would mean that we flush all the
+compression state into output such that if you uncompress the
+compressed data you get back all the input data. Doing this may
+make the final file larger due to padding though. Another example
+is a regexp conversion, where if you at the end of the flushed data
+have a match, but there is also a potential longer match. In the
+non-flushed case we would ask for more input, but when flushing we
+treat this as the end of input and do the match.
+Flushing is not always possible (like if a charset converter flushes
+at a partial multibyte sequence). Converters are supposed to try
+to produce as much output as possible and then return an error
+(typically %G_IO_ERROR_PARTIAL_INPUT).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GConverterResult, %G_CONVERTER_ERROR on error.</doc>
+          <type name="ConverterResult" c:type="GConverterResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="inbuf" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the buffer containing the data to convert.</doc>
+            <type name="gpointer" c:type="void*"/>
+          </parameter>
+          <parameter name="inbuf_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes in @inbuf</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="outbuf" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a buffer to write converted data in.</doc>
+            <type name="gpointer" c:type="void*"/>
+          </parameter>
+          <parameter name="outbuf_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes in @outbuf, must be at least one</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GConvertFlags controlling the conversion details</doc>
+            <type name="ConverterFlags" c:type="GConverterFlags"/>
+          </parameter>
+          <parameter name="bytes_read" transfer-ownership="none">
+            <doc xml:whitespace="preserve">will be set to the number of bytes read from @inbuf on success</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+          <parameter name="bytes_written" transfer-ownership="none">
+            <doc xml:whitespace="preserve">will be set to the number of bytes written to @outbuf on success</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reset" c:identifier="g_converter_reset" version="2.24">
+        <doc xml:whitespace="preserve">Resets all internal state in the converter, making it behave
+as if it was just created. If the converter has any internal
+state that would produce output then that output is lost.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </interface>
+    <bitfield name="ConverterFlags"
+              version="2.24"
+              glib:type-name="GConverterFlags"
+              glib:get-type="g_converter_flags_get_type"
+              c:type="GConverterFlags">
+      <doc xml:whitespace="preserve">Flags used when calling a g_converter_convert().</doc>
+      <member name="none"
+              value="0"
+              c:identifier="G_CONVERTER_NO_FLAGS"
+              glib:nick="none"/>
+      <member name="input_at_end"
+              value="1"
+              c:identifier="G_CONVERTER_INPUT_AT_END"
+              glib:nick="input-at-end"/>
+      <member name="flush"
+              value="2"
+              c:identifier="G_CONVERTER_FLUSH"
+              glib:nick="flush"/>
+    </bitfield>
+    <record name="ConverterIface"
+            c:type="GConverterIface"
+            glib:is-gtype-struct-for="Converter"
+            version="2.24">
+      <doc xml:whitespace="preserve">Provides an interface for converting data from one type
+to another type. The conversion can be stateful
+and may fail at any place.</doc>
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="convert">
+        <callback name="convert" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GConverterResult, %G_CONVERTER_ERROR on error.</doc>
+            <type name="ConverterResult" c:type="GConverterResult"/>
+          </return-value>
+          <parameters>
+            <parameter name="converter" transfer-ownership="none">
+              <type name="Converter" c:type="GConverter*"/>
+            </parameter>
+            <parameter name="inbuf" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the buffer containing the data to convert.</doc>
+              <type name="gpointer" c:type="void*"/>
+            </parameter>
+            <parameter name="inbuf_size" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the number of bytes in @inbuf</doc>
+              <type name="gulong" c:type="gsize"/>
+            </parameter>
+            <parameter name="outbuf" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a buffer to write converted data in.</doc>
+              <type name="gpointer" c:type="void*"/>
+            </parameter>
+            <parameter name="outbuf_size" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the number of bytes in @outbuf, must be at least one</doc>
+              <type name="gulong" c:type="gsize"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GConvertFlags controlling the conversion details</doc>
+              <type name="ConverterFlags" c:type="GConverterFlags"/>
+            </parameter>
+            <parameter name="bytes_read" transfer-ownership="none">
+              <doc xml:whitespace="preserve">will be set to the number of bytes read from @inbuf on success</doc>
+              <type name="gulong" c:type="gsize*"/>
+            </parameter>
+            <parameter name="bytes_written" transfer-ownership="none">
+              <doc xml:whitespace="preserve">will be set to the number of bytes written to @outbuf on success</doc>
+              <type name="gulong" c:type="gsize*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="reset">
+        <callback name="reset">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="converter" transfer-ownership="none">
+              <type name="Converter" c:type="GConverter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="ConverterInputStream"
+           c:symbol-prefix="converter_input_stream"
+           c:type="GConverterInputStream"
+           parent="FilterInputStream"
+           glib:type-name="GConverterInputStream"
+           glib:get-type="g_converter_input_stream_get_type"
+           glib:type-struct="ConverterInputStreamClass">
+      <doc xml:whitespace="preserve">An implementation of #GFilterInputStream that allows data
+conversion.</doc>
+      <constructor name="new" c:identifier="g_converter_input_stream_new">
+        <doc xml:whitespace="preserve">Creates a new converter input stream for the @base_stream.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GInputStream.</doc>
+          <type name="InputStream" c:type="GInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="base_stream" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GInputStream</doc>
+            <type name="InputStream" c:type="GInputStream*"/>
+          </parameter>
+          <parameter name="converter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GConverter</doc>
+            <type name="Converter" c:type="GConverter*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_converter"
+              c:identifier="g_converter_input_stream_get_converter"
+              version="2.24">
+        <doc xml:whitespace="preserve">Gets the #GConverter that is used by @converter_stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the converter of the converter input stream</doc>
+          <type name="Converter" c:type="GConverter*"/>
+        </return-value>
+      </method>
+      <property name="converter"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="Converter"/>
+      </property>
+      <field name="parent_instance">
+        <type name="FilterInputStream" c:type="GFilterInputStream"/>
+      </field>
+      <field name="priv">
+        <type name="ConverterInputStreamPrivate"
+              c:type="GConverterInputStreamPrivate*"/>
+      </field>
+    </class>
+    <record name="ConverterInputStreamClass"
+            c:type="GConverterInputStreamClass"
+            glib:is-gtype-struct-for="ConverterInputStream">
+      <field name="parent_class">
+        <type name="FilterInputStreamClass" c:type="GFilterInputStreamClass"/>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ConverterInputStreamPrivate"
+            c:type="GConverterInputStreamPrivate"
+            disguised="1">
+    </record>
+    <class name="ConverterOutputStream"
+           c:symbol-prefix="converter_output_stream"
+           c:type="GConverterOutputStream"
+           parent="FilterOutputStream"
+           glib:type-name="GConverterOutputStream"
+           glib:get-type="g_converter_output_stream_get_type"
+           glib:type-struct="ConverterOutputStreamClass">
+      <doc xml:whitespace="preserve">An implementation of #GFilterOutputStream that allows data
+conversion.</doc>
+      <constructor name="new" c:identifier="g_converter_output_stream_new">
+        <doc xml:whitespace="preserve">Creates a new converter output stream for the @base_stream.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GOutputStream.</doc>
+          <type name="OutputStream" c:type="GOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="base_stream" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GOutputStream</doc>
+            <type name="OutputStream" c:type="GOutputStream*"/>
+          </parameter>
+          <parameter name="converter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GConverter</doc>
+            <type name="Converter" c:type="GConverter*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_converter"
+              c:identifier="g_converter_output_stream_get_converter"
+              version="2.24">
+        <doc xml:whitespace="preserve">Gets the #GConverter that is used by @converter_stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the converter of the converter output stream</doc>
+          <type name="Converter" c:type="GConverter*"/>
+        </return-value>
+      </method>
+      <property name="converter"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="Converter"/>
+      </property>
+      <field name="parent_instance">
+        <type name="FilterOutputStream" c:type="GFilterOutputStream"/>
+      </field>
+      <field name="priv">
+        <type name="ConverterOutputStreamPrivate"
+              c:type="GConverterOutputStreamPrivate*"/>
+      </field>
+    </class>
+    <record name="ConverterOutputStreamClass"
+            c:type="GConverterOutputStreamClass"
+            glib:is-gtype-struct-for="ConverterOutputStream">
+      <field name="parent_class">
+        <type name="FilterOutputStreamClass"
+              c:type="GFilterOutputStreamClass"/>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ConverterOutputStreamPrivate"
+            c:type="GConverterOutputStreamPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="ConverterResult"
+                 version="2.24"
+                 glib:type-name="GConverterResult"
+                 glib:get-type="g_converter_result_get_type"
+                 c:type="GConverterResult">
+      <doc xml:whitespace="preserve">Results returned from g_converter_convert().</doc>
+      <member name="error"
+              value="0"
+              c:identifier="G_CONVERTER_ERROR"
+              glib:nick="error"/>
+      <member name="converted"
+              value="1"
+              c:identifier="G_CONVERTER_CONVERTED"
+              glib:nick="converted"/>
+      <member name="finished"
+              value="2"
+              c:identifier="G_CONVERTER_FINISHED"
+              glib:nick="finished"/>
+      <member name="flushed"
+              value="3"
+              c:identifier="G_CONVERTER_FLUSHED"
+              glib:nick="flushed"/>
+    </enumeration>
+    <class name="Credentials"
+           c:symbol-prefix="credentials"
+           c:type="GCredentials"
+           version="2.26"
+           parent="GObject.Object"
+           glib:type-name="GCredentials"
+           glib:get-type="g_credentials_get_type"
+           glib:type-struct="CredentialsClass">
+      <doc xml:whitespace="preserve">The #GCredentials structure contains only private data and
+should only be accessed using the provided API.</doc>
+      <constructor name="new" c:identifier="g_credentials_new" version="2.26">
+        <doc xml:whitespace="preserve">Creates a new #GCredentials object with credentials matching the
+the current process.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GCredentials. Free with g_object_unref().</doc>
+          <type name="Credentials" c:type="GCredentials*"/>
+        </return-value>
+      </constructor>
+      <method name="get_native"
+              c:identifier="g_credentials_get_native"
+              version="2.26"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets a pointer to native credentials of type @native_type from
+It is a programming error (which will cause an warning to be
+logged) to use this method if there is no #GCredentials support for
+the OS or if @native_type isn't supported by the OS.
+operation there is no #GCredentials support for the OS or if
+data, it is owned by @credentials.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">The pointer to native credentials or %NULL if the</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="native_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The type of native credentials to get.</doc>
+            <type name="CredentialsType" c:type="GCredentialsType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_unix_user"
+              c:identifier="g_credentials_get_unix_user"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Tries to get the UNIX user identifier from @credentials. This
+method is only available on UNIX platforms.
+This operation can fail if #GCredentials is not supported on the
+OS or if the native credentials type does not contain information
+about the UNIX user.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The UNIX user identifier or -1 if @error is set.</doc>
+          <type name="guint" c:type="uid_t"/>
+        </return-value>
+      </method>
+      <method name="is_same_user"
+              c:identifier="g_credentials_is_same_user"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Checks if @credentials and @other_credentials is the same user.
+This operation can fail if #GCredentials is not supported on the
+the OS.
+user, %FALSE otherwise or if @error is set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @credentials and @other_credentials has the same</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="other_credentials" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GCredentials.</doc>
+            <type name="Credentials" c:type="GCredentials*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_native"
+              c:identifier="g_credentials_set_native"
+              version="2.26">
+        <doc xml:whitespace="preserve">Copies the native credentials of type @native_type from @native
+into @credentials.
+It is a programming error (which will cause an warning to be
+logged) to use this method if there is no #GCredentials support for
+the OS or if @native_type isn't supported by the OS.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="native_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The type of native credentials to set.</doc>
+            <type name="CredentialsType" c:type="GCredentialsType"/>
+          </parameter>
+          <parameter name="native" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A pointer to native credentials.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_unix_user"
+              c:identifier="g_credentials_set_unix_user"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Tries to set the UNIX user identifier on @credentials. This method
+is only available on UNIX platforms.
+This operation can fail if #GCredentials is not supported on the
+OS or if the native credentials type does not contain information
+about the UNIX user.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @uid was set, %FALSE if error is set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uid" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The UNIX user identifier to set.</doc>
+            <type name="guint" c:type="uid_t"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_string"
+              c:identifier="g_credentials_to_string"
+              version="2.26">
+        <doc xml:whitespace="preserve">Creates a human-readable textual representation of @credentials
+that can be used in logging and debug messages. The format of the
+returned string may change in future GLib release.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A string that should be freed with g_free().</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </class>
+    <record name="CredentialsClass"
+            c:type="GCredentialsClass"
+            disguised="1"
+            glib:is-gtype-struct-for="Credentials"
+            version="2.26">
+      <doc xml:whitespace="preserve">Class structure for #GCredentials.</doc>
+    </record>
+    <enumeration name="CredentialsType"
+                 version="2.26"
+                 glib:type-name="GCredentialsType"
+                 glib:get-type="g_credentials_type_get_type"
+                 c:type="GCredentialsType">
+      <doc xml:whitespace="preserve">Enumeration describing different kinds of native credential types.</doc>
+      <member name="invalid"
+              value="0"
+              c:identifier="G_CREDENTIALS_TYPE_INVALID"
+              glib:nick="invalid"/>
+      <member name="linux_ucred"
+              value="1"
+              c:identifier="G_CREDENTIALS_TYPE_LINUX_UCRED"
+              glib:nick="linux-ucred"/>
+      <member name="freebsd_cmsgcred"
+              value="2"
+              c:identifier="G_CREDENTIALS_TYPE_FREEBSD_CMSGCRED"
+              glib:nick="freebsd-cmsgcred"/>
+    </enumeration>
+    <record name="DBusAnnotationInfo"
+            c:type="GDBusAnnotationInfo"
+            version="2.26"
+            glib:type-name="GDBusAnnotationInfo"
+            glib:get-type="g_dbus_annotation_info_get_type"
+            c:symbol-prefix="dbus_annotation_info">
+      <doc xml:whitespace="preserve">Information about an annotation.</doc>
+      <field name="ref_count" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="key" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="annotations" writable="1">
+        <type name="DBusAnnotationInfo" c:type="GDBusAnnotationInfo**"/>
+      </field>
+      <method name="ref"
+              c:identifier="g_dbus_annotation_info_ref"
+              version="2.26">
+        <doc xml:whitespace="preserve">If @info is statically allocated does nothing. Otherwise increases
+the reference count.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The same @info.</doc>
+          <type name="DBusAnnotationInfo" c:type="GDBusAnnotationInfo*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="g_dbus_annotation_info_unref"
+              version="2.26">
+        <doc xml:whitespace="preserve">If @info is statically allocated, does nothing. Otherwise decreases
+the reference count of @info. When its reference count drops to 0,
+the memory used is freed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="DBusArgInfo"
+            c:type="GDBusArgInfo"
+            version="2.26"
+            glib:type-name="GDBusArgInfo"
+            glib:get-type="g_dbus_arg_info_get_type"
+            c:symbol-prefix="dbus_arg_info">
+      <doc xml:whitespace="preserve">Information about an argument for a method or a signal.</doc>
+      <field name="ref_count" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="signature" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="annotations" writable="1">
+        <type name="DBusAnnotationInfo" c:type="GDBusAnnotationInfo**"/>
+      </field>
+      <method name="ref" c:identifier="g_dbus_arg_info_ref" version="2.26">
+        <doc xml:whitespace="preserve">If @info is statically allocated does nothing. Otherwise increases
+the reference count.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The same @info.</doc>
+          <type name="DBusArgInfo" c:type="GDBusArgInfo*"/>
+        </return-value>
+      </method>
+      <method name="unref" c:identifier="g_dbus_arg_info_unref" version="2.26">
+        <doc xml:whitespace="preserve">If @info is statically allocated, does nothing. Otherwise decreases
+the reference count of @info. When its reference count drops to 0,
+the memory used is freed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="DBusAuthObserver"
+           c:symbol-prefix="dbus_auth_observer"
+           c:type="GDBusAuthObserver"
+           version="2.26"
+           parent="GObject.Object"
+           glib:type-name="GDBusAuthObserver"
+           glib:get-type="g_dbus_auth_observer_get_type">
+      <doc xml:whitespace="preserve">The #GDBusAuthObserver structure contains only private data and
+should only be accessed using the provided API.</doc>
+      <constructor name="new"
+                   c:identifier="g_dbus_auth_observer_new"
+                   version="2.26">
+        <doc xml:whitespace="preserve">Creates a new #GDBusAuthObserver object.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GDBusAuthObserver. Free with g_object_unref().</doc>
+          <type name="DBusAuthObserver" c:type="GDBusAuthObserver*"/>
+        </return-value>
+      </constructor>
+      <method name="authorize_authenticated_peer"
+              c:identifier="g_dbus_auth_observer_authorize_authenticated_peer"
+              version="2.26">
+        <doc xml:whitespace="preserve">Emits the #GDBusAuthObserver::authorize-authenticated-peer signal on @observer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the peer is authorized, %FALSE if not.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="stream" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GIOStream for the #GDBusConnection.</doc>
+            <type name="IOStream" c:type="GIOStream*"/>
+          </parameter>
+          <parameter name="credentials" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Credentials received from the peer or %NULL.</doc>
+            <type name="Credentials" c:type="GCredentials*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="authorize-authenticated-peer" version="2.26">
+        <doc xml:whitespace="preserve">Emitted to check if a peer that is successfully authenticated
+is authorized.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the peer is authorized, %FALSE if not.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GIOStream for the #GDBusConnection.</doc>
+            <type name="IOStream"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Credentials received from the peer or %NULL.</doc>
+            <type name="Credentials"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <bitfield name="DBusCallFlags"
+              version="2.26"
+              glib:type-name="GDBusCallFlags"
+              glib:get-type="g_dbus_call_flags_get_type"
+              c:type="GDBusCallFlags">
+      <doc xml:whitespace="preserve">Flags used in g_dbus_connection_call() and similar APIs.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="G_DBUS_CALL_FLAGS_NONE"
+              glib:nick="none"/>
+      <member name="no_auto_start"
+              value="1"
+              c:identifier="G_DBUS_CALL_FLAGS_NO_AUTO_START"
+              glib:nick="no-auto-start"/>
+    </bitfield>
+    <bitfield name="DBusCapabilityFlags"
+              version="2.26"
+              glib:type-name="GDBusCapabilityFlags"
+              glib:get-type="g_dbus_capability_flags_get_type"
+              c:type="GDBusCapabilityFlags">
+      <doc xml:whitespace="preserve">Capabilities negotiated with the remote peer.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="G_DBUS_CAPABILITY_FLAGS_NONE"
+              glib:nick="none"/>
+      <member name="unix_fd_passing"
+              value="1"
+              c:identifier="G_DBUS_CAPABILITY_FLAGS_UNIX_FD_PASSING"
+              glib:nick="unix-fd-passing"/>
+    </bitfield>
+    <class name="DBusConnection"
+           c:symbol-prefix="dbus_connection"
+           c:type="GDBusConnection"
+           version="2.26"
+           parent="GObject.Object"
+           glib:type-name="GDBusConnection"
+           glib:get-type="g_dbus_connection_get_type">
+      <doc xml:whitespace="preserve">The #GDBusConnection structure contains only private data and
+should only be accessed using the provided API.</doc>
+      <implements name="AsyncInitable"/>
+      <implements name="Initable"/>
+      <constructor name="new_finish"
+                   c:identifier="g_dbus_connection_new_finish"
+                   version="2.26"
+                   throws="1">
+        <doc xml:whitespace="preserve">Finishes an operation started with g_dbus_connection_new().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GDBusConnection or %NULL if @error is set. Free with g_object_unref().</doc>
+          <type name="DBusConnection" c:type="GDBusConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GAsyncResult obtained from the #GAsyncReadyCallback passed to g_dbus_connection_new().</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_for_address_finish"
+                   c:identifier="g_dbus_connection_new_for_address_finish"
+                   version="2.26"
+                   throws="1">
+        <doc xml:whitespace="preserve">Finishes an operation started with g_dbus_connection_new_for_address().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GDBusConnection or %NULL if @error is set. Free with g_object_unref().</doc>
+          <type name="DBusConnection" c:type="GDBusConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GAsyncResult obtained from the #GAsyncReadyCallback passed to g_dbus_connection_new().</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_for_address_sync"
+                   c:identifier="g_dbus_connection_new_for_address_sync"
+                   version="2.26"
+                   throws="1">
+        <doc xml:whitespace="preserve">Synchronously connects and sets up a D-Bus client connection for
+exchanging D-Bus messages with an endpoint specified by @address
+which must be in the D-Bus address format.
+This constructor can only be used to initiate client-side
+connections - use g_dbus_connection_new_sync() if you need to act
+as the server. In particular, @flags cannot contain the
+%G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER or
+%G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS flags.
+This is a synchronous failable constructor. See
+g_dbus_connection_new_for_address() for the asynchronous version.
+If @observer is not %NULL it may be used to control the
+authentication process.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GDBusConnection or %NULL if @error is set. Free with g_object_unref().</doc>
+          <type name="DBusConnection" c:type="GDBusConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A D-Bus address.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Flags describing how to make the connection.</doc>
+            <type name="DBusConnectionFlags" c:type="GDBusConnectionFlags"/>
+          </parameter>
+          <parameter name="observer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GDBusAuthObserver or %NULL.</doc>
+            <type name="DBusAuthObserver" c:type="GDBusAuthObserver*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_sync"
+                   c:identifier="g_dbus_connection_new_sync"
+                   version="2.26"
+                   throws="1">
+        <doc xml:whitespace="preserve">Synchronously sets up a D-Bus connection for exchanging D-Bus messages
+with the end represented by @stream.
+If @observer is not %NULL it may be used to control the
+authentication process.
+This is a synchronous failable constructor. See
+g_dbus_connection_new() for the asynchronous version.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GDBusConnection or %NULL if @error is set. Free with g_object_unref().</doc>
+          <type name="DBusConnection" c:type="GDBusConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stream" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GIOStream.</doc>
+            <type name="IOStream" c:type="GIOStream*"/>
+          </parameter>
+          <parameter name="guid" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The GUID to use if a authenticating as a server or %NULL.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Flags describing how to make the connection.</doc>
+            <type name="DBusConnectionFlags" c:type="GDBusConnectionFlags"/>
+          </parameter>
+          <parameter name="observer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GDBusAuthObserver or %NULL.</doc>
+            <type name="DBusAuthObserver" c:type="GDBusAuthObserver*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="new" c:identifier="g_dbus_connection_new" version="2.26">
+        <doc xml:whitespace="preserve">Asynchronously sets up a D-Bus connection for exchanging D-Bus messages
+with the end represented by @stream.
+If @observer is not %NULL it may be used to control the
+authentication process.
+When the operation is finished, @callback will be invoked. You can
+then call g_dbus_connection_new_finish() to get the result of the
+operation.
+This is a asynchronous failable constructor. See
+g_dbus_connection_new_sync() for the synchronous
+version.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stream" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GIOStream.</doc>
+            <type name="IOStream" c:type="GIOStream*"/>
+          </parameter>
+          <parameter name="guid" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The GUID to use if a authenticating as a server or %NULL.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Flags describing how to make the connection.</doc>
+            <type name="DBusConnectionFlags" c:type="GDBusConnectionFlags"/>
+          </parameter>
+          <parameter name="observer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GDBusAuthObserver or %NULL.</doc>
+            <type name="DBusAuthObserver" c:type="GDBusAuthObserver*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="6">
+            <doc xml:whitespace="preserve">A #GAsyncReadyCallback to call when the request is satisfied.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The data to pass to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="new_for_address"
+                c:identifier="g_dbus_connection_new_for_address"
+                version="2.26">
+        <doc xml:whitespace="preserve">Asynchronously connects and sets up a D-Bus client connection for
+exchanging D-Bus messages with an endpoint specified by @address
+which must be in the D-Bus address format.
+This constructor can only be used to initiate client-side
+connections - use g_dbus_connection_new() if you need to act as the
+server. In particular, @flags cannot contain the
+%G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER or
+%G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS flags.
+When the operation is finished, @callback will be invoked. You can
+then call g_dbus_connection_new_finish() to get the result of the
+operation.
+If @observer is not %NULL it may be used to control the
+authentication process.
+This is a asynchronous failable constructor. See
+g_dbus_connection_new_for_address_sync() for the synchronous
+version.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A D-Bus address.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Flags describing how to make the connection.</doc>
+            <type name="DBusConnectionFlags" c:type="GDBusConnectionFlags"/>
+          </parameter>
+          <parameter name="observer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GDBusAuthObserver or %NULL.</doc>
+            <type name="DBusAuthObserver" c:type="GDBusAuthObserver*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <doc xml:whitespace="preserve">A #GAsyncReadyCallback to call when the request is satisfied.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The data to pass to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="add_filter"
+              c:identifier="g_dbus_connection_add_filter"
+              version="2.26">
+        <doc xml:whitespace="preserve">Adds a message filter. Filters are handlers that are run on all
+incoming and outgoing messages, prior to standard dispatch. Filters
+are run in the order that they were added.  The same handler can be
+added as a filter more than once, in which case it will be run more
+than once.  Filters added during a filter callback won't be run on
+the message being processed. Filter functions are allowed to modify
+and even drop messages - see the #GDBusMessageFilterResult
+enumeration for details.
+Note that filters are run in a dedicated message handling thread so
+they can't block and, generally, can't do anything but signal a
+worker thread. Also note that filters are rarely needed - use API
+such as g_dbus_connection_send_message_with_reply(),
+g_dbus_connection_signal_subscribe() or
+g_dbus_connection_call() instead.
+If a filter consumes an incoming message the message is not
+dispatched anywhere else - not even the standard dispatch machinery
+(that API such as g_dbus_connection_signal_subscribe() and
+g_dbus_connection_send_message_with_reply() relies on) will see the
+message. Similary, if a filter consumes an outgoing message, the
+message will not be sent to the other peer.
+g_dbus_connection_remove_filter().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A filter identifier that can be used with</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter_function"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">A filter function.</doc>
+            <type name="DBusMessageFilterFunction"
+                  c:type="GDBusMessageFilterFunction"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">User data to pass to @filter_function.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="user_data_free_func"
+                     transfer-ownership="none"
+                     scope="async">
+            <doc xml:whitespace="preserve">Function to free @user_data with when filter is removed or %NULL.</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="call" c:identifier="g_dbus_connection_call" version="2.26">
+        <doc xml:whitespace="preserve">Asynchronously invokes the @method_name method on the
+If @connection is closed then the operation will fail with
+%G_IO_ERROR_CLOSED. If @cancellable is canceled, the operation will
+fail with %G_IO_ERROR_CANCELLED. If @parameters contains a value
+not compatible with the D-Bus protocol, the operation fails with
+%G_IO_ERROR_INVALID_ARGUMENT.
+If @reply_type is non-%NULL then the reply will be checked for having this type and an
+error will be raised if it does not match.  Said another way, if you give a @reply_type
+then any non-%NULL return value will be of this type.
+If the @parameters #GVariant is floating, it is consumed. This allows
+convenient 'inline' use of g_variant_new(), e.g.:
+|[
+g_dbus_connection_call (connection,
+"org.freedesktop.StringThings",
+"/org/freedesktop/StringThings",
+"org.freedesktop.StringThings",
+"TwoStrings",
+g_variant_new ("(ss)",
+"Thing One",
+"Thing Two"),
+NULL,
+G_DBUS_CALL_FLAGS_NONE,
+-1,
+NULL,
+(GAsyncReadyCallback) two_strings_done,
+NULL);
+]|
+This is an asynchronous method. When the operation is finished, @callback will be invoked
+in the &lt;link linkend="g-main-context-push-thread-default"&gt;thread-default main loop&lt;/link&gt;
+of the thread you are calling this method from. You can then call
+g_dbus_connection_call_finish() to get the result of the operation.
+See g_dbus_connection_call_sync() for the synchronous version of this
+function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="bus_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A unique or well-known bus name or %NULL if @connection is not a message bus connection.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="object_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Path of remote object.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="interface_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">D-Bus interface to invoke method on.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="method_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The name of the method to invoke.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="parameters" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GVariant tuple with parameters for the method or %NULL if not passing parameters.</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+          <parameter name="reply_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The expected type of the reply, or %NULL.</doc>
+            <type name="GLib.VariantType" c:type="GVariantType*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Flags from the #GDBusCallFlags enumeration.</doc>
+            <type name="DBusCallFlags" c:type="GDBusCallFlags"/>
+          </parameter>
+          <parameter name="timeout_msec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The timeout in milliseconds or -1 to use the default timeout.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="10">
+            <doc xml:whitespace="preserve">A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The data to pass to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="call_finish"
+              c:identifier="g_dbus_connection_call_finish"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an operation started with g_dbus_connection_call().
+return values. Free with g_variant_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">%NULL if @error is set. Otherwise a #GVariant tuple with</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GAsyncResult obtained from the #GAsyncReadyCallback passed to g_dbus_connection_call().</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="call_sync"
+              c:identifier="g_dbus_connection_call_sync"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Synchronously invokes the @method_name method on the
+If @connection is closed then the operation will fail with
+%G_IO_ERROR_CLOSED. If @cancellable is canceled, the
+operation will fail with %G_IO_ERROR_CANCELLED. If @parameters
+contains a value not compatible with the D-Bus protocol, the operation
+fails with %G_IO_ERROR_INVALID_ARGUMENT.
+If @reply_type is non-%NULL then the reply will be checked for having
+this type and an error will be raised if it does not match.  Said
+another way, if you give a @reply_type then any non-%NULL return
+value will be of this type.
+If the @parameters #GVariant is floating, it is consumed.
+This allows convenient 'inline' use of g_variant_new(), e.g.:
+|[
+g_dbus_connection_call_sync (connection,
+"org.freedesktop.StringThings",
+"/org/freedesktop/StringThings",
+"org.freedesktop.StringThings",
+"TwoStrings",
+g_variant_new ("(ss)",
+"Thing One",
+"Thing Two"),
+NULL,
+G_DBUS_CALL_FLAGS_NONE,
+-1,
+NULL,
+&amp;amp;error);
+]|
+The calling thread is blocked until a reply is received. See
+g_dbus_connection_call() for the asynchronous version of
+this method.
+return values. Free with g_variant_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">%NULL if @error is set. Otherwise a #GVariant tuple with</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="bus_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A unique or well-known bus name.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="object_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Path of remote object.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="interface_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">D-Bus interface to invoke method on.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="method_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The name of the method to invoke.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="parameters" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GVariant tuple with parameters for the method or %NULL if not passing parameters.</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+          <parameter name="reply_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The expected type of the reply, or %NULL.</doc>
+            <type name="GLib.VariantType" c:type="GVariantType*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Flags from the #GDBusCallFlags enumeration.</doc>
+            <type name="DBusCallFlags" c:type="GDBusCallFlags"/>
+          </parameter>
+          <parameter name="timeout_msec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The timeout in milliseconds or -1 to use the default timeout.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close"
+              c:identifier="g_dbus_connection_close"
+              version="2.26">
+        <doc xml:whitespace="preserve">Closes @connection. Note that this never causes the process to
+exit (this might only happen if the other end of a shared message
+bus connection disconnects, see #GDBusConnection:exit-on-close).
+Once the connection is closed, operations such as sending a message
+will return with the error %G_IO_ERROR_CLOSED. Closing a connection
+will not automatically flush the connection so queued messages may
+be lost. Use g_dbus_connection_flush() if you need such guarantees.
+If @connection is already closed, this method fails with
+%G_IO_ERROR_CLOSED.
+When @connection has been closed, the #GDBusConnection::closed
+signal is emitted in the &lt;link
+linkend="g-main-context-push-thread-default"&gt;thread-default main
+loop&lt;/link&gt; of the thread that @connection was constructed in.
+This is an asynchronous method. When the operation is finished,
+linkend="g-main-context-push-thread-default"&gt;thread-default main
+loop&lt;/link&gt; of the thread you are calling this method from. You can
+then call g_dbus_connection_close_finish() to get the result of the
+operation.  See g_dbus_connection_close_sync() for the synchronous
+version.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="2">
+            <doc xml:whitespace="preserve">A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The data to pass to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close_finish"
+              c:identifier="g_dbus_connection_close_finish"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an operation started with g_dbus_connection_close().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation succeeded, %FALSE if @error is set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GAsyncResult obtained from the #GAsyncReadyCallback passed to g_dbus_connection_close().</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close_sync"
+              c:identifier="g_dbus_connection_close_sync"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Synchronously closees @connection. The calling thread is blocked
+until this is done. See g_dbus_connection_close() for the
+asynchronous version of this method and more details about what it
+does.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation succeeded, %FALSE if @error is set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="emit_signal"
+              c:identifier="g_dbus_connection_emit_signal"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Emits a signal.
+If the parameters GVariant is floating, it is consumed.
+This can only fail if @parameters is not compatible with the D-Bus protocol.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE unless @error is set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="destination_bus_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The unique bus name for the destination for the signal or %NULL to emit to all listeners.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="object_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Path of remote object.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="interface_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">D-Bus interface to emit a signal on.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="signal_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The name of the signal to emit.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="parameters" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GVariant tuple with parameters for the signal or %NULL if not passing parameters.</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="flush"
+              c:identifier="g_dbus_connection_flush"
+              version="2.26">
+        <doc xml:whitespace="preserve">Asynchronously flushes @connection, that is, writes all queued
+outgoing message to the transport and then flushes the transport
+(using g_output_stream_flush_async()). This is useful in programs
+that wants to emit a D-Bus signal and then exit
+immediately. Without flushing the connection, there is no guarantee
+that the message has been sent to the networking buffers in the OS
+kernel.
+This is an asynchronous method. When the operation is finished,
+linkend="g-main-context-push-thread-default"&gt;thread-default main
+loop&lt;/link&gt; of the thread you are calling this method from. You can
+then call g_dbus_connection_flush_finish() to get the result of the
+operation.  See g_dbus_connection_flush_sync() for the synchronous
+version.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="2">
+            <doc xml:whitespace="preserve">A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The data to pass to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="flush_finish"
+              c:identifier="g_dbus_connection_flush_finish"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an operation started with g_dbus_connection_flush().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation succeeded, %FALSE if @error is set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GAsyncResult obtained from the #GAsyncReadyCallback passed to g_dbus_connection_flush().</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="flush_sync"
+              c:identifier="g_dbus_connection_flush_sync"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Synchronously flushes @connection. The calling thread is blocked
+until this is done. See g_dbus_connection_flush() for the
+asynchronous version of this method and more details about what it
+does.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation succeeded, %FALSE if @error is set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_capabilities"
+              c:identifier="g_dbus_connection_get_capabilities"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the capabilities negotiated with the remote peer</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Zero or more flags from the #GDBusCapabilityFlags enumeration.</doc>
+          <type name="DBusCapabilityFlags" c:type="GDBusCapabilityFlags"/>
+        </return-value>
+      </method>
+      <method name="get_exit_on_close"
+              c:identifier="g_dbus_connection_get_exit_on_close"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets whether the process is terminated when @connection is
+closed by the remote peer. See
+#GDBusConnection:exit-on-close for more details.
+closed by the remote peer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Whether the process is terminated when @connection is</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_guid"
+              c:identifier="g_dbus_connection_get_guid"
+              version="2.26">
+        <doc xml:whitespace="preserve">The GUID of the peer performing the role of server when
+authenticating. See #GDBusConnection:guid for more details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The GUID. Do not free this string, it is owned by</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_peer_credentials"
+              c:identifier="g_dbus_connection_get_peer_credentials"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the credentials of the authenticated peer. This will always
+return %NULL unless @connection acted as a server
+(e.g. %G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER was passed)
+when set up and the client passed credentials as part of the
+authentication process.
+In a message bus setup, the message bus is always the server and
+each application is a client. So this method will always return
+%NULL for message bus clients.
+this object, it is owned by @connection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GCredentials or %NULL if not available. Do not free</doc>
+          <type name="Credentials" c:type="GCredentials*"/>
+        </return-value>
+      </method>
+      <method name="get_stream"
+              c:identifier="g_dbus_connection_get_stream"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the underlying stream used for IO.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the stream used for IO</doc>
+          <type name="IOStream" c:type="GIOStream*"/>
+        </return-value>
+      </method>
+      <method name="get_unique_name"
+              c:identifier="g_dbus_connection_get_unique_name"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the unique name of @connection as assigned by the message
+bus. This can also be used to figure out if @connection is a
+message bus connection.
+bus connection. Do not free this string, it is owned by</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The unique name or %NULL if @connection is not a message</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="is_closed"
+              c:identifier="g_dbus_connection_is_closed"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets whether @connection is closed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the connection is closed, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="register_object"
+              c:identifier="g_dbus_connection_register_object"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Registers callbacks for exported objects at @object_path with the
+D-Bus interface that is described in @interface_info.
+Calls to functions in @vtable (and @user_data_free_func) will
+happen in the &lt;link linkend="g-main-context-push-thread-default"&gt;thread-default main
+loop&lt;/link&gt; of the thread you are calling this method from.
+Note that all #GVariant values passed to functions in @vtable will match
+the signature given in @interface_info - if a remote caller passes
+incorrect values, the &lt;literal&gt;org.freedesktop.DBus.Error.InvalidArgs&lt;/literal&gt;
+is returned to the remote caller.
+Additionally, if the remote caller attempts to invoke methods or
+access properties not mentioned in @interface_info the
+&lt;literal&gt;org.freedesktop.DBus.Error.UnknownMethod&lt;/literal&gt; resp.
+&lt;literal&gt;org.freedesktop.DBus.Error.InvalidArgs&lt;/literal&gt; errors
+are returned to the caller.
+It is considered a programming error if the
+#GDBusInterfaceGetPropertyFunc function in @vtable returns a
+#GVariant of incorrect type.
+If an existing callback is already registered at @object_path and
+GDBus automatically implements the standard D-Bus interfaces
+org.freedesktop.DBus.Properties, org.freedesktop.DBus.Introspectable
+and org.freedesktop.Peer, so you don't have to implement those for
+the objects you export. You &lt;emphasis&gt;can&lt;/emphasis&gt; implement
+org.freedesktop.DBus.Properties yourself, e.g. to handle getting
+and setting of properties asynchronously.
+Note that the reference count on @interface_info will be
+incremented by 1 (unless allocated statically, e.g. if the
+reference count is -1, see g_dbus_interface_info_ref()) for as long
+as the object is exported. Also note that @vtable will be copied.
+See &lt;xref linkend="gdbus-server"/&gt; for an example of how to use this method.
+that can be used with g_dbus_connection_unregister_object() .</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">0 if @error is set, otherwise a registration id (never 0)</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="object_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The object path to register at.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="interface_info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Introspection data for the interface.</doc>
+            <type name="DBusInterfaceInfo" c:type="GDBusInterfaceInfo*"/>
+          </parameter>
+          <parameter name="vtable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GDBusInterfaceVTable to call into or %NULL.</doc>
+            <type name="DBusInterfaceVTable" c:type="GDBusInterfaceVTable*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Data to pass to functions in @vtable.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="user_data_free_func"
+                     transfer-ownership="none"
+                     scope="async">
+            <doc xml:whitespace="preserve">Function to call when the object path is unregistered.</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="register_subtree"
+              c:identifier="g_dbus_connection_register_subtree"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Registers a whole subtree of &lt;quote&gt;dynamic&lt;/quote&gt; objects.
+The @enumerate and @introspection functions in @vtable are used to
+convey, to remote callers, what nodes exist in the subtree rooted
+by @object_path.
+When handling remote calls into any node in the subtree, first the
+or the #G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES flag is set
+the @introspection function is used to check if the node supports the
+requested method. If so, the @dispatch function is used to determine
+where to dispatch the call. The collected #GDBusInterfaceVTable and
+#gpointer will be used to call into the interface vtable for processing
+the request.
+All calls into user-provided code will be invoked in the &lt;link
+linkend="g-main-context-push-thread-default"&gt;thread-default main
+loop&lt;/link&gt; of the thread you are calling this method from.
+If an existing subtree is already registered at @object_path or
+then @error is set to #G_IO_ERROR_EXISTS.
+Note that it is valid to register regular objects (using
+g_dbus_connection_register_object()) in a subtree registered with
+g_dbus_connection_register_subtree() - if so, the subtree handler
+is tried as the last resort. One way to think about a subtree
+handler is to consider it a &lt;quote&gt;fallback handler&lt;/quote&gt;
+for object paths not registered via g_dbus_connection_register_object()
+or other bindings.
+Note that @vtable will be copied so you cannot change it after
+registration.
+See &lt;xref linkend="gdbus-subtree-server"/&gt; for an example of how to use this method.
+that can be used with g_dbus_connection_unregister_subtree() .</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">0 if @error is set, otherwise a subtree registration id (never 0)</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="object_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The object path to register the subtree at.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="vtable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GDBusSubtreeVTable to enumerate, introspect and dispatch nodes in the subtree.</doc>
+            <type name="DBusSubtreeVTable" c:type="GDBusSubtreeVTable*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Flags used to fine tune the behavior of the subtree.</doc>
+            <type name="DBusSubtreeFlags" c:type="GDBusSubtreeFlags"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Data to pass to functions in @vtable.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="user_data_free_func"
+                     transfer-ownership="none"
+                     scope="async">
+            <doc xml:whitespace="preserve">Function to call when the subtree is unregistered.</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_filter"
+              c:identifier="g_dbus_connection_remove_filter"
+              version="2.26">
+        <doc xml:whitespace="preserve">Removes a filter.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an identifier obtained from g_dbus_connection_add_filter()</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_message"
+              c:identifier="g_dbus_connection_send_message"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Asynchronously sends @message to the peer represented by @connection.
+Unless @flags contain the
+%G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag, the serial number
+will be assigned by @connection and set on @message via
+g_dbus_message_set_serial(). If @out_serial is not %NULL, then the
+serial number used will be written to this location prior to
+submitting the message to the underlying transport.
+If @connection is closed then the operation will fail with
+%G_IO_ERROR_CLOSED. If @message is not well-formed,
+the operation fails with %G_IO_ERROR_INVALID_ARGUMENT.
+See &lt;xref linkend="gdbus-server"/&gt; and &lt;xref
+linkend="gdbus-unix-fd-client"/&gt; for an example of how to use this
+low-level API to send and receive UNIX file descriptors.
+Note that @message must be unlocked, unless @flags contain the
+%G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag.
+transmission, %FALSE if @error is set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the message was well-formed and queued for</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GDBusMessage</doc>
+            <type name="DBusMessage" c:type="GDBusMessage*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Flags affecting how the message is sent.</doc>
+            <type name="DBusSendMessageFlags" c:type="GDBusSendMessageFlags"/>
+          </parameter>
+          <parameter name="out_serial" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Return location for serial number assigned to @message when sending it or %NULL.</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_message_with_reply"
+              c:identifier="g_dbus_connection_send_message_with_reply"
+              version="2.26">
+        <doc xml:whitespace="preserve">Asynchronously sends @message to the peer represented by @connection.
+Unless @flags contain the
+%G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag, the serial number
+will be assigned by @connection and set on @message via
+g_dbus_message_set_serial(). If @out_serial is not %NULL, then the
+serial number used will be written to this location prior to
+submitting the message to the underlying transport.
+If @connection is closed then the operation will fail with
+%G_IO_ERROR_CLOSED. If @cancellable is canceled, the operation will
+fail with %G_IO_ERROR_CANCELLED. If @message is not well-formed,
+the operation fails with %G_IO_ERROR_INVALID_ARGUMENT.
+This is an asynchronous method. When the operation is finished, @callback will be invoked
+in the &lt;link linkend="g-main-context-push-thread-default"&gt;thread-default main loop&lt;/link&gt;
+of the thread you are calling this method from. You can then call
+g_dbus_connection_send_message_with_reply_finish() to get the result of the operation.
+See g_dbus_connection_send_message_with_reply_sync() for the synchronous version.
+Note that @message must be unlocked, unless @flags contain the
+%G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag.
+See &lt;xref linkend="gdbus-server"/&gt; and &lt;xref
+linkend="gdbus-unix-fd-client"/&gt; for an example of how to use this
+low-level API to send and receive UNIX file descriptors.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GDBusMessage.</doc>
+            <type name="DBusMessage" c:type="GDBusMessage*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Flags affecting how the message is sent.</doc>
+            <type name="DBusSendMessageFlags" c:type="GDBusSendMessageFlags"/>
+          </parameter>
+          <parameter name="timeout_msec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The timeout in milliseconds or -1 to use the default timeout.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="out_serial" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Return location for serial number assigned to @message when sending it or %NULL.</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="6">
+            <doc xml:whitespace="preserve">A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The data to pass to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_message_with_reply_finish"
+              c:identifier="g_dbus_connection_send_message_with_reply_finish"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an operation started with g_dbus_connection_send_message_with_reply().
+Note that @error is only set if a local in-process error
+occured. That is to say that the returned #GDBusMessage object may
+be of type %G_DBUS_MESSAGE_TYPE_ERROR. Use
+g_dbus_message_to_gerror() to transcode this to a #GError.
+See &lt;xref linkend="gdbus-server"/&gt; and &lt;xref
+linkend="gdbus-unix-fd-client"/&gt; for an example of how to use this
+low-level API to send and receive UNIX file descriptors.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A locked #GDBusMessage or %NULL if @error is set.</doc>
+          <type name="DBusMessage" c:type="GDBusMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GAsyncResult obtained from the #GAsyncReadyCallback passed to g_dbus_connection_send_message_with_reply().</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_message_with_reply_sync"
+              c:identifier="g_dbus_connection_send_message_with_reply_sync"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Synchronously sends @message to the peer represented by @connection
+and blocks the calling thread until a reply is received or the
+timeout is reached. See g_dbus_connection_send_message_with_reply()
+for the asynchronous version of this method.
+Unless @flags contain the
+%G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag, the serial number
+will be assigned by @connection and set on @message via
+g_dbus_message_set_serial(). If @out_serial is not %NULL, then the
+serial number used will be written to this location prior to
+submitting the message to the underlying transport.
+If @connection is closed then the operation will fail with
+%G_IO_ERROR_CLOSED. If @cancellable is canceled, the operation will
+fail with %G_IO_ERROR_CANCELLED. If @message is not well-formed,
+the operation fails with %G_IO_ERROR_INVALID_ARGUMENT.
+Note that @error is only set if a local in-process error
+occured. That is to say that the returned #GDBusMessage object may
+be of type %G_DBUS_MESSAGE_TYPE_ERROR. Use
+g_dbus_message_to_gerror() to transcode this to a #GError.
+See &lt;xref linkend="gdbus-server"/&gt; and &lt;xref
+linkend="gdbus-unix-fd-client"/&gt; for an example of how to use this
+low-level API to send and receive UNIX file descriptors.
+Note that @message must be unlocked, unless @flags contain the
+%G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A locked #GDBusMessage that is the reply to @message or %NULL if @error is set.</doc>
+          <type name="DBusMessage" c:type="GDBusMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GDBusMessage.</doc>
+            <type name="DBusMessage" c:type="GDBusMessage*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Flags affecting how the message is sent.</doc>
+            <type name="DBusSendMessageFlags" c:type="GDBusSendMessageFlags"/>
+          </parameter>
+          <parameter name="timeout_msec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The timeout in milliseconds or -1 to use the default timeout.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="out_serial" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Return location for serial number assigned to @message when sending it or %NULL.</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_exit_on_close"
+              c:identifier="g_dbus_connection_set_exit_on_close"
+              version="2.26">
+        <doc xml:whitespace="preserve">Sets whether the process should be terminated when @connection is
+closed by the remote peer. See #GDBusConnection:exit-on-close for
+more details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="exit_on_close" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Whether the process should be terminated when @connection is closed by the remote peer.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="signal_subscribe"
+              c:identifier="g_dbus_connection_signal_subscribe"
+              version="2.26">
+        <doc xml:whitespace="preserve">Subscribes to signals on @connection and invokes @callback with a
+whenever the signal is received. Note that @callback
+will be invoked in the &lt;link
+linkend="g-main-context-push-thread-default"&gt;thread-default main
+loop&lt;/link&gt; of the thread you are calling this method from.
+If @connection is not a message bus connection, @sender must be
+%NULL.
+If @sender is a well-known name note that @callback is invoked with
+the unique name for the owner of @sender, not the well-known name
+as one would expect. This is because the message bus rewrites the
+name. As such, to avoid certain race conditions, users should be
+tracking the name owner of the well-known name and use that when
+processing the received signal.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A subscription identifier that can be used with g_dbus_connection_signal_unsubscribe().</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="sender" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Sender name to match on (unique or well-known name) or %NULL to listen from all senders.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="interface_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">D-Bus interface name to match on or %NULL to match on all interfaces.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="member" transfer-ownership="none">
+            <doc xml:whitespace="preserve">D-Bus signal name to match on or %NULL to match on all signals.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="object_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Object path to match on or %NULL to match on all object paths.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="arg0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Contents of first string argument to match on or %NULL to match on all kinds of arguments.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Flags describing how to subscribe to the signal (currently unused).</doc>
+            <type name="DBusSignalFlags" c:type="GDBusSignalFlags"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="7"
+                     destroy="8">
+            <doc xml:whitespace="preserve">Callback to invoke when there is a signal matching the requested data.</doc>
+            <type name="DBusSignalCallback" c:type="GDBusSignalCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">User data to pass to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="user_data_free_func"
+                     transfer-ownership="none"
+                     scope="async">
+            <doc xml:whitespace="preserve">Function to free @user_data with when subscription is removed or %NULL.</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="signal_unsubscribe"
+              c:identifier="g_dbus_connection_signal_unsubscribe"
+              version="2.26">
+        <doc xml:whitespace="preserve">Unsubscribes from signals.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="subscription_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A subscription id obtained from g_dbus_connection_signal_subscribe().</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start_message_processing"
+              c:identifier="g_dbus_connection_start_message_processing"
+              version="2.26">
+        <doc xml:whitespace="preserve">If @connection was created with
+%G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING, this method
+starts processing messages. Does nothing on if @connection wasn't
+created with this flag or if the method has already been called.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unregister_object"
+              c:identifier="g_dbus_connection_unregister_object"
+              version="2.26">
+        <doc xml:whitespace="preserve">Unregisters an object.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the object was unregistered, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="registration_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A registration id obtained from g_dbus_connection_register_object().</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unregister_subtree"
+              c:identifier="g_dbus_connection_unregister_subtree"
+              version="2.26">
+        <doc xml:whitespace="preserve">Unregisters a subtree.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the subtree was unregistered, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="registration_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A subtree registration id obtained from g_dbus_connection_register_subtree().</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="address"
+                version="2.26"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A D-Bus address specifying potential endpoints that can be used
+when establishing the connection.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="authentication-observer"
+                version="2.26"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A #GDBusAuthObserver object to assist in the authentication process or %NULL.</doc>
+        <type name="DBusAuthObserver"/>
+      </property>
+      <property name="capabilities" version="2.26" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Flags from the #GDBusCapabilityFlags enumeration
+representing connection features negotiated with the other peer.</doc>
+        <type name="DBusCapabilityFlags"/>
+      </property>
+      <property name="closed" version="2.26" transfer-ownership="none">
+        <doc xml:whitespace="preserve">A boolean specifying whether the connection has been closed.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="exit-on-close"
+                version="2.26"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A boolean specifying whether the process will be terminated (by
+calling &lt;literal&gt;raise(SIGTERM)&lt;/literal&gt;) if the connection
+is closed by the remote peer.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="flags"
+                version="2.26"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Flags from the #GDBusConnectionFlags enumeration.</doc>
+        <type name="DBusConnectionFlags"/>
+      </property>
+      <property name="guid"
+                version="2.26"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The GUID of the peer performing the role of server when
+authenticating.
+If you are constructing a #GDBusConnection and pass
+%G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER in the
+#GDBusConnection:flags property then you MUST also set this
+property to a valid guid.
+If you are constructing a #GDBusConnection and pass
+%G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT in the
+#GDBusConnection:flags property you will be able to read the GUID
+of the other peer here after the connection has been successfully
+initialized.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="stream"
+                version="2.26"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The underlying #GIOStream used for I/O.</doc>
+        <type name="IOStream"/>
+      </property>
+      <property name="unique-name" version="2.26" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The unique name as assigned by the message bus or %NULL if the
+connection is not open or not a message bus connection.</doc>
+        <type name="utf8"/>
+      </property>
+      <glib:signal name="closed" version="2.26">
+        <doc xml:whitespace="preserve">Emitted when the connection is closed.
+The cause of this event can be
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+If g_dbus_connection_close() is called. In this case
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+If the remote peer closes the connection. In this case
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+If the remote peer sends invalid or malformed data. In this
+case @remote_peer_vanished is set to %FALSE and @error
+is set.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+Upon receiving this signal, you should give up your reference to
+once.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if @connection is closed because the remote peer closed its end of the connection.</doc>
+            <type name="gboolean"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GError with more details about the event or %NULL.</doc>
+            <type name="GObject.Error"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <bitfield name="DBusConnectionFlags"
+              version="2.26"
+              glib:type-name="GDBusConnectionFlags"
+              glib:get-type="g_dbus_connection_flags_get_type"
+              c:type="GDBusConnectionFlags">
+      <doc xml:whitespace="preserve">Flags used when creating a new #GDBusConnection.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="G_DBUS_CONNECTION_FLAGS_NONE"
+              glib:nick="none"/>
+      <member name="authentication_client"
+              value="1"
+              c:identifier="G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT"
+              glib:nick="authentication-client"/>
+      <member name="authentication_server"
+              value="2"
+              c:identifier="G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER"
+              glib:nick="authentication-server"/>
+      <member name="authentication_allow_anonymous"
+              value="4"
+              c:identifier="G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS"
+              glib:nick="authentication-allow-anonymous"/>
+      <member name="message_bus_connection"
+              value="8"
+              c:identifier="G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION"
+              glib:nick="message-bus-connection"/>
+      <member name="delay_message_processing"
+              value="16"
+              c:identifier="G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING"
+              glib:nick="delay-message-processing"/>
+    </bitfield>
+    <enumeration name="DBusError"
+                 version="2.26"
+                 glib:type-name="GDBusError"
+                 glib:get-type="g_dbus_error_get_type"
+                 c:type="GDBusError">
+      <doc xml:whitespace="preserve">A generic error; "something went wrong" - see the error message for
+more.
+There was not enough memory to complete an operation.
+The bus doesn't know how to launch a service to supply the bus name
+you wanted.
+The bus name you referenced doesn't exist (i.e. no application owns
+it).
+No reply to a message expecting one, usually means a timeout occurred.
+Something went wrong reading or writing to a socket, for example.
+A D-Bus bus address was malformed.
+Requested operation isn't supported (like ENOSYS on UNIX).
+Some limited resource is exhausted.
+Security restrictions don't allow doing what you're trying to do.
+Authentication didn't work.
+Unable to connect to server (probably caused by ECONNREFUSED on a
+socket).
+Certain timeout errors, possibly ETIMEDOUT on a socket.  Note that
+%G_DBUS_ERROR_NO_REPLY is used for message reply timeouts. Warning:
+this is confusingly-named given that %G_DBUS_ERROR_TIMED_OUT also
+exists. We can't fix it for compatibility reasons so just be
+careful.
+No network access (probably ENETUNREACH on a socket).
+Can't bind a socket since its address is in use (i.e. EADDRINUSE).
+The connection is disconnected and you're trying to use it.
+Invalid arguments passed to a method call.
+Missing file.
+Existing file and the operation you're using does not silently overwrite.
+Method name you invoked isn't known by the object you invoked it on.
+confusingly-named given that %G_DBUS_ERROR_TIMEOUT also exists. We
+can't fix it for compatibility reasons so just be careful.
+Tried to remove or modify a match rule that didn't exist.
+The match rule isn't syntactically valid.
+While starting a new process, the exec() call failed.
+While starting a new process, the fork() call failed.
+While starting a new process, the child exited with a status code.
+While starting a new process, the child exited on a signal.
+While starting a new process, something went wrong.
+We failed to setup the environment correctly.
+We failed to setup the config parser correctly.
+Bus name was not valid.
+Service file not found in system-services directory.
+Permissions are incorrect on the setuid helper.
+Service file invalid (Name, User or Exec missing).
+Tried to get a UNIX process ID and it wasn't available.
+Tried to get a UNIX process ID and it wasn't available.
+A type signature is not valid.
+A file contains invalid syntax or is otherwise broken.
+Asked for SELinux security context and it wasn't available.
+Asked for ADT audit data and it wasn't available.
+There's already an object with the requested object path.
+Error codes for the %G_DBUS_ERROR error domain.</doc>
+      <member name="failed"
+              value="0"
+              c:identifier="G_DBUS_ERROR_FAILED"
+              glib:nick="failed"/>
+      <member name="no_memory"
+              value="1"
+              c:identifier="G_DBUS_ERROR_NO_MEMORY"
+              glib:nick="no-memory"/>
+      <member name="service_unknown"
+              value="2"
+              c:identifier="G_DBUS_ERROR_SERVICE_UNKNOWN"
+              glib:nick="service-unknown"/>
+      <member name="name_has_no_owner"
+              value="3"
+              c:identifier="G_DBUS_ERROR_NAME_HAS_NO_OWNER"
+              glib:nick="name-has-no-owner"/>
+      <member name="no_reply"
+              value="4"
+              c:identifier="G_DBUS_ERROR_NO_REPLY"
+              glib:nick="no-reply"/>
+      <member name="io_error"
+              value="5"
+              c:identifier="G_DBUS_ERROR_IO_ERROR"
+              glib:nick="io-error"/>
+      <member name="bad_address"
+              value="6"
+              c:identifier="G_DBUS_ERROR_BAD_ADDRESS"
+              glib:nick="bad-address"/>
+      <member name="not_supported"
+              value="7"
+              c:identifier="G_DBUS_ERROR_NOT_SUPPORTED"
+              glib:nick="not-supported"/>
+      <member name="limits_exceeded"
+              value="8"
+              c:identifier="G_DBUS_ERROR_LIMITS_EXCEEDED"
+              glib:nick="limits-exceeded"/>
+      <member name="access_denied"
+              value="9"
+              c:identifier="G_DBUS_ERROR_ACCESS_DENIED"
+              glib:nick="access-denied"/>
+      <member name="auth_failed"
+              value="10"
+              c:identifier="G_DBUS_ERROR_AUTH_FAILED"
+              glib:nick="auth-failed"/>
+      <member name="no_server"
+              value="11"
+              c:identifier="G_DBUS_ERROR_NO_SERVER"
+              glib:nick="no-server"/>
+      <member name="timeout"
+              value="12"
+              c:identifier="G_DBUS_ERROR_TIMEOUT"
+              glib:nick="timeout"/>
+      <member name="no_network"
+              value="13"
+              c:identifier="G_DBUS_ERROR_NO_NETWORK"
+              glib:nick="no-network"/>
+      <member name="address_in_use"
+              value="14"
+              c:identifier="G_DBUS_ERROR_ADDRESS_IN_USE"
+              glib:nick="address-in-use"/>
+      <member name="disconnected"
+              value="15"
+              c:identifier="G_DBUS_ERROR_DISCONNECTED"
+              glib:nick="disconnected"/>
+      <member name="invalid_args"
+              value="16"
+              c:identifier="G_DBUS_ERROR_INVALID_ARGS"
+              glib:nick="invalid-args"/>
+      <member name="file_not_found"
+              value="17"
+              c:identifier="G_DBUS_ERROR_FILE_NOT_FOUND"
+              glib:nick="file-not-found"/>
+      <member name="file_exists"
+              value="18"
+              c:identifier="G_DBUS_ERROR_FILE_EXISTS"
+              glib:nick="file-exists"/>
+      <member name="unknown_method"
+              value="19"
+              c:identifier="G_DBUS_ERROR_UNKNOWN_METHOD"
+              glib:nick="unknown-method"/>
+      <member name="timed_out"
+              value="20"
+              c:identifier="G_DBUS_ERROR_TIMED_OUT"
+              glib:nick="timed-out"/>
+      <member name="match_rule_not_found"
+              value="21"
+              c:identifier="G_DBUS_ERROR_MATCH_RULE_NOT_FOUND"
+              glib:nick="match-rule-not-found"/>
+      <member name="match_rule_invalid"
+              value="22"
+              c:identifier="G_DBUS_ERROR_MATCH_RULE_INVALID"
+              glib:nick="match-rule-invalid"/>
+      <member name="spawn_exec_failed"
+              value="23"
+              c:identifier="G_DBUS_ERROR_SPAWN_EXEC_FAILED"
+              glib:nick="spawn-exec-failed"/>
+      <member name="spawn_fork_failed"
+              value="24"
+              c:identifier="G_DBUS_ERROR_SPAWN_FORK_FAILED"
+              glib:nick="spawn-fork-failed"/>
+      <member name="spawn_child_exited"
+              value="25"
+              c:identifier="G_DBUS_ERROR_SPAWN_CHILD_EXITED"
+              glib:nick="spawn-child-exited"/>
+      <member name="spawn_child_signaled"
+              value="26"
+              c:identifier="G_DBUS_ERROR_SPAWN_CHILD_SIGNALED"
+              glib:nick="spawn-child-signaled"/>
+      <member name="spawn_failed"
+              value="27"
+              c:identifier="G_DBUS_ERROR_SPAWN_FAILED"
+              glib:nick="spawn-failed"/>
+      <member name="spawn_setup_failed"
+              value="28"
+              c:identifier="G_DBUS_ERROR_SPAWN_SETUP_FAILED"
+              glib:nick="spawn-setup-failed"/>
+      <member name="spawn_config_invalid"
+              value="29"
+              c:identifier="G_DBUS_ERROR_SPAWN_CONFIG_INVALID"
+              glib:nick="spawn-config-invalid"/>
+      <member name="spawn_service_invalid"
+              value="30"
+              c:identifier="G_DBUS_ERROR_SPAWN_SERVICE_INVALID"
+              glib:nick="spawn-service-invalid"/>
+      <member name="spawn_service_not_found"
+              value="31"
+              c:identifier="G_DBUS_ERROR_SPAWN_SERVICE_NOT_FOUND"
+              glib:nick="spawn-service-not-found"/>
+      <member name="spawn_permissions_invalid"
+              value="32"
+              c:identifier="G_DBUS_ERROR_SPAWN_PERMISSIONS_INVALID"
+              glib:nick="spawn-permissions-invalid"/>
+      <member name="spawn_file_invalid"
+              value="33"
+              c:identifier="G_DBUS_ERROR_SPAWN_FILE_INVALID"
+              glib:nick="spawn-file-invalid"/>
+      <member name="spawn_no_memory"
+              value="34"
+              c:identifier="G_DBUS_ERROR_SPAWN_NO_MEMORY"
+              glib:nick="spawn-no-memory"/>
+      <member name="unix_process_id_unknown"
+              value="35"
+              c:identifier="G_DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN"
+              glib:nick="unix-process-id-unknown"/>
+      <member name="invalid_signature"
+              value="36"
+              c:identifier="G_DBUS_ERROR_INVALID_SIGNATURE"
+              glib:nick="invalid-signature"/>
+      <member name="invalid_file_content"
+              value="37"
+              c:identifier="G_DBUS_ERROR_INVALID_FILE_CONTENT"
+              glib:nick="invalid-file-content"/>
+      <member name="selinux_security_context_unknown"
+              value="38"
+              c:identifier="G_DBUS_ERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN"
+              glib:nick="selinux-security-context-unknown"/>
+      <member name="adt_audit_data_unknown"
+              value="39"
+              c:identifier="G_DBUS_ERROR_ADT_AUDIT_DATA_UNKNOWN"
+              glib:nick="adt-audit-data-unknown"/>
+      <member name="object_path_in_use"
+              value="40"
+              c:identifier="G_DBUS_ERROR_OBJECT_PATH_IN_USE"
+              glib:nick="object-path-in-use"/>
+    </enumeration>
+    <record name="DBusErrorEntry" c:type="GDBusErrorEntry" version="2.26">
+      <doc xml:whitespace="preserve">Struct used in g_dbus_error_register_error_domain().</doc>
+      <field name="error_code" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="dbus_error_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </record>
+    <callback name="DBusInterfaceGetPropertyFunc"
+              c:type="GDBusInterfaceGetPropertyFunc"
+              version="2.26">
+      <doc xml:whitespace="preserve">The type of the @get_property function in #GDBusInterfaceVTable.
+consumed - otherwise its reference count is decreased by one.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">A #GVariant with the value for @property_name or %NULL if</doc>
+        <type name="GLib.Variant" c:type="GVariant*"/>
+      </return-value>
+      <parameters>
+        <parameter name="connection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GDBusConnection.</doc>
+          <type name="DBusConnection" c:type="GDBusConnection*"/>
+        </parameter>
+        <parameter name="sender" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The unique bus name of the remote caller.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="object_path" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The object path that the method was invoked on.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="interface_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The D-Bus interface name for the property.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="property_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name of the property to get the value of.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="error" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Return location for error.</doc>
+          <type name="GLib.Error" c:type="GError**"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="6">
+          <doc xml:whitespace="preserve">The @user_data #gpointer passed to g_dbus_connection_register_object().</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="DBusInterfaceInfo"
+            c:type="GDBusInterfaceInfo"
+            version="2.26"
+            glib:type-name="GDBusInterfaceInfo"
+            glib:get-type="g_dbus_interface_info_get_type"
+            c:symbol-prefix="dbus_interface_info">
+      <doc xml:whitespace="preserve">Information about a D-Bus interface.</doc>
+      <field name="ref_count" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="methods" writable="1">
+        <type name="DBusMethodInfo" c:type="GDBusMethodInfo**"/>
+      </field>
+      <field name="signals" writable="1">
+        <type name="DBusSignalInfo" c:type="GDBusSignalInfo**"/>
+      </field>
+      <field name="properties" writable="1">
+        <type name="DBusPropertyInfo" c:type="GDBusPropertyInfo**"/>
+      </field>
+      <field name="annotations" writable="1">
+        <type name="DBusAnnotationInfo" c:type="GDBusAnnotationInfo**"/>
+      </field>
+      <method name="generate_xml"
+              c:identifier="g_dbus_interface_info_generate_xml"
+              version="2.26">
+        <doc xml:whitespace="preserve">Appends an XML representation of @info (and its children) to @string_builder.
+This function is typically used for generating introspection XML
+documents at run-time for handling the
+&lt;literal&gt;org.freedesktop.DBus.Introspectable.Introspect&lt;/literal&gt;
+method.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="indent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Indentation level.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="string_builder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GString to to append XML data to.</doc>
+            <type name="GLib.String" c:type="GString*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_method"
+              c:identifier="g_dbus_interface_info_lookup_method"
+              version="2.26">
+        <doc xml:whitespace="preserve">Looks up information about a method.
+This cost of this function is O(n) in number of methods.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GDBusMethodInfo or %NULL if not found. Do not free, it is owned by @info.</doc>
+          <type name="DBusMethodInfo" c:type="GDBusMethodInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A D-Bus method name (typically in CamelCase)</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_property"
+              c:identifier="g_dbus_interface_info_lookup_property"
+              version="2.26">
+        <doc xml:whitespace="preserve">Looks up information about a property.
+This cost of this function is O(n) in number of properties.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GDBusPropertyInfo or %NULL if not found. Do not free, it is owned by @info.</doc>
+          <type name="DBusPropertyInfo" c:type="GDBusPropertyInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A D-Bus property name (typically in CamelCase).</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_signal"
+              c:identifier="g_dbus_interface_info_lookup_signal"
+              version="2.26">
+        <doc xml:whitespace="preserve">Looks up information about a signal.
+This cost of this function is O(n) in number of signals.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GDBusSignalInfo or %NULL if not found. Do not free, it is owned by @info.</doc>
+          <type name="DBusSignalInfo" c:type="GDBusSignalInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A D-Bus signal name (typically in CamelCase)</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref"
+              c:identifier="g_dbus_interface_info_ref"
+              version="2.26">
+        <doc xml:whitespace="preserve">If @info is statically allocated does nothing. Otherwise increases
+the reference count.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The same @info.</doc>
+          <type name="DBusInterfaceInfo" c:type="GDBusInterfaceInfo*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="g_dbus_interface_info_unref"
+              version="2.26">
+        <doc xml:whitespace="preserve">If @info is statically allocated, does nothing. Otherwise decreases
+the reference count of @info. When its reference count drops to 0,
+the memory used is freed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <callback name="DBusInterfaceMethodCallFunc"
+              c:type="GDBusInterfaceMethodCallFunc"
+              version="2.26">
+      <doc xml:whitespace="preserve">The type of the @method_call function in #GDBusInterfaceVTable.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="connection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GDBusConnection.</doc>
+          <type name="DBusConnection" c:type="GDBusConnection*"/>
+        </parameter>
+        <parameter name="sender" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The unique bus name of the remote caller.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="object_path" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The object path that the method was invoked on.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="interface_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The D-Bus interface name the method was invoked on.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="method_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name of the method that was invoked.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="parameters" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GVariant tuple with parameters.</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </parameter>
+        <parameter name="invocation" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GDBusMethodInvocation object that can be used to return a value or error.</doc>
+          <type name="DBusMethodInvocation" c:type="GDBusMethodInvocation*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="7">
+          <doc xml:whitespace="preserve">The @user_data #gpointer passed to g_dbus_connection_register_object().</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="DBusInterfaceSetPropertyFunc"
+              c:type="GDBusInterfaceSetPropertyFunc"
+              version="2.26">
+      <doc xml:whitespace="preserve">The type of the @set_property function in #GDBusInterfaceVTable.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the property was set to @value, %FALSE if @error is set.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="connection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GDBusConnection.</doc>
+          <type name="DBusConnection" c:type="GDBusConnection*"/>
+        </parameter>
+        <parameter name="sender" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The unique bus name of the remote caller.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="object_path" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The object path that the method was invoked on.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="interface_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The D-Bus interface name for the property.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="property_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name of the property to get the value of.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The value to set the property to.</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </parameter>
+        <parameter name="error" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Return location for error.</doc>
+          <type name="GLib.Error" c:type="GError**"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="7">
+          <doc xml:whitespace="preserve">The @user_data #gpointer passed to g_dbus_connection_register_object().</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="DBusInterfaceVTable"
+            c:type="GDBusInterfaceVTable"
+            version="2.26">
+      <doc xml:whitespace="preserve">Virtual table for handling properties and method calls for a D-Bus
+interface.
+If you want to handle getting/setting D-Bus properties asynchronously, simply
+register an object with the &lt;literal&gt;org.freedesktop.DBus.Properties&lt;/literal&gt;
+D-Bus interface using g_dbus_connection_register_object().</doc>
+      <field name="method_call" writable="1">
+        <type name="DBusInterfaceMethodCallFunc"
+              c:type="GDBusInterfaceMethodCallFunc"/>
+      </field>
+      <field name="get_property" writable="1">
+        <type name="DBusInterfaceGetPropertyFunc"
+              c:type="GDBusInterfaceGetPropertyFunc"/>
+      </field>
+      <field name="set_property" writable="1">
+        <type name="DBusInterfaceSetPropertyFunc"
+              c:type="GDBusInterfaceSetPropertyFunc"/>
+      </field>
+      <field name="padding" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="8">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <class name="DBusMessage"
+           c:symbol-prefix="dbus_message"
+           c:type="GDBusMessage"
+           version="2.26"
+           parent="GObject.Object"
+           glib:type-name="GDBusMessage"
+           glib:get-type="g_dbus_message_get_type">
+      <doc xml:whitespace="preserve">The #GDBusMessage structure contains only private data and should
+only be accessed using the provided API.</doc>
+      <constructor name="new" c:identifier="g_dbus_message_new" version="2.26">
+        <doc xml:whitespace="preserve">Creates a new empty #GDBusMessage.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GDBusMessage. Free with g_object_unref().</doc>
+          <type name="DBusMessage" c:type="GDBusMessage*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_blob"
+                   c:identifier="g_dbus_message_new_from_blob"
+                   version="2.26"
+                   throws="1">
+        <doc xml:whitespace="preserve">Creates a new #GDBusMessage from the data stored at @blob. The byte
+order that the message was in can be retrieved using
+g_dbus_message_get_byte_order().
+g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A new #GDBusMessage or %NULL if @error is set. Free with</doc>
+          <type name="DBusMessage" c:type="GDBusMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="blob" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A blob represent a binary D-Bus message.</doc>
+            <type name="guint8" c:type="guchar*"/>
+          </parameter>
+          <parameter name="blob_len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The length of @blob.</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="capabilities" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GDBusCapabilityFlags describing what protocol features are supported.</doc>
+            <type name="DBusCapabilityFlags" c:type="GDBusCapabilityFlags"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_method_call"
+                   c:identifier="g_dbus_message_new_method_call"
+                   version="2.26">
+        <doc xml:whitespace="preserve">Creates a new #GDBusMessage for a method call.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GDBusMessage. Free with g_object_unref().</doc>
+          <type name="DBusMessage" c:type="GDBusMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid D-Bus name or %NULL.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid object path.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="interface_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid D-Bus interface name or %NULL.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="method" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid method name.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_signal"
+                   c:identifier="g_dbus_message_new_signal"
+                   version="2.26">
+        <doc xml:whitespace="preserve">Creates a new #GDBusMessage for a signal emission.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GDBusMessage. Free with g_object_unref().</doc>
+          <type name="DBusMessage" c:type="GDBusMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid object path.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="interface_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid D-Bus interface name.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="signal" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid signal name.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="bytes_needed"
+                c:identifier="g_dbus_message_bytes_needed"
+                version="2.26"
+                throws="1">
+        <doc xml:whitespace="preserve">Utility function to calculate how many bytes are needed to
+completely deserialize the D-Bus message stored at @blob.
+determine the size).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Number of bytes needed or -1 if @error is set (e.g. if</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="blob" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A blob represent a binary D-Bus message.</doc>
+            <type name="guint8" c:type="guchar*"/>
+          </parameter>
+          <parameter name="blob_len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The length of @blob (must be at least 16).</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="copy"
+              c:identifier="g_dbus_message_copy"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Copies @message. The copy is a deep copy and the returned
+#GDBusMessage is completely identical except that it is guaranteed
+to not be locked.
+This operation can fail if e.g. @message contains file descriptors
+and the per-process or system-wide open files limit is reached.
+g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A new #GDBusMessage or %NULL if @error is set. Free with</doc>
+          <type name="DBusMessage" c:type="GDBusMessage*"/>
+        </return-value>
+      </method>
+      <method name="get_arg0"
+              c:identifier="g_dbus_message_get_arg0"
+              version="2.26">
+        <doc xml:whitespace="preserve">Convenience to get the first item in the body of @message.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The string item or %NULL if the first item in the body of</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_body"
+              c:identifier="g_dbus_message_get_body"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the body of a message.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GVariant or %NULL if the body is empty. Do not free, it is owned by @message.</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+      </method>
+      <method name="get_byte_order"
+              c:identifier="g_dbus_message_get_byte_order">
+        <doc xml:whitespace="preserve">Gets the byte order of @message.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The byte order.</doc>
+          <type name="DBusMessageByteOrder" c:type="GDBusMessageByteOrder"/>
+        </return-value>
+      </method>
+      <method name="get_destination"
+              c:identifier="g_dbus_message_get_destination"
+              version="2.26">
+        <doc xml:whitespace="preserve">Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_DESTINATION header field.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The value.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_error_name"
+              c:identifier="g_dbus_message_get_error_name"
+              version="2.26">
+        <doc xml:whitespace="preserve">Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME header field.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The value.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_flags"
+              c:identifier="g_dbus_message_get_flags"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the flags for @message.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Flags that are set (typically values from the #GDBusMessageFlags enumeration bitwise ORed together).</doc>
+          <type name="DBusMessageFlags" c:type="GDBusMessageFlags"/>
+        </return-value>
+      </method>
+      <method name="get_header"
+              c:identifier="g_dbus_message_get_header"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets a header field on @message.
+otherwise. Do not free, it is owned by @message.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GVariant with the value if the header was found, %NULL</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="header_field" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A 8-bit unsigned integer (typically a value from the #GDBusMessageHeaderField enumeration)</doc>
+            <type name="DBusMessageHeaderField"
+                  c:type="GDBusMessageHeaderField"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_header_fields"
+              c:identifier="g_dbus_message_get_header_fields"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets an array of all header fields on @message that are set.
+%G_DBUS_MESSAGE_HEADER_FIELD_INVALID.  Each element is a
+#guchar. Free with g_free().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">An array of header fields terminated by</doc>
+          <type name="guint8" c:type="guchar*"/>
+        </return-value>
+      </method>
+      <method name="get_interface"
+              c:identifier="g_dbus_message_get_interface"
+              version="2.26">
+        <doc xml:whitespace="preserve">Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_INTERFACE header field.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The value.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_locked"
+              c:identifier="g_dbus_message_get_locked"
+              version="2.26">
+        <doc xml:whitespace="preserve">Checks whether @message is locked. To monitor changes to this
+value, conncet to the #GObject::notify signal to listen for changes
+on the #GDBusMessage:locked property.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @message is locked, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_member"
+              c:identifier="g_dbus_message_get_member"
+              version="2.26">
+        <doc xml:whitespace="preserve">Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_MEMBER header field.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The value.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_message_type"
+              c:identifier="g_dbus_message_get_message_type"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the type of @message.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A 8-bit unsigned integer (typically a value from the #GDBusMessageType enumeration).</doc>
+          <type name="DBusMessageType" c:type="GDBusMessageType"/>
+        </return-value>
+      </method>
+      <method name="get_num_unix_fds"
+              c:identifier="g_dbus_message_get_num_unix_fds"
+              version="2.26">
+        <doc xml:whitespace="preserve">Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS header field.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The value.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="get_path"
+              c:identifier="g_dbus_message_get_path"
+              version="2.26">
+        <doc xml:whitespace="preserve">Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_PATH header field.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The value.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_reply_serial"
+              c:identifier="g_dbus_message_get_reply_serial"
+              version="2.26">
+        <doc xml:whitespace="preserve">Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_REPLY_SERIAL header field.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The value.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="get_sender"
+              c:identifier="g_dbus_message_get_sender"
+              version="2.26">
+        <doc xml:whitespace="preserve">Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_SENDER header field.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The value.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_serial"
+              c:identifier="g_dbus_message_get_serial"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the serial for @message.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #guint32.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="get_signature"
+              c:identifier="g_dbus_message_get_signature"
+              version="2.26">
+        <doc xml:whitespace="preserve">Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE header field.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The value.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_unix_fd_list"
+              c:identifier="g_dbus_message_get_unix_fd_list"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the UNIX file descriptors associated with @message, if any.
+This method is only available on UNIX.
+associated. Do not free, this object is owned by @message.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GUnixFDList or %NULL if no file descriptors are</doc>
+          <type name="UnixFDList" c:type="GUnixFDList*"/>
+        </return-value>
+      </method>
+      <method name="lock" c:identifier="g_dbus_message_lock" version="2.26">
+        <doc xml:whitespace="preserve">If @message is locked, does nothing. Otherwise locks the message.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="new_method_error"
+              c:identifier="g_dbus_message_new_method_error"
+              version="2.26"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #GDBusMessage that is an error reply to @method_call_message.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GDBusMessage. Free with g_object_unref().</doc>
+          <type name="DBusMessage" c:type="GDBusMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="error_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid D-Bus error name.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="error_message_format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The D-Bus error message in a printf() format.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="new_method_error_literal"
+              c:identifier="g_dbus_message_new_method_error_literal"
+              version="2.26">
+        <doc xml:whitespace="preserve">Creates a new #GDBusMessage that is an error reply to @method_call_message.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GDBusMessage. Free with g_object_unref().</doc>
+          <type name="DBusMessage" c:type="GDBusMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="error_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid D-Bus error name.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="error_message" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The D-Bus error message.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="new_method_error_valist"
+              c:identifier="g_dbus_message_new_method_error_valist"
+              version="2.26"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Like g_dbus_message_new_method_error() but intended for language bindings.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GDBusMessage. Free with g_object_unref().</doc>
+          <type name="DBusMessage" c:type="GDBusMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="error_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid D-Bus error name.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="error_message_format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The D-Bus error message in a printf() format.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="var_args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Arguments for @error_message_format.</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="new_method_reply"
+              c:identifier="g_dbus_message_new_method_reply"
+              version="2.26">
+        <doc xml:whitespace="preserve">Creates a new #GDBusMessage that is a reply to @method_call_message.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GDBusMessage. Free with g_object_unref().</doc>
+          <type name="DBusMessage" c:type="GDBusMessage*"/>
+        </return-value>
+      </method>
+      <method name="print" c:identifier="g_dbus_message_print" version="2.26">
+        <doc xml:whitespace="preserve">Produces a human-readable multi-line description of @message.
+The contents of the description has no ABI guarantees, the contents
+and formatting is subject to change at any time. Typical output
+looks something like this:
+&lt;programlisting&gt;
+Headers:
+path -&gt; objectpath '/org/gtk/GDBus/TestObject'
+interface -&gt; 'org.gtk.GDBus.TestInterface'
+member -&gt; 'GimmeStdout'
+destination -&gt; ':1.146'
+UNIX File Descriptors:
+(none)
+&lt;/programlisting&gt;
+or
+&lt;programlisting&gt;
+Headers:
+reply-serial -&gt; uint32 4
+destination -&gt; ':1.159'
+sender -&gt; ':1.146'
+num-unix-fds -&gt; uint32 1
+UNIX File Descriptors:
+&lt;/programlisting&gt;</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A string that should be freed with g_free().</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="indent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Indentation level.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_body"
+              c:identifier="g_dbus_message_set_body"
+              version="2.26">
+        <doc xml:whitespace="preserve">Sets the body @message. As a side-effect the
+%G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE header field is set to the
+type string of @body (or cleared if @body is %NULL).
+If @body is floating, @message assumes ownership of @body.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="body" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Either %NULL or a #GVariant that is a tuple.</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_byte_order"
+              c:identifier="g_dbus_message_set_byte_order">
+        <doc xml:whitespace="preserve">Sets the byte order of @message.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="byte_order" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The byte order.</doc>
+            <type name="DBusMessageByteOrder" c:type="GDBusMessageByteOrder"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_destination"
+              c:identifier="g_dbus_message_set_destination"
+              version="2.26">
+        <doc xml:whitespace="preserve">Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_DESTINATION header field.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The value to set.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_error_name"
+              c:identifier="g_dbus_message_set_error_name"
+              version="2.26">
+        <doc xml:whitespace="preserve">Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME header field.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The value to set.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_flags"
+              c:identifier="g_dbus_message_set_flags"
+              version="2.26">
+        <doc xml:whitespace="preserve">Sets the flags to set on @message.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Flags for @message that are set (typically values from the #GDBusMessageFlags enumeration bitwise ORed together).</doc>
+            <type name="DBusMessageFlags" c:type="GDBusMessageFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_header"
+              c:identifier="g_dbus_message_set_header"
+              version="2.26">
+        <doc xml:whitespace="preserve">Sets a header field on @message.
+If @value is floating, @message assumes ownership of @value.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="header_field" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A 8-bit unsigned integer (typically a value from the #GDBusMessageHeaderField enumeration)</doc>
+            <type name="DBusMessageHeaderField"
+                  c:type="GDBusMessageHeaderField"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GVariant to set the header field or %NULL to clear the header field.</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_interface"
+              c:identifier="g_dbus_message_set_interface"
+              version="2.26">
+        <doc xml:whitespace="preserve">Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_INTERFACE header field.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The value to set.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_member"
+              c:identifier="g_dbus_message_set_member"
+              version="2.26">
+        <doc xml:whitespace="preserve">Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_MEMBER header field.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The value to set.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_message_type"
+              c:identifier="g_dbus_message_set_message_type"
+              version="2.26">
+        <doc xml:whitespace="preserve">Sets @message to be of @type.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A 8-bit unsigned integer (typically a value from the #GDBusMessageType enumeration).</doc>
+            <type name="DBusMessageType" c:type="GDBusMessageType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_num_unix_fds"
+              c:identifier="g_dbus_message_set_num_unix_fds"
+              version="2.26">
+        <doc xml:whitespace="preserve">Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS header field.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The value to set.</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_path"
+              c:identifier="g_dbus_message_set_path"
+              version="2.26">
+        <doc xml:whitespace="preserve">Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_PATH header field.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The value to set.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_reply_serial"
+              c:identifier="g_dbus_message_set_reply_serial"
+              version="2.26">
+        <doc xml:whitespace="preserve">Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_REPLY_SERIAL header field.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The value to set.</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sender"
+              c:identifier="g_dbus_message_set_sender"
+              version="2.26">
+        <doc xml:whitespace="preserve">Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_SENDER header field.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The value to set.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_serial"
+              c:identifier="g_dbus_message_set_serial"
+              version="2.26">
+        <doc xml:whitespace="preserve">Sets the serial for @message.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="serial" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #guint32.</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_signature"
+              c:identifier="g_dbus_message_set_signature"
+              version="2.26">
+        <doc xml:whitespace="preserve">Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE header field.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The value to set.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_unix_fd_list"
+              c:identifier="g_dbus_message_set_unix_fd_list"
+              version="2.26">
+        <doc xml:whitespace="preserve">Sets the UNIX file descriptors associated with @message. As a
+side-effect the %G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS header
+field is set to the number of fds in @fd_list (or cleared if
+This method is only available on UNIX.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd_list" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A #GUnixFDList or %NULL.</doc>
+            <type name="UnixFDList" c:type="GUnixFDList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_blob"
+              c:identifier="g_dbus_message_to_blob"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Serializes @message to a blob. The byte order returned by
+g_dbus_message_get_byte_order() will be used.
+generated by @message or %NULL if @error is set. Free with g_free().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A pointer to a valid binary D-Bus message of @out_size bytes</doc>
+          <type name="guint8" c:type="guchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="out_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Return location for size of generated blob.</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+          <parameter name="capabilities" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GDBusCapabilityFlags describing what protocol features are supported.</doc>
+            <type name="DBusCapabilityFlags" c:type="GDBusCapabilityFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_gerror"
+              c:identifier="g_dbus_message_to_gerror"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">If @message is not of type %G_DBUS_MESSAGE_TYPE_ERROR does
+nothing and returns %FALSE.
+Otherwise this method encodes the error in @message as a #GError
+using g_dbus_error_set_dbus_error() using the information in the
+%G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME header field of @message as
+well as the first string item in @message's body.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @error was set, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="locked" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+    </class>
+    <enumeration name="DBusMessageByteOrder"
+                 version="2.26"
+                 glib:type-name="GDBusMessageByteOrder"
+                 glib:get-type="g_dbus_message_byte_order_get_type"
+                 c:type="GDBusMessageByteOrder">
+      <doc xml:whitespace="preserve">Enumeration used to describe the byte order of a D-Bus message.</doc>
+      <member name="big_endian"
+              value="66"
+              c:identifier="G_DBUS_MESSAGE_BYTE_ORDER_BIG_ENDIAN"
+              glib:nick="big-endian"/>
+      <member name="little_endian"
+              value="108"
+              c:identifier="G_DBUS_MESSAGE_BYTE_ORDER_LITTLE_ENDIAN"
+              glib:nick="little-endian"/>
+    </enumeration>
+    <callback name="DBusMessageFilterFunction"
+              c:type="GDBusMessageFilterFunction"
+              version="2.26">
+      <doc xml:whitespace="preserve">Signature for function used in g_dbus_connection_add_filter().
+A filter function is passed a #GDBusMessage and expected to return
+a #GDBusMessage too. Passive filter functions that don't modify the
+message can simply return the @message object:
+|[
+static GDBusMessage *
+passive_filter (GDBusConnection *connection
+GDBusMessage    *message,
+gboolean         incoming,
+gpointer         user_data)
+{
+/&lt;!-- --&gt;* inspect @message *&lt;!-- --&gt;/
+return message;
+}
+]|
+Filter functions that wants to drop a message can simply return %NULL:
+|[
+static GDBusMessage *
+drop_filter (GDBusConnection *connection
+GDBusMessage    *message,
+gboolean         incoming,
+gpointer         user_data)
+{
+if (should_drop_message)
+{
+g_object_unref (message);
+message = NULL;
+}
+return message;
+}
+]|
+Finally, a filter function may modify a message by copying it:
+|[
+static GDBusMessage *
+modifying_filter (GDBusConnection *connection
+GDBusMessage    *message,
+gboolean         incoming,
+gpointer         user_data)
+{
+GDBusMessage *copy;
+GError *error;
+error = NULL;
+copy = g_dbus_message_copy (message, &amp;error);
+/&lt;!-- --&gt;* handle @error being is set *&lt;!-- --&gt;/
+g_object_unref (message);
+/&lt;!-- --&gt;* modify @copy *&lt;!-- --&gt;/
+return copy;
+}
+]|
+If the returned #GDBusMessage is different from @message and cannot
+be sent on @connection (it could use features, such as file
+descriptors, not compatible with @connection), then a warning is
+logged to &lt;emphasis&gt;standard error&lt;/emphasis&gt;. Applications can
+check this ahead of time using g_dbus_message_to_blob() passing a
+#GDBusCapabilityFlags value obtained from @connection.
+g_object_unref() or %NULL to drop the message. Passive filter
+functions can simply return the passed @message object.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">A #GDBusMessage that will be freed with</doc>
+        <type name="DBusMessage" c:type="GDBusMessage*"/>
+      </return-value>
+      <parameters>
+        <parameter name="connection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GDBusConnection.</doc>
+          <type name="DBusConnection" c:type="GDBusConnection*"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="full">
+          <doc xml:whitespace="preserve">A locked #GDBusMessage that the filter function takes ownership of.</doc>
+          <type name="DBusMessage" c:type="GDBusMessage*"/>
+        </parameter>
+        <parameter name="incoming" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if it is a message received from the other peer, %FALSE if it is a message to be sent to the other peer.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <doc xml:whitespace="preserve">User data passed when adding the filter.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="DBusMessageFlags"
+              version="2.26"
+              glib:type-name="GDBusMessageFlags"
+              glib:get-type="g_dbus_message_flags_get_type"
+              c:type="GDBusMessageFlags">
+      <doc xml:whitespace="preserve">Message flags used in #GDBusMessage.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="G_DBUS_MESSAGE_FLAGS_NONE"
+              glib:nick="none"/>
+      <member name="no_reply_expected"
+              value="1"
+              c:identifier="G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED"
+              glib:nick="no-reply-expected"/>
+      <member name="no_auto_start"
+              value="2"
+              c:identifier="G_DBUS_MESSAGE_FLAGS_NO_AUTO_START"
+              glib:nick="no-auto-start"/>
+    </bitfield>
+    <enumeration name="DBusMessageHeaderField"
+                 version="2.26"
+                 glib:type-name="GDBusMessageHeaderField"
+                 glib:get-type="g_dbus_message_header_field_get_type"
+                 c:type="GDBusMessageHeaderField">
+      <doc xml:whitespace="preserve">Header fields used in #GDBusMessage.</doc>
+      <member name="invalid"
+              value="0"
+              c:identifier="G_DBUS_MESSAGE_HEADER_FIELD_INVALID"
+              glib:nick="invalid"/>
+      <member name="path"
+              value="1"
+              c:identifier="G_DBUS_MESSAGE_HEADER_FIELD_PATH"
+              glib:nick="path"/>
+      <member name="interface"
+              value="2"
+              c:identifier="G_DBUS_MESSAGE_HEADER_FIELD_INTERFACE"
+              glib:nick="interface"/>
+      <member name="member"
+              value="3"
+              c:identifier="G_DBUS_MESSAGE_HEADER_FIELD_MEMBER"
+              glib:nick="member"/>
+      <member name="error_name"
+              value="4"
+              c:identifier="G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME"
+              glib:nick="error-name"/>
+      <member name="reply_serial"
+              value="5"
+              c:identifier="G_DBUS_MESSAGE_HEADER_FIELD_REPLY_SERIAL"
+              glib:nick="reply-serial"/>
+      <member name="destination"
+              value="6"
+              c:identifier="G_DBUS_MESSAGE_HEADER_FIELD_DESTINATION"
+              glib:nick="destination"/>
+      <member name="sender"
+              value="7"
+              c:identifier="G_DBUS_MESSAGE_HEADER_FIELD_SENDER"
+              glib:nick="sender"/>
+      <member name="signature"
+              value="8"
+              c:identifier="G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE"
+              glib:nick="signature"/>
+      <member name="num_unix_fds"
+              value="9"
+              c:identifier="G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS"
+              glib:nick="num-unix-fds"/>
+    </enumeration>
+    <enumeration name="DBusMessageType"
+                 version="2.26"
+                 glib:type-name="GDBusMessageType"
+                 glib:get-type="g_dbus_message_type_get_type"
+                 c:type="GDBusMessageType">
+      <doc xml:whitespace="preserve">Message types used in #GDBusMessage.</doc>
+      <member name="invalid"
+              value="0"
+              c:identifier="G_DBUS_MESSAGE_TYPE_INVALID"
+              glib:nick="invalid"/>
+      <member name="method_call"
+              value="1"
+              c:identifier="G_DBUS_MESSAGE_TYPE_METHOD_CALL"
+              glib:nick="method-call"/>
+      <member name="method_return"
+              value="2"
+              c:identifier="G_DBUS_MESSAGE_TYPE_METHOD_RETURN"
+              glib:nick="method-return"/>
+      <member name="error"
+              value="3"
+              c:identifier="G_DBUS_MESSAGE_TYPE_ERROR"
+              glib:nick="error"/>
+      <member name="signal"
+              value="4"
+              c:identifier="G_DBUS_MESSAGE_TYPE_SIGNAL"
+              glib:nick="signal"/>
+    </enumeration>
+    <record name="DBusMethodInfo"
+            c:type="GDBusMethodInfo"
+            version="2.26"
+            glib:type-name="GDBusMethodInfo"
+            glib:get-type="g_dbus_method_info_get_type"
+            c:symbol-prefix="dbus_method_info">
+      <doc xml:whitespace="preserve">Information about a method on an D-Bus interface.</doc>
+      <field name="ref_count" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="in_args" writable="1">
+        <type name="DBusArgInfo" c:type="GDBusArgInfo**"/>
+      </field>
+      <field name="out_args" writable="1">
+        <type name="DBusArgInfo" c:type="GDBusArgInfo**"/>
+      </field>
+      <field name="annotations" writable="1">
+        <type name="DBusAnnotationInfo" c:type="GDBusAnnotationInfo**"/>
+      </field>
+      <method name="ref" c:identifier="g_dbus_method_info_ref" version="2.26">
+        <doc xml:whitespace="preserve">If @info is statically allocated does nothing. Otherwise increases
+the reference count.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The same @info.</doc>
+          <type name="DBusMethodInfo" c:type="GDBusMethodInfo*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="g_dbus_method_info_unref"
+              version="2.26">
+        <doc xml:whitespace="preserve">If @info is statically allocated, does nothing. Otherwise decreases
+the reference count of @info. When its reference count drops to 0,
+the memory used is freed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="DBusMethodInvocation"
+           c:symbol-prefix="dbus_method_invocation"
+           c:type="GDBusMethodInvocation"
+           version="2.26"
+           parent="GObject.Object"
+           glib:type-name="GDBusMethodInvocation"
+           glib:get-type="g_dbus_method_invocation_get_type">
+      <doc xml:whitespace="preserve">The #GDBusMethodInvocation structure contains only private data and
+should only be accessed using the provided API.</doc>
+      <method name="get_connection"
+              c:identifier="g_dbus_method_invocation_get_connection"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the #GDBusConnection the method was invoked on.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GDBusConnection. Do not free, it is owned by @invocation.</doc>
+          <type name="DBusConnection" c:type="GDBusConnection*"/>
+        </return-value>
+      </method>
+      <method name="get_interface_name"
+              c:identifier="g_dbus_method_invocation_get_interface_name"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the name of the D-Bus interface the method was invoked on.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A string. Do not free, it is owned by @invocation.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_message"
+              c:identifier="g_dbus_method_invocation_get_message"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the #GDBusMessage for the method invocation. This is useful if
+you need to use low-level protocol features, such as UNIX file
+descriptor passing, that cannot be properly expressed in the
+#GVariant API.
+See &lt;xref linkend="gdbus-server"/&gt; and &lt;xref
+linkend="gdbus-unix-fd-client"/&gt; for an example of how to use this
+low-level API to send and receive UNIX file descriptors.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GDBusMessage. Do not free, it is owned by @invocation.</doc>
+          <type name="DBusMessage" c:type="GDBusMessage*"/>
+        </return-value>
+      </method>
+      <method name="get_method_info"
+              c:identifier="g_dbus_method_invocation_get_method_info"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets information about the method call, if any.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GDBusMethodInfo or %NULL. Do not free, it is owned by @invocation.</doc>
+          <type name="DBusMethodInfo" c:type="GDBusMethodInfo*"/>
+        </return-value>
+      </method>
+      <method name="get_method_name"
+              c:identifier="g_dbus_method_invocation_get_method_name"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the name of the method that was invoked.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A string. Do not free, it is owned by @invocation.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_object_path"
+              c:identifier="g_dbus_method_invocation_get_object_path"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the object path the method was invoked on.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A string. Do not free, it is owned by @invocation.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_parameters"
+              c:identifier="g_dbus_method_invocation_get_parameters"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the parameters of the method invocation.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GVariant. Do not free, it is owned by @invocation.</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+      </method>
+      <method name="get_sender"
+              c:identifier="g_dbus_method_invocation_get_sender"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the bus name that invoked the method.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A string. Do not free, it is owned by @invocation.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_user_data"
+              c:identifier="g_dbus_method_invocation_get_user_data"
+              version="2.26"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the @user_data #gpointer passed to g_dbus_connection_register_object().</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">A #gpointer.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="return_dbus_error"
+              c:identifier="g_dbus_method_invocation_return_dbus_error"
+              version="2.26">
+        <doc xml:whitespace="preserve">Finishes handling a D-Bus method call by returning an error.
+This method will free @invocation, you cannot use it afterwards.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="error_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid D-Bus error name.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="error_message" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid D-Bus error message.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="return_error"
+              c:identifier="g_dbus_method_invocation_return_error"
+              version="2.26"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Finishes handling a D-Bus method call by returning an error.
+See g_dbus_error_encode_gerror() for details about what error name
+will be returned on the wire. In a nutshell, if the given error is
+registered using g_dbus_error_register_error() the name given
+during registration is used. Otherwise, a name of the form
+&lt;literal&gt;org.gtk.GDBus.UnmappedGError.Quark...&lt;/literal&gt; is
+used. This provides transparent mapping of #GError between
+applications using GDBus.
+If you are writing an application intended to be portable,
+&lt;emphasis&gt;always&lt;/emphasis&gt; register errors with g_dbus_error_register_error()
+or use g_dbus_method_invocation_return_dbus_error().
+This method will free @invocation, you cannot use it afterwards.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="domain" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GQuark for the #GError error domain.</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="code" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The error code.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">printf()-style format.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="return_error_literal"
+              c:identifier="g_dbus_method_invocation_return_error_literal"
+              version="2.26">
+        <doc xml:whitespace="preserve">Like g_dbus_method_invocation_return_error() but without printf()-style formatting.
+This method will free @invocation, you cannot use it afterwards.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="domain" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GQuark for the #GError error domain.</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="code" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The error code.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="message" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The error message.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="return_error_valist"
+              c:identifier="g_dbus_method_invocation_return_error_valist"
+              version="2.26"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Like g_dbus_method_invocation_return_error() but intended for
+language bindings.
+This method will free @invocation, you cannot use it afterwards.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="domain" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GQuark for the #GError error domain.</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="code" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The error code.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">printf()-style format.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="var_args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#va_list of parameters for @format.</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="return_gerror"
+              c:identifier="g_dbus_method_invocation_return_gerror"
+              version="2.26">
+        <doc xml:whitespace="preserve">Like g_dbus_method_invocation_return_error() but takes a #GError
+instead of the error domain, error code and message.
+This method will free @invocation, you cannot use it afterwards.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="error" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GError.</doc>
+            <type name="GLib.Error" c:type="GError*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="return_value"
+              c:identifier="g_dbus_method_invocation_return_value"
+              version="2.26">
+        <doc xml:whitespace="preserve">Finishes handling a D-Bus method call by returning @parameters.
+If the @parameters GVariant is floating, it is consumed.
+It is an error if @parameters is not of the right format.
+This method will free @invocation, you cannot use it afterwards.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parameters" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GVariant tuple with out parameters for the method or %NULL if not passing any parameters.</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <record name="DBusNodeInfo"
+            c:type="GDBusNodeInfo"
+            version="2.26"
+            glib:type-name="GDBusNodeInfo"
+            glib:get-type="g_dbus_node_info_get_type"
+            c:symbol-prefix="dbus_node_info">
+      <doc xml:whitespace="preserve">Information about nodes in a remote object hierarchy.</doc>
+      <field name="ref_count" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="path" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="interfaces" writable="1">
+        <type name="DBusInterfaceInfo" c:type="GDBusInterfaceInfo**"/>
+      </field>
+      <field name="nodes" writable="1">
+        <type name="DBusNodeInfo" c:type="GDBusNodeInfo**"/>
+      </field>
+      <field name="annotations" writable="1">
+        <type name="DBusAnnotationInfo" c:type="GDBusAnnotationInfo**"/>
+      </field>
+      <constructor name="new_for_xml"
+                   c:identifier="g_dbus_node_info_new_for_xml"
+                   version="2.26"
+                   throws="1">
+        <doc xml:whitespace="preserve">Parses @xml_data and returns a #GDBusNodeInfo representing the data.
+with g_dbus_node_info_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GDBusNodeInfo structure or %NULL if @error is set. Free</doc>
+          <type name="DBusNodeInfo" c:type="GDBusNodeInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="xml_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Valid D-Bus introspection XML.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="generate_xml"
+              c:identifier="g_dbus_node_info_generate_xml"
+              version="2.26">
+        <doc xml:whitespace="preserve">Appends an XML representation of @info (and its children) to @string_builder.
+This function is typically used for generating introspection XML documents at run-time for
+handling the &lt;literal&gt;org.freedesktop.DBus.Introspectable.Introspect&lt;/literal&gt; method.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="indent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Indentation level.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="string_builder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GString to to append XML data to.</doc>
+            <type name="GLib.String" c:type="GString*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_interface"
+              c:identifier="g_dbus_node_info_lookup_interface"
+              version="2.26">
+        <doc xml:whitespace="preserve">Looks up information about an interface.
+This cost of this function is O(n) in number of interfaces.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GDBusInterfaceInfo or %NULL if not found. Do not free, it is owned by @info.</doc>
+          <type name="DBusInterfaceInfo" c:type="GDBusInterfaceInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A D-Bus interface name.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref" c:identifier="g_dbus_node_info_ref" version="2.26">
+        <doc xml:whitespace="preserve">If @info is statically allocated does nothing. Otherwise increases
+the reference count.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The same @info.</doc>
+          <type name="DBusNodeInfo" c:type="GDBusNodeInfo*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="g_dbus_node_info_unref"
+              version="2.26">
+        <doc xml:whitespace="preserve">If @info is statically allocated, does nothing. Otherwise decreases
+the reference count of @info. When its reference count drops to 0,
+the memory used is freed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="DBusPropertyInfo"
+            c:type="GDBusPropertyInfo"
+            version="2.26"
+            glib:type-name="GDBusPropertyInfo"
+            glib:get-type="g_dbus_property_info_get_type"
+            c:symbol-prefix="dbus_property_info">
+      <doc xml:whitespace="preserve">Information about a D-Bus property on a D-Bus interface.</doc>
+      <field name="ref_count" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="signature" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="DBusPropertyInfoFlags" c:type="GDBusPropertyInfoFlags"/>
+      </field>
+      <field name="annotations" writable="1">
+        <type name="DBusAnnotationInfo" c:type="GDBusAnnotationInfo**"/>
+      </field>
+      <method name="ref"
+              c:identifier="g_dbus_property_info_ref"
+              version="2.26">
+        <doc xml:whitespace="preserve">If @info is statically allocated does nothing. Otherwise increases
+the reference count.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The same @info.</doc>
+          <type name="DBusPropertyInfo" c:type="GDBusPropertyInfo*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="g_dbus_property_info_unref"
+              version="2.26">
+        <doc xml:whitespace="preserve">If @info is statically allocated, does nothing. Otherwise decreases
+the reference count of @info. When its reference count drops to 0,
+the memory used is freed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <bitfield name="DBusPropertyInfoFlags"
+              version="2.26"
+              glib:type-name="GDBusPropertyInfoFlags"
+              glib:get-type="g_dbus_property_info_flags_get_type"
+              c:type="GDBusPropertyInfoFlags">
+      <doc xml:whitespace="preserve">Flags describing the access control of a D-Bus property.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="G_DBUS_PROPERTY_INFO_FLAGS_NONE"
+              glib:nick="none"/>
+      <member name="readable"
+              value="1"
+              c:identifier="G_DBUS_PROPERTY_INFO_FLAGS_READABLE"
+              glib:nick="readable"/>
+      <member name="writable"
+              value="2"
+              c:identifier="G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE"
+              glib:nick="writable"/>
+    </bitfield>
+    <class name="DBusProxy"
+           c:symbol-prefix="dbus_proxy"
+           c:type="GDBusProxy"
+           version="2.26"
+           parent="GObject.Object"
+           glib:type-name="GDBusProxy"
+           glib:get-type="g_dbus_proxy_get_type"
+           glib:type-struct="DBusProxyClass">
+      <doc xml:whitespace="preserve">The #GDBusProxy structure contains only private data and
+should only be accessed using the provided API.</doc>
+      <implements name="AsyncInitable"/>
+      <implements name="Initable"/>
+      <constructor name="new_finish"
+                   c:identifier="g_dbus_proxy_new_finish"
+                   version="2.26"
+                   throws="1">
+        <doc xml:whitespace="preserve">Finishes creating a #GDBusProxy.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GDBusProxy or %NULL if @error is set. Free with g_object_unref().</doc>
+          <type name="DBusProxy" c:type="GDBusProxy*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GAsyncResult obtained from the #GAsyncReadyCallback function passed to g_dbus_proxy_new().</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_for_bus_finish"
+                   c:identifier="g_dbus_proxy_new_for_bus_finish"
+                   version="2.26"
+                   throws="1">
+        <doc xml:whitespace="preserve">Finishes creating a #GDBusProxy.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GDBusProxy or %NULL if @error is set. Free with g_object_unref().</doc>
+          <type name="DBusProxy" c:type="GDBusProxy*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GAsyncResult obtained from the #GAsyncReadyCallback function passed to g_dbus_proxy_new_for_bus().</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_for_bus_sync"
+                   c:identifier="g_dbus_proxy_new_for_bus_sync"
+                   version="2.26"
+                   throws="1">
+        <doc xml:whitespace="preserve">Like g_dbus_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+See &lt;xref linkend="gdbus-wellknown-proxy"/&gt; for an example of how #GDBusProxy can be used.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GDBusProxy or %NULL if error is set. Free with g_object_unref().</doc>
+          <type name="DBusProxy" c:type="GDBusProxy*"/>
+        </return-value>
+        <parameters>
+          <parameter name="bus_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GBusType.</doc>
+            <type name="BusType" c:type="GBusType"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Flags used when constructing the proxy.</doc>
+            <type name="DBusProxyFlags" c:type="GDBusProxyFlags"/>
+          </parameter>
+          <parameter name="info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GDBusInterfaceInfo specifying the minimal interface that @proxy conforms to or %NULL.</doc>
+            <type name="DBusInterfaceInfo" c:type="GDBusInterfaceInfo*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A bus name (well-known or unique).</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="object_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An object path.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="interface_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A D-Bus interface name.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_sync"
+                   c:identifier="g_dbus_proxy_new_sync"
+                   version="2.26"
+                   throws="1">
+        <doc xml:whitespace="preserve">Creates a proxy for accessing @interface_name on the remote object
+at @object_path owned by @name at @connection and synchronously
+loads D-Bus properties unless the
+%G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES flag is used.
+If the %G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS flag is not set, also sets up
+match rules for signals. Connect to the #GDBusProxy::g-signal signal
+to handle signals from the remote object.
+If @name is a well-known name and the
+%G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag isn't set and no name
+owner currently exists, the message bus will be requested to launch
+a name owner for the name.
+This is a synchronous failable constructor. See g_dbus_proxy_new()
+and g_dbus_proxy_new_finish() for the asynchronous version.
+See &lt;xref linkend="gdbus-wellknown-proxy"/&gt; for an example of how #GDBusProxy can be used.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GDBusProxy or %NULL if error is set. Free with g_object_unref().</doc>
+          <type name="DBusProxy" c:type="GDBusProxy*"/>
+        </return-value>
+        <parameters>
+          <parameter name="connection" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GDBusConnection.</doc>
+            <type name="DBusConnection" c:type="GDBusConnection*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Flags used when constructing the proxy.</doc>
+            <type name="DBusProxyFlags" c:type="GDBusProxyFlags"/>
+          </parameter>
+          <parameter name="info" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A #GDBusInterfaceInfo specifying the minimal interface that @proxy conforms to or %NULL.</doc>
+            <type name="DBusInterfaceInfo" c:type="GDBusInterfaceInfo*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="object_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An object path.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="interface_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A D-Bus interface name.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="new" c:identifier="g_dbus_proxy_new" version="2.26">
+        <doc xml:whitespace="preserve">Creates a proxy for accessing @interface_name on the remote object
+at @object_path owned by @name at @connection and asynchronously
+loads D-Bus properties unless the
+%G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES flag is used. Connect to
+the #GDBusProxy::g-properties-changed signal to get notified about
+property changes.
+If the %G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS flag is not set, also sets up
+match rules for signals. Connect to the #GDBusProxy::g-signal signal
+to handle signals from the remote object.
+If @name is a well-known name and the
+%G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag isn't set and no name
+owner currently exists, the message bus will be requested to launch
+a name owner for the name.
+This is a failable asynchronous constructor - when the proxy is
+ready, @callback will be invoked and you can use
+g_dbus_proxy_new_finish() to get the result.
+See g_dbus_proxy_new_sync() and for a synchronous version of this constructor.
+See &lt;xref linkend="gdbus-wellknown-proxy"/&gt; for an example of how #GDBusProxy can be used.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="connection" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GDBusConnection.</doc>
+            <type name="DBusConnection" c:type="GDBusConnection*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Flags used when constructing the proxy.</doc>
+            <type name="DBusProxyFlags" c:type="GDBusProxyFlags"/>
+          </parameter>
+          <parameter name="info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GDBusInterfaceInfo specifying the minimal interface that @proxy conforms to or %NULL.</doc>
+            <type name="DBusInterfaceInfo" c:type="GDBusInterfaceInfo*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="object_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An object path.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="interface_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A D-Bus interface name.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="8">
+            <doc xml:whitespace="preserve">Callback function to invoke when the proxy is ready.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">User data to pass to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="new_for_bus"
+                c:identifier="g_dbus_proxy_new_for_bus"
+                version="2.26">
+        <doc xml:whitespace="preserve">Like g_dbus_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+See &lt;xref linkend="gdbus-wellknown-proxy"/&gt; for an example of how #GDBusProxy can be used.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="bus_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GBusType.</doc>
+            <type name="BusType" c:type="GBusType"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Flags used when constructing the proxy.</doc>
+            <type name="DBusProxyFlags" c:type="GDBusProxyFlags"/>
+          </parameter>
+          <parameter name="info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GDBusInterfaceInfo specifying the minimal interface that @proxy conforms to or %NULL.</doc>
+            <type name="DBusInterfaceInfo" c:type="GDBusInterfaceInfo*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A bus name (well-known or unique).</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="object_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An object path.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="interface_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A D-Bus interface name.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="8">
+            <doc xml:whitespace="preserve">Callback function to invoke when the proxy is ready.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">User data to pass to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="call" c:identifier="g_dbus_proxy_call" version="2.26">
+        <doc xml:whitespace="preserve">Asynchronously invokes the @method_name method on @proxy.
+If @method_name contains any dots, then @name is split into interface and
+method name parts. This allows using @proxy for invoking methods on
+other interfaces.
+If the #GDBusConnection associated with @proxy is closed then
+the operation will fail with %G_IO_ERROR_CLOSED. If
+%G_IO_ERROR_CANCELLED. If @parameters contains a value not
+compatible with the D-Bus protocol, the operation fails with
+%G_IO_ERROR_INVALID_ARGUMENT.
+If the @parameters #GVariant is floating, it is consumed. This allows
+convenient 'inline' use of g_variant_new(), e.g.:
+|[
+g_dbus_proxy_call (proxy,
+"TwoStrings",
+g_variant_new ("(ss)",
+"Thing One",
+"Thing Two"),
+G_DBUS_CALL_FLAGS_NONE,
+-1,
+NULL,
+(GAsyncReadyCallback) two_strings_done,
+&amp;amp;data);
+]|
+This is an asynchronous method. When the operation is finished,
+&lt;link linkend="g-main-context-push-thread-default"&gt;thread-default
+main loop&lt;/link&gt; of the thread you are calling this method from.
+You can then call g_dbus_proxy_call_finish() to get the result of
+the operation. See g_dbus_proxy_call_sync() for the synchronous
+version of this method.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="method_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Name of method to invoke.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="parameters" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GVariant tuple with parameters for the signal or %NULL if not passing parameters.</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Flags from the #GDBusCallFlags enumeration.</doc>
+            <type name="DBusCallFlags" c:type="GDBusCallFlags"/>
+          </parameter>
+          <parameter name="timeout_msec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The timeout in milliseconds or -1 to use the proxy default timeout.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="6">
+            <doc xml:whitespace="preserve">A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The data to pass to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="call_finish"
+              c:identifier="g_dbus_proxy_call_finish"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an operation started with g_dbus_proxy_call().
+return values. Free with g_variant_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">%NULL if @error is set. Otherwise a #GVariant tuple with</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GAsyncResult obtained from the #GAsyncReadyCallback passed to g_dbus_proxy_call().</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="call_sync"
+              c:identifier="g_dbus_proxy_call_sync"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Synchronously invokes the @method_name method on @proxy.
+If @method_name contains any dots, then @name is split into interface and
+method name parts. This allows using @proxy for invoking methods on
+other interfaces.
+If the #GDBusConnection associated with @proxy is disconnected then
+the operation will fail with %G_IO_ERROR_CLOSED. If
+%G_IO_ERROR_CANCELLED. If @parameters contains a value not
+compatible with the D-Bus protocol, the operation fails with
+%G_IO_ERROR_INVALID_ARGUMENT.
+If the @parameters #GVariant is floating, it is consumed. This allows
+convenient 'inline' use of g_variant_new(), e.g.:
+|[
+g_dbus_proxy_call_sync (proxy,
+"TwoStrings",
+g_variant_new ("(ss)",
+"Thing One",
+"Thing Two"),
+G_DBUS_CALL_FLAGS_NONE,
+-1,
+NULL,
+&amp;amp;error);
+]|
+The calling thread is blocked until a reply is received. See
+g_dbus_proxy_call() for the asynchronous version of this
+method.
+return values. Free with g_variant_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">%NULL if @error is set. Otherwise a #GVariant tuple with</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="method_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Name of method to invoke.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="parameters" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GVariant tuple with parameters for the signal or %NULL if not passing parameters.</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Flags from the #GDBusCallFlags enumeration.</doc>
+            <type name="DBusCallFlags" c:type="GDBusCallFlags"/>
+          </parameter>
+          <parameter name="timeout_msec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The timeout in milliseconds or -1 to use the proxy default timeout.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cached_property"
+              c:identifier="g_dbus_proxy_get_cached_property"
+              version="2.26">
+        <doc xml:whitespace="preserve">Looks up the value for a property from the cache. This call does no
+blocking IO.
+If @proxy has an expected interface (see
+#GDBusProxy:g-interface-info), then @property_name (for existence)
+is checked against it.
+for @property_name or %NULL if the value is not in the cache. The
+returned reference must be freed with g_variant_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A reference to the #GVariant instance that holds the value</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Property name.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cached_property_names"
+              c:identifier="g_dbus_proxy_get_cached_property_names"
+              version="2.26"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the names of all cached properties on @proxy.
+no cached properties. Free the returned array with g_strfreev().</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">A %NULL-terminated array of strings or %NULL if @proxy has</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_connection"
+              c:identifier="g_dbus_proxy_get_connection"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the connection @proxy is for.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GDBusConnection owned by @proxy. Do not free.</doc>
+          <type name="DBusConnection" c:type="GDBusConnection*"/>
+        </return-value>
+      </method>
+      <method name="get_default_timeout"
+              c:identifier="g_dbus_proxy_get_default_timeout"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the timeout to use if -1 (specifying default timeout) is
+passed as @timeout_msec in the g_dbus_proxy_call() and
+g_dbus_proxy_call_sync() functions.
+See the #GDBusProxy:g-default-timeout property for more details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Timeout to use for @proxy.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_flags"
+              c:identifier="g_dbus_proxy_get_flags"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the flags that @proxy was constructed with.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Flags from the #GDBusProxyFlags enumeration.</doc>
+          <type name="DBusProxyFlags" c:type="GDBusProxyFlags"/>
+        </return-value>
+      </method>
+      <method name="get_interface_info"
+              c:identifier="g_dbus_proxy_get_interface_info"
+              version="2.26">
+        <doc xml:whitespace="preserve">Returns the #GDBusInterfaceInfo, if any, specifying the minimal
+interface that @proxy conforms to.
+See the #GDBusProxy:g-interface-info property for more details.
+object, it is owned by @proxy.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GDBusInterfaceInfo or %NULL. Do not unref the returned</doc>
+          <type name="DBusInterfaceInfo" c:type="GDBusInterfaceInfo*"/>
+        </return-value>
+      </method>
+      <method name="get_interface_name"
+              c:identifier="g_dbus_proxy_get_interface_name"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the D-Bus interface name @proxy is for.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A string owned by @proxy. Do not free.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_name"
+              c:identifier="g_dbus_proxy_get_name"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the name that @proxy was constructed for.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A string owned by @proxy. Do not free.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_name_owner"
+              c:identifier="g_dbus_proxy_get_name_owner"
+              version="2.26">
+        <doc xml:whitespace="preserve">The unique name that owns the name that @proxy is for or %NULL if
+no-one currently owns that name. You may connect to the
+#GObject::notify signal to track changes to the
+#GDBusProxy:g-name-owner property.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The name owner or %NULL if no name owner exists. Free with g_free().</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_object_path"
+              c:identifier="g_dbus_proxy_get_object_path"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the object path @proxy is for.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A string owned by @proxy. Do not free.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_cached_property"
+              c:identifier="g_dbus_proxy_set_cached_property"
+              version="2.26">
+        <doc xml:whitespace="preserve">If @value is not %NULL, sets the cached value for the property with
+name @property_name to the value in @value.
+If @value is %NULL, then the cached value is removed from the
+property cache.
+If @proxy has an expected interface (see
+#GDBusProxy:g-interface-info), then @property_name (for existence)
+and @value (for the type) is checked against it.
+If the @value #GVariant is floating, it is consumed. This allows
+convenient 'inline' use of g_variant_new(), e.g.
+|[
+g_dbus_proxy_set_cached_property (proxy,
+"SomeProperty",
+g_variant_new ("(si)",
+"A String",
+42));
+]|
+Normally you will not need to use this method since @proxy is
+tracking changes using the
+&lt;literal&gt;org.freedesktop.DBus.Properties.PropertiesChanged&lt;/literal&gt;
+D-Bus signal. However, for performance reasons an object may decide
+to not use this signal for some properties and instead use a
+proprietary out-of-band mechanism to transmit changes.
+As a concrete example, consider an object with a property
+&lt;literal&gt;ChatroomParticipants&lt;/literal&gt; which is an array of
+strings. Instead of transmitting the same (long) array every time
+the property changes, it is more efficient to only transmit the
+delta using e.g. signals &lt;literal&gt;ChatroomParticipantJoined(String
+name)&lt;/literal&gt; and &lt;literal&gt;ChatroomParticipantParted(String
+name)&lt;/literal&gt;.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Property name.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value for the property or %NULL to remove it from the cache.</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_default_timeout"
+              c:identifier="g_dbus_proxy_set_default_timeout"
+              version="2.26">
+        <doc xml:whitespace="preserve">Sets the timeout to use if -1 (specifying default timeout) is
+passed as @timeout_msec in the g_dbus_proxy_call() and
+g_dbus_proxy_call_sync() functions.
+See the #GDBusProxy:g-default-timeout property for more details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeout_msec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Timeout in milliseconds.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_interface_info"
+              c:identifier="g_dbus_proxy_set_interface_info"
+              version="2.26">
+        <doc xml:whitespace="preserve">Ensure that interactions with @proxy conform to the given
+interface.  For example, when completing a method call, if the type
+signature of the message isn't what's expected, the given #GError
+is set.  Signals that have a type signature mismatch are simply
+dropped.
+See the #GDBusProxy:g-interface-info property for more details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Minimum interface this proxy conforms to or %NULL to unset.</doc>
+            <type name="DBusInterfaceInfo" c:type="GDBusInterfaceInfo*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="g-bus-type"
+                version="2.26"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If this property is not %G_BUS_TYPE_NONE, then
+#GDBusProxy:g-connection must be %NULL and will be set to the
+#GDBusConnection obtained by calling g_bus_get() with the value
+of this property.</doc>
+        <type name="BusType"/>
+      </property>
+      <property name="g-connection"
+                version="2.26"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GDBusConnection the proxy is for.</doc>
+        <type name="DBusConnection"/>
+      </property>
+      <property name="g-default-timeout"
+                version="2.26"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The timeout to use if -1 (specifying default timeout) is passed
+as @timeout_msec in the g_dbus_proxy_call() and
+g_dbus_proxy_call_sync() functions.
+This allows applications to set a proxy-wide timeout for all
+remote method invocations on the proxy. If this property is -1,
+the default timeout (typically 25 seconds) is used. If set to
+%G_MAXINT, then no timeout is used.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="g-flags"
+                version="2.26"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Flags from the #GDBusProxyFlags enumeration.</doc>
+        <type name="DBusProxyFlags"/>
+      </property>
+      <property name="g-interface-info"
+                version="2.26"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Ensure that interactions with this proxy conform to the given
+interface.  For example, when completing a method call, if the
+type signature of the message isn't what's expected, the given
+#GError is set.  Signals that have a type signature mismatch are
+simply dropped.</doc>
+        <type name="DBusInterfaceInfo"/>
+      </property>
+      <property name="g-interface-name"
+                version="2.26"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The D-Bus interface name the proxy is for.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="g-name"
+                version="2.26"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The well-known or unique name that the proxy is for.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="g-name-owner" version="2.26" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The unique name that owns #GDBusProxy:name or %NULL if no-one
+currently owns that name. You may connect to #GObject::notify signal to
+track changes to this property.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="g-object-path"
+                version="2.26"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The object path the proxy is for.</doc>
+        <type name="utf8"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="DBusProxyPrivate" c:type="GDBusProxyPrivate*"/>
+      </field>
+      <glib:signal name="g-properties-changed"
+                   version="2.26"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Emitted when one or more D-Bus properties on @proxy changes. The
+local cache has already been updated when this signal fires. Note
+that both @changed_properties and @invalidated_properties are
+guaranteed to never be %NULL (either may be empty though).
+This signal corresponds to the
+&lt;literal&gt;PropertiesChanged&lt;/literal&gt; D-Bus signal on the
+&lt;literal&gt;org.freedesktop.DBus.Properties&lt;/literal&gt; interface.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GVariant containing the properties that changed</doc>
+            <type name="GLib.Variant"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A %NULL terminated array of properties that was invalidated</doc>
+            <type/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="g-signal" version="2.26">
+        <doc xml:whitespace="preserve">Emitted when a signal from the remote object and interface that @proxy is for, has been received.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The sender of the signal or %NULL if the connection is not a bus connection.</doc>
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The name of the signal.</doc>
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GVariant tuple with parameters for the signal.</doc>
+            <type name="GLib.Variant"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="DBusProxyClass"
+            c:type="GDBusProxyClass"
+            glib:is-gtype-struct-for="DBusProxy"
+            version="2.26">
+      <doc xml:whitespace="preserve">Class structure for #GDBusProxy.</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="g_properties_changed">
+        <callback name="g_properties_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="proxy" transfer-ownership="none">
+              <type name="DBusProxy" c:type="GDBusProxy*"/>
+            </parameter>
+            <parameter name="changed_properties" transfer-ownership="none">
+              <type name="GLib.Variant" c:type="GVariant*"/>
+            </parameter>
+            <parameter name="invalidated_properties" transfer-ownership="none">
+              <type name="utf8" c:type="gchar**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="g_signal">
+        <callback name="g_signal">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="proxy" transfer-ownership="none">
+              <type name="DBusProxy" c:type="GDBusProxy*"/>
+            </parameter>
+            <parameter name="sender_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="signal_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="parameters" transfer-ownership="none">
+              <type name="GLib.Variant" c:type="GVariant*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="padding">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="32">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="DBusProxyFlags"
+              version="2.26"
+              glib:type-name="GDBusProxyFlags"
+              glib:get-type="g_dbus_proxy_flags_get_type"
+              c:type="GDBusProxyFlags">
+      <doc xml:whitespace="preserve">Flags used when constructing an instance of a #GDBusProxy derived class.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="G_DBUS_PROXY_FLAGS_NONE"
+              glib:nick="none"/>
+      <member name="do_not_load_properties"
+              value="1"
+              c:identifier="G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES"
+              glib:nick="do-not-load-properties"/>
+      <member name="do_not_connect_signals"
+              value="2"
+              c:identifier="G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS"
+              glib:nick="do-not-connect-signals"/>
+      <member name="do_not_auto_start"
+              value="4"
+              c:identifier="G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START"
+              glib:nick="do-not-auto-start"/>
+    </bitfield>
+    <record name="DBusProxyPrivate" c:type="GDBusProxyPrivate" disguised="1">
+    </record>
+    <bitfield name="DBusSendMessageFlags"
+              version="2.26"
+              glib:type-name="GDBusSendMessageFlags"
+              glib:get-type="g_dbus_send_message_flags_get_type"
+              c:type="GDBusSendMessageFlags">
+      <doc xml:whitespace="preserve">Flags used when sending #GDBusMessage&lt;!-- --&gt;s on a #GDBusConnection.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="G_DBUS_SEND_MESSAGE_FLAGS_NONE"
+              glib:nick="none"/>
+      <member name="preserve_serial"
+              value="1"
+              c:identifier="G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL"
+              glib:nick="preserve-serial"/>
+    </bitfield>
+    <class name="DBusServer"
+           c:symbol-prefix="dbus_server"
+           c:type="GDBusServer"
+           version="2.26"
+           parent="GObject.Object"
+           glib:type-name="GDBusServer"
+           glib:get-type="g_dbus_server_get_type">
+      <doc xml:whitespace="preserve">The #GDBusServer structure contains only private data and
+should only be accessed using the provided API.</doc>
+      <implements name="Initable"/>
+      <constructor name="new_sync"
+                   c:identifier="g_dbus_server_new_sync"
+                   version="2.26"
+                   throws="1">
+        <doc xml:whitespace="preserve">Creates a new D-Bus server that listens on the first address in
+Once constructed, you can use g_dbus_server_get_client_address() to
+get a D-Bus address string that clients can use to connect.
+Connect to the #GDBusServer::new-connection signal to handle
+incoming connections.
+The returned #GDBusServer isn't active - you have to start it with
+g_dbus_server_start().
+See &lt;xref linkend="gdbus-peer-to-peer"/&gt; for how #GDBusServer can
+be used.
+This is a synchronous failable constructor. See
+g_dbus_server_new() for the asynchronous version.
+g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GDBusServer or %NULL if @error is set. Free with</doc>
+          <type name="DBusServer" c:type="GDBusServer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A D-Bus address.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Flags from the #GDBusServerFlags enumeration.</doc>
+            <type name="DBusServerFlags" c:type="GDBusServerFlags"/>
+          </parameter>
+          <parameter name="guid" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A D-Bus GUID.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="observer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GDBusAuthObserver or %NULL.</doc>
+            <type name="DBusAuthObserver" c:type="GDBusAuthObserver*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_client_address"
+              c:identifier="g_dbus_server_get_client_address"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets a D-Bus address string that can be used by clients to connect
+to @server.
+by @server.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A D-Bus address string. Do not free, the string is owned</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_flags"
+              c:identifier="g_dbus_server_get_flags"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the flags for @server.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A set of flags from the #GDBusServerFlags enumeration.</doc>
+          <type name="DBusServerFlags" c:type="GDBusServerFlags"/>
+        </return-value>
+      </method>
+      <method name="get_guid"
+              c:identifier="g_dbus_server_get_guid"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the GUID for @server.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A D-Bus GUID. Do not free this string, it is owned by @server.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="is_active"
+              c:identifier="g_dbus_server_is_active"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets whether @server is active.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if server is active, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="start" c:identifier="g_dbus_server_start" version="2.26">
+        <doc xml:whitespace="preserve">Starts @server.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="stop" c:identifier="g_dbus_server_stop" version="2.26">
+        <doc xml:whitespace="preserve">Stops @server.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="active" version="2.26" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the server is currently active.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="address"
+                version="2.26"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The D-Bus address to listen on.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="authentication-observer"
+                version="2.26"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A #GDBusAuthObserver object to assist in the authentication process or %NULL.</doc>
+        <type name="DBusAuthObserver"/>
+      </property>
+      <property name="client-address" version="2.26" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The D-Bus address that clients can use.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="flags"
+                version="2.26"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Flags from the #GDBusServerFlags enumeration.</doc>
+        <type name="DBusServerFlags"/>
+      </property>
+      <property name="guid"
+                version="2.26"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The guid of the server.</doc>
+        <type name="utf8"/>
+      </property>
+      <glib:signal name="new-connection" version="2.26">
+        <doc xml:whitespace="preserve">Emitted when a new authenticated connection has been made. Use
+g_dbus_connection_get_peer_credentials() to figure out what
+identity (if any), was authenticated.
+If you want to accept the connection, take a reference to the
+connection call g_dbus_connection_close() and give up your
+reference. Note that the other peer may disconnect at any time -
+a typical thing to do when accepting a connection is to listen to
+the #GDBusConnection::closed signal.
+If #GDBusServer:flags contains %G_DBUS_SERVER_FLAGS_RUN_IN_THREAD
+then the signal is emitted in a new thread dedicated to the
+connection. Otherwise the signal is emitted in the &lt;link
+linkend="g-main-context-push-thread-default"&gt;thread-default main
+loop&lt;/link&gt; of the thread that @server was constructed in.
+You are guaranteed that signal handlers for this signal runs
+before incoming messages on @connection are processed. This means
+that it's suitable to call g_dbus_connection_register_object() or
+similar from the signal handler.
+run.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to claim @connection, %FALSE to let other handlers</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GDBusConnection for the new connection.</doc>
+            <type name="DBusConnection"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <bitfield name="DBusServerFlags"
+              version="2.26"
+              glib:type-name="GDBusServerFlags"
+              glib:get-type="g_dbus_server_flags_get_type"
+              c:type="GDBusServerFlags">
+      <doc xml:whitespace="preserve">Flags used when creating a #GDBusServer.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="G_DBUS_SERVER_FLAGS_NONE"
+              glib:nick="none"/>
+      <member name="run_in_thread"
+              value="1"
+              c:identifier="G_DBUS_SERVER_FLAGS_RUN_IN_THREAD"
+              glib:nick="run-in-thread"/>
+      <member name="authentication_allow_anonymous"
+              value="2"
+              c:identifier="G_DBUS_SERVER_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS"
+              glib:nick="authentication-allow-anonymous"/>
+    </bitfield>
+    <callback name="DBusSignalCallback"
+              c:type="GDBusSignalCallback"
+              version="2.26">
+      <doc xml:whitespace="preserve">Signature for callback function used in g_dbus_connection_signal_subscribe().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="connection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GDBusConnection.</doc>
+          <type name="DBusConnection" c:type="GDBusConnection*"/>
+        </parameter>
+        <parameter name="sender_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The unique bus name of the sender of the signal.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="object_path" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The object path that the signal was emitted on.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="interface_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name of the interface.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="signal_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name of the signal.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="parameters" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GVariant tuple with parameters for the signal.</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="6">
+          <doc xml:whitespace="preserve">User data passed when subscribing to the signal.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="DBusSignalFlags"
+              version="2.26"
+              glib:type-name="GDBusSignalFlags"
+              glib:get-type="g_dbus_signal_flags_get_type"
+              c:type="GDBusSignalFlags">
+      <doc xml:whitespace="preserve">Flags used when subscribing to signals via g_dbus_connection_signal_subscribe().</doc>
+      <member name="none"
+              value="0"
+              c:identifier="G_DBUS_SIGNAL_FLAGS_NONE"
+              glib:nick="none"/>
+    </bitfield>
+    <record name="DBusSignalInfo"
+            c:type="GDBusSignalInfo"
+            version="2.26"
+            glib:type-name="GDBusSignalInfo"
+            glib:get-type="g_dbus_signal_info_get_type"
+            c:symbol-prefix="dbus_signal_info">
+      <doc xml:whitespace="preserve">Information about a signal on a D-Bus interface.</doc>
+      <field name="ref_count" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="args" writable="1">
+        <type name="DBusArgInfo" c:type="GDBusArgInfo**"/>
+      </field>
+      <field name="annotations" writable="1">
+        <type name="DBusAnnotationInfo" c:type="GDBusAnnotationInfo**"/>
+      </field>
+      <method name="ref" c:identifier="g_dbus_signal_info_ref" version="2.26">
+        <doc xml:whitespace="preserve">If @info is statically allocated does nothing. Otherwise increases
+the reference count.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The same @info.</doc>
+          <type name="DBusSignalInfo" c:type="GDBusSignalInfo*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="g_dbus_signal_info_unref"
+              version="2.26">
+        <doc xml:whitespace="preserve">If @info is statically allocated, does nothing. Otherwise decreases
+the reference count of @info. When its reference count drops to 0,
+the memory used is freed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <callback name="DBusSubtreeDispatchFunc"
+              c:type="GDBusSubtreeDispatchFunc"
+              version="2.26">
+      <doc xml:whitespace="preserve">The type of the @dispatch function in #GDBusSubtreeVTable.
+Subtrees are flat.  @node, if non-%NULL, is always exactly one</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">A #GDBusInterfaceVTable or %NULL if you don't want to handle the methods.</doc>
+        <type name="DBusInterfaceVTable" c:type="GDBusInterfaceVTable*"/>
+      </return-value>
+      <parameters>
+        <parameter name="connection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GDBusConnection.</doc>
+          <type name="DBusConnection" c:type="GDBusConnection*"/>
+        </parameter>
+        <parameter name="sender" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The unique bus name of the remote caller.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="object_path" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The object path that was registered with g_dbus_connection_register_subtree().</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="interface_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The D-Bus interface name that the method call or property access is for.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="node" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A node that is a child of @object_path (relative to @object_path) or %NULL for the root of the subtree.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="out_user_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Return location for user data to pass to functions in the returned #GDBusInterfaceVTable (never %NULL).</doc>
+          <type name="gpointer" c:type="gpointer*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="6">
+          <doc xml:whitespace="preserve">The @user_data #gpointer passed to g_dbus_connection_register_subtree().</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="DBusSubtreeEnumerateFunc"
+              c:type="GDBusSubtreeEnumerateFunc"
+              version="2.26"
+              introspectable="0">
+      <doc xml:whitespace="preserve">The type of the @enumerate function in #GDBusSubtreeVTable.
+This function is called when generating introspection data and also
+when preparing to dispatch incoming messages in the event that the
+%G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES flag is not
+Hierarchies are not supported; the items that you return should not
+contain the '/' character.
+The return value will be freed with g_strfreev().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">A newly allocated array of strings for node names that are children of @object_path.</doc>
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="connection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GDBusConnection.</doc>
+          <type name="DBusConnection" c:type="GDBusConnection*"/>
+        </parameter>
+        <parameter name="sender" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The unique bus name of the remote caller.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="object_path" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The object path that was registered with g_dbus_connection_register_subtree().</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <doc xml:whitespace="preserve">The @user_data #gpointer passed to g_dbus_connection_register_subtree().</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="DBusSubtreeFlags"
+              version="2.26"
+              glib:type-name="GDBusSubtreeFlags"
+              glib:get-type="g_dbus_subtree_flags_get_type"
+              c:type="GDBusSubtreeFlags">
+      <doc xml:whitespace="preserve">Flags passed to g_dbus_connection_register_subtree().</doc>
+      <member name="none"
+              value="0"
+              c:identifier="G_DBUS_SUBTREE_FLAGS_NONE"
+              glib:nick="none"/>
+      <member name="dispatch_to_unenumerated_nodes"
+              value="1"
+              c:identifier="G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES"
+              glib:nick="dispatch-to-unenumerated-nodes"/>
+    </bitfield>
+    <callback name="DBusSubtreeIntrospectFunc"
+              c:type="GDBusSubtreeIntrospectFunc"
+              version="2.26">
+      <doc xml:whitespace="preserve">The type of the @introspect function in #GDBusSubtreeVTable.
+Subtrees are flat.  @node, if non-%NULL, is always exactly one
+This function should return %NULL to indicate that there is no object
+at this node.
+If this function returns non-%NULL, the return value is expected to
+be a %NULL-terminated array of pointers to #GDBusInterfaceInfo
+structures describing the interfaces implemented by @node.  This
+array will have g_dbus_interface_info_unref() called on each item
+before being freed with g_free().
+The difference between returning %NULL and an array containing zero
+items is that the standard DBus interfaces will returned to the
+remote introspector in the empty array case, but not in the %NULL
+case.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">A %NULL-terminated array of pointers to #GDBusInterfaceInfo, or %NULL.</doc>
+        <type name="DBusInterfaceInfo" c:type="GDBusInterfaceInfo**"/>
+      </return-value>
+      <parameters>
+        <parameter name="connection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GDBusConnection.</doc>
+          <type name="DBusConnection" c:type="GDBusConnection*"/>
+        </parameter>
+        <parameter name="sender" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The unique bus name of the remote caller.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="object_path" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The object path that was registered with g_dbus_connection_register_subtree().</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="node" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A node that is a child of @object_path (relative to @object_path) or %NULL for the root of the subtree.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="4">
+          <doc xml:whitespace="preserve">The @user_data #gpointer passed to g_dbus_connection_register_subtree().</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="DBusSubtreeVTable"
+            c:type="GDBusSubtreeVTable"
+            version="2.26">
+      <doc xml:whitespace="preserve">Virtual table for handling subtrees registered with g_dbus_connection_register_subtree().</doc>
+      <field name="enumerate" introspectable="0" writable="1">
+        <type name="DBusSubtreeEnumerateFunc"
+              c:type="GDBusSubtreeEnumerateFunc"/>
+      </field>
+      <field name="introspect" writable="1">
+        <type name="DBusSubtreeIntrospectFunc"
+              c:type="GDBusSubtreeIntrospectFunc"/>
+      </field>
+      <field name="dispatch" writable="1">
+        <type name="DBusSubtreeDispatchFunc"
+              c:type="GDBusSubtreeDispatchFunc"/>
+      </field>
+      <field name="padding" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="8">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <constant name="DESKTOP_APP_INFO_LOOKUP_EXTENSION_POINT_NAME"
+              value="gio-desktop-app-info-lookup">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <class name="DataInputStream"
+           c:symbol-prefix="data_input_stream"
+           c:type="GDataInputStream"
+           parent="BufferedInputStream"
+           glib:type-name="GDataInputStream"
+           glib:get-type="g_data_input_stream_get_type"
+           glib:type-struct="DataInputStreamClass">
+      <doc xml:whitespace="preserve">An implementation of #GBufferedInputStream that allows for high-level
+data manipulation of arbitrary data (including binary operations).</doc>
+      <constructor name="new" c:identifier="g_data_input_stream_new">
+        <doc xml:whitespace="preserve">Creates a new data input stream for the @base_stream.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GDataInputStream.</doc>
+          <type name="DataInputStream" c:type="GDataInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="base_stream" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GInputStream.</doc>
+            <type name="InputStream" c:type="GInputStream*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_byte_order"
+              c:identifier="g_data_input_stream_get_byte_order">
+        <doc xml:whitespace="preserve">Gets the byte order for the data input stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the @stream's current #GDataStreamByteOrder.</doc>
+          <type name="DataStreamByteOrder" c:type="GDataStreamByteOrder"/>
+        </return-value>
+      </method>
+      <method name="get_newline_type"
+              c:identifier="g_data_input_stream_get_newline_type">
+        <doc xml:whitespace="preserve">Gets the current newline type for the @stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GDataStreamNewlineType for the given @stream.</doc>
+          <type name="DataStreamNewlineType" c:type="GDataStreamNewlineType"/>
+        </return-value>
+      </method>
+      <method name="read_byte"
+              c:identifier="g_data_input_stream_read_byte"
+              throws="1">
+        <doc xml:whitespace="preserve">Reads an unsigned 8-bit/1-byte value from @stream.
+if an error occurred.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an unsigned 8-bit/1-byte value read from the @stream or %0</doc>
+          <type name="guint8" c:type="guchar"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_int16"
+              c:identifier="g_data_input_stream_read_int16"
+              throws="1">
+        <doc xml:whitespace="preserve">Reads a 16-bit/2-byte value from @stream.
+In order to get the correct byte order for this read operation,
+see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().
+an error occurred.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a signed 16-bit/2-byte value read from @stream or %0 if</doc>
+          <type name="gint16" c:type="gint16"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_int32"
+              c:identifier="g_data_input_stream_read_int32"
+              throws="1">
+        <doc xml:whitespace="preserve">Reads a signed 32-bit/4-byte value from @stream.
+In order to get the correct byte order for this read operation,
+see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+an error occurred.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a signed 32-bit/4-byte value read from the @stream or %0 if</doc>
+          <type name="gint32" c:type="gint32"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_int64"
+              c:identifier="g_data_input_stream_read_int64"
+              throws="1">
+        <doc xml:whitespace="preserve">Reads a 64-bit/8-byte value from @stream.
+In order to get the correct byte order for this read operation,
+see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+an error occurred.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a signed 64-bit/8-byte value read from @stream or %0 if</doc>
+          <type name="gint64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_line"
+              c:identifier="g_data_input_stream_read_line"
+              throws="1">
+        <doc xml:whitespace="preserve">Reads a line from the data input stream.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+Set @length to a #gsize to get the length of the read line.
+On an error, it will return %NULL and @error will be set. If there's no
+content to read, it will still return %NULL, but @error won't be set.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a string with the line that was read in (without the newlines).</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gsize to get the length of the data read in.</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_line_async"
+              c:identifier="g_data_input_stream_read_line_async"
+              version="2.20">
+        <doc xml:whitespace="preserve">The asynchronous version of g_data_input_stream_read_line().  It is
+an error to have two outstanding calls to this function.
+When the operation is finished, @callback will be called. You
+can then call g_data_input_stream_read_line_finish() to get
+the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">callback to call when the request is satisfied.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_line_finish"
+              c:identifier="g_data_input_stream_read_line_finish"
+              version="2.20"
+              throws="1">
+        <doc xml:whitespace="preserve">Finish an asynchronous call started by
+g_data_input_stream_read_line_async().
+Set @length to a #gsize to get the length of the read line.
+On an error, it will return %NULL and @error will be set. If there's no
+content to read, it will still return %NULL, but @error won't be set.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a string with the line that was read in (without the newlines).</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GAsyncResult that was provided to the callback.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gsize to get the length of the data read in.</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_uint16"
+              c:identifier="g_data_input_stream_read_uint16"
+              throws="1">
+        <doc xml:whitespace="preserve">Reads an unsigned 16-bit/2-byte value from @stream.
+In order to get the correct byte order for this read operation,
+see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().
+an error occurred.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an unsigned 16-bit/2-byte value read from the @stream or %0 if</doc>
+          <type name="guint16" c:type="guint16"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_uint32"
+              c:identifier="g_data_input_stream_read_uint32"
+              throws="1">
+        <doc xml:whitespace="preserve">Reads an unsigned 32-bit/4-byte value from @stream.
+In order to get the correct byte order for this read operation,
+see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+an error occurred.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an unsigned 32-bit/4-byte value read from the @stream or %0 if</doc>
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_uint64"
+              c:identifier="g_data_input_stream_read_uint64"
+              throws="1">
+        <doc xml:whitespace="preserve">Reads an unsigned 64-bit/8-byte value from @stream.
+In order to get the correct byte order for this read operation,
+see g_data_input_stream_get_byte_order().
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+an error occurred.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an unsigned 64-bit/8-byte read from @stream or %0 if</doc>
+          <type name="guint64" c:type="guint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_until"
+              c:identifier="g_data_input_stream_read_until"
+              throws="1">
+        <doc xml:whitespace="preserve">Reads a string from the data input stream, up to the first
+occurrence of any of the stop characters.
+Note that, in contrast to g_data_input_stream_read_until_async(),
+this function consumes the stop character that it finds.
+Don't use this function in new code.  Its functionality is
+inconsistent with g_data_input_stream_read_until_async().  Both
+functions will be marked as deprecated in a future release.  Use
+g_data_input_stream_read_upto() instead, but note that that function
+does not consume the stop character.
+any of the stop characters. Set @length to a #gsize to get the length
+of the string. This function will return %NULL on an error.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a string with the data that was read before encountering</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stop_chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">characters to terminate the read.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gsize to get the length of the data read in.</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_until_async"
+              c:identifier="g_data_input_stream_read_until_async"
+              version="2.20">
+        <doc xml:whitespace="preserve">The asynchronous version of g_data_input_stream_read_until().
+It is an error to have two outstanding calls to this function.
+Note that, in contrast to g_data_input_stream_read_until(),
+this function does not consume the stop character that it finds.  You
+must read it for yourself.
+When the operation is finished, @callback will be called. You
+can then call g_data_input_stream_read_until_finish() to get
+the result of the operation.
+Don't use this function in new code.  Its functionality is
+inconsistent with g_data_input_stream_read_until().  Both functions
+will be marked as deprecated in a future release.  Use
+g_data_input_stream_read_upto_async() instead.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stop_chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">characters to terminate the read.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">callback to call when the request is satisfied.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_until_finish"
+              c:identifier="g_data_input_stream_read_until_finish"
+              version="2.20"
+              throws="1">
+        <doc xml:whitespace="preserve">Finish an asynchronous call started by
+g_data_input_stream_read_until_async().
+any of the stop characters. Set @length to a #gsize to get the length
+of the string. This function will return %NULL on an error.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a string with the data that was read before encountering</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GAsyncResult that was provided to the callback.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gsize to get the length of the data read in.</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_upto"
+              c:identifier="g_data_input_stream_read_upto"
+              version="2.24"
+              throws="1">
+        <doc xml:whitespace="preserve">Reads a string from the data input stream, up to the first
+occurrence of any of the stop characters.
+In contrast to g_data_input_stream_read_until(), this function
+does &lt;emphasis&gt;not&lt;/emphasis&gt; consume the stop character. You have
+to use g_data_input_stream_read_byte() to get it before calling
+g_data_input_stream_read_upto() again.
+Note that @stop_chars may contain '\0' if @stop_chars_len is
+specified.
+any of the stop characters. Set @length to a #gsize to get the length
+of the string. This function will return %NULL on an error</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a string with the data that was read before encountering</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stop_chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">characters to terminate the read</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="stop_chars_len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">length of @stop_chars. May be -1 if @stop_chars is nul-terminated</doc>
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gsize to get the length of the data read in</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_upto_async"
+              c:identifier="g_data_input_stream_read_upto_async"
+              version="2.24">
+        <doc xml:whitespace="preserve">The asynchronous version of g_data_input_stream_read_upto().
+It is an error to have two outstanding calls to this function.
+In contrast to g_data_input_stream_read_until(), this function
+does &lt;emphasis&gt;not&lt;/emphasis&gt; consume the stop character. You have
+to use g_data_input_stream_read_byte() to get it before calling
+g_data_input_stream_read_upto() again.
+Note that @stop_chars may contain '\0' if @stop_chars_len is
+specified.
+When the operation is finished, @callback will be called. You
+can then call g_data_input_stream_read_upto_finish() to get
+the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stop_chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">characters to terminate the read</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="stop_chars_len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">length of @stop_chars. May be -1 if @stop_chars is nul-terminated</doc>
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_upto_finish"
+              c:identifier="g_data_input_stream_read_upto_finish"
+              version="2.24"
+              throws="1">
+        <doc xml:whitespace="preserve">Finish an asynchronous call started by
+g_data_input_stream_read_upto_async().
+Note that this function does &lt;emphasis&gt;not&lt;/emphasis&gt; consume the
+stop character. You have to use g_data_input_stream_read_byte() to
+get it before calling g_data_input_stream_read_upto_async() again.
+any of the stop characters. Set @length to a #gsize to get the length
+of the string. This function will return %NULL on an error.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a string with the data that was read before encountering</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GAsyncResult that was provided to the callback</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gsize to get the length of the data read in</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_byte_order"
+              c:identifier="g_data_input_stream_set_byte_order">
+        <doc xml:whitespace="preserve">This function sets the byte order for the given @stream. All subsequent
+reads from the @stream will be read in the given @order.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="order" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GDataStreamByteOrder to set.</doc>
+            <type name="DataStreamByteOrder" c:type="GDataStreamByteOrder"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_newline_type"
+              c:identifier="g_data_input_stream_set_newline_type">
+        <doc xml:whitespace="preserve">Sets the newline type for the @stream.
+Note that using G_DATA_STREAM_NEWLINE_TYPE_ANY is slightly unsafe. If a read
+chunk ends in "CR" we must read an additional byte to know if this is "CR" or
+"CR LF", and this might block if there is no more data availible.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of new line return as #GDataStreamNewlineType.</doc>
+            <type name="DataStreamNewlineType"
+                  c:type="GDataStreamNewlineType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="byte-order" writable="1" transfer-ownership="none">
+        <type name="DataStreamByteOrder"/>
+      </property>
+      <property name="newline-type" writable="1" transfer-ownership="none">
+        <type name="DataStreamNewlineType"/>
+      </property>
+      <field name="parent_instance">
+        <type name="BufferedInputStream" c:type="GBufferedInputStream"/>
+      </field>
+      <field name="priv">
+        <type name="DataInputStreamPrivate" c:type="GDataInputStreamPrivate*"/>
+      </field>
+    </class>
+    <record name="DataInputStreamClass"
+            c:type="GDataInputStreamClass"
+            glib:is-gtype-struct-for="DataInputStream">
+      <field name="parent_class">
+        <type name="BufferedInputStreamClass"
+              c:type="GBufferedInputStreamClass"/>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="DataInputStreamPrivate"
+            c:type="GDataInputStreamPrivate"
+            disguised="1">
+    </record>
+    <class name="DataOutputStream"
+           c:symbol-prefix="data_output_stream"
+           c:type="GDataOutputStream"
+           parent="FilterOutputStream"
+           glib:type-name="GDataOutputStream"
+           glib:get-type="g_data_output_stream_get_type"
+           glib:type-struct="DataOutputStreamClass">
+      <doc xml:whitespace="preserve">An implementation of #GBufferedOutputStream that allows for high-level
+data manipulation of arbitrary data (including binary operations).</doc>
+      <constructor name="new" c:identifier="g_data_output_stream_new">
+        <doc xml:whitespace="preserve">Creates a new data output stream for @base_stream.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GDataOutputStream.</doc>
+          <type name="DataOutputStream" c:type="GDataOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="base_stream" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GOutputStream.</doc>
+            <type name="OutputStream" c:type="GOutputStream*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_byte_order"
+              c:identifier="g_data_output_stream_get_byte_order">
+        <doc xml:whitespace="preserve">Gets the byte order for the stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GDataStreamByteOrder for the @stream.</doc>
+          <type name="DataStreamByteOrder" c:type="GDataStreamByteOrder"/>
+        </return-value>
+      </method>
+      <method name="put_byte"
+              c:identifier="g_data_output_stream_put_byte"
+              throws="1">
+        <doc xml:whitespace="preserve">Puts a byte into the output stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @data was successfully added to the @stream.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #guchar.</doc>
+            <type name="guint8" c:type="guchar"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int16"
+              c:identifier="g_data_output_stream_put_int16"
+              throws="1">
+        <doc xml:whitespace="preserve">Puts a signed 16-bit integer into the output stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @data was successfully added to the @stream.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint16.</doc>
+            <type name="gint16" c:type="gint16"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int32"
+              c:identifier="g_data_output_stream_put_int32"
+              throws="1">
+        <doc xml:whitespace="preserve">Puts a signed 32-bit integer into the output stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @data was successfully added to the @stream.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint32.</doc>
+            <type name="gint32" c:type="gint32"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int64"
+              c:identifier="g_data_output_stream_put_int64"
+              throws="1">
+        <doc xml:whitespace="preserve">Puts a signed 64-bit integer into the stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @data was successfully added to the @stream.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint64.</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_string"
+              c:identifier="g_data_output_stream_put_string"
+              throws="1">
+        <doc xml:whitespace="preserve">Puts a string into the output stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @string was successfully added to the @stream.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint16"
+              c:identifier="g_data_output_stream_put_uint16"
+              throws="1">
+        <doc xml:whitespace="preserve">Puts an unsigned 16-bit integer into the output stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @data was successfully added to the @stream.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #guint16.</doc>
+            <type name="guint16" c:type="guint16"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint32"
+              c:identifier="g_data_output_stream_put_uint32"
+              throws="1">
+        <doc xml:whitespace="preserve">Puts an unsigned 32-bit integer into the stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @data was successfully added to the @stream.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #guint32.</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint64"
+              c:identifier="g_data_output_stream_put_uint64"
+              throws="1">
+        <doc xml:whitespace="preserve">Puts an unsigned 64-bit integer into the stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @data was successfully added to the @stream.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #guint64.</doc>
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_byte_order"
+              c:identifier="g_data_output_stream_set_byte_order">
+        <doc xml:whitespace="preserve">Sets the byte order of the data output stream to @order.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="order" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a %GDataStreamByteOrder.</doc>
+            <type name="DataStreamByteOrder" c:type="GDataStreamByteOrder"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="byte-order" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Determines the byte ordering that is used when writing
+multi-byte entities (such as integers) to the stream.</doc>
+        <type name="DataStreamByteOrder"/>
+      </property>
+      <field name="parent_instance">
+        <type name="FilterOutputStream" c:type="GFilterOutputStream"/>
+      </field>
+      <field name="priv">
+        <type name="DataOutputStreamPrivate"
+              c:type="GDataOutputStreamPrivate*"/>
+      </field>
+    </class>
+    <record name="DataOutputStreamClass"
+            c:type="GDataOutputStreamClass"
+            glib:is-gtype-struct-for="DataOutputStream">
+      <field name="parent_class">
+        <type name="FilterOutputStreamClass"
+              c:type="GFilterOutputStreamClass"/>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="DataOutputStreamPrivate"
+            c:type="GDataOutputStreamPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="DataStreamByteOrder"
+                 glib:type-name="GDataStreamByteOrder"
+                 glib:get-type="g_data_stream_byte_order_get_type"
+                 c:type="GDataStreamByteOrder">
+      <doc xml:whitespace="preserve">#GDataStreamByteOrder is used to ensure proper endianness of streaming data sources
+across various machine architectures.</doc>
+      <member name="big_endian"
+              value="0"
+              c:identifier="G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN"
+              glib:nick="big-endian"/>
+      <member name="little_endian"
+              value="1"
+              c:identifier="G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN"
+              glib:nick="little-endian"/>
+      <member name="host_endian"
+              value="2"
+              c:identifier="G_DATA_STREAM_BYTE_ORDER_HOST_ENDIAN"
+              glib:nick="host-endian"/>
+    </enumeration>
+    <enumeration name="DataStreamNewlineType"
+                 glib:type-name="GDataStreamNewlineType"
+                 glib:get-type="g_data_stream_newline_type_get_type"
+                 c:type="GDataStreamNewlineType">
+      <doc xml:whitespace="preserve">#GDataStreamNewlineType is used when checking for or setting the line endings for a given file.</doc>
+      <member name="lf"
+              value="0"
+              c:identifier="G_DATA_STREAM_NEWLINE_TYPE_LF"
+              glib:nick="lf"/>
+      <member name="cr"
+              value="1"
+              c:identifier="G_DATA_STREAM_NEWLINE_TYPE_CR"
+              glib:nick="cr"/>
+      <member name="cr_lf"
+              value="2"
+              c:identifier="G_DATA_STREAM_NEWLINE_TYPE_CR_LF"
+              glib:nick="cr-lf"/>
+      <member name="any"
+              value="3"
+              c:identifier="G_DATA_STREAM_NEWLINE_TYPE_ANY"
+              glib:nick="any"/>
+    </enumeration>
+    <class name="DesktopAppInfo"
+           c:symbol-prefix="desktop_app_info"
+           c:type="GDesktopAppInfo"
+           parent="GObject.Object"
+           glib:type-name="GDesktopAppInfo"
+           glib:get-type="g_desktop_app_info_get_type"
+           glib:type-struct="DesktopAppInfoClass">
+      <doc xml:whitespace="preserve">Information about an installed application from a desktop file.</doc>
+      <implements name="AppInfo"/>
+      <constructor name="new" c:identifier="g_desktop_app_info_new">
+        <doc xml:whitespace="preserve">Creates a new #GDesktopAppInfo based on a desktop file id.
+A desktop file id is the basename of the desktop file, including the
+.desktop extension. GIO is looking for a desktop file with this name
+in the &lt;filename&gt;applications&lt;/filename&gt; subdirectories of the XDG data
+directories (i.e. the directories specified in the
+&lt;envar&gt;XDG_DATA_HOME&lt;/envar&gt; and &lt;envar&gt;XDG_DATA_DIRS&lt;/envar&gt; environment
+variables). GIO also supports the prefix-to-subdirectory mapping that is
+described in the &lt;ulink url="http://standards.freedesktop.org/menu-spec/latest/"&gt;Menu Spec&lt;/ulink&gt;
+(i.e. a desktop id of kde-foo.desktop will match
+&lt;filename&gt;/usr/share/applications/kde/foo.desktop&lt;/filename&gt;).</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GDesktopAppInfo, or %NULL if no desktop file with that id</doc>
+          <type name="DesktopAppInfo" c:type="GDesktopAppInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="desktop_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the desktop file id</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_filename"
+                   c:identifier="g_desktop_app_info_new_from_filename">
+        <doc xml:whitespace="preserve">Creates a new #GDesktopAppInfo.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GDesktopAppInfo or %NULL on error.</doc>
+          <type name="DesktopAppInfo" c:type="GDesktopAppInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the path of a desktop file, in the GLib filename encoding</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_keyfile"
+                   c:identifier="g_desktop_app_info_new_from_keyfile"
+                   version="2.18">
+        <doc xml:whitespace="preserve">Creates a new #GDesktopAppInfo.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GDesktopAppInfo or %NULL on error.</doc>
+          <type name="DesktopAppInfo" c:type="GDesktopAppInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_file" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an opened #GKeyFile</doc>
+            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="set_desktop_env"
+                c:identifier="g_desktop_app_info_set_desktop_env">
+        <doc xml:whitespace="preserve">Sets the name of the desktop that the application is running in.
+This is used by g_app_info_should_show() to evaluate the
+&lt;literal&gt;OnlyShowIn&lt;/literal&gt; and &lt;literal&gt;NotShowIn&lt;/literal&gt;
+desktop entry fields.
+The &lt;ulink url="http://standards.freedesktop.org/menu-spec/latest/"&gt;Desktop
+Menu specification&lt;/ulink&gt; recognizes the following:
+&lt;simplelist&gt;
+&lt;member&gt;GNOME&lt;/member&gt;
+&lt;member&gt;KDE&lt;/member&gt;
+&lt;member&gt;ROX&lt;/member&gt;
+&lt;member&gt;XFCE&lt;/member&gt;
+&lt;member&gt;Old&lt;/member&gt;
+&lt;/simplelist&gt;
+Should be called only once; subsequent calls are ignored.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="desktop_env" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string specifying what desktop this is</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_filename"
+              c:identifier="g_desktop_app_info_get_filename"
+              version="2.24">
+        <doc xml:whitespace="preserve">When @info was created from a known filename, return it.  In some
+situations such as the #GDesktopAppInfo returned from
+g_desktop_app_info_new_from_keyfile(), this function will return %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The full path to the file for @info, or %NULL if not known.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_is_hidden"
+              c:identifier="g_desktop_app_info_get_is_hidden">
+        <doc xml:whitespace="preserve">A desktop file is hidden if the Hidden key in it is
+set to True.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if hidden, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </class>
+    <record name="DesktopAppInfoClass"
+            c:type="GDesktopAppInfoClass"
+            glib:is-gtype-struct-for="DesktopAppInfo">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <interface name="DesktopAppInfoLookup"
+               c:symbol-prefix="desktop_app_info_lookup"
+               c:type="GDesktopAppInfoLookup"
+               glib:type-name="GDesktopAppInfoLookup"
+               glib:get-type="g_desktop_app_info_lookup_get_type"
+               glib:type-struct="DesktopAppInfoLookupIface">
+      <doc xml:whitespace="preserve">Interface that is used by backends to associate default
+handlers with URI schemes.</doc>
+      <virtual-method name="get_default_for_uri_scheme"
+                      invoker="get_default_for_uri_scheme">
+        <doc xml:whitespace="preserve">Gets the default application for launching applications
+using this URI scheme for a particular GDesktopAppInfoLookup
+implementation.
+The GDesktopAppInfoLookup interface and this function is used
+to implement g_app_info_get_default_for_uri_scheme() backends
+in a GIO module. There is no reason for applications to use it
+directly. Applications should use g_app_info_get_default_for_uri_scheme().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GAppInfo for given @uri_scheme or %NULL on error.</doc>
+          <type name="AppInfo" c:type="GAppInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri_scheme" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing a URI scheme.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_default_for_uri_scheme"
+              c:identifier="g_desktop_app_info_lookup_get_default_for_uri_scheme">
+        <doc xml:whitespace="preserve">Gets the default application for launching applications
+using this URI scheme for a particular GDesktopAppInfoLookup
+implementation.
+The GDesktopAppInfoLookup interface and this function is used
+to implement g_app_info_get_default_for_uri_scheme() backends
+in a GIO module. There is no reason for applications to use it
+directly. Applications should use g_app_info_get_default_for_uri_scheme().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GAppInfo for given @uri_scheme or %NULL on error.</doc>
+          <type name="AppInfo" c:type="GAppInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri_scheme" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing a URI scheme.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="DesktopAppInfoLookupIface"
+            c:type="GDesktopAppInfoLookupIface"
+            glib:is-gtype-struct-for="DesktopAppInfoLookup">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_default_for_uri_scheme">
+        <callback name="get_default_for_uri_scheme">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">#GAppInfo for given @uri_scheme or %NULL on error.</doc>
+            <type name="AppInfo" c:type="GAppInfo*"/>
+          </return-value>
+          <parameters>
+            <parameter name="lookup" transfer-ownership="none">
+              <type name="DesktopAppInfoLookup"
+                    c:type="GDesktopAppInfoLookup*"/>
+            </parameter>
+            <parameter name="uri_scheme" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a string containing a URI scheme.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <interface name="Drive"
+               c:symbol-prefix="drive"
+               c:type="GDrive"
+               glib:type-name="GDrive"
+               glib:get-type="g_drive_get_type"
+               glib:type-struct="DriveIface">
+      <doc xml:whitespace="preserve">Opaque drive object.</doc>
+      <virtual-method name="can_eject" invoker="can_eject">
+        <doc xml:whitespace="preserve">Checks if a drive can be ejected.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @drive can be ejected, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="can_poll_for_media" invoker="can_poll_for_media">
+        <doc xml:whitespace="preserve">Checks if a drive can be polled for media changes.
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @drive can be polled for media changes,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="can_start" invoker="can_start" version="2.22">
+        <doc xml:whitespace="preserve">Checks if a drive can be started.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @drive can be started, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="can_start_degraded"
+                      invoker="can_start_degraded"
+                      version="2.22">
+        <doc xml:whitespace="preserve">Checks if a drive can be started degraded.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @drive can be started degraded, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="can_stop" invoker="can_stop" version="2.22">
+        <doc xml:whitespace="preserve">Checks if a drive can be stopped.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @drive can be stopped, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="eject"
+                      invoker="eject"
+                      deprecated="Use g_drive_eject_with_operation() instead."
+                      deprecated-version="2.22">
+        <doc xml:whitespace="preserve">Asynchronously ejects a drive.
+When the operation is finished, @callback will be called.
+You can then call g_drive_eject_finish() to obtain the
+result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the unmount if required for eject</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="3">
+            <doc xml:whitespace="preserve">user data to pass to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject_finish"
+                      invoker="eject_finish"
+                      deprecated="Use g_drive_eject_with_operation_finish() instead."
+                      deprecated-version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes ejecting a drive.
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the drive has been ejected successfully,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject_with_operation"
+                      invoker="eject_with_operation"
+                      version="2.22">
+        <doc xml:whitespace="preserve">Ejects a drive. This is an asynchronous operation, and is
+finished by calling g_drive_eject_with_operation_finish() with the @drive
+and #GAsyncResult data returned in the @callback.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the unmount if required for eject</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject_with_operation_finish"
+                      invoker="eject_with_operation_finish"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes ejecting a drive. If any errors occurred during the operation,</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the drive was successfully ejected. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="enumerate_identifiers"
+                      invoker="enumerate_identifiers">
+        <doc xml:whitespace="preserve">Gets the kinds of identifiers that @drive has.
+Use g_drive_get_identifer() to obtain the identifiers
+themselves.
+kinds of identifiers. Use g_strfreev() to free.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a %NULL-terminated array of strings containing</doc>
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_icon" invoker="get_icon">
+        <doc xml:whitespace="preserve">Gets the icon for @drive.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GIcon for the @drive.</doc>
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_identifier" invoker="get_identifier">
+        <doc xml:whitespace="preserve">Gets the identifier of the given kind for @drive.
+requested identfier, or %NULL if the #GDrive
+doesn't have this kind of identifier.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated string containing the</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="kind" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the kind of identifier to return</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_name" invoker="get_name">
+        <doc xml:whitespace="preserve">Gets the name of @drive.
+string should be freed when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a string containing @drive's name. The returned</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_start_stop_type"
+                      invoker="get_start_stop_type"
+                      version="2.22">
+        <doc xml:whitespace="preserve">Gets a hint about how a drive can be started/stopped.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A value from the #GDriveStartStopType enumeration.</doc>
+          <type name="DriveStartStopType" c:type="GDriveStartStopType"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_volumes" invoker="get_volumes">
+        <doc xml:whitespace="preserve">Get a list of mountable volumes for @drive.
+The returned list should be freed with g_list_free(), after
+its elements have been unreffed with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GList containing any #GVolume objects on the given @drive.</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Volume"/>
+          </type>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="has_media" invoker="has_media">
+        <doc xml:whitespace="preserve">Checks if the @drive has media. Note that the OS may not be polling
+the drive for media changes; see g_drive_is_media_check_automatic()
+for more details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @drive has media, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="has_volumes" invoker="has_volumes">
+        <doc xml:whitespace="preserve">Check if @drive has any mountable volumes.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @drive contains volumes, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="is_media_check_automatic"
+                      invoker="is_media_check_automatic">
+        <doc xml:whitespace="preserve">Checks if @drive is capabable of automatically detecting media changes.
+media changes, %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @drive is capabable of automatically detecting</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="is_media_removable" invoker="is_media_removable">
+        <doc xml:whitespace="preserve">Checks if the @drive supports removable media.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @drive supports removable media, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="poll_for_media" invoker="poll_for_media">
+        <doc xml:whitespace="preserve">Asynchronously polls @drive to see if media has been inserted or removed.
+When the operation is finished, @callback will be called.
+You can then call g_drive_poll_for_media_finish() to obtain the
+result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="2">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="2">
+            <doc xml:whitespace="preserve">user data to pass to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="poll_for_media_finish"
+                      invoker="poll_for_media_finish"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes an operation started with g_drive_poll_for_media() on a drive.
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the drive has been poll_for_mediaed successfully,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="start" invoker="start" version="2.22">
+        <doc xml:whitespace="preserve">Asynchronously starts a drive.
+When the operation is finished, @callback will be called.
+You can then call g_drive_start_finish() to obtain the
+result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the start operation.</doc>
+            <type name="DriveStartFlags" c:type="GDriveStartFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">user data to pass to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="start_finish"
+                      invoker="start_finish"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes starting a drive.
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the drive has been started successfully,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="stop" invoker="stop" version="2.22">
+        <doc xml:whitespace="preserve">Asynchronously stops a drive.
+When the operation is finished, @callback will be called.
+You can then call g_drive_stop_finish() to obtain the
+result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the unmount if required for stopping.</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">user data to pass to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="stop_finish"
+                      invoker="stop_finish"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes stopping a drive.
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the drive has been stopped successfully,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="can_eject" c:identifier="g_drive_can_eject">
+        <doc xml:whitespace="preserve">Checks if a drive can be ejected.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @drive can be ejected, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="can_poll_for_media"
+              c:identifier="g_drive_can_poll_for_media">
+        <doc xml:whitespace="preserve">Checks if a drive can be polled for media changes.
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @drive can be polled for media changes,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="can_start" c:identifier="g_drive_can_start" version="2.22">
+        <doc xml:whitespace="preserve">Checks if a drive can be started.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @drive can be started, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="can_start_degraded"
+              c:identifier="g_drive_can_start_degraded"
+              version="2.22">
+        <doc xml:whitespace="preserve">Checks if a drive can be started degraded.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @drive can be started degraded, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="can_stop" c:identifier="g_drive_can_stop" version="2.22">
+        <doc xml:whitespace="preserve">Checks if a drive can be stopped.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @drive can be stopped, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="eject"
+              c:identifier="g_drive_eject"
+              deprecated="Use g_drive_eject_with_operation() instead."
+              deprecated-version="2.22">
+        <doc xml:whitespace="preserve">Asynchronously ejects a drive.
+When the operation is finished, @callback will be called.
+You can then call g_drive_eject_finish() to obtain the
+result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the unmount if required for eject</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject_finish"
+              c:identifier="g_drive_eject_finish"
+              deprecated="Use g_drive_eject_with_operation_finish() instead."
+              deprecated-version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes ejecting a drive.
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the drive has been ejected successfully,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject_with_operation"
+              c:identifier="g_drive_eject_with_operation"
+              version="2.22">
+        <doc xml:whitespace="preserve">Ejects a drive. This is an asynchronous operation, and is
+finished by calling g_drive_eject_with_operation_finish() with the @drive
+and #GAsyncResult data returned in the @callback.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the unmount if required for eject</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject_with_operation_finish"
+              c:identifier="g_drive_eject_with_operation_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes ejecting a drive. If any errors occurred during the operation,</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the drive was successfully ejected. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="enumerate_identifiers"
+              c:identifier="g_drive_enumerate_identifiers">
+        <doc xml:whitespace="preserve">Gets the kinds of identifiers that @drive has.
+Use g_drive_get_identifer() to obtain the identifiers
+themselves.
+kinds of identifiers. Use g_strfreev() to free.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a %NULL-terminated array of strings containing</doc>
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_icon" c:identifier="g_drive_get_icon">
+        <doc xml:whitespace="preserve">Gets the icon for @drive.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GIcon for the @drive.</doc>
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </method>
+      <method name="get_identifier" c:identifier="g_drive_get_identifier">
+        <doc xml:whitespace="preserve">Gets the identifier of the given kind for @drive.
+requested identfier, or %NULL if the #GDrive
+doesn't have this kind of identifier.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated string containing the</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="kind" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the kind of identifier to return</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_name" c:identifier="g_drive_get_name">
+        <doc xml:whitespace="preserve">Gets the name of @drive.
+string should be freed when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a string containing @drive's name. The returned</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_start_stop_type"
+              c:identifier="g_drive_get_start_stop_type"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets a hint about how a drive can be started/stopped.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A value from the #GDriveStartStopType enumeration.</doc>
+          <type name="DriveStartStopType" c:type="GDriveStartStopType"/>
+        </return-value>
+      </method>
+      <method name="get_volumes" c:identifier="g_drive_get_volumes">
+        <doc xml:whitespace="preserve">Get a list of mountable volumes for @drive.
+The returned list should be freed with g_list_free(), after
+its elements have been unreffed with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GList containing any #GVolume objects on the given @drive.</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Volume"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="has_media" c:identifier="g_drive_has_media">
+        <doc xml:whitespace="preserve">Checks if the @drive has media. Note that the OS may not be polling
+the drive for media changes; see g_drive_is_media_check_automatic()
+for more details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @drive has media, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_volumes" c:identifier="g_drive_has_volumes">
+        <doc xml:whitespace="preserve">Check if @drive has any mountable volumes.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @drive contains volumes, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_media_check_automatic"
+              c:identifier="g_drive_is_media_check_automatic">
+        <doc xml:whitespace="preserve">Checks if @drive is capabable of automatically detecting media changes.
+media changes, %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @drive is capabable of automatically detecting</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_media_removable"
+              c:identifier="g_drive_is_media_removable">
+        <doc xml:whitespace="preserve">Checks if the @drive supports removable media.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @drive supports removable media, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="poll_for_media" c:identifier="g_drive_poll_for_media">
+        <doc xml:whitespace="preserve">Asynchronously polls @drive to see if media has been inserted or removed.
+When the operation is finished, @callback will be called.
+You can then call g_drive_poll_for_media_finish() to obtain the
+result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="2">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="poll_for_media_finish"
+              c:identifier="g_drive_poll_for_media_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an operation started with g_drive_poll_for_media() on a drive.
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the drive has been poll_for_mediaed successfully,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start" c:identifier="g_drive_start" version="2.22">
+        <doc xml:whitespace="preserve">Asynchronously starts a drive.
+When the operation is finished, @callback will be called.
+You can then call g_drive_start_finish() to obtain the
+result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the start operation.</doc>
+            <type name="DriveStartFlags" c:type="GDriveStartFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start_finish"
+              c:identifier="g_drive_start_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes starting a drive.
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the drive has been started successfully,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="stop" c:identifier="g_drive_stop" version="2.22">
+        <doc xml:whitespace="preserve">Asynchronously stops a drive.
+When the operation is finished, @callback will be called.
+You can then call g_drive_stop_finish() to obtain the
+result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the unmount if required for stopping.</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="stop_finish"
+              c:identifier="g_drive_stop_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes stopping a drive.
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the drive has been stopped successfully,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="changed">
+        <doc xml:whitespace="preserve">Emitted when the drive's state has changed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="disconnected">
+        <doc xml:whitespace="preserve">This signal is emitted when the #GDrive have been
+disconnected. If the recipient is holding references to the
+object they should release them so the object can be
+finalized.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="eject-button">
+        <doc xml:whitespace="preserve">Emitted when the physical eject button (if any) of a drive has
+been pressed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="stop-button" version="2.22">
+        <doc xml:whitespace="preserve">Emitted when the physical stop button (if any) of a drive has
+been pressed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </interface>
+    <record name="DriveIface"
+            c:type="GDriveIface"
+            glib:is-gtype-struct-for="Drive">
+      <doc xml:whitespace="preserve">Interface for creating #GDrive implementations.</doc>
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="changed">
+        <callback name="changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="disconnected">
+        <callback name="disconnected">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_button">
+        <callback name="eject_button">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_name">
+        <callback name="get_name">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a string containing @drive's name. The returned</doc>
+            <type name="utf8" c:type="char*"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_icon">
+        <callback name="get_icon">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">#GIcon for the @drive.</doc>
+            <type name="Icon" c:type="GIcon*"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="has_volumes">
+        <callback name="has_volumes">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @drive contains volumes, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_volumes">
+        <callback name="get_volumes">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">#GList containing any #GVolume objects on the given @drive.</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="Volume"/>
+            </type>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_media_removable">
+        <callback name="is_media_removable">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if @drive supports removable media, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="has_media">
+        <callback name="has_media">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if @drive has media, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_media_check_automatic">
+        <callback name="is_media_check_automatic">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @drive is capabable of automatically detecting</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_eject">
+        <callback name="can_eject">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @drive can be ejected, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_poll_for_media">
+        <callback name="can_poll_for_media">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @drive can be polled for media changes,</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject">
+        <callback name="eject">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">flags affecting the unmount if required for eject</doc>
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="4">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <doc xml:whitespace="preserve">user data to pass to @callback</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_finish">
+        <callback name="eject_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the drive has been ejected successfully,</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="poll_for_media">
+        <callback name="poll_for_media">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="3">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="3">
+              <doc xml:whitespace="preserve">user data to pass to @callback</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="poll_for_media_finish">
+        <callback name="poll_for_media_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the drive has been poll_for_mediaed successfully,</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_identifier">
+        <callback name="get_identifier">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a newly allocated string containing the</doc>
+            <type name="utf8" c:type="char*"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+            <parameter name="kind" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the kind of identifier to return</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="enumerate_identifiers">
+        <callback name="enumerate_identifiers">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a %NULL-terminated array of strings containing</doc>
+            <array c:type="char**">
+              <type name="utf8"/>
+            </array>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_start_stop_type">
+        <callback name="get_start_stop_type">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">A value from the #GDriveStartStopType enumeration.</doc>
+            <type name="DriveStartStopType" c:type="GDriveStartStopType"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_start">
+        <callback name="can_start">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @drive can be started, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_start_degraded">
+        <callback name="can_start_degraded">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @drive can be started degraded, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="start">
+        <callback name="start">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">flags affecting the start operation.</doc>
+              <type name="DriveStartFlags" c:type="GDriveStartFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">user data to pass to @callback</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="start_finish">
+        <callback name="start_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the drive has been started successfully,</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_stop">
+        <callback name="can_stop">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @drive can be stopped, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stop">
+        <callback name="stop">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">flags affecting the unmount if required for stopping.</doc>
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">user data to pass to @callback</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stop_finish">
+        <callback name="stop_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the drive has been stopped successfully,</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stop_button">
+        <callback name="stop_button">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_with_operation">
+        <callback name="eject_with_operation">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">flags affecting the unmount if required for eject</doc>
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_with_operation_finish">
+        <callback name="eject_with_operation_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the drive was successfully ejected. %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="DriveStartFlags"
+                 version="2.22"
+                 glib:type-name="GDriveStartFlags"
+                 glib:get-type="g_drive_start_flags_get_type"
+                 c:type="GDriveStartFlags">
+      <doc xml:whitespace="preserve">Flags used when starting a drive.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="G_DRIVE_START_NONE"
+              glib:nick="none"/>
+    </enumeration>
+    <enumeration name="DriveStartStopType"
+                 version="2.22"
+                 glib:type-name="GDriveStartStopType"
+                 glib:get-type="g_drive_start_stop_type_get_type"
+                 c:type="GDriveStartStopType">
+      <doc xml:whitespace="preserve">Enumeration describing how a drive can be started/stopped.</doc>
+      <member name="unknown"
+              value="0"
+              c:identifier="G_DRIVE_START_STOP_TYPE_UNKNOWN"
+              glib:nick="unknown"/>
+      <member name="shutdown"
+              value="1"
+              c:identifier="G_DRIVE_START_STOP_TYPE_SHUTDOWN"
+              glib:nick="shutdown"/>
+      <member name="network"
+              value="2"
+              c:identifier="G_DRIVE_START_STOP_TYPE_NETWORK"
+              glib:nick="network"/>
+      <member name="multidisk"
+              value="3"
+              c:identifier="G_DRIVE_START_STOP_TYPE_MULTIDISK"
+              glib:nick="multidisk"/>
+      <member name="password"
+              value="4"
+              c:identifier="G_DRIVE_START_STOP_TYPE_PASSWORD"
+              glib:nick="password"/>
+    </enumeration>
+    <class name="Emblem"
+           c:symbol-prefix="emblem"
+           c:type="GEmblem"
+           parent="GObject.Object"
+           glib:type-name="GEmblem"
+           glib:get-type="g_emblem_get_type"
+           glib:type-struct="EmblemClass">
+      <doc xml:whitespace="preserve">An object for Emblems</doc>
+      <implements name="Icon"/>
+      <constructor name="new" c:identifier="g_emblem_new" version="2.18">
+        <doc xml:whitespace="preserve">Creates a new emblem for @icon.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GEmblem.</doc>
+          <type name="Emblem" c:type="GEmblem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a GIcon containing the icon.</doc>
+            <type name="Icon" c:type="GIcon*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_origin"
+                   c:identifier="g_emblem_new_with_origin"
+                   version="2.18">
+        <doc xml:whitespace="preserve">Creates a new emblem for @icon.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GEmblem.</doc>
+          <type name="Emblem" c:type="GEmblem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a GIcon containing the icon.</doc>
+            <type name="Icon" c:type="GIcon*"/>
+          </parameter>
+          <parameter name="origin" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a GEmblemOrigin enum defining the emblem's origin</doc>
+            <type name="EmblemOrigin" c:type="GEmblemOrigin"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_icon" c:identifier="g_emblem_get_icon" version="2.18">
+        <doc xml:whitespace="preserve">Gives back the icon from @emblem.
+and should not be modified or freed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GIcon. The returned object belongs to the emblem</doc>
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </method>
+      <method name="get_origin"
+              c:identifier="g_emblem_get_origin"
+              version="2.18">
+        <doc xml:whitespace="preserve">Gets the origin of the emblem.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the origin of the emblem</doc>
+          <type name="EmblemOrigin" c:type="GEmblemOrigin"/>
+        </return-value>
+      </method>
+      <property name="icon"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="GObject.Object"/>
+      </property>
+      <property name="origin"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="EmblemOrigin"/>
+      </property>
+    </class>
+    <record name="EmblemClass"
+            c:type="GEmblemClass"
+            disguised="1"
+            glib:is-gtype-struct-for="Emblem">
+    </record>
+    <enumeration name="EmblemOrigin"
+                 version="2.18"
+                 glib:type-name="GEmblemOrigin"
+                 glib:get-type="g_emblem_origin_get_type"
+                 c:type="GEmblemOrigin">
+      <doc xml:whitespace="preserve">GEmblemOrigin is used to add information about the origin of the emblem
+to #GEmblem.</doc>
+      <member name="unknown"
+              value="0"
+              c:identifier="G_EMBLEM_ORIGIN_UNKNOWN"
+              glib:nick="unknown"/>
+      <member name="device"
+              value="1"
+              c:identifier="G_EMBLEM_ORIGIN_DEVICE"
+              glib:nick="device"/>
+      <member name="livemetadata"
+              value="2"
+              c:identifier="G_EMBLEM_ORIGIN_LIVEMETADATA"
+              glib:nick="livemetadata"/>
+      <member name="tag"
+              value="3"
+              c:identifier="G_EMBLEM_ORIGIN_TAG"
+              glib:nick="tag"/>
+    </enumeration>
+    <class name="EmblemedIcon"
+           c:symbol-prefix="emblemed_icon"
+           c:type="GEmblemedIcon"
+           parent="GObject.Object"
+           glib:type-name="GEmblemedIcon"
+           glib:get-type="g_emblemed_icon_get_type"
+           glib:type-struct="EmblemedIconClass">
+      <doc xml:whitespace="preserve">An implementation of #GIcon for icons with emblems.</doc>
+      <implements name="Icon"/>
+      <function name="new" c:identifier="g_emblemed_icon_new" version="2.18">
+        <doc xml:whitespace="preserve">Creates a new emblemed icon for @icon with the emblem @emblem.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GIcon</doc>
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GIcon</doc>
+            <type name="Icon" c:type="GIcon*"/>
+          </parameter>
+          <parameter name="emblem" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GEmblem</doc>
+            <type name="Emblem" c:type="GEmblem*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="add_emblem"
+              c:identifier="g_emblemed_icon_add_emblem"
+              version="2.18">
+        <doc xml:whitespace="preserve">Adds @emblem to the #GList of #GEmblem &lt;!-- --&gt;s.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="emblem" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GEmblem</doc>
+            <type name="Emblem" c:type="GEmblem*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_emblems"
+              c:identifier="g_emblemed_icon_get_emblems"
+              version="2.18">
+        <doc xml:whitespace="preserve">Gets the list of emblems for the @icon.
+is owned by @emblemed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GList of #GEmblem &lt;!-- --&gt;s that</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_icon"
+              c:identifier="g_emblemed_icon_get_icon"
+              version="2.18">
+        <doc xml:whitespace="preserve">Gets the main icon for @emblemed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GIcon that is owned by @emblemed</doc>
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </method>
+    </class>
+    <record name="EmblemedIconClass"
+            c:type="GEmblemedIconClass"
+            disguised="1"
+            glib:is-gtype-struct-for="EmblemedIcon">
+    </record>
+    <constant name="FILE_ATTRIBUTE_ACCESS_CAN_DELETE"
+              value="access::can-delete">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE"
+              value="access::can-execute">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_ACCESS_CAN_READ" value="access::can-read">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_ACCESS_CAN_RENAME"
+              value="access::can-rename">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_ACCESS_CAN_TRASH" value="access::can-trash">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_ACCESS_CAN_WRITE" value="access::can-write">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_DOS_IS_ARCHIVE" value="dos::is-archive">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_DOS_IS_SYSTEM" value="dos::is-system">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_ETAG_VALUE" value="etag::value">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_FILESYSTEM_FREE" value="filesystem::free">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_FILESYSTEM_READONLY"
+              value="filesystem::readonly">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_FILESYSTEM_SIZE" value="filesystem::size">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_FILESYSTEM_TYPE" value="filesystem::type">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW"
+              value="filesystem::use-preview">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_GVFS_BACKEND" value="gvfs::backend">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_ID_FILE" value="id::file">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_ID_FILESYSTEM" value="id::filesystem">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT"
+              value="mountable::can-eject">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT"
+              value="mountable::can-mount">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_MOUNTABLE_CAN_POLL"
+              value="mountable::can-poll">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_MOUNTABLE_CAN_START"
+              value="mountable::can-start">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_MOUNTABLE_CAN_START_DEGRADED"
+              value="mountable::can-start-degraded">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_MOUNTABLE_CAN_STOP"
+              value="mountable::can-stop">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT"
+              value="mountable::can-unmount">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI"
+              value="mountable::hal-udi">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_MOUNTABLE_IS_MEDIA_CHECK_AUTOMATIC"
+              value="mountable::is-media-check-automatic">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_MOUNTABLE_START_STOP_TYPE"
+              value="mountable::start-stop-type">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE"
+              value="mountable::unix-device">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE_FILE"
+              value="mountable::unix-device-file">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_OWNER_GROUP" value="owner::group">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_OWNER_USER" value="owner::user">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_OWNER_USER_REAL" value="owner::user-real">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_PREVIEW_ICON" value="preview::icon">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_SELINUX_CONTEXT" value="selinux::context">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_ALLOCATED_SIZE"
+              value="standard::allocated-size">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE"
+              value="standard::content-type">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_COPY_NAME"
+              value="standard::copy-name">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_DESCRIPTION"
+              value="standard::description">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME"
+              value="standard::display-name">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_EDIT_NAME"
+              value="standard::edit-name">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE"
+              value="standard::fast-content-type">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_ICON" value="standard::icon">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_IS_BACKUP"
+              value="standard::is-backup">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_IS_HIDDEN"
+              value="standard::is-hidden">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_IS_SYMLINK"
+              value="standard::is-symlink">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL"
+              value="standard::is-virtual">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_NAME" value="standard::name">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_SIZE" value="standard::size">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_SORT_ORDER"
+              value="standard::sort-order">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET"
+              value="standard::symlink-target">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_TARGET_URI"
+              value="standard::target-uri">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_TYPE" value="standard::type">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_THUMBNAILING_FAILED"
+              value="thumbnail::failed">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_THUMBNAIL_PATH" value="thumbnail::path">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_TIME_ACCESS" value="time::access">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_TIME_ACCESS_USEC" value="time::access-usec">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_TIME_CHANGED" value="time::changed">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_TIME_CHANGED_USEC"
+              value="time::changed-usec">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_TIME_CREATED" value="time::created">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_TIME_CREATED_USEC"
+              value="time::created-usec">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_TIME_MODIFIED" value="time::modified">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_TIME_MODIFIED_USEC"
+              value="time::modified-usec">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_TRASH_DELETION_DATE"
+              value="trash::deletion-date">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_TRASH_ITEM_COUNT" value="trash::item-count">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_TRASH_ORIG_PATH" value="trash::orig-path">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_UNIX_BLOCKS" value="unix::blocks">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_UNIX_BLOCK_SIZE" value="unix::block-size">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_UNIX_DEVICE" value="unix::device">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_UNIX_GID" value="unix::gid">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_UNIX_INODE" value="unix::inode">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT"
+              value="unix::is-mountpoint">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_UNIX_MODE" value="unix::mode">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_UNIX_NLINK" value="unix::nlink">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_UNIX_RDEV" value="unix::rdev">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_UNIX_UID" value="unix::uid">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <interface name="File"
+               c:symbol-prefix="file"
+               c:type="GFile"
+               glib:type-name="GFile"
+               glib:get-type="g_file_get_type"
+               glib:type-struct="FileIface">
+      <doc xml:whitespace="preserve">A handle to an object implementing the #GFileIface interface.
+Generally stores a location within the file system. Handles do not
+necessarily represent files or directories that currently exist.</doc>
+      <virtual-method name="append_to" invoker="append_to" throws="1">
+        <doc xml:whitespace="preserve">Gets an output stream for appending data to the file. If
+the file doesn't already exist it is created.
+By default files created are generally readable by everyone,
+but if you pass #G_FILE_CREATE_PRIVATE in @flags the file
+will be made readable only to the current user, to the level that
+is supported on the target filesystem.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+Some file systems don't allow all file names, and may
+return an %G_IO_ERROR_INVALID_FILENAME error.
+If the file is a directory the %G_IO_ERROR_IS_DIRECTORY error will be
+returned. Other errors are possible too, and depend on what kind of
+filesystem the file is on.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileOutputStream, or %NULL on error.</doc>
+          <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileCreateFlags.</doc>
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="append_to_async" invoker="append_to_async">
+        <doc xml:whitespace="preserve">Asynchronously opens @file for appending.
+For more details, see g_file_append_to() which is
+the synchronous version of this call.
+When the operation is finished, @callback will be called. You can then call
+g_file_append_to_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileCreateFlags.</doc>
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="append_to_finish"
+                      invoker="append_to_finish"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous file append operation started with
+g_file_append_to_async().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a valid #GFileOutputStream or %NULL on error.</doc>
+          <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GAsyncResult</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="copy" invoker="copy" introspectable="0" throws="1">
+        <doc xml:whitespace="preserve">Copies the file @source to the location specified by @destination.
+Can not handle recursive copies of directories.
+If the flag #G_FILE_COPY_OVERWRITE is specified an already
+existing @destination file is overwritten.
+If the flag #G_FILE_COPY_NOFOLLOW_SYMLINKS is specified then symlinks
+will be copied as symlinks, otherwise the target of the
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+If @progress_callback is not %NULL, then the operation can be monitored by
+setting this to a #GFileProgressCallback function. @progress_callback_data
+will be passed to this function. It is guaranteed that this callback will
+be called after all data has been transferred with the total number of bytes
+copied during the operation.
+If the @source file does not exist then the G_IO_ERROR_NOT_FOUND
+error is returned, independent on the status of the @destination.
+If #G_FILE_COPY_OVERWRITE is not specified and the target exists, then the
+error G_IO_ERROR_EXISTS is returned.
+If trying to overwrite a file over a directory the G_IO_ERROR_IS_DIRECTORY
+error is returned. If trying to overwrite a directory with a directory the
+G_IO_ERROR_WOULD_MERGE error is returned.
+If the source is a directory and the target does not exist, or #G_FILE_COPY_OVERWRITE is
+specified and the target is a file, then the G_IO_ERROR_WOULD_RECURSE error
+is returned.
+If you are interested in copying the #GFile object itself (not the on-disk
+file), see g_file_dup().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="destination" transfer-ownership="none">
+            <doc xml:whitespace="preserve">destination #GFile</doc>
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">set of #GFileCopyFlags</doc>
+            <type name="FileCopyFlags" c:type="GFileCopyFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="progress_callback"
+                     transfer-ownership="none"
+                     closure="4">
+            <doc xml:whitespace="preserve">function to callback with progress information</doc>
+            <type name="FileProgressCallback" c:type="GFileProgressCallback"/>
+          </parameter>
+          <parameter name="progress_callback_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @progress_callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="copy_async"
+                      invoker="copy_async"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Copies the file @source to the location specified by @destination
+asynchronously. For details of the behaviour, see g_file_copy().
+If @progress_callback is not %NULL, then that function that will be called
+just like in g_file_copy(), however the callback will run in the main loop,
+not in the thread that is doing the I/O operation.
+When the operation is finished, @callback will be called. You can then call
+g_file_copy_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="destination" transfer-ownership="none">
+            <doc xml:whitespace="preserve">destination #GFile</doc>
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">set of #GFileCopyFlags</doc>
+            <type name="FileCopyFlags" c:type="GFileCopyFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="progress_callback"
+                     transfer-ownership="none"
+                     closure="5">
+            <doc xml:whitespace="preserve">function to callback with progress information</doc>
+            <type name="FileProgressCallback" c:type="GFileProgressCallback"/>
+          </parameter>
+          <parameter name="progress_callback_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @progress_callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="7">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="7">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="copy_finish" invoker="copy_finish" throws="1">
+        <doc xml:whitespace="preserve">Finishes copying the file started with
+g_file_copy_async().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a %TRUE on success, %FALSE on error.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="create" invoker="create" throws="1">
+        <doc xml:whitespace="preserve">Creates a new file and returns an output stream for writing to it.
+The file must not already exist.
+By default files created are generally readable by everyone,
+but if you pass #G_FILE_CREATE_PRIVATE in @flags the file
+will be made readable only to the current user, to the level that
+is supported on the target filesystem.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+If a file or directory with this name already exists the G_IO_ERROR_EXISTS
+error will be returned.
+Some file systems don't allow all file names, and may
+return an G_IO_ERROR_INVALID_FILENAME error, and if the name
+is to long G_IO_ERROR_FILENAME_TOO_LONG will be returned.
+Other errors are possible too, and depend on what kind of
+filesystem the file is on.
+%NULL on error.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileOutputStream for the newly created file, or</doc>
+          <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileCreateFlags.</doc>
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="create_async" invoker="create_async">
+        <doc xml:whitespace="preserve">Asynchronously creates a new file and returns an output stream for writing to it.
+The file must not already exist.
+For more details, see g_file_create() which is
+the synchronous version of this call.
+When the operation is finished, @callback will be called. You can then call
+g_file_create_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileCreateFlags.</doc>
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="create_finish" invoker="create_finish" throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous file create operation started with
+g_file_create_async().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileOutputStream or %NULL on error.</doc>
+          <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="create_readwrite"
+                      invoker="create_readwrite"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Creates a new file and returns a stream for reading and writing to it.
+The file must not already exist.
+By default files created are generally readable by everyone,
+but if you pass #G_FILE_CREATE_PRIVATE in @flags the file
+will be made readable only to the current user, to the level that
+is supported on the target filesystem.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+If a file or directory with this name already exists the %G_IO_ERROR_EXISTS
+error will be returned. Some file systems don't allow all file names,
+and may return an %G_IO_ERROR_INVALID_FILENAME error, and if the name
+is too long, %G_IO_ERROR_FILENAME_TOO_LONG will be returned. Other errors
+are possible too, and depend on what kind of filesystem the file is on.
+Note that in many non-local file cases read and write streams are not
+supported, so make sure you really need to do read and write streaming,
+rather than just opening for reading or writing.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileIOStream for the newly created file, or %NULL on error.</doc>
+          <type name="FileIOStream" c:type="GFileIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileCreateFlags</doc>
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="create_readwrite_async"
+                      invoker="create_readwrite_async"
+                      version="2.22">
+        <doc xml:whitespace="preserve">Asynchronously creates a new file and returns a stream for reading and
+writing to it. The file must not already exist.
+For more details, see g_file_create_readwrite() which is
+the synchronous version of this call.
+When the operation is finished, @callback will be called. You can then
+call g_file_create_readwrite_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileCreateFlags</doc>
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="create_readwrite_finish"
+                      invoker="create_readwrite_finish"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous file create operation started with
+g_file_create_readwrite_async().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileIOStream or %NULL on error.</doc>
+          <type name="FileIOStream" c:type="GFileIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="delete_file" invoker="delete" throws="1">
+        <doc xml:whitespace="preserve">Deletes a file. If the @file is a directory, it will only be deleted if it
+is empty.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the file was deleted. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="dup" invoker="dup">
+        <doc xml:whitespace="preserve">Duplicates a #GFile handle. This operation does not duplicate
+the actual file or directory represented by the #GFile; see
+g_file_copy() if attempting to copy a file.
+This call does no blocking i/o.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GFile that is a duplicate of the given #GFile.</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="eject_mountable"
+                      invoker="eject_mountable"
+                      deprecated="Use g_file_eject_mountable_with_operation() instead."
+                      deprecated-version="2.22">
+        <doc xml:whitespace="preserve">Starts an asynchronous eject on a mountable.
+When this operation has completed, @callback will be called with
+g_file_eject_mountable_finish().
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the operation</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="3">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject_mountable_finish"
+                      invoker="eject_mountable_finish"
+                      deprecated="Use g_file_eject_mountable_with_operation_finish() instead."
+                      deprecated-version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous eject operation started by
+g_file_eject_mountable().
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @file was ejected successfully. %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject_mountable_with_operation"
+                      invoker="eject_mountable_with_operation"
+                      version="2.22">
+        <doc xml:whitespace="preserve">Starts an asynchronous eject on a mountable.
+When this operation has completed, @callback will be called with
+g_file_eject_mountable_with_operation_finish().
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the operation</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation, or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject_mountable_with_operation_finish"
+                      invoker="eject_mountable_with_operation_finish"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous eject operation started by
+g_file_eject_mountable_with_operation().
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @file was ejected successfully. %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="enumerate_children"
+                      invoker="enumerate_children"
+                      throws="1">
+        <doc xml:whitespace="preserve">Gets the requested information about the files in a directory. The result
+is a #GFileEnumerator object that will give out #GFileInfo objects for
+all the files in the directory.
+The @attributes value is a string that specifies the file attributes that
+should be gathered. It is not an error if it's not possible to read a particular
+requested attribute from a file - it just won't be set. @attributes should
+be a comma-separated list of attributes or attribute wildcards. The wildcard "*"
+means all attributes, and a wildcard like "standard::*" means all attributes in the standard
+namespace. An example attribute query be "standard::*,owner::user".
+The standard attributes are available as defines, like #G_FILE_ATTRIBUTE_STANDARD_NAME.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+If the file does not exist, the G_IO_ERROR_NOT_FOUND error will be returned.
+If the file is not a directory, the G_FILE_ERROR_NOTDIR error will be returned.
+Other errors are possible too.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GFileEnumerator if successful, %NULL on error.</doc>
+          <type name="FileEnumerator" c:type="GFileEnumerator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an attribute query string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileQueryInfoFlags.</doc>
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="enumerate_children_async"
+                      invoker="enumerate_children_async">
+        <doc xml:whitespace="preserve">Asynchronously gets the requested information about the files in a directory. The result
+is a #GFileEnumerator object that will give out #GFileInfo objects for
+all the files in the directory.
+For more details, see g_file_enumerate_children() which is
+the synchronous version of this call.
+When the operation is finished, @callback will be called. You can then call
+g_file_enumerate_children_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an attribute query string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileQueryInfoFlags.</doc>
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="enumerate_children_finish"
+                      invoker="enumerate_children_finish"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes an async enumerate children operation.
+See g_file_enumerate_children_async().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileEnumerator or %NULL if an error occurred.</doc>
+          <type name="FileEnumerator" c:type="GFileEnumerator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="equal" invoker="equal">
+        <doc xml:whitespace="preserve">Checks equality of two given #GFile&lt;!-- --&gt;s. Note that two
+#GFile&lt;!-- --&gt;s that differ can still refer to the same
+file on the filesystem due to various forms of filename
+aliasing.
+This call does no blocking i/o.
+%FALSE if either is not a #GFile.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @file1 and @file2 are equal.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the second #GFile.</doc>
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="find_enclosing_mount"
+                      invoker="find_enclosing_mount"
+                      throws="1">
+        <doc xml:whitespace="preserve">Gets a #GMount for the #GFile.
+If the #GFileIface for @file does not have a mount (e.g. possibly a
+remote share), @error will be set to %G_IO_ERROR_NOT_FOUND and %NULL
+will be returned.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GMount where the @file is located or %NULL on error.</doc>
+          <type name="Mount" c:type="GMount*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="find_enclosing_mount_async"
+                      invoker="find_enclosing_mount_async">
+        <doc xml:whitespace="preserve">Asynchronously gets the mount for the file.
+For more details, see g_file_find_enclosing_mount() which is
+the synchronous version of this call.
+When the operation is finished, @callback will be called. You can then call
+g_file_find_enclosing_mount_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="3">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="find_enclosing_mount_finish"
+                      invoker="find_enclosing_mount_finish"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous find mount request.
+See g_file_find_enclosing_mount_async().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GMount for given @file or %NULL on error.</doc>
+          <type name="Mount" c:type="GMount*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_basename" invoker="get_basename">
+        <doc xml:whitespace="preserve">Gets the base name (the last component of the path) for a given #GFile.
+If called for the top level of a system (such as the filesystem root
+or a uri like sftp://host/) it will return a single directory separator
+(and on Windows, possibly a drive letter).
+The base name is a byte string (*not* UTF-8). It has no defined encoding
+or rules other than it may not contain zero bytes.  If you want to use
+filenames in a user interface you should use the display name that you
+can get by requesting the %G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME
+attribute with g_file_query_info().
+This call does no blocking i/o.
+if given #GFile is invalid. The returned string should be
+freed with g_free() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">string containing the #GFile's base name, or %NULL</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_child_for_display_name"
+                      invoker="get_child_for_display_name"
+                      throws="1">
+        <doc xml:whitespace="preserve">Gets the child of @file for a given @display_name (i.e. a UTF8
+version of the name). If this function fails, it returns %NULL and @error will be
+set. This is very useful when constructing a GFile for a new file
+and the user entered the filename in the user interface, for instance
+when you select a directory and type a filename in the file selector.
+This call does no blocking i/o.
+%NULL if the display name couldn't be converted.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFile to the specified child, or</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">string to a possible child.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_parent" invoker="get_parent">
+        <doc xml:whitespace="preserve">Gets the parent directory for the @file.
+If the @file represents the root directory of the
+file system, then %NULL will be returned.
+This call does no blocking i/o.
+#GFile or %NULL if there is no parent.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFile structure to the parent of the given</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_parse_name" invoker="get_parse_name">
+        <doc xml:whitespace="preserve">Gets the parse name of the @file.
+A parse name is a UTF-8 string that describes the
+file such that one can get the #GFile back using
+g_file_parse_name().
+This is generally used to show the #GFile as a nice
+full-pathname kind of string in a user interface,
+like in a location entry.
+For local files with names that can safely be converted
+to UTF8 the pathname is used, otherwise the IRI is used
+(a form of URI that allows UTF8 characters unescaped).
+This call does no blocking i/o.
+string should be freed with g_free() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a string containing the #GFile's parse name. The returned</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_path" invoker="get_path">
+        <doc xml:whitespace="preserve">Gets the local pathname for #GFile, if one exists.
+This call does no blocking i/o.
+no such path exists. The returned string should be
+freed with g_free() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">string containing the #GFile's path, or %NULL if</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_relative_path" invoker="get_relative_path">
+        <doc xml:whitespace="preserve">Gets the path for @descendant relative to @parent.
+This call does no blocking i/o.
+to @parent, or %NULL if @descendant doesn't have @parent as prefix.
+The returned string should be freed with g_free() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">string with the relative path from @descendant</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="descendant" transfer-ownership="none">
+            <doc xml:whitespace="preserve">input #GFile.</doc>
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_uri" invoker="get_uri">
+        <doc xml:whitespace="preserve">Gets the URI for the @file.
+This call does no blocking i/o.
+The returned string should be freed with g_free() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a string containing the #GFile's URI.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_uri_scheme" invoker="get_uri_scheme">
+        <doc xml:whitespace="preserve">Gets the URI scheme for a #GFile.
+RFC 3986 decodes the scheme as:
+&lt;programlisting&gt;
+URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
+&lt;/programlisting&gt;
+Common schemes include "file", "http", "ftp", etc.
+This call does no blocking i/o.
+#GFile. The returned string should be freed with g_free()
+when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a string containing the URI scheme for the given</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="has_uri_scheme" invoker="has_uri_scheme">
+        <doc xml:whitespace="preserve">Checks to see if a #GFile has a given URI scheme.
+This call does no blocking i/o.
+given URI scheme, %FALSE if URI scheme is %NULL,
+not supported, or #GFile is invalid.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if #GFile's backend supports the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri_scheme" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing a URI scheme.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="hash">
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="is_native" invoker="is_native">
+        <doc xml:whitespace="preserve">Checks to see if a file is native to the platform.
+A native file s one expressed in the platform-native filename format,
+e.g. "C:\Windows" or "/usr/bin/". This does not mean the file is local,
+as it might be on a locally mounted remote filesystem.
+On some systems non-native files may be available using
+the native filesystem via a userspace filesystem (FUSE), in
+these cases this call will return %FALSE, but g_file_get_path()
+will still return a native path.
+This call does no blocking i/o.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if file is native.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="make_directory"
+                      invoker="make_directory"
+                      throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="make_symbolic_link"
+                      invoker="make_symbolic_link"
+                      throws="1">
+        <doc xml:whitespace="preserve">Creates a symbolic link named @file which contains the string
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on the creation of a new symlink, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="symlink_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string with the path for the target of the new symlink</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="monitor_dir"
+                      invoker="monitor_directory"
+                      throws="1">
+        <doc xml:whitespace="preserve">Obtains a directory monitor for the given file.
+This may fail if directory monitoring is not supported.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileMonitor for the given @file, or %NULL on error.</doc>
+          <type name="FileMonitor" c:type="GFileMonitor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileMonitorFlags.</doc>
+            <type name="FileMonitorFlags" c:type="GFileMonitorFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="monitor_file" invoker="monitor_file" throws="1">
+        <doc xml:whitespace="preserve">Obtains a file monitor for the given file. If no file notification
+mechanism exists, then regular polling of the file is used.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileMonitor for the given @file, or %NULL on error.</doc>
+          <type name="FileMonitor" c:type="GFileMonitor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileMonitorFlags.</doc>
+            <type name="FileMonitorFlags" c:type="GFileMonitorFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="mount_enclosing_volume"
+                      invoker="mount_enclosing_volume">
+        <doc xml:whitespace="preserve">Starts a @mount_operation, mounting the volume that contains the file @location.
+When this operation has completed, @callback will be called with
+g_file_mount_enclosing_volume_finish().
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the operation</doc>
+            <type name="MountMountFlags" c:type="GMountMountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="mount_enclosing_volume_finish"
+                      invoker="mount_enclosing_volume_finish"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes a mount operation started by g_file_mount_enclosing_volume().
+has occurred, this function will return %FALSE and set @error
+appropriately if present.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful. If an error</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="mount_mountable" invoker="mount_mountable">
+        <doc xml:whitespace="preserve">Mounts a file of type G_FILE_TYPE_MOUNTABLE.
+Using @mount_operation, you can request callbacks when, for instance,
+passwords are needed during authentication.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+When the operation is finished, @callback will be called. You can then call
+g_file_mount_mountable_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the operation</doc>
+            <type name="MountMountFlags" c:type="GMountMountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation, or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="mount_mountable_finish"
+                      invoker="mount_mountable_finish"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes a mount operation. See g_file_mount_mountable() for details.
+Finish an asynchronous mount operation that was started
+with g_file_mount_mountable().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFile or %NULL on error.</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="move" invoker="move" introspectable="0" throws="1">
+        <doc xml:whitespace="preserve">Tries to move the file or directory @source to the location specified by @destination.
+If native move operations are supported then this is used, otherwise a copy + delete
+fallback is used. The native implementation may support moving directories (for instance
+on moves inside the same filesystem), but the fallback code does not.
+If the flag #G_FILE_COPY_OVERWRITE is specified an already
+existing @destination file is overwritten.
+If the flag #G_FILE_COPY_NOFOLLOW_SYMLINKS is specified then symlinks
+will be copied as symlinks, otherwise the target of the
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+If @progress_callback is not %NULL, then the operation can be monitored by
+setting this to a #GFileProgressCallback function. @progress_callback_data
+will be passed to this function. It is guaranteed that this callback will
+be called after all data has been transferred with the total number of bytes
+copied during the operation.
+If the @source file does not exist then the G_IO_ERROR_NOT_FOUND
+error is returned, independent on the status of the @destination.
+If #G_FILE_COPY_OVERWRITE is not specified and the target exists, then the
+error G_IO_ERROR_EXISTS is returned.
+If trying to overwrite a file over a directory the G_IO_ERROR_IS_DIRECTORY
+error is returned. If trying to overwrite a directory with a directory the
+G_IO_ERROR_WOULD_MERGE error is returned.
+If the source is a directory and the target does not exist, or #G_FILE_COPY_OVERWRITE is
+specified and the target is a file, then the G_IO_ERROR_WOULD_RECURSE error
+may be returned (if the native move operation isn't available).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on successful move, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="destination" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GFile pointing to the destination location.</doc>
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">set of #GFileCopyFlags.</doc>
+            <type name="FileCopyFlags" c:type="GFileCopyFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="progress_callback"
+                     transfer-ownership="none"
+                     closure="4">
+            <doc xml:whitespace="preserve">#GFileProgressCallback function for updates.</doc>
+            <type name="FileProgressCallback" c:type="GFileProgressCallback"/>
+          </parameter>
+          <parameter name="progress_callback_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">gpointer to user data for the callback function.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="open_readwrite"
+                      invoker="open_readwrite"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Opens an existing file for reading and writing. The result is
+a #GFileIOStream that can be used to read and write the contents of the file.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+If the file does not exist, the G_IO_ERROR_NOT_FOUND error will be returned.
+If the file is a directory, the G_IO_ERROR_IS_DIRECTORY error will be returned.
+Other errors are possible too, and depend on what kind of filesystem the file is on.
+Note that in many non-local file cases read and write streams are not supported,
+so make sure you really need to do read and write streaming, rather than
+just opening for reading or writing.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GFileIOStream or %NULL on error.</doc>
+          <type name="FileIOStream" c:type="GFileIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="open_readwrite_async"
+                      invoker="open_readwrite_async"
+                      version="2.22">
+        <doc xml:whitespace="preserve">Asynchronously opens @file for reading and writing.
+For more details, see g_file_open_readwrite() which is
+the synchronous version of this call.
+When the operation is finished, @callback will be called. You can then call
+g_file_open_readwrite_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="3">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="open_readwrite_finish"
+                      invoker="open_readwrite_finish"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous file read operation started with
+g_file_open_readwrite_async().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileIOStream or %NULL on error.</doc>
+          <type name="FileIOStream" c:type="GFileIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="poll_mountable"
+                      invoker="poll_mountable"
+                      version="2.22">
+        <doc xml:whitespace="preserve">Polls a file of type G_FILE_TYPE_MOUNTABLE.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+When the operation is finished, @callback will be called. You can then call
+g_file_mount_mountable_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="2">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="2">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="poll_mountable_finish"
+                      invoker="poll_mountable_finish"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes a poll operation. See g_file_poll_mountable() for details.
+Finish an asynchronous poll operation that was polled
+with g_file_poll_mountable().
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation finished successfully. %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="prefix_matches" invoker="has_prefix">
+        <doc xml:whitespace="preserve">Checks whether @file has the prefix specified by @prefix. In other word,
+if the names of inital elements of @file&lt;!-- --&gt;s pathname match @prefix.
+Only full pathname elements are matched, so a path like /foo is not
+considered a prefix of /foobar, only of /foo/bar.
+This call does no i/o, as it works purely on names. As such it can
+sometimes return %FALSE even if @file is inside a @prefix (from a
+filesystem point of view), because the prefix of @file is an alias
+of @prefix.
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @files's parent, grandparent, etc is @prefix.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file" transfer-ownership="none">
+            <doc xml:whitespace="preserve">input #GFile.</doc>
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_filesystem_info"
+                      invoker="query_filesystem_info"
+                      throws="1">
+        <doc xml:whitespace="preserve">Similar to g_file_query_info(), but obtains information
+about the filesystem the @file is on, rather than the file itself.
+For instance the amount of space available and the type of
+the filesystem.
+The @attributes value is a string that specifies the file attributes that
+should be gathered. It is not an error if it's not possible to read a particular
+requested attribute from a file - it just won't be set. @attributes should
+be a comma-separated list of attributes or attribute wildcards. The wildcard "*"
+means all attributes, and a wildcard like "fs:*" means all attributes in the fs
+namespace. The standard namespace for filesystem attributes is "fs".
+Common attributes of interest are #G_FILE_ATTRIBUTE_FILESYSTEM_SIZE
+(the total size of the filesystem in bytes), #G_FILE_ATTRIBUTE_FILESYSTEM_FREE (number of
+bytes available), and #G_FILE_ATTRIBUTE_FILESYSTEM_TYPE (type of the filesystem).
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+If the file does not exist, the G_IO_ERROR_NOT_FOUND error will be returned.
+Other errors are possible too, and depend on what kind of filesystem the file is on.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileInfo or %NULL if there was an error.</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an attribute query string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_filesystem_info_async"
+                      invoker="query_filesystem_info_async">
+        <doc xml:whitespace="preserve">Asynchronously gets the requested information about the filesystem
+that the specified @file is on. The result is a #GFileInfo object
+that contains key-value attributes (such as type or size for the
+file).
+For more details, see g_file_query_filesystem_info() which is the
+synchronous version of this call.
+When the operation is finished, @callback will be called. You can
+then call g_file_query_info_finish() to get the result of the
+operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an attribute query string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_filesystem_info_finish"
+                      invoker="query_filesystem_info_finish"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous filesystem info query.  See
+g_file_query_filesystem_info_async().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GFileInfo for given @file or %NULL on error.</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_info" invoker="query_info" throws="1">
+        <doc xml:whitespace="preserve">Gets the requested information about specified @file. The result
+is a #GFileInfo object that contains key-value attributes (such as
+the type or size of the file).
+The @attributes value is a string that specifies the file attributes that
+should be gathered. It is not an error if it's not possible to read a particular
+requested attribute from a file - it just won't be set. @attributes should
+be a comma-separated list of attributes or attribute wildcards. The wildcard "*"
+means all attributes, and a wildcard like "standard::*" means all attributes in the standard
+namespace. An example attribute query be "standard::*,owner::user".
+The standard attributes are available as defines, like #G_FILE_ATTRIBUTE_STANDARD_NAME.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+For symlinks, normally the information about the target of the
+symlink is returned, rather than information about the symlink itself.
+However if you pass #G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS in @flags the
+information about the symlink itself will be returned. Also, for symlinks
+that point to non-existing files the information about the symlink itself
+will be returned.
+If the file does not exist, the G_IO_ERROR_NOT_FOUND error will be returned.
+Other errors are possible too, and depend on what kind of filesystem the file is on.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileInfo for the given @file, or %NULL on error.</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an attribute query string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileQueryInfoFlags.</doc>
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_info_async" invoker="query_info_async">
+        <doc xml:whitespace="preserve">Asynchronously gets the requested information about specified @file. The result
+is a #GFileInfo object that contains key-value attributes (such as type or size
+for the file).
+For more details, see g_file_query_info() which is
+the synchronous version of this call.
+When the operation is finished, @callback will be called. You can then call
+g_file_query_info_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an attribute query string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileQueryInfoFlags.</doc>
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_info_finish"
+                      invoker="query_info_finish"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous file info query.
+See g_file_query_info_async().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GFileInfo for given @file or %NULL on error.</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_settable_attributes"
+                      invoker="query_settable_attributes"
+                      throws="1">
+        <doc xml:whitespace="preserve">Obtain the list of settable attributes for the file.
+Returns the type and full attribute name of all the attributes
+that can be set on this file. This doesn't mean setting it will always
+succeed though, you might get an access failure, or some specific
+file may not support a specific attribute.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+When you are done with it, release it with g_file_attribute_info_list_unref()</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileAttributeInfoList describing the settable attributes.</doc>
+          <type name="FileAttributeInfoList" c:type="GFileAttributeInfoList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_writable_namespaces"
+                      invoker="query_writable_namespaces"
+                      throws="1">
+        <doc xml:whitespace="preserve">Obtain the list of attribute namespaces where new attributes
+can be created by a user. An example of this is extended
+attributes (in the "xattr" namespace).
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+When you are done with it, release it with g_file_attribute_info_list_unref()</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileAttributeInfoList describing the writable namespaces.</doc>
+          <type name="FileAttributeInfoList" c:type="GFileAttributeInfoList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="read_async" invoker="read_async">
+        <doc xml:whitespace="preserve">Asynchronously opens @file for reading.
+For more details, see g_file_read() which is
+the synchronous version of this call.
+When the operation is finished, @callback will be called. You can then call
+g_file_read_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="3">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="read_finish" invoker="read_finish" throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous file read operation started with
+g_file_read_async().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileInputStream or %NULL on error.</doc>
+          <type name="FileInputStream" c:type="GFileInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="read_fn" invoker="read" throws="1">
+        <doc xml:whitespace="preserve">Opens a file for reading. The result is a #GFileInputStream that
+can be used to read the contents of the file.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+If the file does not exist, the G_IO_ERROR_NOT_FOUND error will be returned.
+If the file is a directory, the G_IO_ERROR_IS_DIRECTORY error will be returned.
+Other errors are possible too, and depend on what kind of filesystem the file is on.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GFileInputStream or %NULL on error.</doc>
+          <type name="FileInputStream" c:type="GFileInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="replace" invoker="replace" throws="1">
+        <doc xml:whitespace="preserve">Returns an output stream for overwriting the file, possibly
+creating a backup copy of the file first. If the file doesn't exist,
+it will be created.
+This will try to replace the file in the safest way possible so
+that any errors during the writing will not affect an already
+existing copy of the file. For instance, for local files it
+may write to a temporary file and then atomically rename over
+the destination when the stream is closed.
+By default files created are generally readable by everyone,
+but if you pass #G_FILE_CREATE_PRIVATE in @flags the file
+will be made readable only to the current user, to the level that
+is supported on the target filesystem.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+If you pass in a non-#NULL @etag value, then this value is
+compared to the current entity tag of the file, and if they differ
+an G_IO_ERROR_WRONG_ETAG error is returned. This generally means
+that the file has been changed since you last read it. You can get
+the new etag from g_file_output_stream_get_etag() after you've
+finished writing and closed the #GFileOutputStream. When you load
+a new file you can use g_file_input_stream_query_info() to get
+the etag of the file.
+If @make_backup is %TRUE, this function will attempt to make a backup
+of the current file before overwriting it. If this fails a G_IO_ERROR_CANT_CREATE_BACKUP
+error will be returned. If you want to replace anyway, try again with
+If the file is a directory the G_IO_ERROR_IS_DIRECTORY error will be returned,
+and if the file is some other form of non-regular file then a
+G_IO_ERROR_NOT_REGULAR_FILE error will be returned.
+Some file systems don't allow all file names, and may
+return an G_IO_ERROR_INVALID_FILENAME error, and if the name
+is to long G_IO_ERROR_FILENAME_TOO_LONG will be returned.
+Other errors are possible too, and depend on what kind of
+filesystem the file is on.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileOutputStream or %NULL on error.</doc>
+          <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="etag" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an optional &lt;link linkend="gfile-etag"&gt;entity tag&lt;/link&gt; for the current #GFile, or #NULL to ignore.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="make_backup" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if a backup should be created.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileCreateFlags.</doc>
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="replace_async" invoker="replace_async">
+        <doc xml:whitespace="preserve">Asynchronously overwrites the file, replacing the contents, possibly
+creating a backup copy of the file first.
+For more details, see g_file_replace() which is
+the synchronous version of this call.
+When the operation is finished, @callback will be called. You can then call
+g_file_replace_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="etag" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an &lt;link linkend="gfile-etag"&gt;entity tag&lt;/link&gt; for the current #GFile, or NULL to ignore.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="make_backup" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if a backup should be created.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileCreateFlags.</doc>
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="6">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="6">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="replace_finish"
+                      invoker="replace_finish"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous file replace operation started with
+g_file_replace_async().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileOutputStream, or %NULL on error.</doc>
+          <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="replace_readwrite"
+                      invoker="replace_readwrite"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Returns an output stream for overwriting the file in readwrite mode,
+possibly creating a backup copy of the file first. If the file doesn't
+exist, it will be created.
+For details about the behaviour, see g_file_replace() which does the same
+thing but returns an output stream only.
+Note that in many non-local file cases read and write streams are not
+supported, so make sure you really need to do read and write streaming,
+rather than just opening for reading or writing.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileIOStream or %NULL on error.</doc>
+          <type name="FileIOStream" c:type="GFileIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="etag" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an optional &lt;link linkend="gfile-etag"&gt;entity tag&lt;/link&gt; for the current #GFile, or #NULL to ignore</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="make_backup" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if a backup should be created</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileCreateFlags</doc>
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="replace_readwrite_async"
+                      invoker="replace_readwrite_async"
+                      version="2.22">
+        <doc xml:whitespace="preserve">Asynchronously overwrites the file in read-write mode, replacing the
+contents, possibly creating a backup copy of the file first.
+For more details, see g_file_replace_readwrite() which is
+the synchronous version of this call.
+When the operation is finished, @callback will be called. You can then
+call g_file_replace_readwrite_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="etag" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an &lt;link linkend="gfile-etag"&gt;entity tag&lt;/link&gt; for the current #GFile, or NULL to ignore.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="make_backup" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if a backup should be created.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileCreateFlags.</doc>
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="6">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="6">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="replace_readwrite_finish"
+                      invoker="replace_readwrite_finish"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous file replace operation started with
+g_file_replace_readwrite_async().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileIOStream, or %NULL on error.</doc>
+          <type name="FileIOStream" c:type="GFileIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="resolve_relative_path"
+                      invoker="resolve_relative_path">
+        <doc xml:whitespace="preserve">Resolves a relative path for @file to an absolute path.
+This call does no blocking i/o.
+is %NULL or if @file is invalid.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GFile to the resolved path. %NULL if @relative_path</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="relative_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a given relative path string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_attribute" invoker="set_attribute" throws="1">
+        <doc xml:whitespace="preserve">Sets an attribute in the file with attribute name @attribute to @value.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the attribute was set, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing the attribute's name.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The type of the attribute</doc>
+            <type name="FileAttributeType" c:type="GFileAttributeType"/>
+          </parameter>
+          <parameter name="value_p" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to the value (or the pointer itself if the type is a pointer type)</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileQueryInfoFlags.</doc>
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_attributes_async"
+                      invoker="set_attributes_async">
+        <doc xml:whitespace="preserve">Asynchronously sets the attributes of @file with @info.
+For more details, see g_file_set_attributes_from_info() which is
+the synchronous version of this call.
+When the operation is finished, @callback will be called. You can then call
+g_file_set_attributes_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GFileInfo.</doc>
+            <type name="FileInfo" c:type="GFileInfo*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GFileQueryInfoFlags.</doc>
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <doc xml:whitespace="preserve">a #gpointer.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_attributes_finish"
+                      invoker="set_attributes_finish"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes setting an attribute started in g_file_set_attributes_async().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the attributes were set correctly, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="info"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFileInfo.</doc>
+            <type name="FileInfo" c:type="GFileInfo**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_attributes_from_info"
+                      invoker="set_attributes_from_info"
+                      throws="1">
+        <doc xml:whitespace="preserve">Tries to set all attributes in the #GFileInfo on the target values,
+not stopping on the first error.
+If there is any error during this operation then @error will be set to
+the first error. Error on particular fields are flagged by setting
+the "status" field in the attribute value to
+%G_FILE_ATTRIBUTE_STATUS_ERROR_SETTING, which means you can also detect
+further errors.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if there was any error, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GFileInfo.</doc>
+            <type name="FileInfo" c:type="GFileInfo*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GFileQueryInfoFlags</doc>
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_display_name"
+                      invoker="set_display_name"
+                      throws="1">
+        <doc xml:whitespace="preserve">Renames @file to the specified display name.
+The display name is converted from UTF8 to the correct encoding for the target
+filesystem if possible and the @file is renamed to this.
+If you want to implement a rename operation in the user interface the edit name
+(#G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME) should be used as the initial value in the rename
+widget, and then the result after editing should be passed to g_file_set_display_name().
+On success the resulting converted filename is returned.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+if there was an error.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFile specifying what @file was renamed to, or %NULL</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_display_name_async"
+                      invoker="set_display_name_async">
+        <doc xml:whitespace="preserve">Asynchronously sets the display name for a given #GFile.
+For more details, see g_file_set_display_name() which is
+the synchronous version of this call.
+When the operation is finished, @callback will be called. You can then call
+g_file_set_display_name_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="display_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_display_name_finish"
+                      invoker="set_display_name_finish"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes setting a display name started with
+g_file_set_display_name_async().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFile or %NULL on error.</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="start_mountable"
+                      invoker="start_mountable"
+                      version="2.22">
+        <doc xml:whitespace="preserve">Starts a file of type G_FILE_TYPE_MOUNTABLE.
+Using @start_operation, you can request callbacks when, for instance,
+passwords are needed during authentication.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+When the operation is finished, @callback will be called. You can then call
+g_file_mount_mountable_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the operation</doc>
+            <type name="DriveStartFlags" c:type="GDriveStartFlags"/>
+          </parameter>
+          <parameter name="start_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation, or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="start_mountable_finish"
+                      invoker="start_mountable_finish"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes a start operation. See g_file_start_mountable() for details.
+Finish an asynchronous start operation that was started
+with g_file_start_mountable().
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation finished successfully. %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="stop_mountable"
+                      invoker="stop_mountable"
+                      version="2.22">
+        <doc xml:whitespace="preserve">Stops a file of type G_FILE_TYPE_MOUNTABLE.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+When the operation is finished, @callback will be called. You can then call
+g_file_stop_mountable_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the operation</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation, or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="stop_mountable_finish"
+                      invoker="stop_mountable_finish"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes an stop operation, see g_file_stop_mountable() for details.
+Finish an asynchronous stop operation that was started
+with g_file_stop_mountable().
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation finished successfully. %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="trash" invoker="trash" throws="1">
+        <doc xml:whitespace="preserve">Sends @file to the "Trashcan", if possible. This is similar to
+deleting it, but the user can recover it before emptying the trashcan.
+Not all file systems support trashing, so this call can return the
+%G_IO_ERROR_NOT_SUPPORTED error.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on successful trash, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unmount_mountable"
+                      invoker="unmount_mountable"
+                      deprecated="Use g_file_unmount_mountable_with_operation() instead."
+                      deprecated-version="2.22">
+        <doc xml:whitespace="preserve">Unmounts a file of type G_FILE_TYPE_MOUNTABLE.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+When the operation is finished, @callback will be called. You can then call
+g_file_unmount_mountable_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the operation</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="3">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unmount_mountable_finish"
+                      invoker="unmount_mountable_finish"
+                      deprecated="Use g_file_unmount_mountable_with_operation_finish() instead."
+                      deprecated-version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes an unmount operation, see g_file_unmount_mountable() for details.
+Finish an asynchronous unmount operation that was started
+with g_file_unmount_mountable().
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation finished successfully. %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unmount_mountable_with_operation"
+                      invoker="unmount_mountable_with_operation"
+                      version="2.22">
+        <doc xml:whitespace="preserve">Unmounts a file of type G_FILE_TYPE_MOUNTABLE.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+When the operation is finished, @callback will be called. You can then call
+g_file_unmount_mountable_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the operation</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation, or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unmount_mountable_with_operation_finish"
+                      invoker="unmount_mountable_with_operation_finish"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes an unmount operation, see g_file_unmount_mountable_with_operation() for details.
+Finish an asynchronous unmount operation that was started
+with g_file_unmount_mountable_with_operation().
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation finished successfully. %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="append_to" c:identifier="g_file_append_to" throws="1">
+        <doc xml:whitespace="preserve">Gets an output stream for appending data to the file. If
+the file doesn't already exist it is created.
+By default files created are generally readable by everyone,
+but if you pass #G_FILE_CREATE_PRIVATE in @flags the file
+will be made readable only to the current user, to the level that
+is supported on the target filesystem.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+Some file systems don't allow all file names, and may
+return an %G_IO_ERROR_INVALID_FILENAME error.
+If the file is a directory the %G_IO_ERROR_IS_DIRECTORY error will be
+returned. Other errors are possible too, and depend on what kind of
+filesystem the file is on.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileOutputStream, or %NULL on error.</doc>
+          <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileCreateFlags.</doc>
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_to_async" c:identifier="g_file_append_to_async">
+        <doc xml:whitespace="preserve">Asynchronously opens @file for appending.
+For more details, see g_file_append_to() which is
+the synchronous version of this call.
+When the operation is finished, @callback will be called. You can then call
+g_file_append_to_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileCreateFlags.</doc>
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_to_finish"
+              c:identifier="g_file_append_to_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous file append operation started with
+g_file_append_to_async().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a valid #GFileOutputStream or %NULL on error.</doc>
+          <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GAsyncResult</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy"
+              c:identifier="g_file_copy"
+              introspectable="0"
+              throws="1">
+        <doc xml:whitespace="preserve">Copies the file @source to the location specified by @destination.
+Can not handle recursive copies of directories.
+If the flag #G_FILE_COPY_OVERWRITE is specified an already
+existing @destination file is overwritten.
+If the flag #G_FILE_COPY_NOFOLLOW_SYMLINKS is specified then symlinks
+will be copied as symlinks, otherwise the target of the
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+If @progress_callback is not %NULL, then the operation can be monitored by
+setting this to a #GFileProgressCallback function. @progress_callback_data
+will be passed to this function. It is guaranteed that this callback will
+be called after all data has been transferred with the total number of bytes
+copied during the operation.
+If the @source file does not exist then the G_IO_ERROR_NOT_FOUND
+error is returned, independent on the status of the @destination.
+If #G_FILE_COPY_OVERWRITE is not specified and the target exists, then the
+error G_IO_ERROR_EXISTS is returned.
+If trying to overwrite a file over a directory the G_IO_ERROR_IS_DIRECTORY
+error is returned. If trying to overwrite a directory with a directory the
+G_IO_ERROR_WOULD_MERGE error is returned.
+If the source is a directory and the target does not exist, or #G_FILE_COPY_OVERWRITE is
+specified and the target is a file, then the G_IO_ERROR_WOULD_RECURSE error
+is returned.
+If you are interested in copying the #GFile object itself (not the on-disk
+file), see g_file_dup().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="destination" transfer-ownership="none">
+            <doc xml:whitespace="preserve">destination #GFile</doc>
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">set of #GFileCopyFlags</doc>
+            <type name="FileCopyFlags" c:type="GFileCopyFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="progress_callback"
+                     transfer-ownership="none"
+                     closure="4">
+            <doc xml:whitespace="preserve">function to callback with progress information</doc>
+            <type name="FileProgressCallback" c:type="GFileProgressCallback"/>
+          </parameter>
+          <parameter name="progress_callback_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @progress_callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy_async"
+              c:identifier="g_file_copy_async"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Copies the file @source to the location specified by @destination
+asynchronously. For details of the behaviour, see g_file_copy().
+If @progress_callback is not %NULL, then that function that will be called
+just like in g_file_copy(), however the callback will run in the main loop,
+not in the thread that is doing the I/O operation.
+When the operation is finished, @callback will be called. You can then call
+g_file_copy_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="destination" transfer-ownership="none">
+            <doc xml:whitespace="preserve">destination #GFile</doc>
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">set of #GFileCopyFlags</doc>
+            <type name="FileCopyFlags" c:type="GFileCopyFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="progress_callback"
+                     transfer-ownership="none"
+                     closure="5">
+            <doc xml:whitespace="preserve">function to callback with progress information</doc>
+            <type name="FileProgressCallback" c:type="GFileProgressCallback"/>
+          </parameter>
+          <parameter name="progress_callback_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @progress_callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="7">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy_attributes"
+              c:identifier="g_file_copy_attributes"
+              throws="1">
+        <doc xml:whitespace="preserve">Copies the file attributes from @source to @destination.
+Normally only a subset of the file attributes are copied,
+those that are copies in a normal file copy operation
+(which for instance does not include e.g. owner). However
+if #G_FILE_COPY_ALL_METADATA is specified in @flags, then
+all the metadata that is possible to copy is copied. This
+is useful when implementing move by copy + delete source.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the attributes were copied successfully, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="destination" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GFile to copy attributes to.</doc>
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileCopyFlags.</doc>
+            <type name="FileCopyFlags" c:type="GFileCopyFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy_finish" c:identifier="g_file_copy_finish" throws="1">
+        <doc xml:whitespace="preserve">Finishes copying the file started with
+g_file_copy_async().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a %TRUE on success, %FALSE on error.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create" c:identifier="g_file_create" throws="1">
+        <doc xml:whitespace="preserve">Creates a new file and returns an output stream for writing to it.
+The file must not already exist.
+By default files created are generally readable by everyone,
+but if you pass #G_FILE_CREATE_PRIVATE in @flags the file
+will be made readable only to the current user, to the level that
+is supported on the target filesystem.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+If a file or directory with this name already exists the G_IO_ERROR_EXISTS
+error will be returned.
+Some file systems don't allow all file names, and may
+return an G_IO_ERROR_INVALID_FILENAME error, and if the name
+is to long G_IO_ERROR_FILENAME_TOO_LONG will be returned.
+Other errors are possible too, and depend on what kind of
+filesystem the file is on.
+%NULL on error.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileOutputStream for the newly created file, or</doc>
+          <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileCreateFlags.</doc>
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_async" c:identifier="g_file_create_async">
+        <doc xml:whitespace="preserve">Asynchronously creates a new file and returns an output stream for writing to it.
+The file must not already exist.
+For more details, see g_file_create() which is
+the synchronous version of this call.
+When the operation is finished, @callback will be called. You can then call
+g_file_create_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileCreateFlags.</doc>
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_finish"
+              c:identifier="g_file_create_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous file create operation started with
+g_file_create_async().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileOutputStream or %NULL on error.</doc>
+          <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_readwrite"
+              c:identifier="g_file_create_readwrite"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Creates a new file and returns a stream for reading and writing to it.
+The file must not already exist.
+By default files created are generally readable by everyone,
+but if you pass #G_FILE_CREATE_PRIVATE in @flags the file
+will be made readable only to the current user, to the level that
+is supported on the target filesystem.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+If a file or directory with this name already exists the %G_IO_ERROR_EXISTS
+error will be returned. Some file systems don't allow all file names,
+and may return an %G_IO_ERROR_INVALID_FILENAME error, and if the name
+is too long, %G_IO_ERROR_FILENAME_TOO_LONG will be returned. Other errors
+are possible too, and depend on what kind of filesystem the file is on.
+Note that in many non-local file cases read and write streams are not
+supported, so make sure you really need to do read and write streaming,
+rather than just opening for reading or writing.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileIOStream for the newly created file, or %NULL on error.</doc>
+          <type name="FileIOStream" c:type="GFileIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileCreateFlags</doc>
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_readwrite_async"
+              c:identifier="g_file_create_readwrite_async"
+              version="2.22">
+        <doc xml:whitespace="preserve">Asynchronously creates a new file and returns a stream for reading and
+writing to it. The file must not already exist.
+For more details, see g_file_create_readwrite() which is
+the synchronous version of this call.
+When the operation is finished, @callback will be called. You can then
+call g_file_create_readwrite_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileCreateFlags</doc>
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_readwrite_finish"
+              c:identifier="g_file_create_readwrite_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous file create operation started with
+g_file_create_readwrite_async().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileIOStream or %NULL on error.</doc>
+          <type name="FileIOStream" c:type="GFileIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete" c:identifier="g_file_delete" throws="1">
+        <doc xml:whitespace="preserve">Deletes a file. If the @file is a directory, it will only be deleted if it
+is empty.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the file was deleted. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup" c:identifier="g_file_dup">
+        <doc xml:whitespace="preserve">Duplicates a #GFile handle. This operation does not duplicate
+the actual file or directory represented by the #GFile; see
+g_file_copy() if attempting to copy a file.
+This call does no blocking i/o.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GFile that is a duplicate of the given #GFile.</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+      </method>
+      <method name="eject_mountable"
+              c:identifier="g_file_eject_mountable"
+              deprecated="Use g_file_eject_mountable_with_operation() instead."
+              deprecated-version="2.22">
+        <doc xml:whitespace="preserve">Starts an asynchronous eject on a mountable.
+When this operation has completed, @callback will be called with
+g_file_eject_mountable_finish().
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the operation</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject_mountable_finish"
+              c:identifier="g_file_eject_mountable_finish"
+              deprecated="Use g_file_eject_mountable_with_operation_finish() instead."
+              deprecated-version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous eject operation started by
+g_file_eject_mountable().
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @file was ejected successfully. %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject_mountable_with_operation"
+              c:identifier="g_file_eject_mountable_with_operation"
+              version="2.22">
+        <doc xml:whitespace="preserve">Starts an asynchronous eject on a mountable.
+When this operation has completed, @callback will be called with
+g_file_eject_mountable_with_operation_finish().
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the operation</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation, or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject_mountable_with_operation_finish"
+              c:identifier="g_file_eject_mountable_with_operation_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous eject operation started by
+g_file_eject_mountable_with_operation().
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @file was ejected successfully. %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="enumerate_children"
+              c:identifier="g_file_enumerate_children"
+              throws="1">
+        <doc xml:whitespace="preserve">Gets the requested information about the files in a directory. The result
+is a #GFileEnumerator object that will give out #GFileInfo objects for
+all the files in the directory.
+The @attributes value is a string that specifies the file attributes that
+should be gathered. It is not an error if it's not possible to read a particular
+requested attribute from a file - it just won't be set. @attributes should
+be a comma-separated list of attributes or attribute wildcards. The wildcard "*"
+means all attributes, and a wildcard like "standard::*" means all attributes in the standard
+namespace. An example attribute query be "standard::*,owner::user".
+The standard attributes are available as defines, like #G_FILE_ATTRIBUTE_STANDARD_NAME.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+If the file does not exist, the G_IO_ERROR_NOT_FOUND error will be returned.
+If the file is not a directory, the G_FILE_ERROR_NOTDIR error will be returned.
+Other errors are possible too.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GFileEnumerator if successful, %NULL on error.</doc>
+          <type name="FileEnumerator" c:type="GFileEnumerator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an attribute query string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileQueryInfoFlags.</doc>
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="enumerate_children_async"
+              c:identifier="g_file_enumerate_children_async">
+        <doc xml:whitespace="preserve">Asynchronously gets the requested information about the files in a directory. The result
+is a #GFileEnumerator object that will give out #GFileInfo objects for
+all the files in the directory.
+For more details, see g_file_enumerate_children() which is
+the synchronous version of this call.
+When the operation is finished, @callback will be called. You can then call
+g_file_enumerate_children_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an attribute query string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileQueryInfoFlags.</doc>
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="enumerate_children_finish"
+              c:identifier="g_file_enumerate_children_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an async enumerate children operation.
+See g_file_enumerate_children_async().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileEnumerator or %NULL if an error occurred.</doc>
+          <type name="FileEnumerator" c:type="GFileEnumerator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="equal" c:identifier="g_file_equal">
+        <doc xml:whitespace="preserve">Checks equality of two given #GFile&lt;!-- --&gt;s. Note that two
+#GFile&lt;!-- --&gt;s that differ can still refer to the same
+file on the filesystem due to various forms of filename
+aliasing.
+This call does no blocking i/o.
+%FALSE if either is not a #GFile.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @file1 and @file2 are equal.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the second #GFile.</doc>
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_enclosing_mount"
+              c:identifier="g_file_find_enclosing_mount"
+              throws="1">
+        <doc xml:whitespace="preserve">Gets a #GMount for the #GFile.
+If the #GFileIface for @file does not have a mount (e.g. possibly a
+remote share), @error will be set to %G_IO_ERROR_NOT_FOUND and %NULL
+will be returned.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GMount where the @file is located or %NULL on error.</doc>
+          <type name="Mount" c:type="GMount*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_enclosing_mount_async"
+              c:identifier="g_file_find_enclosing_mount_async">
+        <doc xml:whitespace="preserve">Asynchronously gets the mount for the file.
+For more details, see g_file_find_enclosing_mount() which is
+the synchronous version of this call.
+When the operation is finished, @callback will be called. You can then call
+g_file_find_enclosing_mount_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_enclosing_mount_finish"
+              c:identifier="g_file_find_enclosing_mount_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous find mount request.
+See g_file_find_enclosing_mount_async().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GMount for given @file or %NULL on error.</doc>
+          <type name="Mount" c:type="GMount*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_basename" c:identifier="g_file_get_basename">
+        <doc xml:whitespace="preserve">Gets the base name (the last component of the path) for a given #GFile.
+If called for the top level of a system (such as the filesystem root
+or a uri like sftp://host/) it will return a single directory separator
+(and on Windows, possibly a drive letter).
+The base name is a byte string (*not* UTF-8). It has no defined encoding
+or rules other than it may not contain zero bytes.  If you want to use
+filenames in a user interface you should use the display name that you
+can get by requesting the %G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME
+attribute with g_file_query_info().
+This call does no blocking i/o.
+if given #GFile is invalid. The returned string should be
+freed with g_free() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">string containing the #GFile's base name, or %NULL</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_child" c:identifier="g_file_get_child">
+        <doc xml:whitespace="preserve">Gets a child of @file with basename equal to @name.
+Note that the file with that specific name might not exist, but
+you can still have a #GFile that points to it. You can use this
+for instance to create that file.
+This call does no blocking i/o.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFile to a child specified by @name.</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">string containing the child's basename.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child_for_display_name"
+              c:identifier="g_file_get_child_for_display_name"
+              throws="1">
+        <doc xml:whitespace="preserve">Gets the child of @file for a given @display_name (i.e. a UTF8
+version of the name). If this function fails, it returns %NULL and @error will be
+set. This is very useful when constructing a GFile for a new file
+and the user entered the filename in the user interface, for instance
+when you select a directory and type a filename in the file selector.
+This call does no blocking i/o.
+%NULL if the display name couldn't be converted.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFile to the specified child, or</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">string to a possible child.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_parent" c:identifier="g_file_get_parent">
+        <doc xml:whitespace="preserve">Gets the parent directory for the @file.
+If the @file represents the root directory of the
+file system, then %NULL will be returned.
+This call does no blocking i/o.
+#GFile or %NULL if there is no parent.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFile structure to the parent of the given</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+      </method>
+      <method name="get_parse_name" c:identifier="g_file_get_parse_name">
+        <doc xml:whitespace="preserve">Gets the parse name of the @file.
+A parse name is a UTF-8 string that describes the
+file such that one can get the #GFile back using
+g_file_parse_name().
+This is generally used to show the #GFile as a nice
+full-pathname kind of string in a user interface,
+like in a location entry.
+For local files with names that can safely be converted
+to UTF8 the pathname is used, otherwise the IRI is used
+(a form of URI that allows UTF8 characters unescaped).
+This call does no blocking i/o.
+string should be freed with g_free() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a string containing the #GFile's parse name. The returned</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_path" c:identifier="g_file_get_path">
+        <doc xml:whitespace="preserve">Gets the local pathname for #GFile, if one exists.
+This call does no blocking i/o.
+no such path exists. The returned string should be
+freed with g_free() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">string containing the #GFile's path, or %NULL if</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_relative_path" c:identifier="g_file_get_relative_path">
+        <doc xml:whitespace="preserve">Gets the path for @descendant relative to @parent.
+This call does no blocking i/o.
+to @parent, or %NULL if @descendant doesn't have @parent as prefix.
+The returned string should be freed with g_free() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">string with the relative path from @descendant</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="descendant" transfer-ownership="none">
+            <doc xml:whitespace="preserve">input #GFile.</doc>
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uri" c:identifier="g_file_get_uri">
+        <doc xml:whitespace="preserve">Gets the URI for the @file.
+This call does no blocking i/o.
+The returned string should be freed with g_free() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a string containing the #GFile's URI.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_uri_scheme" c:identifier="g_file_get_uri_scheme">
+        <doc xml:whitespace="preserve">Gets the URI scheme for a #GFile.
+RFC 3986 decodes the scheme as:
+&lt;programlisting&gt;
+URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
+&lt;/programlisting&gt;
+Common schemes include "file", "http", "ftp", etc.
+This call does no blocking i/o.
+#GFile. The returned string should be freed with g_free()
+when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a string containing the URI scheme for the given</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="has_parent"
+              c:identifier="g_file_has_parent"
+              version="2.24">
+        <doc xml:whitespace="preserve">Checks if @file has a parent, and optionally, if it is @parent.
+If @parent is %NULL then this function returns %TRUE if @file has any
+parent at all.  If @parent is non-%NULL then %TRUE is only returned
+if @file is a child of @parent.
+case that @parent is %NULL).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @file is a child of @parent (or any parent in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the parent to check for, or %NULL</doc>
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_prefix" c:identifier="g_file_has_prefix">
+        <doc xml:whitespace="preserve">Checks whether @file has the prefix specified by @prefix. In other word,
+if the names of inital elements of @file&lt;!-- --&gt;s pathname match @prefix.
+Only full pathname elements are matched, so a path like /foo is not
+considered a prefix of /foobar, only of /foo/bar.
+This call does no i/o, as it works purely on names. As such it can
+sometimes return %FALSE even if @file is inside a @prefix (from a
+filesystem point of view), because the prefix of @file is an alias
+of @prefix.
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @files's parent, grandparent, etc is @prefix.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="prefix" transfer-ownership="none">
+            <doc xml:whitespace="preserve">input #GFile.</doc>
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_uri_scheme" c:identifier="g_file_has_uri_scheme">
+        <doc xml:whitespace="preserve">Checks to see if a #GFile has a given URI scheme.
+This call does no blocking i/o.
+given URI scheme, %FALSE if URI scheme is %NULL,
+not supported, or #GFile is invalid.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if #GFile's backend supports the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri_scheme" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing a URI scheme.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="icon_new" c:identifier="g_file_icon_new">
+        <doc xml:whitespace="preserve">Creates a new icon for a file.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GIcon for the given @file, or %NULL on error.</doc>
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </method>
+      <method name="is_native" c:identifier="g_file_is_native">
+        <doc xml:whitespace="preserve">Checks to see if a file is native to the platform.
+A native file s one expressed in the platform-native filename format,
+e.g. "C:\Windows" or "/usr/bin/". This does not mean the file is local,
+as it might be on a locally mounted remote filesystem.
+On some systems non-native files may be available using
+the native filesystem via a userspace filesystem (FUSE), in
+these cases this call will return %FALSE, but g_file_get_path()
+will still return a native path.
+This call does no blocking i/o.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if file is native.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="load_contents"
+              c:identifier="g_file_load_contents"
+              throws="1">
+        <doc xml:whitespace="preserve">Loads the content of the file into memory. The data is always
+zero-terminated, but this is not included in the resultant @length.
+The returned @content should be freed with g_free() when no longer
+needed.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+%FALSE if there were errors.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @file's contents were successfully loaded.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="contents"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a location to place the contents of the file.</doc>
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+          <parameter name="length"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a location to place the length of the contents of the file, or %NULL if the length is not needed</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+          <parameter name="etag_out"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a location to place the current entity tag for the file, or %NULL if the entity tag is not needed</doc>
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_contents_async"
+              c:identifier="g_file_load_contents_async">
+        <doc xml:whitespace="preserve">Starts an asynchronous load of the @file's contents.
+For more details, see g_file_load_contents() which is
+the synchronous version of this call.
+When the load operation has completed, @callback will be called
+with @user data. To finish the operation, call
+g_file_load_contents_finish() with the #GAsyncResult returned by
+the @callback.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="2">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_contents_finish"
+              c:identifier="g_file_load_contents_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous load of the @file's contents.
+The contents are placed in @contents, and @length is set to the
+size of the @contents string. The @content should be freed with
+g_free() when no longer needed. If @etag_out is present, it will be
+set to the new entity tag for the @file.
+present, it will be set appropriately.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the load was successful. If %FALSE and @error is</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="contents"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a location to place the contents of the file.</doc>
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+          <parameter name="length"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a location to place the length of the contents of the file, or %NULL if the length is not needed</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+          <parameter name="etag_out"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a location to place the current entity tag for the file, or %NULL if the entity tag is not needed</doc>
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_partial_contents_async"
+              c:identifier="g_file_load_partial_contents_async"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Reads the partial contents of a file. A #GFileReadMoreCallback should be
+used to stop reading from the file when appropriate, else this function
+will behave exactly as g_file_load_contents_async(). This operation
+can be finished by g_file_load_partial_contents_finish().
+Users of this function should be aware that @user_data is passed to
+both the @read_more_callback and the @callback.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="read_more_callback" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GFileReadMoreCallback to receive partial data and to specify whether further data should be read.</doc>
+            <type name="FileReadMoreCallback" c:type="GFileReadMoreCallback"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to the callback functions.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_partial_contents_finish"
+              c:identifier="g_file_load_partial_contents_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous partial load operation that was started
+with g_file_load_partial_contents_async(). The data is always
+zero-terminated, but this is not included in the resultant @length.
+The returned @content should be freed with g_free() when no longer
+needed.
+present, it will be set appropriately.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the load was successful. If %FALSE and @error is</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="contents"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a location to place the contents of the file.</doc>
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+          <parameter name="length"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a location to place the length of the contents of the file, or %NULL if the length is not needed</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+          <parameter name="etag_out"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a location to place the current entity tag for the file, or %NULL if the entity tag is not needed</doc>
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="make_directory"
+              c:identifier="g_file_make_directory"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="make_directory_with_parents"
+              c:identifier="g_file_make_directory_with_parents"
+              version="2.18"
+              throws="1">
+        <doc xml:whitespace="preserve">Creates a directory and any parent directories that may not exist similar to
+'mkdir -p'. If the file system does not support creating directories, this
+function will fail, setting @error to %G_IO_ERROR_NOT_SUPPORTED.
+For a local #GFile the newly created directories will have the default
+(current) ownership and permissions of the current process.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if all directories have been successfully created, %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="make_symbolic_link"
+              c:identifier="g_file_make_symbolic_link"
+              throws="1">
+        <doc xml:whitespace="preserve">Creates a symbolic link named @file which contains the string
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on the creation of a new symlink, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="symlink_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string with the path for the target of the new symlink</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="monitor"
+              c:identifier="g_file_monitor"
+              version="2.18"
+              throws="1">
+        <doc xml:whitespace="preserve">Obtains a file or directory monitor for the given file, depending
+on the type of the file.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileMonitor for the given @file, or %NULL on error.</doc>
+          <type name="FileMonitor" c:type="GFileMonitor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileMonitorFlags</doc>
+            <type name="FileMonitorFlags" c:type="GFileMonitorFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="monitor_directory"
+              c:identifier="g_file_monitor_directory"
+              throws="1">
+        <doc xml:whitespace="preserve">Obtains a directory monitor for the given file.
+This may fail if directory monitoring is not supported.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileMonitor for the given @file, or %NULL on error.</doc>
+          <type name="FileMonitor" c:type="GFileMonitor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileMonitorFlags.</doc>
+            <type name="FileMonitorFlags" c:type="GFileMonitorFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="monitor_file"
+              c:identifier="g_file_monitor_file"
+              throws="1">
+        <doc xml:whitespace="preserve">Obtains a file monitor for the given file. If no file notification
+mechanism exists, then regular polling of the file is used.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileMonitor for the given @file, or %NULL on error.</doc>
+          <type name="FileMonitor" c:type="GFileMonitor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileMonitorFlags.</doc>
+            <type name="FileMonitorFlags" c:type="GFileMonitorFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="mount_enclosing_volume"
+              c:identifier="g_file_mount_enclosing_volume">
+        <doc xml:whitespace="preserve">Starts a @mount_operation, mounting the volume that contains the file @location.
+When this operation has completed, @callback will be called with
+g_file_mount_enclosing_volume_finish().
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the operation</doc>
+            <type name="MountMountFlags" c:type="GMountMountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="mount_enclosing_volume_finish"
+              c:identifier="g_file_mount_enclosing_volume_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes a mount operation started by g_file_mount_enclosing_volume().
+has occurred, this function will return %FALSE and set @error
+appropriately if present.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful. If an error</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="mount_mountable" c:identifier="g_file_mount_mountable">
+        <doc xml:whitespace="preserve">Mounts a file of type G_FILE_TYPE_MOUNTABLE.
+Using @mount_operation, you can request callbacks when, for instance,
+passwords are needed during authentication.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+When the operation is finished, @callback will be called. You can then call
+g_file_mount_mountable_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the operation</doc>
+            <type name="MountMountFlags" c:type="GMountMountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation, or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="mount_mountable_finish"
+              c:identifier="g_file_mount_mountable_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes a mount operation. See g_file_mount_mountable() for details.
+Finish an asynchronous mount operation that was started
+with g_file_mount_mountable().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFile or %NULL on error.</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move"
+              c:identifier="g_file_move"
+              introspectable="0"
+              throws="1">
+        <doc xml:whitespace="preserve">Tries to move the file or directory @source to the location specified by @destination.
+If native move operations are supported then this is used, otherwise a copy + delete
+fallback is used. The native implementation may support moving directories (for instance
+on moves inside the same filesystem), but the fallback code does not.
+If the flag #G_FILE_COPY_OVERWRITE is specified an already
+existing @destination file is overwritten.
+If the flag #G_FILE_COPY_NOFOLLOW_SYMLINKS is specified then symlinks
+will be copied as symlinks, otherwise the target of the
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+If @progress_callback is not %NULL, then the operation can be monitored by
+setting this to a #GFileProgressCallback function. @progress_callback_data
+will be passed to this function. It is guaranteed that this callback will
+be called after all data has been transferred with the total number of bytes
+copied during the operation.
+If the @source file does not exist then the G_IO_ERROR_NOT_FOUND
+error is returned, independent on the status of the @destination.
+If #G_FILE_COPY_OVERWRITE is not specified and the target exists, then the
+error G_IO_ERROR_EXISTS is returned.
+If trying to overwrite a file over a directory the G_IO_ERROR_IS_DIRECTORY
+error is returned. If trying to overwrite a directory with a directory the
+G_IO_ERROR_WOULD_MERGE error is returned.
+If the source is a directory and the target does not exist, or #G_FILE_COPY_OVERWRITE is
+specified and the target is a file, then the G_IO_ERROR_WOULD_RECURSE error
+may be returned (if the native move operation isn't available).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on successful move, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="destination" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GFile pointing to the destination location.</doc>
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">set of #GFileCopyFlags.</doc>
+            <type name="FileCopyFlags" c:type="GFileCopyFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="progress_callback"
+                     transfer-ownership="none"
+                     closure="4">
+            <doc xml:whitespace="preserve">#GFileProgressCallback function for updates.</doc>
+            <type name="FileProgressCallback" c:type="GFileProgressCallback"/>
+          </parameter>
+          <parameter name="progress_callback_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">gpointer to user data for the callback function.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="open_readwrite"
+              c:identifier="g_file_open_readwrite"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Opens an existing file for reading and writing. The result is
+a #GFileIOStream that can be used to read and write the contents of the file.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+If the file does not exist, the G_IO_ERROR_NOT_FOUND error will be returned.
+If the file is a directory, the G_IO_ERROR_IS_DIRECTORY error will be returned.
+Other errors are possible too, and depend on what kind of filesystem the file is on.
+Note that in many non-local file cases read and write streams are not supported,
+so make sure you really need to do read and write streaming, rather than
+just opening for reading or writing.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GFileIOStream or %NULL on error.</doc>
+          <type name="FileIOStream" c:type="GFileIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="open_readwrite_async"
+              c:identifier="g_file_open_readwrite_async"
+              version="2.22">
+        <doc xml:whitespace="preserve">Asynchronously opens @file for reading and writing.
+For more details, see g_file_open_readwrite() which is
+the synchronous version of this call.
+When the operation is finished, @callback will be called. You can then call
+g_file_open_readwrite_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="open_readwrite_finish"
+              c:identifier="g_file_open_readwrite_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous file read operation started with
+g_file_open_readwrite_async().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileIOStream or %NULL on error.</doc>
+          <type name="FileIOStream" c:type="GFileIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="poll_mountable"
+              c:identifier="g_file_poll_mountable"
+              version="2.22">
+        <doc xml:whitespace="preserve">Polls a file of type G_FILE_TYPE_MOUNTABLE.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+When the operation is finished, @callback will be called. You can then call
+g_file_mount_mountable_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="2">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="poll_mountable_finish"
+              c:identifier="g_file_poll_mountable_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes a poll operation. See g_file_poll_mountable() for details.
+Finish an asynchronous poll operation that was polled
+with g_file_poll_mountable().
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation finished successfully. %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_default_handler"
+              c:identifier="g_file_query_default_handler"
+              throws="1">
+        <doc xml:whitespace="preserve">Returns the #GAppInfo that is registered as the default
+application to handle the file specified by @file.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+When you are done with it, release it with g_object_unref()</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GAppInfo if the handle was found, %NULL if there were errors.</doc>
+          <type name="AppInfo" c:type="GAppInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_exists" c:identifier="g_file_query_exists">
+        <doc xml:whitespace="preserve">Utility function to check if a particular file exists. This is
+implemented using g_file_query_info() and as such does blocking I/O.
+Note that in many cases it is racy to first check for file existence
+and then execute something based on the outcome of that, because the
+file might have been created or removed in between the operations. The
+general approach to handling that is to not check, but just do the
+operation and handle the errors as they come.
+As an example of race-free checking, take the case of reading a file, and
+can both result in two processes creating the file (with perhaps a partially
+written file as the result). The correct approach is to always try to create
+the file with g_file_create() which will either atomically create the file
+or fail with a G_IO_ERROR_EXISTS error.
+However, in many cases an existence check is useful in a user
+interface, for instance to make a menu item sensitive/insensitive, so that
+you don't have to fool users that something is possible and then just show
+and error dialog. If you do this, you should make sure to also handle the
+errors that can happen due to races when you execute the operation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the file exists (and can be detected without error), %FALSE otherwise (or if cancelled).</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_file_type"
+              c:identifier="g_file_query_file_type"
+              version="2.18">
+        <doc xml:whitespace="preserve">Utility function to inspect the #GFileType of a file. This is
+implemented using g_file_query_info() and as such does blocking I/O.
+The primary use case of this method is to check if a file is a regular file,
+directory, or symlink.
+does not exist</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GFileType of the file and #G_FILE_TYPE_UNKNOWN if the file</doc>
+          <type name="FileType" c:type="GFileType"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileQueryInfoFlags passed to g_file_query_info().</doc>
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_filesystem_info"
+              c:identifier="g_file_query_filesystem_info"
+              throws="1">
+        <doc xml:whitespace="preserve">Similar to g_file_query_info(), but obtains information
+about the filesystem the @file is on, rather than the file itself.
+For instance the amount of space available and the type of
+the filesystem.
+The @attributes value is a string that specifies the file attributes that
+should be gathered. It is not an error if it's not possible to read a particular
+requested attribute from a file - it just won't be set. @attributes should
+be a comma-separated list of attributes or attribute wildcards. The wildcard "*"
+means all attributes, and a wildcard like "fs:*" means all attributes in the fs
+namespace. The standard namespace for filesystem attributes is "fs".
+Common attributes of interest are #G_FILE_ATTRIBUTE_FILESYSTEM_SIZE
+(the total size of the filesystem in bytes), #G_FILE_ATTRIBUTE_FILESYSTEM_FREE (number of
+bytes available), and #G_FILE_ATTRIBUTE_FILESYSTEM_TYPE (type of the filesystem).
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+If the file does not exist, the G_IO_ERROR_NOT_FOUND error will be returned.
+Other errors are possible too, and depend on what kind of filesystem the file is on.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileInfo or %NULL if there was an error.</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an attribute query string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_filesystem_info_async"
+              c:identifier="g_file_query_filesystem_info_async">
+        <doc xml:whitespace="preserve">Asynchronously gets the requested information about the filesystem
+that the specified @file is on. The result is a #GFileInfo object
+that contains key-value attributes (such as type or size for the
+file).
+For more details, see g_file_query_filesystem_info() which is the
+synchronous version of this call.
+When the operation is finished, @callback will be called. You can
+then call g_file_query_info_finish() to get the result of the
+operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an attribute query string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_filesystem_info_finish"
+              c:identifier="g_file_query_filesystem_info_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous filesystem info query.  See
+g_file_query_filesystem_info_async().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GFileInfo for given @file or %NULL on error.</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_info" c:identifier="g_file_query_info" throws="1">
+        <doc xml:whitespace="preserve">Gets the requested information about specified @file. The result
+is a #GFileInfo object that contains key-value attributes (such as
+the type or size of the file).
+The @attributes value is a string that specifies the file attributes that
+should be gathered. It is not an error if it's not possible to read a particular
+requested attribute from a file - it just won't be set. @attributes should
+be a comma-separated list of attributes or attribute wildcards. The wildcard "*"
+means all attributes, and a wildcard like "standard::*" means all attributes in the standard
+namespace. An example attribute query be "standard::*,owner::user".
+The standard attributes are available as defines, like #G_FILE_ATTRIBUTE_STANDARD_NAME.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+For symlinks, normally the information about the target of the
+symlink is returned, rather than information about the symlink itself.
+However if you pass #G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS in @flags the
+information about the symlink itself will be returned. Also, for symlinks
+that point to non-existing files the information about the symlink itself
+will be returned.
+If the file does not exist, the G_IO_ERROR_NOT_FOUND error will be returned.
+Other errors are possible too, and depend on what kind of filesystem the file is on.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileInfo for the given @file, or %NULL on error.</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an attribute query string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileQueryInfoFlags.</doc>
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_info_async" c:identifier="g_file_query_info_async">
+        <doc xml:whitespace="preserve">Asynchronously gets the requested information about specified @file. The result
+is a #GFileInfo object that contains key-value attributes (such as type or size
+for the file).
+For more details, see g_file_query_info() which is
+the synchronous version of this call.
+When the operation is finished, @callback will be called. You can then call
+g_file_query_info_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an attribute query string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileQueryInfoFlags.</doc>
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_info_finish"
+              c:identifier="g_file_query_info_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous file info query.
+See g_file_query_info_async().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GFileInfo for given @file or %NULL on error.</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_settable_attributes"
+              c:identifier="g_file_query_settable_attributes"
+              throws="1">
+        <doc xml:whitespace="preserve">Obtain the list of settable attributes for the file.
+Returns the type and full attribute name of all the attributes
+that can be set on this file. This doesn't mean setting it will always
+succeed though, you might get an access failure, or some specific
+file may not support a specific attribute.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+When you are done with it, release it with g_file_attribute_info_list_unref()</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileAttributeInfoList describing the settable attributes.</doc>
+          <type name="FileAttributeInfoList" c:type="GFileAttributeInfoList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_writable_namespaces"
+              c:identifier="g_file_query_writable_namespaces"
+              throws="1">
+        <doc xml:whitespace="preserve">Obtain the list of attribute namespaces where new attributes
+can be created by a user. An example of this is extended
+attributes (in the "xattr" namespace).
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+When you are done with it, release it with g_file_attribute_info_list_unref()</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileAttributeInfoList describing the writable namespaces.</doc>
+          <type name="FileAttributeInfoList" c:type="GFileAttributeInfoList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read" c:identifier="g_file_read" throws="1">
+        <doc xml:whitespace="preserve">Opens a file for reading. The result is a #GFileInputStream that
+can be used to read the contents of the file.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+If the file does not exist, the G_IO_ERROR_NOT_FOUND error will be returned.
+If the file is a directory, the G_IO_ERROR_IS_DIRECTORY error will be returned.
+Other errors are possible too, and depend on what kind of filesystem the file is on.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GFileInputStream or %NULL on error.</doc>
+          <type name="FileInputStream" c:type="GFileInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_async" c:identifier="g_file_read_async">
+        <doc xml:whitespace="preserve">Asynchronously opens @file for reading.
+For more details, see g_file_read() which is
+the synchronous version of this call.
+When the operation is finished, @callback will be called. You can then call
+g_file_read_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_finish" c:identifier="g_file_read_finish" throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous file read operation started with
+g_file_read_async().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileInputStream or %NULL on error.</doc>
+          <type name="FileInputStream" c:type="GFileInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace" c:identifier="g_file_replace" throws="1">
+        <doc xml:whitespace="preserve">Returns an output stream for overwriting the file, possibly
+creating a backup copy of the file first. If the file doesn't exist,
+it will be created.
+This will try to replace the file in the safest way possible so
+that any errors during the writing will not affect an already
+existing copy of the file. For instance, for local files it
+may write to a temporary file and then atomically rename over
+the destination when the stream is closed.
+By default files created are generally readable by everyone,
+but if you pass #G_FILE_CREATE_PRIVATE in @flags the file
+will be made readable only to the current user, to the level that
+is supported on the target filesystem.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+If you pass in a non-#NULL @etag value, then this value is
+compared to the current entity tag of the file, and if they differ
+an G_IO_ERROR_WRONG_ETAG error is returned. This generally means
+that the file has been changed since you last read it. You can get
+the new etag from g_file_output_stream_get_etag() after you've
+finished writing and closed the #GFileOutputStream. When you load
+a new file you can use g_file_input_stream_query_info() to get
+the etag of the file.
+If @make_backup is %TRUE, this function will attempt to make a backup
+of the current file before overwriting it. If this fails a G_IO_ERROR_CANT_CREATE_BACKUP
+error will be returned. If you want to replace anyway, try again with
+If the file is a directory the G_IO_ERROR_IS_DIRECTORY error will be returned,
+and if the file is some other form of non-regular file then a
+G_IO_ERROR_NOT_REGULAR_FILE error will be returned.
+Some file systems don't allow all file names, and may
+return an G_IO_ERROR_INVALID_FILENAME error, and if the name
+is to long G_IO_ERROR_FILENAME_TOO_LONG will be returned.
+Other errors are possible too, and depend on what kind of
+filesystem the file is on.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileOutputStream or %NULL on error.</doc>
+          <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="etag" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an optional &lt;link linkend="gfile-etag"&gt;entity tag&lt;/link&gt; for the current #GFile, or #NULL to ignore.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="make_backup" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if a backup should be created.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileCreateFlags.</doc>
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace_async" c:identifier="g_file_replace_async">
+        <doc xml:whitespace="preserve">Asynchronously overwrites the file, replacing the contents, possibly
+creating a backup copy of the file first.
+For more details, see g_file_replace() which is
+the synchronous version of this call.
+When the operation is finished, @callback will be called. You can then call
+g_file_replace_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="etag" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an &lt;link linkend="gfile-etag"&gt;entity tag&lt;/link&gt; for the current #GFile, or NULL to ignore.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="make_backup" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if a backup should be created.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileCreateFlags.</doc>
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="6">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace_contents"
+              c:identifier="g_file_replace_contents"
+              throws="1">
+        <doc xml:whitespace="preserve">Replaces the contents of @file with @contents of @length bytes.
+If @etag is specified (not %NULL) any existing file must have that etag, or
+the error %G_IO_ERROR_WRONG_ETAG will be returned.
+If @make_backup is %TRUE, this function will attempt to make a backup of @file.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+The returned @new_etag can be used to verify that the file hasn't changed the
+next time it is saved over.
+has occurred, this function will return %FALSE and set @error
+appropriately if present.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful. If an error</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="contents" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing the new contents for @file.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of @contents in bytes.</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="etag" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the old &lt;link linkend="gfile-etag"&gt;entity tag&lt;/link&gt; for the document, or %NULL</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="make_backup" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if a backup should be created.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileCreateFlags.</doc>
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="new_etag"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a location to a new &lt;link linkend="gfile-etag"&gt;entity tag&lt;/link&gt; for the document. This should be freed with g_free() when no longer needed, or %NULL</doc>
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace_contents_async"
+              c:identifier="g_file_replace_contents_async">
+        <doc xml:whitespace="preserve">Starts an asynchronous replacement of @file with the given
+current entity tag.
+When this operation has completed, @callback will be called with
+g_file_replace_contents_finish().
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+If @make_backup is %TRUE, this function will attempt to
+make a backup of @file.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="contents" transfer-ownership="none">
+            <doc xml:whitespace="preserve">string of contents to replace the file with.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of @contents in bytes.</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="etag" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a new &lt;link linkend="gfile-etag"&gt;entity tag&lt;/link&gt; for the @file, or %NULL</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="make_backup" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if a backup should be created.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileCreateFlags.</doc>
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="7">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace_contents_finish"
+              c:identifier="g_file_replace_contents_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous replace of the given @file. See
+g_file_replace_contents_async(). Sets @new_etag to the new entity
+tag for the document, if present.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on failure.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="new_etag"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a location of a new &lt;link linkend="gfile-etag"&gt;entity tag&lt;/link&gt; for the document. This should be freed with g_free() when it is no longer needed, or %NULL</doc>
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace_finish"
+              c:identifier="g_file_replace_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous file replace operation started with
+g_file_replace_async().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileOutputStream, or %NULL on error.</doc>
+          <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace_readwrite"
+              c:identifier="g_file_replace_readwrite"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Returns an output stream for overwriting the file in readwrite mode,
+possibly creating a backup copy of the file first. If the file doesn't
+exist, it will be created.
+For details about the behaviour, see g_file_replace() which does the same
+thing but returns an output stream only.
+Note that in many non-local file cases read and write streams are not
+supported, so make sure you really need to do read and write streaming,
+rather than just opening for reading or writing.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileIOStream or %NULL on error.</doc>
+          <type name="FileIOStream" c:type="GFileIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="etag" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an optional &lt;link linkend="gfile-etag"&gt;entity tag&lt;/link&gt; for the current #GFile, or #NULL to ignore</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="make_backup" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if a backup should be created</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileCreateFlags</doc>
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace_readwrite_async"
+              c:identifier="g_file_replace_readwrite_async"
+              version="2.22">
+        <doc xml:whitespace="preserve">Asynchronously overwrites the file in read-write mode, replacing the
+contents, possibly creating a backup copy of the file first.
+For more details, see g_file_replace_readwrite() which is
+the synchronous version of this call.
+When the operation is finished, @callback will be called. You can then
+call g_file_replace_readwrite_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="etag" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an &lt;link linkend="gfile-etag"&gt;entity tag&lt;/link&gt; for the current #GFile, or NULL to ignore.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="make_backup" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if a backup should be created.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileCreateFlags.</doc>
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="6">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace_readwrite_finish"
+              c:identifier="g_file_replace_readwrite_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous file replace operation started with
+g_file_replace_readwrite_async().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileIOStream, or %NULL on error.</doc>
+          <type name="FileIOStream" c:type="GFileIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="resolve_relative_path"
+              c:identifier="g_file_resolve_relative_path">
+        <doc xml:whitespace="preserve">Resolves a relative path for @file to an absolute path.
+This call does no blocking i/o.
+is %NULL or if @file is invalid.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GFile to the resolved path. %NULL if @relative_path</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="relative_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a given relative path string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute"
+              c:identifier="g_file_set_attribute"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets an attribute in the file with attribute name @attribute to @value.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the attribute was set, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing the attribute's name.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The type of the attribute</doc>
+            <type name="FileAttributeType" c:type="GFileAttributeType"/>
+          </parameter>
+          <parameter name="value_p" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to the value (or the pointer itself if the type is a pointer type)</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileQueryInfoFlags.</doc>
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_byte_string"
+              c:identifier="g_file_set_attribute_byte_string"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING to @value.
+If @attribute is of a different type, this operation will fail,
+returning %FALSE.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+in the @file, %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @attribute was successfully set to @value</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing the attribute's name.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing the attribute's new value.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GFileQueryInfoFlags.</doc>
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_int32"
+              c:identifier="g_file_set_attribute_int32"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_INT32 to @value.
+If @attribute is of a different type, this operation will fail.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+in the @file, %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @attribute was successfully set to @value</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing the attribute's name.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gint32 containing the attribute's new value.</doc>
+            <type name="gint32" c:type="gint32"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GFileQueryInfoFlags.</doc>
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_int64"
+              c:identifier="g_file_set_attribute_int64"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_INT64 to @value.
+If @attribute is of a different type, this operation will fail.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @attribute was successfully set, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing the attribute's name.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #guint64 containing the attribute's new value.</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GFileQueryInfoFlags.</doc>
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_string"
+              c:identifier="g_file_set_attribute_string"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_STRING to @value.
+If @attribute is of a different type, this operation will fail.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @attribute was successfully set, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing the attribute's name.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing the attribute's value.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GFileQueryInfoFlags.</doc>
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_uint32"
+              c:identifier="g_file_set_attribute_uint32"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_UINT32 to @value.
+If @attribute is of a different type, this operation will fail.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+in the @file, %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @attribute was successfully set to @value</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing the attribute's name.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #guint32 containing the attribute's new value.</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GFileQueryInfoFlags.</doc>
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_uint64"
+              c:identifier="g_file_set_attribute_uint64"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_UINT64 to @value.
+If @attribute is of a different type, this operation will fail.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+in the @file, %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @attribute was successfully set to @value</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing the attribute's name.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #guint64 containing the attribute's new value.</doc>
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GFileQueryInfoFlags.</doc>
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attributes_async"
+              c:identifier="g_file_set_attributes_async">
+        <doc xml:whitespace="preserve">Asynchronously sets the attributes of @file with @info.
+For more details, see g_file_set_attributes_from_info() which is
+the synchronous version of this call.
+When the operation is finished, @callback will be called. You can then call
+g_file_set_attributes_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GFileInfo.</doc>
+            <type name="FileInfo" c:type="GFileInfo*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GFileQueryInfoFlags.</doc>
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gpointer.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attributes_finish"
+              c:identifier="g_file_set_attributes_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes setting an attribute started in g_file_set_attributes_async().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the attributes were set correctly, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="info"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFileInfo.</doc>
+            <type name="FileInfo" c:type="GFileInfo**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attributes_from_info"
+              c:identifier="g_file_set_attributes_from_info"
+              throws="1">
+        <doc xml:whitespace="preserve">Tries to set all attributes in the #GFileInfo on the target values,
+not stopping on the first error.
+If there is any error during this operation then @error will be set to
+the first error. Error on particular fields are flagged by setting
+the "status" field in the attribute value to
+%G_FILE_ATTRIBUTE_STATUS_ERROR_SETTING, which means you can also detect
+further errors.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if there was any error, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GFileInfo.</doc>
+            <type name="FileInfo" c:type="GFileInfo*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GFileQueryInfoFlags</doc>
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_display_name"
+              c:identifier="g_file_set_display_name"
+              throws="1">
+        <doc xml:whitespace="preserve">Renames @file to the specified display name.
+The display name is converted from UTF8 to the correct encoding for the target
+filesystem if possible and the @file is renamed to this.
+If you want to implement a rename operation in the user interface the edit name
+(#G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME) should be used as the initial value in the rename
+widget, and then the result after editing should be passed to g_file_set_display_name().
+On success the resulting converted filename is returned.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+if there was an error.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFile specifying what @file was renamed to, or %NULL</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_display_name_async"
+              c:identifier="g_file_set_display_name_async">
+        <doc xml:whitespace="preserve">Asynchronously sets the display name for a given #GFile.
+For more details, see g_file_set_display_name() which is
+the synchronous version of this call.
+When the operation is finished, @callback will be called. You can then call
+g_file_set_display_name_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="display_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_display_name_finish"
+              c:identifier="g_file_set_display_name_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes setting a display name started with
+g_file_set_display_name_async().
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFile or %NULL on error.</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start_mountable"
+              c:identifier="g_file_start_mountable"
+              version="2.22">
+        <doc xml:whitespace="preserve">Starts a file of type G_FILE_TYPE_MOUNTABLE.
+Using @start_operation, you can request callbacks when, for instance,
+passwords are needed during authentication.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+When the operation is finished, @callback will be called. You can then call
+g_file_mount_mountable_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the operation</doc>
+            <type name="DriveStartFlags" c:type="GDriveStartFlags"/>
+          </parameter>
+          <parameter name="start_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation, or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start_mountable_finish"
+              c:identifier="g_file_start_mountable_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes a start operation. See g_file_start_mountable() for details.
+Finish an asynchronous start operation that was started
+with g_file_start_mountable().
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation finished successfully. %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="stop_mountable"
+              c:identifier="g_file_stop_mountable"
+              version="2.22">
+        <doc xml:whitespace="preserve">Stops a file of type G_FILE_TYPE_MOUNTABLE.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+When the operation is finished, @callback will be called. You can then call
+g_file_stop_mountable_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the operation</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation, or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="stop_mountable_finish"
+              c:identifier="g_file_stop_mountable_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an stop operation, see g_file_stop_mountable() for details.
+Finish an asynchronous stop operation that was started
+with g_file_stop_mountable().
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation finished successfully. %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="supports_thread_contexts"
+              c:identifier="g_file_supports_thread_contexts"
+              version="2.22">
+        <doc xml:whitespace="preserve">Checks if @file supports &lt;link
+linkend="g-main-context-push-thread-default-context"&gt;thread-default
+contexts&lt;/link&gt;. If this returns %FALSE, you cannot perform
+asynchronous operations on @file in a thread that has a
+thread-default context.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Whether or not @file supports thread-default contexts.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="trash" c:identifier="g_file_trash" throws="1">
+        <doc xml:whitespace="preserve">Sends @file to the "Trashcan", if possible. This is similar to
+deleting it, but the user can recover it before emptying the trashcan.
+Not all file systems support trashing, so this call can return the
+%G_IO_ERROR_NOT_SUPPORTED error.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on successful trash, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unmount_mountable"
+              c:identifier="g_file_unmount_mountable"
+              deprecated="Use g_file_unmount_mountable_with_operation() instead."
+              deprecated-version="2.22">
+        <doc xml:whitespace="preserve">Unmounts a file of type G_FILE_TYPE_MOUNTABLE.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+When the operation is finished, @callback will be called. You can then call
+g_file_unmount_mountable_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the operation</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unmount_mountable_finish"
+              c:identifier="g_file_unmount_mountable_finish"
+              deprecated="Use g_file_unmount_mountable_with_operation_finish() instead."
+              deprecated-version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an unmount operation, see g_file_unmount_mountable() for details.
+Finish an asynchronous unmount operation that was started
+with g_file_unmount_mountable().
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation finished successfully. %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unmount_mountable_with_operation"
+              c:identifier="g_file_unmount_mountable_with_operation"
+              version="2.22">
+        <doc xml:whitespace="preserve">Unmounts a file of type G_FILE_TYPE_MOUNTABLE.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+When the operation is finished, @callback will be called. You can then call
+g_file_unmount_mountable_finish() to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the operation</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation, or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unmount_mountable_with_operation_finish"
+              c:identifier="g_file_unmount_mountable_with_operation_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an unmount operation, see g_file_unmount_mountable_with_operation() for details.
+Finish an asynchronous unmount operation that was started
+with g_file_unmount_mountable_with_operation().
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation finished successfully. %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="FileAttributeInfo" c:type="GFileAttributeInfo">
+      <doc xml:whitespace="preserve">Information about a specific attribute.</doc>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="char*"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="FileAttributeType" c:type="GFileAttributeType"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="FileAttributeInfoFlags" c:type="GFileAttributeInfoFlags"/>
+      </field>
+    </record>
+    <bitfield name="FileAttributeInfoFlags"
+              glib:type-name="GFileAttributeInfoFlags"
+              glib:get-type="g_file_attribute_info_flags_get_type"
+              c:type="GFileAttributeInfoFlags">
+      <doc xml:whitespace="preserve">Flags specifying the behaviour of an attribute.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="G_FILE_ATTRIBUTE_INFO_NONE"
+              glib:nick="none"/>
+      <member name="copy_with_file"
+              value="1"
+              c:identifier="G_FILE_ATTRIBUTE_INFO_COPY_WITH_FILE"
+              glib:nick="copy-with-file"/>
+      <member name="copy_when_moved"
+              value="2"
+              c:identifier="G_FILE_ATTRIBUTE_INFO_COPY_WHEN_MOVED"
+              glib:nick="copy-when-moved"/>
+    </bitfield>
+    <record name="FileAttributeInfoList"
+            c:type="GFileAttributeInfoList"
+            glib:type-name="GFileAttributeInfoList"
+            glib:get-type="g_file_attribute_info_list_get_type"
+            c:symbol-prefix="file_attribute_info_list">
+      <doc xml:whitespace="preserve">Acts as a lightweight registry for possible valid file attributes.
+The registry stores Key-Value pair formats as #GFileAttributeInfo&lt;!-- --&gt;s.</doc>
+      <field name="infos" writable="1">
+        <type name="FileAttributeInfo" c:type="GFileAttributeInfo*"/>
+      </field>
+      <field name="n_infos" writable="1">
+        <type name="gint" c:type="int"/>
+      </field>
+      <constructor name="new" c:identifier="g_file_attribute_info_list_new">
+        <doc xml:whitespace="preserve">Creates a new file attribute info list.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileAttributeInfoList.</doc>
+          <type name="FileAttributeInfoList" c:type="GFileAttributeInfoList*"/>
+        </return-value>
+      </constructor>
+      <method name="add" c:identifier="g_file_attribute_info_list_add">
+        <doc xml:whitespace="preserve">Adds a new attribute with @name to the @list, setting
+its @type and @flags.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the attribute to add.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GFileAttributeType for the attribute.</doc>
+            <type name="FileAttributeType" c:type="GFileAttributeType"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GFileAttributeInfoFlags for the attribute.</doc>
+            <type name="FileAttributeInfoFlags"
+                  c:type="GFileAttributeInfoFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup" c:identifier="g_file_attribute_info_list_dup">
+        <doc xml:whitespace="preserve">Makes a duplicate of a file attribute info list.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a copy of the given @list.</doc>
+          <type name="FileAttributeInfoList" c:type="GFileAttributeInfoList*"/>
+        </return-value>
+      </method>
+      <method name="lookup" c:identifier="g_file_attribute_info_list_lookup">
+        <doc xml:whitespace="preserve">Gets the file attribute with the name @name from @list.
+attribute isn't found.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GFileAttributeInfo for the @name, or %NULL if an</doc>
+          <type name="FileAttributeInfo" c:type="GFileAttributeInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the attribute to lookup.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref" c:identifier="g_file_attribute_info_list_ref">
+        <doc xml:whitespace="preserve">References a file attribute info list.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GFileAttributeInfoList or %NULL on error.</doc>
+          <type name="FileAttributeInfoList" c:type="GFileAttributeInfoList*"/>
+        </return-value>
+      </method>
+      <method name="unref" c:identifier="g_file_attribute_info_list_unref">
+        <doc xml:whitespace="preserve">Removes a reference from the given @list. If the reference count
+falls to zero, the @list is deleted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="FileAttributeMatcher"
+            c:type="GFileAttributeMatcher"
+            glib:type-name="GFileAttributeMatcher"
+            glib:get-type="g_file_attribute_matcher_get_type"
+            c:symbol-prefix="file_attribute_matcher">
+      <doc xml:whitespace="preserve">Determines if a string matches a file attribute.</doc>
+      <constructor name="new" c:identifier="g_file_attribute_matcher_new">
+        <doc xml:whitespace="preserve">Creates a new file attribute matcher, which matches attributes
+against a given string. #GFileAttributeMatcher&lt;!-- --&gt;s are reference
+counted structures, and are created with a reference count of 1. If
+the number of references falls to 0, the #GFileAttributeMatcher is
+automatically destroyed.
+The @attribute string should be formatted with specific keys separated
+from namespaces with a double colon. Several "namespace::key" strings may be
+concatenated with a single comma (e.g. "standard::type,standard::is-hidden").
+The wildcard "*" may be used to match all keys and namespaces, or
+"namespace::*" will match all keys in a given namespace.
+Examples of strings to use:
+&lt;table&gt;
+&lt;title&gt;File Attribute Matcher strings and results&lt;/title&gt;
+&lt;tgroup cols='2' align='left'&gt;&lt;thead&gt;
+&lt;row&gt;&lt;entry&gt; Matcher String &lt;/entry&gt;&lt;entry&gt; Matches &lt;/entry&gt;&lt;/row&gt;&lt;/thead&gt;
+&lt;tbody&gt;
+&lt;row&gt;&lt;entry&gt;"*"&lt;/entry&gt;&lt;entry&gt;matches all attributes.&lt;/entry&gt;&lt;/row&gt;
+&lt;row&gt;&lt;entry&gt;"standard::is-hidden"&lt;/entry&gt;&lt;entry&gt;matches only the key is-hidden in the standard namespace.&lt;/entry&gt;&lt;/row&gt;
+&lt;row&gt;&lt;entry&gt;"standard::type,unix::*"&lt;/entry&gt;&lt;entry&gt;matches the type key in the standard namespace and
+all keys in the unix namespace.&lt;/entry&gt;&lt;/row&gt;
+&lt;/tbody&gt;&lt;/tgroup&gt;
+&lt;/table&gt;</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileAttributeMatcher.</doc>
+          <type name="FileAttributeMatcher" c:type="GFileAttributeMatcher*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an attribute string to match.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="enumerate_namespace"
+              c:identifier="g_file_attribute_matcher_enumerate_namespace">
+        <doc xml:whitespace="preserve">Checks if the matcher will match all of the keys in a given namespace.
+This will always return %TRUE if a wildcard character is in use (e.g. if
+matcher was created with "standard::*" and @ns is "standard", or if matcher was created
+using "*" and namespace is anything.)
+in the given @ns, %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the matcher matches all of the entries</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="ns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing a file attribute namespace.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="enumerate_next"
+              c:identifier="g_file_attribute_matcher_enumerate_next">
+        <doc xml:whitespace="preserve">Gets the next matched attribute from a #GFileAttributeMatcher.
+no more attribute exist.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the next attribute or %NULL if</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="matches" c:identifier="g_file_attribute_matcher_matches">
+        <doc xml:whitespace="preserve">Checks if an attribute will be matched by an attribute matcher. If
+the matcher was created with the "*" matching string, this function
+will always return %TRUE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @attribute matches @matcher. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="matches_only"
+              c:identifier="g_file_attribute_matcher_matches_only">
+        <doc xml:whitespace="preserve">Checks if a attribute matcher only matches a given attribute. Always
+returns %FALSE if "*" was used when creating the matcher.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the matcher only matches @attribute. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref" c:identifier="g_file_attribute_matcher_ref">
+        <doc xml:whitespace="preserve">References a file attribute matcher.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileAttributeMatcher.</doc>
+          <type name="FileAttributeMatcher" c:type="GFileAttributeMatcher*"/>
+        </return-value>
+      </method>
+      <method name="unref" c:identifier="g_file_attribute_matcher_unref">
+        <doc xml:whitespace="preserve">Unreferences @matcher. If the reference count falls below 1,
+the @matcher is automatically freed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="FileAttributeStatus"
+                 glib:type-name="GFileAttributeStatus"
+                 glib:get-type="g_file_attribute_status_get_type"
+                 c:type="GFileAttributeStatus">
+      <doc xml:whitespace="preserve">Used by g_file_set_attributes_from_info() when setting file attributes.</doc>
+      <member name="unset"
+              value="0"
+              c:identifier="G_FILE_ATTRIBUTE_STATUS_UNSET"
+              glib:nick="unset"/>
+      <member name="set"
+              value="1"
+              c:identifier="G_FILE_ATTRIBUTE_STATUS_SET"
+              glib:nick="set"/>
+      <member name="error_setting"
+              value="2"
+              c:identifier="G_FILE_ATTRIBUTE_STATUS_ERROR_SETTING"
+              glib:nick="error-setting"/>
+    </enumeration>
+    <enumeration name="FileAttributeType"
+                 glib:type-name="GFileAttributeType"
+                 glib:get-type="g_file_attribute_type_get_type"
+                 c:type="GFileAttributeType">
+      <doc xml:whitespace="preserve">The data types for file attributes.</doc>
+      <member name="invalid"
+              value="0"
+              c:identifier="G_FILE_ATTRIBUTE_TYPE_INVALID"
+              glib:nick="invalid"/>
+      <member name="string"
+              value="1"
+              c:identifier="G_FILE_ATTRIBUTE_TYPE_STRING"
+              glib:nick="string"/>
+      <member name="byte_string"
+              value="2"
+              c:identifier="G_FILE_ATTRIBUTE_TYPE_BYTE_STRING"
+              glib:nick="byte-string"/>
+      <member name="boolean"
+              value="3"
+              c:identifier="G_FILE_ATTRIBUTE_TYPE_BOOLEAN"
+              glib:nick="boolean"/>
+      <member name="uint32"
+              value="4"
+              c:identifier="G_FILE_ATTRIBUTE_TYPE_UINT32"
+              glib:nick="uint32"/>
+      <member name="int32"
+              value="5"
+              c:identifier="G_FILE_ATTRIBUTE_TYPE_INT32"
+              glib:nick="int32"/>
+      <member name="uint64"
+              value="6"
+              c:identifier="G_FILE_ATTRIBUTE_TYPE_UINT64"
+              glib:nick="uint64"/>
+      <member name="int64"
+              value="7"
+              c:identifier="G_FILE_ATTRIBUTE_TYPE_INT64"
+              glib:nick="int64"/>
+      <member name="object"
+              value="8"
+              c:identifier="G_FILE_ATTRIBUTE_TYPE_OBJECT"
+              glib:nick="object"/>
+      <member name="stringv"
+              value="9"
+              c:identifier="G_FILE_ATTRIBUTE_TYPE_STRINGV"
+              glib:nick="stringv"/>
+    </enumeration>
+    <bitfield name="FileCopyFlags"
+              glib:type-name="GFileCopyFlags"
+              glib:get-type="g_file_copy_flags_get_type"
+              c:type="GFileCopyFlags">
+      <doc xml:whitespace="preserve">Flags used when copying or moving files.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="G_FILE_COPY_NONE"
+              glib:nick="none"/>
+      <member name="overwrite"
+              value="1"
+              c:identifier="G_FILE_COPY_OVERWRITE"
+              glib:nick="overwrite"/>
+      <member name="backup"
+              value="2"
+              c:identifier="G_FILE_COPY_BACKUP"
+              glib:nick="backup"/>
+      <member name="nofollow_symlinks"
+              value="4"
+              c:identifier="G_FILE_COPY_NOFOLLOW_SYMLINKS"
+              glib:nick="nofollow-symlinks"/>
+      <member name="all_metadata"
+              value="8"
+              c:identifier="G_FILE_COPY_ALL_METADATA"
+              glib:nick="all-metadata"/>
+      <member name="no_fallback_for_move"
+              value="16"
+              c:identifier="G_FILE_COPY_NO_FALLBACK_FOR_MOVE"
+              glib:nick="no-fallback-for-move"/>
+      <member name="target_default_perms"
+              value="32"
+              c:identifier="G_FILE_COPY_TARGET_DEFAULT_PERMS"
+              glib:nick="target-default-perms"/>
+    </bitfield>
+    <bitfield name="FileCreateFlags"
+              glib:type-name="GFileCreateFlags"
+              glib:get-type="g_file_create_flags_get_type"
+              c:type="GFileCreateFlags">
+      <doc xml:whitespace="preserve">Flags used when an operation may create a file.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="G_FILE_CREATE_NONE"
+              glib:nick="none"/>
+      <member name="private"
+              value="1"
+              c:identifier="G_FILE_CREATE_PRIVATE"
+              glib:nick="private"/>
+      <member name="replace_destination"
+              value="2"
+              c:identifier="G_FILE_CREATE_REPLACE_DESTINATION"
+              glib:nick="replace-destination"/>
+    </bitfield>
+    <interface name="FileDescriptorBased"
+               c:symbol-prefix="file_descriptor_based"
+               c:type="GFileDescriptorBased"
+               glib:type-name="GFileDescriptorBased"
+               glib:get-type="g_file_descriptor_based_get_type"
+               glib:type-struct="FileDescriptorBasedIface">
+      <doc xml:whitespace="preserve">An interface for file descriptor based io objects.</doc>
+      <virtual-method name="get_fd" invoker="get_fd" version="2.24">
+        <doc xml:whitespace="preserve">Gets the underlying file descriptor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The file descriptor</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_fd"
+              c:identifier="g_file_descriptor_based_get_fd"
+              version="2.24">
+        <doc xml:whitespace="preserve">Gets the underlying file descriptor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The file descriptor</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+    </interface>
+    <record name="FileDescriptorBasedIface"
+            c:type="GFileDescriptorBasedIface"
+            glib:is-gtype-struct-for="FileDescriptorBased">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_fd">
+        <callback name="get_fd">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">The file descriptor</doc>
+            <type name="gint" c:type="int"/>
+          </return-value>
+          <parameters>
+            <parameter name="fd_based" transfer-ownership="none">
+              <type name="FileDescriptorBased" c:type="GFileDescriptorBased*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="FileEnumerator"
+           c:symbol-prefix="file_enumerator"
+           c:type="GFileEnumerator"
+           parent="GObject.Object"
+           glib:type-name="GFileEnumerator"
+           glib:get-type="g_file_enumerator_get_type"
+           glib:type-struct="FileEnumeratorClass">
+      <doc xml:whitespace="preserve">A per matched file iterator.</doc>
+      <virtual-method name="close_async" invoker="close_async">
+        <doc xml:whitespace="preserve">Asynchronously closes the file enumerator.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned in
+g_file_enumerator_close_finish().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="3">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="close_finish" invoker="close_finish" throws="1">
+        <doc xml:whitespace="preserve">Finishes closing a file enumerator, started from g_file_enumerator_close_async().
+If the file enumerator was already closed when g_file_enumerator_close_async()
+was called, then this function will report %G_IO_ERROR_CLOSED in @error, and
+return %FALSE. If the file enumerator had pending operation when the close
+operation was started, then this function will report %G_IO_ERROR_PENDING, and
+return %FALSE.  If @cancellable was not %NULL, then the operation may have been
+cancelled by triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be set, and %FALSE will be
+returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the close operation has finished successfully.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="close_fn" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable" transfer-ownership="none">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="next_file" invoker="next_file" throws="1">
+        <doc xml:whitespace="preserve">Returns information for the next file in the enumerated object.
+Will block until the information is available. The #GFileInfo
+returned from this function will contain attributes that match the
+attribute string that was passed when the #GFileEnumerator was created.
+On error, returns %NULL and sets @error to the error. If the
+enumerator is at the end, %NULL will be returned and @error will
+be unset.
+Free the returned object with g_object_unref() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GFileInfo or %NULL on error or end of enumerator.</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="next_files_async" invoker="next_files_async">
+        <doc xml:whitespace="preserve">Request information for a number of files from the enumerator asynchronously.
+When all i/o for the operation is finished the @callback will be called with
+the requested information.
+The callback can be called with less than @num_files files in case of error
+or at the end of the enumerator. In case of a partial error the callback will
+be called with any succeeding items and no error, and on the next request the
+error will be reported. If a request is cancelled the callback will be called
+with %G_IO_ERROR_CANCELLED.
+During an async request no other sync and async calls are allowed, and will
+result in %G_IO_ERROR_PENDING errors.
+Any outstanding i/o request with higher priority (lower numerical value) will
+be executed before an outstanding request with lower priority. Default
+priority is %G_PRIORITY_DEFAULT.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="num_files" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of file info objects to request</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="gioscheduler"&gt;io priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="next_files_finish"
+                      invoker="next_files_finish"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes the asynchronous operation started with g_file_enumerator_next_files_async().
+g_list_free() and unref the infos with g_object_unref() when you're
+done with them.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GList of #GFileInfo&lt;!----&gt;s. You must free the list with</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="FileInfo"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="close" c:identifier="g_file_enumerator_close" throws="1">
+        <doc xml:whitespace="preserve">Releases all resources used by this enumerator, making the
+enumerator return %G_IO_ERROR_CLOSED on all calls.
+This will be automatically called when the last reference
+is dropped, but you might want to call this function to make
+sure resources are released as early as possible.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#TRUE on success or #FALSE on error.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close_async" c:identifier="g_file_enumerator_close_async">
+        <doc xml:whitespace="preserve">Asynchronously closes the file enumerator.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned in
+g_file_enumerator_close_finish().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close_finish"
+              c:identifier="g_file_enumerator_close_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes closing a file enumerator, started from g_file_enumerator_close_async().
+If the file enumerator was already closed when g_file_enumerator_close_async()
+was called, then this function will report %G_IO_ERROR_CLOSED in @error, and
+return %FALSE. If the file enumerator had pending operation when the close
+operation was started, then this function will report %G_IO_ERROR_PENDING, and
+return %FALSE.  If @cancellable was not %NULL, then the operation may have been
+cancelled by triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be set, and %FALSE will be
+returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the close operation has finished successfully.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_container"
+              c:identifier="g_file_enumerator_get_container"
+              version="2.18">
+        <doc xml:whitespace="preserve">Get the #GFile container which is being enumerated.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GFile which is being enumerated.</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+      </method>
+      <method name="has_pending" c:identifier="g_file_enumerator_has_pending">
+        <doc xml:whitespace="preserve">Checks if the file enumerator has pending operations.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @enumerator has pending operations.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_closed" c:identifier="g_file_enumerator_is_closed">
+        <doc xml:whitespace="preserve">Checks if the file enumerator has been closed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @enumerator is closed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="next_file"
+              c:identifier="g_file_enumerator_next_file"
+              throws="1">
+        <doc xml:whitespace="preserve">Returns information for the next file in the enumerated object.
+Will block until the information is available. The #GFileInfo
+returned from this function will contain attributes that match the
+attribute string that was passed when the #GFileEnumerator was created.
+On error, returns %NULL and sets @error to the error. If the
+enumerator is at the end, %NULL will be returned and @error will
+be unset.
+Free the returned object with g_object_unref() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GFileInfo or %NULL on error or end of enumerator.</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="next_files_async"
+              c:identifier="g_file_enumerator_next_files_async">
+        <doc xml:whitespace="preserve">Request information for a number of files from the enumerator asynchronously.
+When all i/o for the operation is finished the @callback will be called with
+the requested information.
+The callback can be called with less than @num_files files in case of error
+or at the end of the enumerator. In case of a partial error the callback will
+be called with any succeeding items and no error, and on the next request the
+error will be reported. If a request is cancelled the callback will be called
+with %G_IO_ERROR_CANCELLED.
+During an async request no other sync and async calls are allowed, and will
+result in %G_IO_ERROR_PENDING errors.
+Any outstanding i/o request with higher priority (lower numerical value) will
+be executed before an outstanding request with lower priority. Default
+priority is %G_PRIORITY_DEFAULT.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="num_files" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of file info objects to request</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="gioscheduler"&gt;io priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="next_files_finish"
+              c:identifier="g_file_enumerator_next_files_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes the asynchronous operation started with g_file_enumerator_next_files_async().
+g_list_free() and unref the infos with g_object_unref() when you're
+done with them.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GList of #GFileInfo&lt;!----&gt;s. You must free the list with</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="FileInfo"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pending" c:identifier="g_file_enumerator_set_pending">
+        <doc xml:whitespace="preserve">Sets the file enumerator as having pending operations.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pending" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a boolean value.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="container"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="File"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="FileEnumeratorPrivate" c:type="GFileEnumeratorPrivate*"/>
+      </field>
+    </class>
+    <record name="FileEnumeratorClass"
+            c:type="GFileEnumeratorClass"
+            glib:is-gtype-struct-for="FileEnumerator">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="next_file">
+        <callback name="next_file" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">A #GFileInfo or %NULL on error or end of enumerator.</doc>
+            <type name="FileInfo" c:type="GFileInfo*"/>
+          </return-value>
+          <parameters>
+            <parameter name="enumerator" transfer-ownership="none">
+              <type name="FileEnumerator" c:type="GFileEnumerator*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_fn">
+        <callback name="close_fn" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="enumerator" transfer-ownership="none">
+              <type name="FileEnumerator" c:type="GFileEnumerator*"/>
+            </parameter>
+            <parameter name="cancellable" transfer-ownership="none">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="next_files_async">
+        <callback name="next_files_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="enumerator" transfer-ownership="none">
+              <type name="FileEnumerator" c:type="GFileEnumerator*"/>
+            </parameter>
+            <parameter name="num_files" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the number of file info objects to request</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the &lt;link linkend="gioscheduler"&gt;io priority&lt;/link&gt; of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="next_files_finish">
+        <callback name="next_files_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GList of #GFileInfo&lt;!----&gt;s. You must free the list with</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="FileInfo"/>
+            </type>
+          </return-value>
+          <parameters>
+            <parameter name="enumerator" transfer-ownership="none">
+              <type name="FileEnumerator" c:type="GFileEnumerator*"/>
+            </parameter>
+            <parameter name="res" transfer-ownership="none">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_async">
+        <callback name="close_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="enumerator" transfer-ownership="none">
+              <type name="FileEnumerator" c:type="GFileEnumerator*"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="4">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_finish">
+        <callback name="close_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the close operation has finished successfully.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="enumerator" transfer-ownership="none">
+              <type name="FileEnumerator" c:type="GFileEnumerator*"/>
+            </parameter>
+            <parameter name="res" transfer-ownership="none">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved6" introspectable="0">
+        <callback name="_g_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved7" introspectable="0">
+        <callback name="_g_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="FileEnumeratorPrivate"
+            c:type="GFileEnumeratorPrivate"
+            disguised="1">
+    </record>
+    <class name="FileIOStream"
+           c:symbol-prefix="file_io_stream"
+           c:type="GFileIOStream"
+           parent="IOStream"
+           glib:type-name="GFileIOStream"
+           glib:get-type="g_file_io_stream_get_type"
+           glib:type-struct="FileIOStreamClass">
+      <doc xml:whitespace="preserve">A subclass of GIOStream for opened files. This adds
+a few file-specific operations and seeking and truncating.
+#GFileIOStream implements GSeekable.</doc>
+      <implements name="Seekable"/>
+      <virtual-method name="can_seek">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="can_truncate">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_etag" invoker="get_etag" version="2.22">
+        <doc xml:whitespace="preserve">Gets the entity tag for the file when it has been written.
+This must be called after the stream has been written
+and closed, as the etag can change while writing.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the entity tag for the stream.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="query_info"
+                      invoker="query_info"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Queries a file io stream for the given @attributes.
+This function blocks while querying the stream. For the asynchronous
+version of this function, see g_file_io_stream_query_info_async().
+While the stream is blocked, the stream will set the pending flag
+internally, and any other operations on the stream will fail with
+%G_IO_ERROR_PENDING.
+Can fail if the stream was already closed (with @error being set to
+%G_IO_ERROR_CLOSED), the stream has pending operations (with @error being
+set to %G_IO_ERROR_PENDING), or if querying info is not supported for
+the stream's interface (with @error being set to %G_IO_ERROR_NOT_SUPPORTED). I
+all cases of failure, %NULL will be returned.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be set, and %NULL will
+be returned.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileInfo for the @stream, or %NULL on error.</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute query string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_info_async"
+                      invoker="query_info_async"
+                      version="2.22">
+        <doc xml:whitespace="preserve">Asynchronously queries the @stream for a #GFileInfo. When completed,
+finish the operation with g_file_io_stream_query_info_finish().
+For the synchronous version of this function, see
+g_file_io_stream_query_info().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute query string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="gio-GIOScheduler"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_info_finish"
+                      invoker="query_info_finish"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finalizes the asynchronous query started
+by g_file_io_stream_query_info_async().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GFileInfo for the finished query.</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="seek" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="gint64" c:type="goffset"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GLib.SeekType" c:type="GSeekType"/>
+          </parameter>
+          <parameter name="cancellable" transfer-ownership="none">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="tell">
+        <return-value transfer-ownership="none">
+          <type name="gint64" c:type="goffset"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="truncate_fn" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="gint64" c:type="goffset"/>
+          </parameter>
+          <parameter name="cancellable" transfer-ownership="none">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_etag"
+              c:identifier="g_file_io_stream_get_etag"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the entity tag for the file when it has been written.
+This must be called after the stream has been written
+and closed, as the etag can change while writing.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the entity tag for the stream.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="query_info"
+              c:identifier="g_file_io_stream_query_info"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Queries a file io stream for the given @attributes.
+This function blocks while querying the stream. For the asynchronous
+version of this function, see g_file_io_stream_query_info_async().
+While the stream is blocked, the stream will set the pending flag
+internally, and any other operations on the stream will fail with
+%G_IO_ERROR_PENDING.
+Can fail if the stream was already closed (with @error being set to
+%G_IO_ERROR_CLOSED), the stream has pending operations (with @error being
+set to %G_IO_ERROR_PENDING), or if querying info is not supported for
+the stream's interface (with @error being set to %G_IO_ERROR_NOT_SUPPORTED). I
+all cases of failure, %NULL will be returned.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be set, and %NULL will
+be returned.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileInfo for the @stream, or %NULL on error.</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute query string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_info_async"
+              c:identifier="g_file_io_stream_query_info_async"
+              version="2.22">
+        <doc xml:whitespace="preserve">Asynchronously queries the @stream for a #GFileInfo. When completed,
+finish the operation with g_file_io_stream_query_info_finish().
+For the synchronous version of this function, see
+g_file_io_stream_query_info().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute query string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="gio-GIOScheduler"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_info_finish"
+              c:identifier="g_file_io_stream_query_info_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finalizes the asynchronous query started
+by g_file_io_stream_query_info_async().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GFileInfo for the finished query.</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="IOStream" c:type="GIOStream"/>
+      </field>
+      <field name="priv">
+        <type name="FileIOStreamPrivate" c:type="GFileIOStreamPrivate*"/>
+      </field>
+    </class>
+    <record name="FileIOStreamClass"
+            c:type="GFileIOStreamClass"
+            glib:is-gtype-struct-for="FileIOStream">
+      <field name="parent_class">
+        <type name="IOStreamClass" c:type="GIOStreamClass"/>
+      </field>
+      <field name="tell">
+        <callback name="tell">
+          <return-value transfer-ownership="none">
+            <type name="gint64" c:type="goffset"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="FileIOStream" c:type="GFileIOStream*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_seek">
+        <callback name="can_seek">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="FileIOStream" c:type="GFileIOStream*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="seek">
+        <callback name="seek" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="FileIOStream" c:type="GFileIOStream*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <type name="gint64" c:type="goffset"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <type name="GLib.SeekType" c:type="GSeekType"/>
+            </parameter>
+            <parameter name="cancellable" transfer-ownership="none">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_truncate">
+        <callback name="can_truncate">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="FileIOStream" c:type="GFileIOStream*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="truncate_fn">
+        <callback name="truncate_fn" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="FileIOStream" c:type="GFileIOStream*"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <type name="gint64" c:type="goffset"/>
+            </parameter>
+            <parameter name="cancellable" transfer-ownership="none">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_info">
+        <callback name="query_info" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFileInfo for the @stream, or %NULL on error.</doc>
+            <type name="FileInfo" c:type="GFileInfo*"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="FileIOStream" c:type="GFileIOStream*"/>
+            </parameter>
+            <parameter name="attributes" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a file attribute query string.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_info_async">
+        <callback name="query_info_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="FileIOStream" c:type="GFileIOStream*"/>
+            </parameter>
+            <parameter name="attributes" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a file attribute query string.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the &lt;link linkend="gio-GIOScheduler"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_info_finish">
+        <callback name="query_info_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">A #GFileInfo for the finished query.</doc>
+            <type name="FileInfo" c:type="GFileInfo*"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="FileIOStream" c:type="GFileIOStream*"/>
+            </parameter>
+            <parameter name="res" transfer-ownership="none">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_etag">
+        <callback name="get_etag">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the entity tag for the stream.</doc>
+            <type name="utf8" c:type="char*"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="FileIOStream" c:type="GFileIOStream*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="FileIOStreamPrivate"
+            c:type="GFileIOStreamPrivate"
+            disguised="1">
+    </record>
+    <class name="FileIcon"
+           c:symbol-prefix="file_icon"
+           c:type="GFileIcon"
+           parent="GObject.Object"
+           glib:type-name="GFileIcon"
+           glib:get-type="g_file_icon_get_type"
+           glib:type-struct="FileIconClass">
+      <doc xml:whitespace="preserve">Gets an icon for a #GFile. Implements #GLoadableIcon.</doc>
+      <implements name="Icon"/>
+      <implements name="LoadableIcon"/>
+      <method name="get_file" c:identifier="g_file_icon_get_file">
+        <doc xml:whitespace="preserve">Gets the #GFile associated with the given @icon.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GFile, or %NULL.</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+      </method>
+      <property name="file"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The file containing the icon.</doc>
+        <type name="File"/>
+      </property>
+    </class>
+    <record name="FileIconClass"
+            c:type="GFileIconClass"
+            disguised="1"
+            glib:is-gtype-struct-for="FileIcon">
+    </record>
+    <record name="FileIface"
+            c:type="GFileIface"
+            glib:is-gtype-struct-for="File">
+      <doc xml:whitespace="preserve">An interface for writing VFS file handles.</doc>
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="dup">
+        <callback name="dup">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a new #GFile that is a duplicate of the given #GFile.</doc>
+            <type name="File" c:type="GFile*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="hash">
+        <callback name="hash">
+          <return-value transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="equal">
+        <callback name="equal">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if @file1 and @file2 are equal.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="file1" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="file2" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the second #GFile.</doc>
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_native">
+        <callback name="is_native">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if file is native.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="has_uri_scheme">
+        <callback name="has_uri_scheme">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if #GFile's backend supports the</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="uri_scheme" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a string containing a URI scheme.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_uri_scheme">
+        <callback name="get_uri_scheme">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a string containing the URI scheme for the given</doc>
+            <type name="utf8" c:type="char*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_basename">
+        <callback name="get_basename">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">string containing the #GFile's base name, or %NULL</doc>
+            <type name="utf8" c:type="char*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_path">
+        <callback name="get_path">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">string containing the #GFile's path, or %NULL if</doc>
+            <type name="utf8" c:type="char*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_uri">
+        <callback name="get_uri">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a string containing the #GFile's URI.</doc>
+            <type name="utf8" c:type="char*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_parse_name">
+        <callback name="get_parse_name">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a string containing the #GFile's parse name. The returned</doc>
+            <type name="utf8" c:type="char*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_parent">
+        <callback name="get_parent">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFile structure to the parent of the given</doc>
+            <type name="File" c:type="GFile*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="prefix_matches">
+        <callback name="prefix_matches">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @files's parent, grandparent, etc is @prefix.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="prefix" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="file" transfer-ownership="none">
+              <doc xml:whitespace="preserve">input #GFile.</doc>
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_relative_path">
+        <callback name="get_relative_path">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">string with the relative path from @descendant</doc>
+            <type name="utf8" c:type="char*"/>
+          </return-value>
+          <parameters>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="descendant" transfer-ownership="none">
+              <doc xml:whitespace="preserve">input #GFile.</doc>
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="resolve_relative_path">
+        <callback name="resolve_relative_path">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">#GFile to the resolved path. %NULL if @relative_path</doc>
+            <type name="File" c:type="GFile*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="relative_path" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a given relative path string.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_child_for_display_name">
+        <callback name="get_child_for_display_name" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFile to the specified child, or</doc>
+            <type name="File" c:type="GFile*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="display_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">string to a possible child.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="enumerate_children">
+        <callback name="enumerate_children" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">A #GFileEnumerator if successful, %NULL on error.</doc>
+            <type name="FileEnumerator" c:type="GFileEnumerator*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="attributes" transfer-ownership="none">
+              <doc xml:whitespace="preserve">an attribute query string.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a set of #GFileQueryInfoFlags.</doc>
+              <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="enumerate_children_async">
+        <callback name="enumerate_children_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="attributes" transfer-ownership="none">
+              <doc xml:whitespace="preserve">an attribute query string.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a set of #GFileQueryInfoFlags.</doc>
+              <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="6">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="6">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="enumerate_children_finish">
+        <callback name="enumerate_children_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFileEnumerator or %NULL if an error occurred.</doc>
+            <type name="FileEnumerator" c:type="GFileEnumerator*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="res" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_info">
+        <callback name="query_info" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFileInfo for the given @file, or %NULL on error.</doc>
+            <type name="FileInfo" c:type="GFileInfo*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="attributes" transfer-ownership="none">
+              <doc xml:whitespace="preserve">an attribute query string.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a set of #GFileQueryInfoFlags.</doc>
+              <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_info_async">
+        <callback name="query_info_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="attributes" transfer-ownership="none">
+              <doc xml:whitespace="preserve">an attribute query string.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a set of #GFileQueryInfoFlags.</doc>
+              <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="6">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="6">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_info_finish">
+        <callback name="query_info_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">#GFileInfo for given @file or %NULL on error.</doc>
+            <type name="FileInfo" c:type="GFileInfo*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="res" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_filesystem_info">
+        <callback name="query_filesystem_info" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFileInfo or %NULL if there was an error.</doc>
+            <type name="FileInfo" c:type="GFileInfo*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="attributes" transfer-ownership="none">
+              <doc xml:whitespace="preserve">an attribute query string.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_filesystem_info_async">
+        <callback name="query_filesystem_info_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="attributes" transfer-ownership="none">
+              <doc xml:whitespace="preserve">an attribute query string.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_filesystem_info_finish">
+        <callback name="query_filesystem_info_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">#GFileInfo for given @file or %NULL on error.</doc>
+            <type name="FileInfo" c:type="GFileInfo*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="res" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="find_enclosing_mount">
+        <callback name="find_enclosing_mount" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GMount where the @file is located or %NULL on error.</doc>
+            <type name="Mount" c:type="GMount*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="find_enclosing_mount_async">
+        <callback name="find_enclosing_mount_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="4">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="find_enclosing_mount_finish">
+        <callback name="find_enclosing_mount_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">#GMount for given @file or %NULL on error.</doc>
+            <type name="Mount" c:type="GMount*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="res" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_display_name">
+        <callback name="set_display_name" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFile specifying what @file was renamed to, or %NULL</doc>
+            <type name="File" c:type="GFile*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="display_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a string.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_display_name_async">
+        <callback name="set_display_name_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="display_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a string.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_display_name_finish">
+        <callback name="set_display_name_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFile or %NULL on error.</doc>
+            <type name="File" c:type="GFile*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="res" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_settable_attributes">
+        <callback name="query_settable_attributes" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFileAttributeInfoList describing the settable attributes.</doc>
+            <type name="FileAttributeInfoList"
+                  c:type="GFileAttributeInfoList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_query_settable_attributes_async" introspectable="0">
+        <callback name="_query_settable_attributes_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_query_settable_attributes_finish" introspectable="0">
+        <callback name="_query_settable_attributes_finish">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="query_writable_namespaces">
+        <callback name="query_writable_namespaces" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFileAttributeInfoList describing the writable namespaces.</doc>
+            <type name="FileAttributeInfoList"
+                  c:type="GFileAttributeInfoList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_query_writable_namespaces_async" introspectable="0">
+        <callback name="_query_writable_namespaces_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_query_writable_namespaces_finish" introspectable="0">
+        <callback name="_query_writable_namespaces_finish">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="set_attribute">
+        <callback name="set_attribute" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the attribute was set, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="attribute" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a string containing the attribute's name.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The type of the attribute</doc>
+              <type name="FileAttributeType" c:type="GFileAttributeType"/>
+            </parameter>
+            <parameter name="value_p" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a pointer to the value (or the pointer itself if the type is a pointer type)</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a set of #GFileQueryInfoFlags.</doc>
+              <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_attributes_from_info">
+        <callback name="set_attributes_from_info" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if there was any error, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="info" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GFileInfo.</doc>
+              <type name="FileInfo" c:type="GFileInfo*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">#GFileQueryInfoFlags</doc>
+              <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_attributes_async">
+        <callback name="set_attributes_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="info" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GFileInfo.</doc>
+              <type name="FileInfo" c:type="GFileInfo*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GFileQueryInfoFlags.</doc>
+              <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="6">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback.</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="6">
+              <doc xml:whitespace="preserve">a #gpointer.</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_attributes_finish">
+        <callback name="set_attributes_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the attributes were set correctly, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+            <parameter name="info"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full">
+              <doc xml:whitespace="preserve">a #GFileInfo.</doc>
+              <type name="FileInfo" c:type="GFileInfo**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="read_fn">
+        <callback name="read_fn" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">#GFileInputStream or %NULL on error.</doc>
+            <type name="FileInputStream" c:type="GFileInputStream*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">a #GCancellable</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="read_async">
+        <callback name="read_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="4">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="read_finish">
+        <callback name="read_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFileInputStream or %NULL on error.</doc>
+            <type name="FileInputStream" c:type="GFileInputStream*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="res" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="append_to">
+        <callback name="append_to" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFileOutputStream, or %NULL on error.</doc>
+            <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a set of #GFileCreateFlags.</doc>
+              <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="append_to_async">
+        <callback name="append_to_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a set of #GFileCreateFlags.</doc>
+              <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="append_to_finish">
+        <callback name="append_to_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a valid #GFileOutputStream or %NULL on error.</doc>
+            <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="res" transfer-ownership="none">
+              <doc xml:whitespace="preserve">#GAsyncResult</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create">
+        <callback name="create" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFileOutputStream for the newly created file, or</doc>
+            <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a set of #GFileCreateFlags.</doc>
+              <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_async">
+        <callback name="create_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a set of #GFileCreateFlags.</doc>
+              <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_finish">
+        <callback name="create_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFileOutputStream or %NULL on error.</doc>
+            <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="res" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="replace">
+        <callback name="replace" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFileOutputStream or %NULL on error.</doc>
+            <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="etag" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">an optional &lt;link linkend="gfile-etag"&gt;entity tag&lt;/link&gt; for the current #GFile, or #NULL to ignore.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="make_backup" transfer-ownership="none">
+              <doc xml:whitespace="preserve">%TRUE if a backup should be created.</doc>
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a set of #GFileCreateFlags.</doc>
+              <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="replace_async">
+        <callback name="replace_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="etag" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">an &lt;link linkend="gfile-etag"&gt;entity tag&lt;/link&gt; for the current #GFile, or NULL to ignore.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="make_backup" transfer-ownership="none">
+              <doc xml:whitespace="preserve">%TRUE if a backup should be created.</doc>
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a set of #GFileCreateFlags.</doc>
+              <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="7">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="7">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="replace_finish">
+        <callback name="replace_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFileOutputStream, or %NULL on error.</doc>
+            <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="res" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delete_file">
+        <callback name="delete_file" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the file was deleted. %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_delete_file_async" introspectable="0">
+        <callback name="_delete_file_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_delete_file_finish" introspectable="0">
+        <callback name="_delete_file_finish">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="trash">
+        <callback name="trash" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE on successful trash, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_trash_async" introspectable="0">
+        <callback name="_trash_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_trash_finish" introspectable="0">
+        <callback name="_trash_finish">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="make_directory">
+        <callback name="make_directory" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_make_directory_async" introspectable="0">
+        <callback name="_make_directory_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_make_directory_finish" introspectable="0">
+        <callback name="_make_directory_finish">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="make_symbolic_link">
+        <callback name="make_symbolic_link" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE on the creation of a new symlink, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="symlink_value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a string with the path for the target of the new symlink</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_make_symbolic_link_async" introspectable="0">
+        <callback name="_make_symbolic_link_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_make_symbolic_link_finish" introspectable="0">
+        <callback name="_make_symbolic_link_finish">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="copy" introspectable="0">
+        <callback name="copy" introspectable="0" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE on success, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="source" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="destination" transfer-ownership="none">
+              <doc xml:whitespace="preserve">destination #GFile</doc>
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">set of #GFileCopyFlags</doc>
+              <type name="FileCopyFlags" c:type="GFileCopyFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="progress_callback"
+                       transfer-ownership="none"
+                       closure="5">
+              <doc xml:whitespace="preserve">function to callback with progress information</doc>
+              <type name="FileProgressCallback"
+                    c:type="GFileProgressCallback"/>
+            </parameter>
+            <parameter name="progress_callback_data" transfer-ownership="none">
+              <doc xml:whitespace="preserve">user data to pass to @progress_callback</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="copy_async" introspectable="0">
+        <callback name="copy_async" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="source" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="destination" transfer-ownership="none">
+              <doc xml:whitespace="preserve">destination #GFile</doc>
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">set of #GFileCopyFlags</doc>
+              <type name="FileCopyFlags" c:type="GFileCopyFlags"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="progress_callback"
+                       transfer-ownership="none"
+                       closure="6">
+              <doc xml:whitespace="preserve">function to callback with progress information</doc>
+              <type name="FileProgressCallback"
+                    c:type="GFileProgressCallback"/>
+            </parameter>
+            <parameter name="progress_callback_data" transfer-ownership="none">
+              <doc xml:whitespace="preserve">user data to pass to @progress_callback</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="8">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="8">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="copy_finish">
+        <callback name="copy_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a %TRUE on success, %FALSE on error.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="res" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="move" introspectable="0">
+        <callback name="move" introspectable="0" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE on successful move, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="source" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="destination" transfer-ownership="none">
+              <doc xml:whitespace="preserve">#GFile pointing to the destination location.</doc>
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">set of #GFileCopyFlags.</doc>
+              <type name="FileCopyFlags" c:type="GFileCopyFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="progress_callback"
+                       transfer-ownership="none"
+                       closure="5">
+              <doc xml:whitespace="preserve">#GFileProgressCallback function for updates.</doc>
+              <type name="FileProgressCallback"
+                    c:type="GFileProgressCallback"/>
+            </parameter>
+            <parameter name="progress_callback_data" transfer-ownership="none">
+              <doc xml:whitespace="preserve">gpointer to user data for the callback function.</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_move_async" introspectable="0">
+        <callback name="_move_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_move_finish" introspectable="0">
+        <callback name="_move_finish">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="mount_mountable">
+        <callback name="mount_mountable">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">flags affecting the operation</doc>
+              <type name="MountMountFlags" c:type="GMountMountFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GMountOperation, or %NULL to avoid user interaction.</doc>
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="mount_mountable_finish">
+        <callback name="mount_mountable_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFile or %NULL on error.</doc>
+            <type name="File" c:type="GFile*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unmount_mountable">
+        <callback name="unmount_mountable">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">flags affecting the operation</doc>
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="4">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unmount_mountable_finish">
+        <callback name="unmount_mountable_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the operation finished successfully. %FALSE</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_mountable">
+        <callback name="eject_mountable">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">flags affecting the operation</doc>
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="4">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_mountable_finish">
+        <callback name="eject_mountable_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @file was ejected successfully. %FALSE</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="mount_enclosing_volume">
+        <callback name="mount_enclosing_volume">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="location" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">flags affecting the operation</doc>
+              <type name="MountMountFlags" c:type="GMountMountFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="mount_enclosing_volume_finish">
+        <callback name="mount_enclosing_volume_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if successful. If an error</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="location" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="monitor_dir">
+        <callback name="monitor_dir" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFileMonitor for the given @file, or %NULL on error.</doc>
+            <type name="FileMonitor" c:type="GFileMonitor*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a set of #GFileMonitorFlags.</doc>
+              <type name="FileMonitorFlags" c:type="GFileMonitorFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="monitor_file">
+        <callback name="monitor_file" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFileMonitor for the given @file, or %NULL on error.</doc>
+            <type name="FileMonitor" c:type="GFileMonitor*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a set of #GFileMonitorFlags.</doc>
+              <type name="FileMonitorFlags" c:type="GFileMonitorFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="open_readwrite">
+        <callback name="open_readwrite" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">#GFileIOStream or %NULL on error.</doc>
+            <type name="FileIOStream" c:type="GFileIOStream*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">a #GCancellable</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="open_readwrite_async">
+        <callback name="open_readwrite_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="4">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="open_readwrite_finish">
+        <callback name="open_readwrite_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFileIOStream or %NULL on error.</doc>
+            <type name="FileIOStream" c:type="GFileIOStream*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="res" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_readwrite">
+        <callback name="create_readwrite" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFileIOStream for the newly created file, or %NULL on error.</doc>
+            <type name="FileIOStream" c:type="GFileIOStream*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a set of #GFileCreateFlags</doc>
+              <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_readwrite_async">
+        <callback name="create_readwrite_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a set of #GFileCreateFlags</doc>
+              <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_readwrite_finish">
+        <callback name="create_readwrite_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFileIOStream or %NULL on error.</doc>
+            <type name="FileIOStream" c:type="GFileIOStream*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="res" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="replace_readwrite">
+        <callback name="replace_readwrite" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFileIOStream or %NULL on error.</doc>
+            <type name="FileIOStream" c:type="GFileIOStream*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="etag" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">an optional &lt;link linkend="gfile-etag"&gt;entity tag&lt;/link&gt; for the current #GFile, or #NULL to ignore</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="make_backup" transfer-ownership="none">
+              <doc xml:whitespace="preserve">%TRUE if a backup should be created</doc>
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a set of #GFileCreateFlags</doc>
+              <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="replace_readwrite_async">
+        <callback name="replace_readwrite_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="etag" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">an &lt;link linkend="gfile-etag"&gt;entity tag&lt;/link&gt; for the current #GFile, or NULL to ignore.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="make_backup" transfer-ownership="none">
+              <doc xml:whitespace="preserve">%TRUE if a backup should be created.</doc>
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a set of #GFileCreateFlags.</doc>
+              <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="7">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="7">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="replace_readwrite_finish">
+        <callback name="replace_readwrite_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFileIOStream, or %NULL on error.</doc>
+            <type name="FileIOStream" c:type="GFileIOStream*"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="res" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="start_mountable">
+        <callback name="start_mountable">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">flags affecting the operation</doc>
+              <type name="DriveStartFlags" c:type="GDriveStartFlags"/>
+            </parameter>
+            <parameter name="start_operation" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GMountOperation, or %NULL to avoid user interaction.</doc>
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="start_mountable_finish">
+        <callback name="start_mountable_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the operation finished successfully. %FALSE</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stop_mountable">
+        <callback name="stop_mountable">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">flags affecting the operation</doc>
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GMountOperation, or %NULL to avoid user interaction.</doc>
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stop_mountable_finish">
+        <callback name="stop_mountable_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the operation finished successfully. %FALSE</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="supports_thread_contexts">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="unmount_mountable_with_operation">
+        <callback name="unmount_mountable_with_operation">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">flags affecting the operation</doc>
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GMountOperation, or %NULL to avoid user interaction.</doc>
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unmount_mountable_with_operation_finish">
+        <callback name="unmount_mountable_with_operation_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the operation finished successfully. %FALSE</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_mountable_with_operation">
+        <callback name="eject_mountable_with_operation">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">flags affecting the operation</doc>
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GMountOperation, or %NULL to avoid user interaction.</doc>
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_mountable_with_operation_finish">
+        <callback name="eject_mountable_with_operation_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @file was ejected successfully. %FALSE</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="poll_mountable">
+        <callback name="poll_mountable">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="3">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="3">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="poll_mountable_finish">
+        <callback name="poll_mountable_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the operation finished successfully. %FALSE</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="FileInfo"
+           c:symbol-prefix="file_info"
+           c:type="GFileInfo"
+           parent="GObject.Object"
+           glib:type-name="GFileInfo"
+           glib:get-type="g_file_info_get_type"
+           glib:type-struct="FileInfoClass">
+      <doc xml:whitespace="preserve">Stores information about a file system object referenced by a #GFile.</doc>
+      <constructor name="new" c:identifier="g_file_info_new">
+        <doc xml:whitespace="preserve">Creates a new file info structure.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileInfo.</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+      </constructor>
+      <method name="clear_status" c:identifier="g_file_info_clear_status">
+        <doc xml:whitespace="preserve">Clears the status information from @info.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="copy_into" c:identifier="g_file_info_copy_into">
+        <doc xml:whitespace="preserve">Copies all of the #GFileAttribute&lt;!-- --&gt;s from @src_info to @dest_info.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest_info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">destination to copy attributes to.</doc>
+            <type name="FileInfo" c:type="GFileInfo*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup" c:identifier="g_file_info_dup">
+        <doc xml:whitespace="preserve">Duplicates a file info structure.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a duplicate #GFileInfo of @other.</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+      </method>
+      <method name="get_attribute_as_string"
+              c:identifier="g_file_info_get_attribute_as_string">
+        <doc xml:whitespace="preserve">Gets the value of a attribute, formated as a string.
+This escapes things as needed to make the string valid
+utf8.
+When you're done with the string it must be freed with g_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a UTF-8 string associated with the given @attribute.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_boolean"
+              c:identifier="g_file_info_get_attribute_boolean">
+        <doc xml:whitespace="preserve">Gets the value of a boolean attribute. If the attribute does not
+contain a boolean value, %FALSE will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the boolean value contained within the attribute.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_byte_string"
+              c:identifier="g_file_info_get_attribute_byte_string">
+        <doc xml:whitespace="preserve">Gets the value of a byte string attribute. If the attribute does
+not contain a byte string, %NULL will be returned.
+%NULL otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the contents of the @attribute value as a byte string, or</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_data"
+              c:identifier="g_file_info_get_attribute_data">
+        <doc xml:whitespace="preserve">Gets the attribute type, value and status for an attribute key.
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @info has an attribute named @attribute,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="type"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the attribute type, or %NULL</doc>
+            <type name="FileAttributeType" c:type="GFileAttributeType*"/>
+          </parameter>
+          <parameter name="value_pp"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the attribute value, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer*"/>
+          </parameter>
+          <parameter name="status"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the attribute status, or %NULL</doc>
+            <type name="FileAttributeStatus" c:type="GFileAttributeStatus*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_int32"
+              c:identifier="g_file_info_get_attribute_int32">
+        <doc xml:whitespace="preserve">Gets a signed 32-bit integer contained within the attribute. If the
+attribute does not contain a signed 32-bit integer, or is invalid,
+0 will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a signed 32-bit integer from the attribute.</doc>
+          <type name="gint32" c:type="gint32"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_int64"
+              c:identifier="g_file_info_get_attribute_int64">
+        <doc xml:whitespace="preserve">Gets a signed 64-bit integer contained within the attribute. If the
+attribute does not contain an signed 64-bit integer, or is invalid,
+0 will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a signed 64-bit integer from the attribute.</doc>
+          <type name="gint64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_object"
+              c:identifier="g_file_info_get_attribute_object">
+        <doc xml:whitespace="preserve">Gets the value of a #GObject attribute. If the attribute does
+not contain a #GObject, %NULL will be returned.
+%NULL otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObject associated with the given @attribute, or</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_status"
+              c:identifier="g_file_info_get_attribute_status">
+        <return-value transfer-ownership="none">
+          <type name="FileAttributeStatus" c:type="GFileAttributeStatus"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_string"
+              c:identifier="g_file_info_get_attribute_string">
+        <doc xml:whitespace="preserve">Gets the value of a string attribute. If the attribute does
+not contain a string, %NULL will be returned.
+%NULL otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the contents of the @attribute value as a string, or</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_stringv"
+              c:identifier="g_file_info_get_attribute_stringv"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the value of a stringv attribute. If the attribute does
+not contain a stringv, %NULL will be returned.
+%NULL otherwise. Do not free.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the contents of the @attribute value as a stringv, or</doc>
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_type"
+              c:identifier="g_file_info_get_attribute_type">
+        <doc xml:whitespace="preserve">Gets the attribute type for an attribute key.
+%G_FILE_ATTRIBUTE_TYPE_INVALID if the key is not set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GFileAttributeType for the given @attribute, or</doc>
+          <type name="FileAttributeType" c:type="GFileAttributeType"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_uint32"
+              c:identifier="g_file_info_get_attribute_uint32">
+        <doc xml:whitespace="preserve">Gets an unsigned 32-bit integer contained within the attribute. If the
+attribute does not contain an unsigned 32-bit integer, or is invalid,
+0 will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an unsigned 32-bit integer from the attribute.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_uint64"
+              c:identifier="g_file_info_get_attribute_uint64">
+        <doc xml:whitespace="preserve">Gets a unsigned 64-bit integer contained within the attribute. If the
+attribute does not contain an unsigned 64-bit integer, or is invalid,
+0 will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a unsigned 64-bit integer from the attribute.</doc>
+          <type name="guint64" c:type="guint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_content_type"
+              c:identifier="g_file_info_get_content_type">
+        <doc xml:whitespace="preserve">Gets the file's content type.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the file's content type.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_display_name"
+              c:identifier="g_file_info_get_display_name">
+        <doc xml:whitespace="preserve">Gets a display name for a file.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the display name.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_edit_name" c:identifier="g_file_info_get_edit_name">
+        <doc xml:whitespace="preserve">Gets the edit name for a file.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the edit name.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_etag" c:identifier="g_file_info_get_etag">
+        <doc xml:whitespace="preserve">Gets the &lt;link linkend="gfile-etag"&gt;entity tag&lt;/link&gt; for a given
+#GFileInfo. See %G_FILE_ATTRIBUTE_ETAG_VALUE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the value of the "etag:value" attribute.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_file_type" c:identifier="g_file_info_get_file_type">
+        <doc xml:whitespace="preserve">Gets a file's type (whether it is a regular file, symlink, etc).
+This is different from the file's content type, see g_file_info_get_content_type().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GFileType for the given file.</doc>
+          <type name="FileType" c:type="GFileType"/>
+        </return-value>
+      </method>
+      <method name="get_icon" c:identifier="g_file_info_get_icon">
+        <doc xml:whitespace="preserve">Gets the icon for a file.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GIcon for the given @info.</doc>
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </method>
+      <method name="get_is_backup" c:identifier="g_file_info_get_is_backup">
+        <doc xml:whitespace="preserve">Checks if a file is a backup file.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if file is a backup file, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_is_hidden" c:identifier="g_file_info_get_is_hidden">
+        <doc xml:whitespace="preserve">Checks if a file is hidden.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the file is a hidden file, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_is_symlink" c:identifier="g_file_info_get_is_symlink">
+        <doc xml:whitespace="preserve">Checks if a file is a symlink.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the given @info is a symlink.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_modification_time"
+              c:identifier="g_file_info_get_modification_time">
+        <doc xml:whitespace="preserve">Gets the modification time of the current @info and sets it
+in @result.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GTimeVal.</doc>
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_name" c:identifier="g_file_info_get_name">
+        <doc xml:whitespace="preserve">Gets the name for a file.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the file name.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_size" c:identifier="g_file_info_get_size">
+        <doc xml:whitespace="preserve">Gets the file's size.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #goffset containing the file's size.</doc>
+          <type name="gint64" c:type="goffset"/>
+        </return-value>
+      </method>
+      <method name="get_sort_order" c:identifier="g_file_info_get_sort_order">
+        <doc xml:whitespace="preserve">Gets the value of the sort_order attribute from the #GFileInfo.
+See %G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #gint32 containing the value of the "standard::sort_order" attribute.</doc>
+          <type name="gint32" c:type="gint32"/>
+        </return-value>
+      </method>
+      <method name="get_symlink_target"
+              c:identifier="g_file_info_get_symlink_target">
+        <doc xml:whitespace="preserve">Gets the symlink target for a given #GFileInfo.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the symlink target.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="has_attribute" c:identifier="g_file_info_has_attribute">
+        <doc xml:whitespace="preserve">Checks if a file info structure has an attribute named @attribute.
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @Ginfo has an attribute named @attribute,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_namespace"
+              c:identifier="g_file_info_has_namespace"
+              version="2.22">
+        <doc xml:whitespace="preserve">Checks if a file info structure has an attribute in the
+specified @name_space.
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @Ginfo has an attribute in @name_space,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name_space" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute namespace.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_attributes"
+              c:identifier="g_file_info_list_attributes">
+        <doc xml:whitespace="preserve">Lists the file info structure's attributes.
+possible attribute types for the given @name_space, or
+%NULL on error.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a null-terminated array of strings of all of the</doc>
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="name_space" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key's namespace.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_attribute"
+              c:identifier="g_file_info_remove_attribute">
+        <doc xml:whitespace="preserve">Removes all cases of @attribute from @info if it exists.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute" c:identifier="g_file_info_set_attribute">
+        <doc xml:whitespace="preserve">Sets the @attribute to contain the given value, if possible.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GFileAttributeType</doc>
+            <type name="FileAttributeType" c:type="GFileAttributeType"/>
+          </parameter>
+          <parameter name="value_p" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer to the value</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_boolean"
+              c:identifier="g_file_info_set_attribute_boolean">
+        <doc xml:whitespace="preserve">Sets the @attribute to contain the given @attr_value,
+if possible.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="attr_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a boolean value.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_byte_string"
+              c:identifier="g_file_info_set_attribute_byte_string">
+        <doc xml:whitespace="preserve">Sets the @attribute to contain the given @attr_value,
+if possible.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="attr_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a byte string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_int32"
+              c:identifier="g_file_info_set_attribute_int32">
+        <doc xml:whitespace="preserve">Sets the @attribute to contain the given @attr_value,
+if possible.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="attr_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a signed 32-bit integer</doc>
+            <type name="gint32" c:type="gint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_int64"
+              c:identifier="g_file_info_set_attribute_int64">
+        <doc xml:whitespace="preserve">Sets the @attribute to contain the given @attr_value,
+if possible.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">attribute name to set.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="attr_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">int64 value to set attribute to.</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_mask"
+              c:identifier="g_file_info_set_attribute_mask">
+        <doc xml:whitespace="preserve">Sets @mask on @info to match specific attribute types.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mask" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GFileAttributeMatcher.</doc>
+            <type name="FileAttributeMatcher" c:type="GFileAttributeMatcher*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_object"
+              c:identifier="g_file_info_set_attribute_object">
+        <doc xml:whitespace="preserve">Sets the @attribute to contain the given @attr_value,
+if possible.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="attr_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject.</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_status"
+              c:identifier="g_file_info_set_attribute_status"
+              version="2.22">
+        <doc xml:whitespace="preserve">Sets the attribute status for an attribute key. This is only
+needed by external code that implement g_file_set_attributes_from_info()
+or similar functions.
+The attribute must exist in @info for this to work. Otherwise %FALSE
+is returned and @info is unchanged.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the status was changed, %FALSE if the key was not set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="status" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GFileAttributeStatus</doc>
+            <type name="FileAttributeStatus" c:type="GFileAttributeStatus"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_string"
+              c:identifier="g_file_info_set_attribute_string">
+        <doc xml:whitespace="preserve">Sets the @attribute to contain the given @attr_value,
+if possible.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="attr_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_stringv"
+              c:identifier="g_file_info_set_attribute_stringv">
+        <doc xml:whitespace="preserve">Sets the @attribute to contain the given @attr_value,
+if possible.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="attr_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a %NULL terminated string array</doc>
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_uint32"
+              c:identifier="g_file_info_set_attribute_uint32">
+        <doc xml:whitespace="preserve">Sets the @attribute to contain the given @attr_value,
+if possible.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="attr_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an unsigned 32-bit integer.</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_uint64"
+              c:identifier="g_file_info_set_attribute_uint64">
+        <doc xml:whitespace="preserve">Sets the @attribute to contain the given @attr_value,
+if possible.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute key.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="attr_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an unsigned 64-bit integer.</doc>
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_content_type"
+              c:identifier="g_file_info_set_content_type">
+        <doc xml:whitespace="preserve">Sets the content type attribute for a given #GFileInfo.
+See %G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="content_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a content type. See #GContentType.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_display_name"
+              c:identifier="g_file_info_set_display_name">
+        <doc xml:whitespace="preserve">Sets the display name for the current #GFileInfo.
+See %G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="display_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing a display name.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_edit_name" c:identifier="g_file_info_set_edit_name">
+        <doc xml:whitespace="preserve">Sets the edit name for the current file.
+See %G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="edit_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing an edit name.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_file_type" c:identifier="g_file_info_set_file_type">
+        <doc xml:whitespace="preserve">Sets the file type in a #GFileInfo to @type.
+See %G_FILE_ATTRIBUTE_STANDARD_TYPE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GFileType.</doc>
+            <type name="FileType" c:type="GFileType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon" c:identifier="g_file_info_set_icon">
+        <doc xml:whitespace="preserve">Sets the icon for a given #GFileInfo.
+See %G_FILE_ATTRIBUTE_STANDARD_ICON.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GIcon.</doc>
+            <type name="Icon" c:type="GIcon*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_is_hidden" c:identifier="g_file_info_set_is_hidden">
+        <doc xml:whitespace="preserve">Sets the "is_hidden" attribute in a #GFileInfo according to @is_symlink.
+See %G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_hidden" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gboolean.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_is_symlink" c:identifier="g_file_info_set_is_symlink">
+        <doc xml:whitespace="preserve">Sets the "is_symlink" attribute in a #GFileInfo according to @is_symlink.
+See %G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_symlink" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gboolean.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_modification_time"
+              c:identifier="g_file_info_set_modification_time">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mtime" transfer-ownership="none">
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_name" c:identifier="g_file_info_set_name">
+        <doc xml:whitespace="preserve">Sets the name attribute for the current #GFileInfo.
+See %G_FILE_ATTRIBUTE_STANDARD_NAME.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing a name.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_size" c:identifier="g_file_info_set_size">
+        <doc xml:whitespace="preserve">Sets the %G_FILE_ATTRIBUTE_STANDARD_SIZE attribute in the file info
+to the given size.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #goffset containing the file's size.</doc>
+            <type name="gint64" c:type="goffset"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sort_order" c:identifier="g_file_info_set_sort_order">
+        <doc xml:whitespace="preserve">Sets the sort order attribute in the file info structure. See
+%G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_order" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a sort order integer.</doc>
+            <type name="gint32" c:type="gint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_symlink_target"
+              c:identifier="g_file_info_set_symlink_target">
+        <doc xml:whitespace="preserve">Sets the %G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET attribute in the file info
+to the given symlink target.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="symlink_target" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a static string containing a path to a symlink target.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_attribute_mask"
+              c:identifier="g_file_info_unset_attribute_mask">
+        <doc xml:whitespace="preserve">Unsets a mask set by g_file_info_set_attribute_mask(), if one
+is set.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </class>
+    <record name="FileInfoClass"
+            c:type="GFileInfoClass"
+            disguised="1"
+            glib:is-gtype-struct-for="FileInfo">
+    </record>
+    <class name="FileInputStream"
+           c:symbol-prefix="file_input_stream"
+           c:type="GFileInputStream"
+           parent="InputStream"
+           glib:type-name="GFileInputStream"
+           glib:get-type="g_file_input_stream_get_type"
+           glib:type-struct="FileInputStreamClass">
+      <doc xml:whitespace="preserve">A subclass of GInputStream for opened files. This adds
+a few file-specific operations and seeking.
+#GFileInputStream implements #GSeekable.</doc>
+      <implements name="Seekable"/>
+      <virtual-method name="can_seek">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="query_info" invoker="query_info" throws="1">
+        <doc xml:whitespace="preserve">Queries a file input stream the given @attributes. This function blocks
+while querying the stream. For the asynchronous (non-blocking) version
+of this function, see g_file_input_stream_query_info_async(). While the
+stream is blocked, the stream will set the pending flag internally, and
+any other operations on the stream will fail with %G_IO_ERROR_PENDING.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileInfo, or %NULL on error.</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute query string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_info_async" invoker="query_info_async">
+        <doc xml:whitespace="preserve">Queries the stream information asynchronously.
+When the operation is finished @callback will be called.
+You can then call g_file_input_stream_query_info_finish()
+to get the result of the operation.
+For the synchronous version of this function,
+see g_file_input_stream_query_info().
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be set</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute query string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_info_finish"
+                      invoker="query_info_finish"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous info query operation.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GFileInfo.</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="seek" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="gint64" c:type="goffset"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GLib.SeekType" c:type="GSeekType"/>
+          </parameter>
+          <parameter name="cancellable" transfer-ownership="none">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="tell">
+        <return-value transfer-ownership="none">
+          <type name="gint64" c:type="goffset"/>
+        </return-value>
+      </virtual-method>
+      <method name="query_info"
+              c:identifier="g_file_input_stream_query_info"
+              throws="1">
+        <doc xml:whitespace="preserve">Queries a file input stream the given @attributes. This function blocks
+while querying the stream. For the asynchronous (non-blocking) version
+of this function, see g_file_input_stream_query_info_async(). While the
+stream is blocked, the stream will set the pending flag internally, and
+any other operations on the stream will fail with %G_IO_ERROR_PENDING.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileInfo, or %NULL on error.</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute query string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_info_async"
+              c:identifier="g_file_input_stream_query_info_async">
+        <doc xml:whitespace="preserve">Queries the stream information asynchronously.
+When the operation is finished @callback will be called.
+You can then call g_file_input_stream_query_info_finish()
+to get the result of the operation.
+For the synchronous version of this function,
+see g_file_input_stream_query_info().
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be set</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute query string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_info_finish"
+              c:identifier="g_file_input_stream_query_info_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous info query operation.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GFileInfo.</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="InputStream" c:type="GInputStream"/>
+      </field>
+      <field name="priv">
+        <type name="FileInputStreamPrivate" c:type="GFileInputStreamPrivate*"/>
+      </field>
+    </class>
+    <record name="FileInputStreamClass"
+            c:type="GFileInputStreamClass"
+            glib:is-gtype-struct-for="FileInputStream">
+      <field name="parent_class">
+        <type name="InputStreamClass" c:type="GInputStreamClass"/>
+      </field>
+      <field name="tell">
+        <callback name="tell">
+          <return-value transfer-ownership="none">
+            <type name="gint64" c:type="goffset"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="FileInputStream" c:type="GFileInputStream*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_seek">
+        <callback name="can_seek">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="FileInputStream" c:type="GFileInputStream*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="seek">
+        <callback name="seek" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="FileInputStream" c:type="GFileInputStream*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <type name="gint64" c:type="goffset"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <type name="GLib.SeekType" c:type="GSeekType"/>
+            </parameter>
+            <parameter name="cancellable" transfer-ownership="none">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_info">
+        <callback name="query_info" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFileInfo, or %NULL on error.</doc>
+            <type name="FileInfo" c:type="GFileInfo*"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="FileInputStream" c:type="GFileInputStream*"/>
+            </parameter>
+            <parameter name="attributes" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a file attribute query string.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_info_async">
+        <callback name="query_info_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="FileInputStream" c:type="GFileInputStream*"/>
+            </parameter>
+            <parameter name="attributes" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a file attribute query string.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_info_finish">
+        <callback name="query_info_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">#GFileInfo.</doc>
+            <type name="FileInfo" c:type="GFileInfo*"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="FileInputStream" c:type="GFileInputStream*"/>
+            </parameter>
+            <parameter name="res" transfer-ownership="none">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="FileInputStreamPrivate"
+            c:type="GFileInputStreamPrivate"
+            disguised="1">
+    </record>
+    <class name="FileMonitor"
+           c:symbol-prefix="file_monitor"
+           c:type="GFileMonitor"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GFileMonitor"
+           glib:get-type="g_file_monitor_get_type"
+           glib:type-struct="FileMonitorClass">
+      <doc xml:whitespace="preserve">Watches for changes to a file.</doc>
+      <virtual-method name="cancel" invoker="cancel">
+        <doc xml:whitespace="preserve">Cancels a file monitor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if monitor was cancelled.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <method name="cancel" c:identifier="g_file_monitor_cancel">
+        <doc xml:whitespace="preserve">Cancels a file monitor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if monitor was cancelled.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="emit_event" c:identifier="g_file_monitor_emit_event">
+        <doc xml:whitespace="preserve">Emits the #GFileMonitor::changed signal if a change
+has taken place. Should be called from file monitor
+implementations only.
+The signal will be emitted from an idle handler (in the &lt;link
+linkend="g-main-context-push-thread-default"&gt;thread-default main
+context&lt;/link&gt;).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GFile.</doc>
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+          <parameter name="other_file" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GFile.</doc>
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+          <parameter name="event_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GFileMonitorEvent flags.</doc>
+            <type name="FileMonitorEvent" c:type="GFileMonitorEvent"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_cancelled" c:identifier="g_file_monitor_is_cancelled">
+        <doc xml:whitespace="preserve">Returns whether the monitor is canceled.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if monitor is canceled. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_rate_limit"
+              c:identifier="g_file_monitor_set_rate_limit">
+        <doc xml:whitespace="preserve">Sets the rate limit to which the @monitor will report
+consecutive change events to the same file.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="limit_msecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a integer with the limit in milliseconds to poll for changes.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="cancelled" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="rate-limit" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="FileMonitorPrivate" c:type="GFileMonitorPrivate*"/>
+      </field>
+      <glib:signal name="changed">
+        <doc xml:whitespace="preserve">Emitted when a file has been changed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GFile.</doc>
+            <type name="File"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GFile.</doc>
+            <type name="File"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GFileMonitorEvent.</doc>
+            <type name="FileMonitorEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="FileMonitorClass"
+            c:type="GFileMonitorClass"
+            glib:is-gtype-struct-for="FileMonitor">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="changed">
+        <callback name="changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="monitor" transfer-ownership="none">
+              <type name="FileMonitor" c:type="GFileMonitor*"/>
+            </parameter>
+            <parameter name="file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="other_file" transfer-ownership="none">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="event_type" transfer-ownership="none">
+              <type name="FileMonitorEvent" c:type="GFileMonitorEvent"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cancel">
+        <callback name="cancel">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if monitor was cancelled.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="monitor" transfer-ownership="none">
+              <type name="FileMonitor" c:type="GFileMonitor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="FileMonitorEvent"
+                 glib:type-name="GFileMonitorEvent"
+                 glib:get-type="g_file_monitor_event_get_type"
+                 c:type="GFileMonitorEvent">
+      <doc xml:whitespace="preserve">Specifies what type of event a monitor event is.</doc>
+      <member name="changed"
+              value="0"
+              c:identifier="G_FILE_MONITOR_EVENT_CHANGED"
+              glib:nick="changed"/>
+      <member name="changes_done_hint"
+              value="1"
+              c:identifier="G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT"
+              glib:nick="changes-done-hint"/>
+      <member name="deleted"
+              value="2"
+              c:identifier="G_FILE_MONITOR_EVENT_DELETED"
+              glib:nick="deleted"/>
+      <member name="created"
+              value="3"
+              c:identifier="G_FILE_MONITOR_EVENT_CREATED"
+              glib:nick="created"/>
+      <member name="attribute_changed"
+              value="4"
+              c:identifier="G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED"
+              glib:nick="attribute-changed"/>
+      <member name="pre_unmount"
+              value="5"
+              c:identifier="G_FILE_MONITOR_EVENT_PRE_UNMOUNT"
+              glib:nick="pre-unmount"/>
+      <member name="unmounted"
+              value="6"
+              c:identifier="G_FILE_MONITOR_EVENT_UNMOUNTED"
+              glib:nick="unmounted"/>
+      <member name="moved"
+              value="7"
+              c:identifier="G_FILE_MONITOR_EVENT_MOVED"
+              glib:nick="moved"/>
+    </enumeration>
+    <bitfield name="FileMonitorFlags"
+              glib:type-name="GFileMonitorFlags"
+              glib:get-type="g_file_monitor_flags_get_type"
+              c:type="GFileMonitorFlags">
+      <doc xml:whitespace="preserve">Flags used to set what a #GFileMonitor will watch for.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="G_FILE_MONITOR_NONE"
+              glib:nick="none"/>
+      <member name="watch_mounts"
+              value="1"
+              c:identifier="G_FILE_MONITOR_WATCH_MOUNTS"
+              glib:nick="watch-mounts"/>
+      <member name="send_moved"
+              value="2"
+              c:identifier="G_FILE_MONITOR_SEND_MOVED"
+              glib:nick="send-moved"/>
+    </bitfield>
+    <record name="FileMonitorPrivate"
+            c:type="GFileMonitorPrivate"
+            disguised="1">
+    </record>
+    <class name="FileOutputStream"
+           c:symbol-prefix="file_output_stream"
+           c:type="GFileOutputStream"
+           parent="OutputStream"
+           glib:type-name="GFileOutputStream"
+           glib:get-type="g_file_output_stream_get_type"
+           glib:type-struct="FileOutputStreamClass">
+      <doc xml:whitespace="preserve">A subclass of GOutputStream for opened files. This adds
+a few file-specific operations and seeking and truncating.
+#GFileOutputStream implements GSeekable.</doc>
+      <implements name="Seekable"/>
+      <virtual-method name="can_seek">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="can_truncate">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_etag" invoker="get_etag">
+        <doc xml:whitespace="preserve">Gets the entity tag for the file when it has been written.
+This must be called after the stream has been written
+and closed, as the etag can change while writing.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the entity tag for the stream.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="query_info" invoker="query_info" throws="1">
+        <doc xml:whitespace="preserve">Queries a file output stream for the given @attributes.
+This function blocks while querying the stream. For the asynchronous
+version of this function, see g_file_output_stream_query_info_async().
+While the stream is blocked, the stream will set the pending flag
+internally, and any other operations on the stream will fail with
+%G_IO_ERROR_PENDING.
+Can fail if the stream was already closed (with @error being set to
+%G_IO_ERROR_CLOSED), the stream has pending operations (with @error being
+set to %G_IO_ERROR_PENDING), or if querying info is not supported for
+the stream's interface (with @error being set to %G_IO_ERROR_NOT_SUPPORTED). In
+all cases of failure, %NULL will be returned.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be set, and %NULL will
+be returned.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileInfo for the @stream, or %NULL on error.</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute query string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_info_async" invoker="query_info_async">
+        <doc xml:whitespace="preserve">Asynchronously queries the @stream for a #GFileInfo. When completed,
+finish the operation with g_file_output_stream_query_info_finish().
+For the synchronous version of this function, see
+g_file_output_stream_query_info().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute query string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="gio-GIOScheduler"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_info_finish"
+                      invoker="query_info_finish"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finalizes the asynchronous query started
+by g_file_output_stream_query_info_async().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GFileInfo for the finished query.</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="seek" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="gint64" c:type="goffset"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GLib.SeekType" c:type="GSeekType"/>
+          </parameter>
+          <parameter name="cancellable" transfer-ownership="none">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="tell">
+        <return-value transfer-ownership="none">
+          <type name="gint64" c:type="goffset"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="truncate_fn" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="gint64" c:type="goffset"/>
+          </parameter>
+          <parameter name="cancellable" transfer-ownership="none">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_etag" c:identifier="g_file_output_stream_get_etag">
+        <doc xml:whitespace="preserve">Gets the entity tag for the file when it has been written.
+This must be called after the stream has been written
+and closed, as the etag can change while writing.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the entity tag for the stream.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="query_info"
+              c:identifier="g_file_output_stream_query_info"
+              throws="1">
+        <doc xml:whitespace="preserve">Queries a file output stream for the given @attributes.
+This function blocks while querying the stream. For the asynchronous
+version of this function, see g_file_output_stream_query_info_async().
+While the stream is blocked, the stream will set the pending flag
+internally, and any other operations on the stream will fail with
+%G_IO_ERROR_PENDING.
+Can fail if the stream was already closed (with @error being set to
+%G_IO_ERROR_CLOSED), the stream has pending operations (with @error being
+set to %G_IO_ERROR_PENDING), or if querying info is not supported for
+the stream's interface (with @error being set to %G_IO_ERROR_NOT_SUPPORTED). In
+all cases of failure, %NULL will be returned.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be set, and %NULL will
+be returned.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFileInfo for the @stream, or %NULL on error.</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute query string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_info_async"
+              c:identifier="g_file_output_stream_query_info_async">
+        <doc xml:whitespace="preserve">Asynchronously queries the @stream for a #GFileInfo. When completed,
+finish the operation with g_file_output_stream_query_info_finish().
+For the synchronous version of this function, see
+g_file_output_stream_query_info().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file attribute query string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="gio-GIOScheduler"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_info_finish"
+              c:identifier="g_file_output_stream_query_info_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finalizes the asynchronous query started
+by g_file_output_stream_query_info_async().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GFileInfo for the finished query.</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="OutputStream" c:type="GOutputStream"/>
+      </field>
+      <field name="priv">
+        <type name="FileOutputStreamPrivate"
+              c:type="GFileOutputStreamPrivate*"/>
+      </field>
+    </class>
+    <record name="FileOutputStreamClass"
+            c:type="GFileOutputStreamClass"
+            glib:is-gtype-struct-for="FileOutputStream">
+      <field name="parent_class">
+        <type name="OutputStreamClass" c:type="GOutputStreamClass"/>
+      </field>
+      <field name="tell">
+        <callback name="tell">
+          <return-value transfer-ownership="none">
+            <type name="gint64" c:type="goffset"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_seek">
+        <callback name="can_seek">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="seek">
+        <callback name="seek" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <type name="gint64" c:type="goffset"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <type name="GLib.SeekType" c:type="GSeekType"/>
+            </parameter>
+            <parameter name="cancellable" transfer-ownership="none">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_truncate">
+        <callback name="can_truncate">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="truncate_fn">
+        <callback name="truncate_fn" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <type name="gint64" c:type="goffset"/>
+            </parameter>
+            <parameter name="cancellable" transfer-ownership="none">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_info">
+        <callback name="query_info" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFileInfo for the @stream, or %NULL on error.</doc>
+            <type name="FileInfo" c:type="GFileInfo*"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+            </parameter>
+            <parameter name="attributes" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a file attribute query string.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_info_async">
+        <callback name="query_info_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+            </parameter>
+            <parameter name="attributes" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a file attribute query string.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the &lt;link linkend="gio-GIOScheduler"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_info_finish">
+        <callback name="query_info_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">A #GFileInfo for the finished query.</doc>
+            <type name="FileInfo" c:type="GFileInfo*"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+            </parameter>
+            <parameter name="res" transfer-ownership="none">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_etag">
+        <callback name="get_etag">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the entity tag for the stream.</doc>
+            <type name="utf8" c:type="char*"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="FileOutputStreamPrivate"
+            c:type="GFileOutputStreamPrivate"
+            disguised="1">
+    </record>
+    <callback name="FileProgressCallback" c:type="GFileProgressCallback">
+      <doc xml:whitespace="preserve">When doing file operations that may take a while, such as moving
+a file or copying a file, a progress callback is used to pass how
+far along that operation is to the application.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="current_num_bytes" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current number of bytes in the operation.</doc>
+          <type name="gint64" c:type="goffset"/>
+        </parameter>
+        <parameter name="total_num_bytes" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the total number of bytes in the operation.</doc>
+          <type name="gint64" c:type="goffset"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">user data passed to the callback.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="FileQueryInfoFlags"
+              glib:type-name="GFileQueryInfoFlags"
+              glib:get-type="g_file_query_info_flags_get_type"
+              c:type="GFileQueryInfoFlags">
+      <doc xml:whitespace="preserve">Flags used when querying a #GFileInfo.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="G_FILE_QUERY_INFO_NONE"
+              glib:nick="none"/>
+      <member name="nofollow_symlinks"
+              value="1"
+              c:identifier="G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS"
+              glib:nick="nofollow-symlinks"/>
+    </bitfield>
+    <callback name="FileReadMoreCallback" c:type="GFileReadMoreCallback">
+      <doc xml:whitespace="preserve">When loading the partial contents of a file with g_file_load_partial_contents_async(),
+it may become necessary to determine if any more data from the file should be loaded.
+A #GFileReadMoreCallback function facilitates this by returning %TRUE if more data
+should be read, or %FALSE otherwise.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if more data should be read back. %FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="file_contents" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the data as currently read.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="file_size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the size of the data currently read.</doc>
+          <type name="gint64" c:type="goffset"/>
+        </parameter>
+        <parameter name="callback_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data passed to the callback.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="FileType"
+                 glib:type-name="GFileType"
+                 glib:get-type="g_file_type_get_type"
+                 c:type="GFileType">
+      <doc xml:whitespace="preserve">Indicates the file's on-disk type.</doc>
+      <member name="unknown"
+              value="0"
+              c:identifier="G_FILE_TYPE_UNKNOWN"
+              glib:nick="unknown"/>
+      <member name="regular"
+              value="1"
+              c:identifier="G_FILE_TYPE_REGULAR"
+              glib:nick="regular"/>
+      <member name="directory"
+              value="2"
+              c:identifier="G_FILE_TYPE_DIRECTORY"
+              glib:nick="directory"/>
+      <member name="symbolic_link"
+              value="3"
+              c:identifier="G_FILE_TYPE_SYMBOLIC_LINK"
+              glib:nick="symbolic-link"/>
+      <member name="special"
+              value="4"
+              c:identifier="G_FILE_TYPE_SPECIAL"
+              glib:nick="special"/>
+      <member name="shortcut"
+              value="5"
+              c:identifier="G_FILE_TYPE_SHORTCUT"
+              glib:nick="shortcut"/>
+      <member name="mountable"
+              value="6"
+              c:identifier="G_FILE_TYPE_MOUNTABLE"
+              glib:nick="mountable"/>
+    </enumeration>
+    <class name="FilenameCompleter"
+           c:symbol-prefix="filename_completer"
+           c:type="GFilenameCompleter"
+           parent="GObject.Object"
+           glib:type-name="GFilenameCompleter"
+           glib:get-type="g_filename_completer_get_type"
+           glib:type-struct="FilenameCompleterClass">
+      <doc xml:whitespace="preserve">Completes filenames based on files that exist within the file system.</doc>
+      <constructor name="new" c:identifier="g_filename_completer_new">
+        <doc xml:whitespace="preserve">Creates a new filename completer.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFilenameCompleter.</doc>
+          <type name="FilenameCompleter" c:type="GFilenameCompleter*"/>
+        </return-value>
+      </constructor>
+      <method name="get_completion_suffix"
+              c:identifier="g_filename_completer_get_completion_suffix">
+        <doc xml:whitespace="preserve">Obtains a completion for @initial_text from @completer.
+This string is not owned by GIO, so remember to g_free() it
+when finished.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a completed string, or %NULL if no completion exists.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="initial_text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">text to be completed.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_completions"
+              c:identifier="g_filename_completer_get_completions">
+        <doc xml:whitespace="preserve">Gets an array of completion strings for a given initial text.
+This array must be freed by g_strfreev() when finished.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">array of strings with possible completions for @initial_text.</doc>
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="initial_text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">text to be completed.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_dirs_only"
+              c:identifier="g_filename_completer_set_dirs_only">
+        <doc xml:whitespace="preserve">If @dirs_only is %TRUE, @completer will only
+complete directory names, and not file names.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dirs_only" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gboolean.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="got-completion-data">
+        <doc xml:whitespace="preserve">Emitted when the file name completion information comes available.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="FilenameCompleterClass"
+            c:type="GFilenameCompleterClass"
+            glib:is-gtype-struct-for="FilenameCompleter">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="got_completion_data">
+        <callback name="got_completion_data">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="filename_completer" transfer-ownership="none">
+              <type name="FilenameCompleter" c:type="GFilenameCompleter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="FilesystemPreviewType"
+                 glib:type-name="GFilesystemPreviewType"
+                 glib:get-type="g_filesystem_preview_type_get_type"
+                 c:type="GFilesystemPreviewType">
+      <doc xml:whitespace="preserve">Indicates a hint from the file system whether files should be
+previewed in a file manager. Returned as the value of the key
+#G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW.</doc>
+      <member name="if_always"
+              value="0"
+              c:identifier="G_FILESYSTEM_PREVIEW_TYPE_IF_ALWAYS"
+              glib:nick="if-always"/>
+      <member name="if_local"
+              value="1"
+              c:identifier="G_FILESYSTEM_PREVIEW_TYPE_IF_LOCAL"
+              glib:nick="if-local"/>
+      <member name="never"
+              value="2"
+              c:identifier="G_FILESYSTEM_PREVIEW_TYPE_NEVER"
+              glib:nick="never"/>
+    </enumeration>
+    <class name="FilterInputStream"
+           c:symbol-prefix="filter_input_stream"
+           c:type="GFilterInputStream"
+           parent="InputStream"
+           abstract="1"
+           glib:type-name="GFilterInputStream"
+           glib:get-type="g_filter_input_stream_get_type"
+           glib:type-struct="FilterInputStreamClass">
+      <doc xml:whitespace="preserve">A base class for all input streams that work on an underlying stream.</doc>
+      <method name="get_base_stream"
+              c:identifier="g_filter_input_stream_get_base_stream">
+        <doc xml:whitespace="preserve">Gets the base stream for the filter stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GInputStream.</doc>
+          <type name="InputStream" c:type="GInputStream*"/>
+        </return-value>
+      </method>
+      <method name="get_close_base_stream"
+              c:identifier="g_filter_input_stream_get_close_base_stream">
+        <doc xml:whitespace="preserve">Returns whether the base stream will be closed when @stream is
+closed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the base stream will be closed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_close_base_stream"
+              c:identifier="g_filter_input_stream_set_close_base_stream">
+        <doc xml:whitespace="preserve">Sets whether the base stream will be closed when @stream is closed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="close_base" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to close the base stream.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="base-stream"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="InputStream"/>
+      </property>
+      <property name="close-base-stream"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="InputStream" c:type="GInputStream"/>
+      </field>
+      <field name="base_stream">
+        <type name="InputStream" c:type="GInputStream*"/>
+      </field>
+    </class>
+    <record name="FilterInputStreamClass"
+            c:type="GFilterInputStreamClass"
+            glib:is-gtype-struct-for="FilterInputStream">
+      <field name="parent_class">
+        <type name="InputStreamClass" c:type="GInputStreamClass"/>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="FilterOutputStream"
+           c:symbol-prefix="filter_output_stream"
+           c:type="GFilterOutputStream"
+           parent="OutputStream"
+           abstract="1"
+           glib:type-name="GFilterOutputStream"
+           glib:get-type="g_filter_output_stream_get_type"
+           glib:type-struct="FilterOutputStreamClass">
+      <doc xml:whitespace="preserve">A base class for all output streams that work on an underlying stream.</doc>
+      <method name="get_base_stream"
+              c:identifier="g_filter_output_stream_get_base_stream">
+        <doc xml:whitespace="preserve">Gets the base stream for the filter stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GOutputStream.</doc>
+          <type name="OutputStream" c:type="GOutputStream*"/>
+        </return-value>
+      </method>
+      <method name="get_close_base_stream"
+              c:identifier="g_filter_output_stream_get_close_base_stream">
+        <doc xml:whitespace="preserve">Returns whether the base stream will be closed when @stream is
+closed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the base stream will be closed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_close_base_stream"
+              c:identifier="g_filter_output_stream_set_close_base_stream">
+        <doc xml:whitespace="preserve">Sets whether the base stream will be closed when @stream is closed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="close_base" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to close the base stream.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="base-stream"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="OutputStream"/>
+      </property>
+      <property name="close-base-stream"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="OutputStream" c:type="GOutputStream"/>
+      </field>
+      <field name="base_stream">
+        <type name="OutputStream" c:type="GOutputStream*"/>
+      </field>
+    </class>
+    <record name="FilterOutputStreamClass"
+            c:type="GFilterOutputStreamClass"
+            glib:is-gtype-struct-for="FilterOutputStream">
+      <field name="parent_class">
+        <type name="OutputStreamClass" c:type="GOutputStreamClass"/>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="IOErrorEnum"
+                 glib:type-name="GIOErrorEnum"
+                 glib:get-type="g_io_error_enum_get_type"
+                 c:type="GIOErrorEnum"
+                 glib:error-quark="g_io_error_quark">
+      <doc xml:whitespace="preserve">Error codes returned by GIO functions.</doc>
+      <member name="failed"
+              value="0"
+              c:identifier="G_IO_ERROR_FAILED"
+              glib:nick="failed"/>
+      <member name="not_found"
+              value="1"
+              c:identifier="G_IO_ERROR_NOT_FOUND"
+              glib:nick="not-found"/>
+      <member name="exists"
+              value="2"
+              c:identifier="G_IO_ERROR_EXISTS"
+              glib:nick="exists"/>
+      <member name="is_directory"
+              value="3"
+              c:identifier="G_IO_ERROR_IS_DIRECTORY"
+              glib:nick="is-directory"/>
+      <member name="not_directory"
+              value="4"
+              c:identifier="G_IO_ERROR_NOT_DIRECTORY"
+              glib:nick="not-directory"/>
+      <member name="not_empty"
+              value="5"
+              c:identifier="G_IO_ERROR_NOT_EMPTY"
+              glib:nick="not-empty"/>
+      <member name="not_regular_file"
+              value="6"
+              c:identifier="G_IO_ERROR_NOT_REGULAR_FILE"
+              glib:nick="not-regular-file"/>
+      <member name="not_symbolic_link"
+              value="7"
+              c:identifier="G_IO_ERROR_NOT_SYMBOLIC_LINK"
+              glib:nick="not-symbolic-link"/>
+      <member name="not_mountable_file"
+              value="8"
+              c:identifier="G_IO_ERROR_NOT_MOUNTABLE_FILE"
+              glib:nick="not-mountable-file"/>
+      <member name="filename_too_long"
+              value="9"
+              c:identifier="G_IO_ERROR_FILENAME_TOO_LONG"
+              glib:nick="filename-too-long"/>
+      <member name="invalid_filename"
+              value="10"
+              c:identifier="G_IO_ERROR_INVALID_FILENAME"
+              glib:nick="invalid-filename"/>
+      <member name="too_many_links"
+              value="11"
+              c:identifier="G_IO_ERROR_TOO_MANY_LINKS"
+              glib:nick="too-many-links"/>
+      <member name="no_space"
+              value="12"
+              c:identifier="G_IO_ERROR_NO_SPACE"
+              glib:nick="no-space"/>
+      <member name="invalid_argument"
+              value="13"
+              c:identifier="G_IO_ERROR_INVALID_ARGUMENT"
+              glib:nick="invalid-argument"/>
+      <member name="permission_denied"
+              value="14"
+              c:identifier="G_IO_ERROR_PERMISSION_DENIED"
+              glib:nick="permission-denied"/>
+      <member name="not_supported"
+              value="15"
+              c:identifier="G_IO_ERROR_NOT_SUPPORTED"
+              glib:nick="not-supported"/>
+      <member name="not_mounted"
+              value="16"
+              c:identifier="G_IO_ERROR_NOT_MOUNTED"
+              glib:nick="not-mounted"/>
+      <member name="already_mounted"
+              value="17"
+              c:identifier="G_IO_ERROR_ALREADY_MOUNTED"
+              glib:nick="already-mounted"/>
+      <member name="closed"
+              value="18"
+              c:identifier="G_IO_ERROR_CLOSED"
+              glib:nick="closed"/>
+      <member name="cancelled"
+              value="19"
+              c:identifier="G_IO_ERROR_CANCELLED"
+              glib:nick="cancelled"/>
+      <member name="pending"
+              value="20"
+              c:identifier="G_IO_ERROR_PENDING"
+              glib:nick="pending"/>
+      <member name="read_only"
+              value="21"
+              c:identifier="G_IO_ERROR_READ_ONLY"
+              glib:nick="read-only"/>
+      <member name="cant_create_backup"
+              value="22"
+              c:identifier="G_IO_ERROR_CANT_CREATE_BACKUP"
+              glib:nick="cant-create-backup"/>
+      <member name="wrong_etag"
+              value="23"
+              c:identifier="G_IO_ERROR_WRONG_ETAG"
+              glib:nick="wrong-etag"/>
+      <member name="timed_out"
+              value="24"
+              c:identifier="G_IO_ERROR_TIMED_OUT"
+              glib:nick="timed-out"/>
+      <member name="would_recurse"
+              value="25"
+              c:identifier="G_IO_ERROR_WOULD_RECURSE"
+              glib:nick="would-recurse"/>
+      <member name="busy"
+              value="26"
+              c:identifier="G_IO_ERROR_BUSY"
+              glib:nick="busy"/>
+      <member name="would_block"
+              value="27"
+              c:identifier="G_IO_ERROR_WOULD_BLOCK"
+              glib:nick="would-block"/>
+      <member name="host_not_found"
+              value="28"
+              c:identifier="G_IO_ERROR_HOST_NOT_FOUND"
+              glib:nick="host-not-found"/>
+      <member name="would_merge"
+              value="29"
+              c:identifier="G_IO_ERROR_WOULD_MERGE"
+              glib:nick="would-merge"/>
+      <member name="failed_handled"
+              value="30"
+              c:identifier="G_IO_ERROR_FAILED_HANDLED"
+              glib:nick="failed-handled"/>
+      <member name="too_many_open_files"
+              value="31"
+              c:identifier="G_IO_ERROR_TOO_MANY_OPEN_FILES"
+              glib:nick="too-many-open-files"/>
+      <member name="not_initialized"
+              value="32"
+              c:identifier="G_IO_ERROR_NOT_INITIALIZED"
+              glib:nick="not-initialized"/>
+      <member name="address_in_use"
+              value="33"
+              c:identifier="G_IO_ERROR_ADDRESS_IN_USE"
+              glib:nick="address-in-use"/>
+      <member name="partial_input"
+              value="34"
+              c:identifier="G_IO_ERROR_PARTIAL_INPUT"
+              glib:nick="partial-input"/>
+      <member name="invalid_data"
+              value="35"
+              c:identifier="G_IO_ERROR_INVALID_DATA"
+              glib:nick="invalid-data"/>
+      <member name="dbus_error"
+              value="36"
+              c:identifier="G_IO_ERROR_DBUS_ERROR"
+              glib:nick="dbus-error"/>
+      <member name="host_unreachable"
+              value="37"
+              c:identifier="G_IO_ERROR_HOST_UNREACHABLE"
+              glib:nick="host-unreachable"/>
+      <member name="network_unreachable"
+              value="38"
+              c:identifier="G_IO_ERROR_NETWORK_UNREACHABLE"
+              glib:nick="network-unreachable"/>
+      <member name="connection_refused"
+              value="39"
+              c:identifier="G_IO_ERROR_CONNECTION_REFUSED"
+              glib:nick="connection-refused"/>
+      <member name="proxy_failed"
+              value="40"
+              c:identifier="G_IO_ERROR_PROXY_FAILED"
+              glib:nick="proxy-failed"/>
+      <member name="proxy_auth_failed"
+              value="41"
+              c:identifier="G_IO_ERROR_PROXY_AUTH_FAILED"
+              glib:nick="proxy-auth-failed"/>
+      <member name="proxy_need_auth"
+              value="42"
+              c:identifier="G_IO_ERROR_PROXY_NEED_AUTH"
+              glib:nick="proxy-need-auth"/>
+      <member name="proxy_not_allowed"
+              value="43"
+              c:identifier="G_IO_ERROR_PROXY_NOT_ALLOWED"
+              glib:nick="proxy-not-allowed"/>
+    </enumeration>
+    <record name="IOExtension" c:type="GIOExtension" disguised="1">
+      <method name="get_name" c:identifier="g_io_extension_get_name">
+        <doc xml:whitespace="preserve">Gets the name under which @extension was registered.
+Note that the same type may be registered as extension
+for multiple extension points, under different names.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of @extension.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_priority" c:identifier="g_io_extension_get_priority">
+        <doc xml:whitespace="preserve">Gets the priority with which @extension was registered.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the priority of @extension</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="ref_class"
+              c:identifier="g_io_extension_ref_class"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets a reference to the class for the type that is
+associated with @extension.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GTypeClass for the type of @extension</doc>
+          <type name="GObject.TypeClass" c:type="GTypeClass*"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="IOExtensionPoint" c:type="GIOExtensionPoint" disguised="1">
+      <method name="get_extension_by_name"
+              c:identifier="g_io_extension_point_get_extension_by_name">
+        <doc xml:whitespace="preserve">Finds a #GIOExtension for an extension point by name.
+given name, or %NULL if there is no extension with that name</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GIOExtension for @extension_point that has the</doc>
+          <type name="IOExtension" c:type="GIOExtension*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the extension to get</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_extensions"
+              c:identifier="g_io_extension_point_get_extensions">
+        <doc xml:whitespace="preserve">Gets a list of all extensions that implement this extension point.
+The list is sorted by priority, beginning with the highest priority.
+#GIOExtension&lt;!-- --&gt;s. The list is owned by GIO and should not be
+modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GList of</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="IOExtension"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_required_type"
+              c:identifier="g_io_extension_point_get_required_type">
+        <doc xml:whitespace="preserve">Gets the required type for @extension_point.
+or #G_TYPE_INVALID if the extension point has no required type</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType that all implementations must have,</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="set_required_type"
+              c:identifier="g_io_extension_point_set_required_type">
+        <doc xml:whitespace="preserve">Sets the required type for @extension_point to @type.
+All implementations must henceforth have this type.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GType to require</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <class name="IOModule"
+           c:symbol-prefix="io_module"
+           c:type="GIOModule"
+           parent="GObject.TypeModule"
+           glib:type-name="GIOModule"
+           glib:get-type="g_io_module_get_type"
+           glib:type-struct="IOModuleClass">
+      <doc xml:whitespace="preserve">Opaque module base class for extending GIO.</doc>
+      <implements name="GObject.TypePlugin"/>
+      <constructor name="new" c:identifier="g_io_module_new">
+        <doc xml:whitespace="preserve">Creates a new GIOModule that will load the specific
+shared library when in use.
+or %NULL on error.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GIOModule from given @filename,</doc>
+          <type name="IOModule" c:type="GIOModule*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">filename of the shared library module.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="query"
+                c:identifier="g_io_module_query"
+                version="2.24"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Optional API for GIO modules to implement.
+Should return a list of all the extension points that may be
+implemented in this module.
+This method will not be called in normal use, however it may be
+called when probing existing modules and recording which extension
+points that this modle is used for. This means we won't have to
+load and initialze this module unless its needed.
+If this function is not implemented by the module the module will
+always be loaded, initialized and then unloaded on application startup
+so that it can register its extension points during init.
+Note that a module need not actually implement all the extension points
+that g_io_module_query returns, since the exact list of extension may
+depend on runtime issues. However all extension points actually implemented
+must be returned by g_io_module_query() (if defined).
+When installing a module that implements g_io_module_query you must
+run gio-querymodules in order to build the cache files required for
+lazy loading.
+extension points of the module. The array must be suitable for
+freeing with g_strfreev().</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">A %NULL-terminated array of strings, listing the supported</doc>
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </function>
+      <method name="load" c:identifier="g_io_module_load">
+        <doc xml:whitespace="preserve">Required API for GIO modules to implement.
+This function is ran after the module has been loaded into GIO,
+to initialize the module.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unload" c:identifier="g_io_module_unload">
+        <doc xml:whitespace="preserve">Required API for GIO modules to implement.
+This function is ran when the module is being unloaded from GIO,
+to finalize the module.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </class>
+    <record name="IOModuleClass"
+            c:type="GIOModuleClass"
+            disguised="1"
+            glib:is-gtype-struct-for="IOModule">
+    </record>
+    <record name="IOSchedulerJob" c:type="GIOSchedulerJob" disguised="1">
+      <doc xml:whitespace="preserve">Opaque class for definining and scheduling IO jobs.</doc>
+      <method name="send_to_mainloop"
+              c:identifier="g_io_scheduler_job_send_to_mainloop">
+        <doc xml:whitespace="preserve">Used from an I/O job to send a callback to be run in the thread
+that the job was started from, waiting for the result (and thus
+blocking the I/O job).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The return value of @func</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">a #GSourceFunc callback that will be called in the original thread</doc>
+            <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to @func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">a #GDestroyNotify for @user_data, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_to_mainloop_async"
+              c:identifier="g_io_scheduler_job_send_to_mainloop_async">
+        <doc xml:whitespace="preserve">Used from an I/O job to send a callback to be run asynchronously in
+the thread that the job was started from. The callback will be run
+when the main loop is available, but at that time the I/O job might
+have finished. The return value from the callback is ignored.
+Note that if you are passing the @user_data from g_io_scheduler_push_job()
+on to this function you have to ensure that it is not freed before
+g_io_scheduler_push_job() or by using refcounting for @user_data.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">a #GSourceFunc callback that will be called in the original thread</doc>
+            <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to @func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">a #GDestroyNotify for @user_data, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="IOSchedulerJobFunc" c:type="GIOSchedulerJobFunc">
+      <doc xml:whitespace="preserve">I/O Job function.
+Note that depending on whether threads are available, the
+#GIOScheduler may run jobs in separate threads or in an idle
+in the mainloop.
+Long-running jobs should periodically check the @cancellable
+to see if they have been cancelled.
+complete the job, %FALSE if the job is complete (or cancelled)</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if this function should be called again to</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="job" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GIOSchedulerJob.</doc>
+          <type name="IOSchedulerJob" c:type="GIOSchedulerJob*"/>
+        </parameter>
+        <parameter name="cancellable" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+          <type name="Cancellable" c:type="GCancellable*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="IOStream"
+           c:symbol-prefix="io_stream"
+           c:type="GIOStream"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GIOStream"
+           glib:get-type="g_io_stream_get_type"
+           glib:type-struct="IOStreamClass">
+      <doc xml:whitespace="preserve">Base class for read-write streams.</doc>
+      <virtual-method name="close_async" invoker="close_async" version="2.22">
+        <doc xml:whitespace="preserve">Requests an asynchronous close of the stream, releasing resources
+related to it. When the operation is finished @callback will be
+called. You can then call g_io_stream_close_finish() to get
+the result of the operation.
+For behaviour details see g_io_stream_close().
+The asynchronous methods have a default fallback that uses threads
+to implement asynchronicity, so they are optional for inheriting
+classes. However, if you override one you must override all.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the io priority of the request</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional cancellable object</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="3">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="close_finish"
+                      invoker="close_finish"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Closes a stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if stream was successfully closed, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="close_fn" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable" transfer-ownership="none">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_input_stream"
+                      invoker="get_input_stream"
+                      version="2.22">
+        <doc xml:whitespace="preserve">Gets the input stream for this object. This is used
+for reading.
+Do not free.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GInputStream, owned by the #GIOStream.</doc>
+          <type name="InputStream" c:type="GInputStream*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_output_stream"
+                      invoker="get_output_stream"
+                      version="2.22">
+        <doc xml:whitespace="preserve">Gets the output stream for this object. This is used for
+writing.
+Do not free.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GOutputStream, owned by the #GIOStream.</doc>
+          <type name="OutputStream" c:type="GOutputStream*"/>
+        </return-value>
+      </virtual-method>
+      <method name="clear_pending"
+              c:identifier="g_io_stream_clear_pending"
+              version="2.22">
+        <doc xml:whitespace="preserve">Clears the pending flag on @stream.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="close"
+              c:identifier="g_io_stream_close"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Closes the stream, releasing resources related to it. This will also
+closes the individual input and output streams, if they are not already
+closed.
+Once the stream is closed, all other operations will return
+%G_IO_ERROR_CLOSED. Closing a stream multiple times will not
+return an error.
+Closing a stream will automatically flush any outstanding buffers
+in the stream.
+Streams will be automatically closed when the last reference
+is dropped, but you might want to call this function to make sure
+resources are released as early as possible.
+Some streams might keep the backing store of the stream (e.g. a file
+descriptor) open after the stream is closed. See the documentation for
+the individual stream for details.
+On failure the first error that happened will be reported, but the
+close operation will finish as much as possible. A stream that failed
+to close will still return %G_IO_ERROR_CLOSED for all operations.
+Still, it is important to check and report the error to the user,
+otherwise there might be a loss of data as all data might not be written.
+If @cancellable is not NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+Cancelling a close will still leave the stream closed, but some streams
+can use a faster close that doesn't block to e.g. check errors.
+The default implementation of this method just calls close on the
+individual input/output streams.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on failure</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close_async"
+              c:identifier="g_io_stream_close_async"
+              version="2.22">
+        <doc xml:whitespace="preserve">Requests an asynchronous close of the stream, releasing resources
+related to it. When the operation is finished @callback will be
+called. You can then call g_io_stream_close_finish() to get
+the result of the operation.
+For behaviour details see g_io_stream_close().
+The asynchronous methods have a default fallback that uses threads
+to implement asynchronicity, so they are optional for inheriting
+classes. However, if you override one you must override all.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the io priority of the request</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional cancellable object</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close_finish"
+              c:identifier="g_io_stream_close_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Closes a stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if stream was successfully closed, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_input_stream"
+              c:identifier="g_io_stream_get_input_stream"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the input stream for this object. This is used
+for reading.
+Do not free.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GInputStream, owned by the #GIOStream.</doc>
+          <type name="InputStream" c:type="GInputStream*"/>
+        </return-value>
+      </method>
+      <method name="get_output_stream"
+              c:identifier="g_io_stream_get_output_stream"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the output stream for this object. This is used for
+writing.
+Do not free.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GOutputStream, owned by the #GIOStream.</doc>
+          <type name="OutputStream" c:type="GOutputStream*"/>
+        </return-value>
+      </method>
+      <method name="has_pending"
+              c:identifier="g_io_stream_has_pending"
+              version="2.22">
+        <doc xml:whitespace="preserve">Checks if a stream has pending actions.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @stream has pending actions.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_closed"
+              c:identifier="g_io_stream_is_closed"
+              version="2.22">
+        <doc xml:whitespace="preserve">Checks if a stream is closed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the stream is closed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_pending"
+              c:identifier="g_io_stream_set_pending"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets @stream to have actions pending. If the pending flag is
+already set or @stream is closed, it will return %FALSE and set</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if pending was previously unset and is now set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="closed" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="input-stream" transfer-ownership="none">
+        <type name="InputStream"/>
+      </property>
+      <property name="output-stream" transfer-ownership="none">
+        <type name="OutputStream"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="IOStreamPrivate" c:type="GIOStreamPrivate*"/>
+      </field>
+    </class>
+    <record name="IOStreamClass"
+            c:type="GIOStreamClass"
+            glib:is-gtype-struct-for="IOStream">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_input_stream">
+        <callback name="get_input_stream">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GInputStream, owned by the #GIOStream.</doc>
+            <type name="InputStream" c:type="GInputStream*"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="IOStream" c:type="GIOStream*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_output_stream">
+        <callback name="get_output_stream">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GOutputStream, owned by the #GIOStream.</doc>
+            <type name="OutputStream" c:type="GOutputStream*"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="IOStream" c:type="GIOStream*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_fn">
+        <callback name="close_fn" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="IOStream" c:type="GIOStream*"/>
+            </parameter>
+            <parameter name="cancellable" transfer-ownership="none">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_async">
+        <callback name="close_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="IOStream" c:type="GIOStream*"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the io priority of the request</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional cancellable object</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="4">
+              <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_finish">
+        <callback name="close_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if stream was successfully closed, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="IOStream" c:type="GIOStream*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved6" introspectable="0">
+        <callback name="_g_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved7" introspectable="0">
+        <callback name="_g_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved8" introspectable="0">
+        <callback name="_g_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved9" introspectable="0">
+        <callback name="_g_reserved9">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved10" introspectable="0">
+        <callback name="_g_reserved10">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="IOStreamPrivate" c:type="GIOStreamPrivate" disguised="1">
+    </record>
+    <interface name="Icon"
+               c:symbol-prefix="icon"
+               c:type="GIcon"
+               glib:type-name="GIcon"
+               glib:get-type="g_icon_get_type"
+               glib:type-struct="IconIface">
+      <doc xml:whitespace="preserve">An abstract type that specifies an icon.</doc>
+      <virtual-method name="equal" invoker="equal">
+        <doc xml:whitespace="preserve">Checks if two icons are equal.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @icon1 is equal to @icon2. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer to the second #GIcon.</doc>
+            <type name="Icon" c:type="GIcon*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="hash">
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="to_tokens" invoker="to_string" version="2.20">
+        <doc xml:whitespace="preserve">Generates a textual representation of @icon that can be used for
+serialization such as when passing @icon to a different process or
+saving it to persistent storage. Use g_icon_new_for_string() to
+get @icon back from the returned string.
+The encoding of the returned string is proprietary to #GIcon except
+in the following two cases
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+If @icon is a #GFileIcon, the returned string is a native path
+(such as &lt;literal&gt;/path/to/my icon.png&lt;/literal&gt;) without escaping
+if the #GFile for @icon is a native file.  If the file is not
+native, the returned string is the result of g_file_get_uri()
+(such as &lt;literal&gt;sftp://path/to/my%%20icon.png&lt;/literal&gt;).
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+If @icon is a #GThemedIcon with exactly one name, the encoding is
+simply the name (such as &lt;literal&gt;network-server&lt;/literal&gt;).
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+be serialized. Use g_free() to free.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">An allocated NUL-terminated UTF8 string or %NULL if @icon can't</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tokens" transfer-ownership="none">
+            <array name="GLib.PtrArray" c:type="GPtrArray*">
+              <type name="gpointer" c:type="gpointer"/>
+            </array>
+          </parameter>
+          <parameter name="out_version" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="equal" c:identifier="g_icon_equal">
+        <doc xml:whitespace="preserve">Checks if two icons are equal.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @icon1 is equal to @icon2. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer to the second #GIcon.</doc>
+            <type name="Icon" c:type="GIcon*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_string" c:identifier="g_icon_to_string" version="2.20">
+        <doc xml:whitespace="preserve">Generates a textual representation of @icon that can be used for
+serialization such as when passing @icon to a different process or
+saving it to persistent storage. Use g_icon_new_for_string() to
+get @icon back from the returned string.
+The encoding of the returned string is proprietary to #GIcon except
+in the following two cases
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+If @icon is a #GFileIcon, the returned string is a native path
+(such as &lt;literal&gt;/path/to/my icon.png&lt;/literal&gt;) without escaping
+if the #GFile for @icon is a native file.  If the file is not
+native, the returned string is the result of g_file_get_uri()
+(such as &lt;literal&gt;sftp://path/to/my%%20icon.png&lt;/literal&gt;).
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+If @icon is a #GThemedIcon with exactly one name, the encoding is
+simply the name (such as &lt;literal&gt;network-server&lt;/literal&gt;).
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+be serialized. Use g_free() to free.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">An allocated NUL-terminated UTF8 string or %NULL if @icon can't</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </interface>
+    <record name="IconIface"
+            c:type="GIconIface"
+            glib:is-gtype-struct-for="Icon">
+      <doc xml:whitespace="preserve">GIconIface is used to implement GIcon types for various
+different systems. See #GThemedIcon and #GLoadableIcon for
+examples of how to implement this interface.</doc>
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="hash">
+        <callback name="hash">
+          <return-value transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="icon" transfer-ownership="none">
+              <type name="Icon" c:type="GIcon*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="equal">
+        <callback name="equal">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if @icon1 is equal to @icon2. %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="icon1" transfer-ownership="none">
+              <type name="Icon" c:type="GIcon*"/>
+            </parameter>
+            <parameter name="icon2" transfer-ownership="none">
+              <doc xml:whitespace="preserve">pointer to the second #GIcon.</doc>
+              <type name="Icon" c:type="GIcon*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="to_tokens">
+        <callback name="to_tokens">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">An allocated NUL-terminated UTF8 string or %NULL if @icon can't</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="icon" transfer-ownership="none">
+              <type name="Icon" c:type="GIcon*"/>
+            </parameter>
+            <parameter name="tokens" transfer-ownership="none">
+              <array name="GLib.PtrArray" c:type="GPtrArray*">
+                <type name="gpointer" c:type="gpointer"/>
+              </array>
+            </parameter>
+            <parameter name="out_version" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="from_tokens" introspectable="0">
+        <callback name="from_tokens" introspectable="0" throws="1">
+          <return-value>
+            <type name="Icon" c:type="GIcon*"/>
+          </return-value>
+          <parameters>
+            <parameter name="tokens" transfer-ownership="none">
+              <type name="utf8" c:type="gchar**"/>
+            </parameter>
+            <parameter name="num_tokens" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="version" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="InetAddress"
+           c:symbol-prefix="inet_address"
+           c:type="GInetAddress"
+           parent="GObject.Object"
+           glib:type-name="GInetAddress"
+           glib:get-type="g_inet_address_get_type"
+           glib:type-struct="InetAddressClass">
+      <doc xml:whitespace="preserve">An IPv4 or IPv6 internet address.</doc>
+      <constructor name="new_any"
+                   c:identifier="g_inet_address_new_any"
+                   version="2.22">
+        <doc xml:whitespace="preserve">Creates a #GInetAddress for the "any" address (unassigned/"don't
+care") for @family.
+for @family.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GInetAddress corresponding to the "any" address</doc>
+          <type name="InetAddress" c:type="GInetAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="family" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the address family</doc>
+            <type name="SocketFamily" c:type="GSocketFamily"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_bytes"
+                   c:identifier="g_inet_address_new_from_bytes"
+                   version="2.22">
+        <doc xml:whitespace="preserve">Creates a new #GInetAddress from the given @family and @bytes.
+%G_INET_ADDRESS_IPV6.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GInetAddress corresponding to @family and @bytes.</doc>
+          <type name="InetAddress" c:type="GInetAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="bytes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">raw address data</doc>
+            <type name="guint8" c:type="guint8*"/>
+          </parameter>
+          <parameter name="family" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the address family of @bytes</doc>
+            <type name="SocketFamily" c:type="GSocketFamily"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_string"
+                   c:identifier="g_inet_address_new_from_string"
+                   version="2.22">
+        <doc xml:whitespace="preserve">Parses @string as an IP address and creates a new #GInetAddress.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GInetAddress corresponding to @string, or %NULL if</doc>
+          <type name="InetAddress" c:type="GInetAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string representation of an IP address</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_loopback"
+                   c:identifier="g_inet_address_new_loopback"
+                   version="2.22">
+        <doc xml:whitespace="preserve">Creates a #GInetAddress for the loopback address for @family.
+for @family.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GInetAddress corresponding to the loopback address</doc>
+          <type name="InetAddress" c:type="GInetAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="family" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the address family</doc>
+            <type name="SocketFamily" c:type="GSocketFamily"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="to_bytes" invoker="to_bytes" version="2.22">
+        <doc xml:whitespace="preserve">Gets the raw binary address data from @address.
+which should not be modified, stored, or freed. The size of this
+array can be gotten with g_inet_address_get_native_size().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to an internal array of the bytes in @address,</doc>
+          <type name="guint8" c:type="guint8*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="to_string" invoker="to_string" version="2.22">
+        <doc xml:whitespace="preserve">Converts @address to string form.
+freed after use.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a representation of @address as a string, which should be</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_family"
+              c:identifier="g_inet_address_get_family"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets @address's family</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">@address's family</doc>
+          <type name="SocketFamily" c:type="GSocketFamily"/>
+        </return-value>
+      </method>
+      <method name="get_is_any"
+              c:identifier="g_inet_address_get_is_any"
+              version="2.22">
+        <doc xml:whitespace="preserve">Tests whether @address is the "any" address for its family.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @address is the "any" address for its family.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_is_link_local"
+              c:identifier="g_inet_address_get_is_link_local"
+              version="2.22">
+        <doc xml:whitespace="preserve">Tests whether @address is a link-local address (that is, if it
+identifies a host on a local network that is not connected to the
+Internet).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @address is a link-local address.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_is_loopback"
+              c:identifier="g_inet_address_get_is_loopback"
+              version="2.22">
+        <doc xml:whitespace="preserve">Tests whether @address is the loopback address for its family.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @address is the loopback address for its family.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_is_mc_global"
+              c:identifier="g_inet_address_get_is_mc_global"
+              version="2.22">
+        <doc xml:whitespace="preserve">Tests whether @address is a global multicast address.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @address is a global multicast address.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_is_mc_link_local"
+              c:identifier="g_inet_address_get_is_mc_link_local"
+              version="2.22">
+        <doc xml:whitespace="preserve">Tests whether @address is a link-local multicast address.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @address is a link-local multicast address.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_is_mc_node_local"
+              c:identifier="g_inet_address_get_is_mc_node_local"
+              version="2.22">
+        <doc xml:whitespace="preserve">Tests whether @address is a node-local multicast address.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @address is a node-local multicast address.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_is_mc_org_local"
+              c:identifier="g_inet_address_get_is_mc_org_local"
+              version="2.22">
+        <doc xml:whitespace="preserve">Tests whether @address is an organization-local multicast address.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @address is an organization-local multicast address.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_is_mc_site_local"
+              c:identifier="g_inet_address_get_is_mc_site_local"
+              version="2.22">
+        <doc xml:whitespace="preserve">Tests whether @address is a site-local multicast address.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @address is a site-local multicast address.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_is_multicast"
+              c:identifier="g_inet_address_get_is_multicast"
+              version="2.22">
+        <doc xml:whitespace="preserve">Tests whether @address is a multicast address.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @address is a multicast address.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_is_site_local"
+              c:identifier="g_inet_address_get_is_site_local"
+              version="2.22">
+        <doc xml:whitespace="preserve">Tests whether @address is a site-local address such as 10.0.0.1
+(that is, the address identifies a host on a local network that can
+not be reached directly from the Internet, but which may have
+outgoing Internet connectivity via a NAT or firewall).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @address is a site-local address.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_native_size"
+              c:identifier="g_inet_address_get_native_size"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the size of the native raw binary address for @address. This
+is the size of the data that you get from g_inet_address_to_bytes().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of bytes used for the native version of @address.</doc>
+          <type name="gulong" c:type="gsize"/>
+        </return-value>
+      </method>
+      <method name="to_bytes"
+              c:identifier="g_inet_address_to_bytes"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the raw binary address data from @address.
+which should not be modified, stored, or freed. The size of this
+array can be gotten with g_inet_address_get_native_size().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to an internal array of the bytes in @address,</doc>
+          <type name="guint8" c:type="guint8*"/>
+        </return-value>
+      </method>
+      <method name="to_string"
+              c:identifier="g_inet_address_to_string"
+              version="2.22">
+        <doc xml:whitespace="preserve">Converts @address to string form.
+freed after use.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a representation of @address as a string, which should be</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <property name="bytes"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="gpointer"/>
+      </property>
+      <property name="family"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="SocketFamily"/>
+      </property>
+      <property name="is-any" version="2.22" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether this is the "any" address for its family.
+See g_inet_address_get_is_any().</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="is-link-local" version="2.22" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether this is a link-local address.
+See g_inet_address_get_is_link_local().</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="is-loopback" version="2.22" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether this is the loopback address for its family.
+See g_inet_address_get_is_loopback().</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="is-mc-global" version="2.22" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether this is a global multicast address.
+See g_inet_address_get_is_mc_global().</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="is-mc-link-local"
+                version="2.22"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether this is a link-local multicast address.
+See g_inet_address_get_is_mc_link_local().</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="is-mc-node-local"
+                version="2.22"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether this is a node-local multicast address.
+See g_inet_address_get_is_mc_node_local().</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="is-mc-org-local"
+                version="2.22"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether this is an organization-local multicast address.
+See g_inet_address_get_is_mc_org_local().</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="is-mc-site-local"
+                version="2.22"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether this is a site-local multicast address.
+See g_inet_address_get_is_mc_site_local().</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="is-multicast" version="2.22" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether this is a multicast address.
+See g_inet_address_get_is_multicast().</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="is-site-local" version="2.22" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether this is a site-local address.
+See g_inet_address_get_is_loopback().</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="InetAddressPrivate" c:type="GInetAddressPrivate*"/>
+      </field>
+    </class>
+    <record name="InetAddressClass"
+            c:type="GInetAddressClass"
+            glib:is-gtype-struct-for="InetAddress">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="to_string">
+        <callback name="to_string">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a representation of @address as a string, which should be</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="address" transfer-ownership="none">
+              <type name="InetAddress" c:type="GInetAddress*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="to_bytes">
+        <callback name="to_bytes">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to an internal array of the bytes in @address,</doc>
+            <type name="guint8" c:type="guint8*"/>
+          </return-value>
+          <parameters>
+            <parameter name="address" transfer-ownership="none">
+              <type name="InetAddress" c:type="GInetAddress*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="InetAddressPrivate"
+            c:type="GInetAddressPrivate"
+            disguised="1">
+    </record>
+    <class name="InetSocketAddress"
+           c:symbol-prefix="inet_socket_address"
+           c:type="GInetSocketAddress"
+           parent="SocketAddress"
+           glib:type-name="GInetSocketAddress"
+           glib:get-type="g_inet_socket_address_get_type"
+           glib:type-struct="InetSocketAddressClass">
+      <doc xml:whitespace="preserve">An IPv4 or IPv6 socket address, corresponding to a &lt;type&gt;struct
+sockaddr_in&lt;/type&gt; or &lt;type&gt;struct sockaddr_in6&lt;/type&gt;.</doc>
+      <implements name="SocketConnectable"/>
+      <constructor name="new"
+                   c:identifier="g_inet_socket_address_new"
+                   version="2.22">
+        <doc xml:whitespace="preserve">Creates a new #GInetSocketAddress for @address and @port.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GInetSocketAddress</doc>
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GInetAddress</doc>
+            <type name="InetAddress" c:type="GInetAddress*"/>
+          </parameter>
+          <parameter name="port" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a port number</doc>
+            <type name="guint16" c:type="guint16"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_address"
+              c:identifier="g_inet_socket_address_get_address"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets @address's #GInetAddress.
+g_object_ref()'d if it will be stored</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GInetAddress for @address, which must be</doc>
+          <type name="InetAddress" c:type="GInetAddress*"/>
+        </return-value>
+      </method>
+      <method name="get_port"
+              c:identifier="g_inet_socket_address_get_port"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets @address's port.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the port for @address</doc>
+          <type name="guint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <property name="address"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="InetAddress"/>
+      </property>
+      <property name="port"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="SocketAddress" c:type="GSocketAddress"/>
+      </field>
+      <field name="priv">
+        <type name="InetSocketAddressPrivate"
+              c:type="GInetSocketAddressPrivate*"/>
+      </field>
+    </class>
+    <record name="InetSocketAddressClass"
+            c:type="GInetSocketAddressClass"
+            glib:is-gtype-struct-for="InetSocketAddress">
+      <field name="parent_class">
+        <type name="SocketAddressClass" c:type="GSocketAddressClass"/>
+      </field>
+    </record>
+    <record name="InetSocketAddressPrivate"
+            c:type="GInetSocketAddressPrivate"
+            disguised="1">
+    </record>
+    <interface name="Initable"
+               c:symbol-prefix="initable"
+               c:type="GInitable"
+               version="2.22"
+               glib:type-name="GInitable"
+               glib:get-type="g_initable_get_type"
+               glib:type-struct="InitableIface">
+      <doc xml:whitespace="preserve">Interface for initializable objects.</doc>
+      <virtual-method name="init" invoker="init" version="2.22" throws="1">
+        <doc xml:whitespace="preserve">Initializes the object implementing the interface. This must be
+done before any real use of the object after initial construction.
+Implementations may also support cancellation. If @cancellable is not %NULL,
+then initialization can be cancelled by triggering the cancellable object
+from another thread. If the operation was cancelled, the error
+%G_IO_ERROR_CANCELLED will be returned. If @cancellable is not %NULL and
+the object doesn't support cancellable initialization the error
+%G_IO_ERROR_NOT_SUPPORTED will be returned.
+If this function is not called, or returns with an error then all
+operations on the object should fail, generally returning the
+error %G_IO_ERROR_NOT_INITIALIZED.
+Implementations of this method must be idempotent, i.e. multiple calls
+to this function with the same argument should return the same results.
+Only the first call initializes the object, further calls return the result
+of the first call. This is so that its safe to implement the singleton
+pattern in the GObject constructor function.
+return %FALSE and set @error appropriately if present.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful. If an error has occurred, this function will</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="init"
+              c:identifier="g_initable_init"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Initializes the object implementing the interface. This must be
+done before any real use of the object after initial construction.
+Implementations may also support cancellation. If @cancellable is not %NULL,
+then initialization can be cancelled by triggering the cancellable object
+from another thread. If the operation was cancelled, the error
+%G_IO_ERROR_CANCELLED will be returned. If @cancellable is not %NULL and
+the object doesn't support cancellable initialization the error
+%G_IO_ERROR_NOT_SUPPORTED will be returned.
+If this function is not called, or returns with an error then all
+operations on the object should fail, generally returning the
+error %G_IO_ERROR_NOT_INITIALIZED.
+Implementations of this method must be idempotent, i.e. multiple calls
+to this function with the same argument should return the same results.
+Only the first call initializes the object, further calls return the result
+of the first call. This is so that its safe to implement the singleton
+pattern in the GObject constructor function.
+return %FALSE and set @error appropriately if present.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful. If an error has occurred, this function will</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="InitableIface"
+            c:type="GInitableIface"
+            glib:is-gtype-struct-for="Initable"
+            version="2.22">
+      <doc xml:whitespace="preserve">Provides an interface for initializing object such that initialization
+may fail.</doc>
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="init">
+        <callback name="init" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if successful. If an error has occurred, this function will</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="initable" transfer-ownership="none">
+              <type name="Initable" c:type="GInitable*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="InputStream"
+           c:symbol-prefix="input_stream"
+           c:type="GInputStream"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GInputStream"
+           glib:get-type="g_input_stream_get_type"
+           glib:type-struct="InputStreamClass">
+      <doc xml:whitespace="preserve">Base class for streaming input operations.</doc>
+      <virtual-method name="close_async" invoker="close_async">
+        <doc xml:whitespace="preserve">Requests an asynchronous closes of the stream, releasing resources related to it.
+When the operation is finished @callback will be called.
+You can then call g_input_stream_close_finish() to get the result of the
+operation.
+For behaviour details see g_input_stream_close().
+The asyncronous methods have a default fallback that uses threads to implement
+asynchronicity, so they are optional for inheriting classes. However, if you
+override one you must override all.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional cancellable object</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="3">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="close_finish" invoker="close_finish" throws="1">
+        <doc xml:whitespace="preserve">Finishes closing a stream asynchronously, started from g_input_stream_close_async().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the stream was closed successfully.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="close_fn" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable" transfer-ownership="none">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="read_async" invoker="read_async">
+        <doc xml:whitespace="preserve">Request an asynchronous read of @count bytes from the stream into the buffer
+starting at @buffer. When the operation is finished @callback will be called.
+You can then call g_input_stream_read_finish() to get the result of the
+operation.
+During an async request no other sync and async calls are allowed on @stream, and will
+result in %G_IO_ERROR_PENDING errors.
+A value of @count larger than %G_MAXSSIZE will cause a %G_IO_ERROR_INVALID_ARGUMENT error.
+On success, the number of bytes read into the buffer will be passed to the
+callback. It is not an error if this is not the same as the requested size, as it
+can happen e.g. near the end of a file, but generally we try to read
+as many bytes as requested. Zero is returned on end of file
+(or if @count is zero),  but never otherwise.
+Any outstanding i/o request with higher priority (lower numerical value) will
+be executed before an outstanding request with lower priority. Default
+priority is %G_PRIORITY_DEFAULT.
+The asyncronous methods have a default fallback that uses threads to implement
+asynchronicity, so they are optional for inheriting classes. However, if you
+override one you must override all.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a buffer to read data into (which should be at least count bytes long).</doc>
+            <type name="gpointer" c:type="void*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes that will be read from the stream</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="read_finish" invoker="read_finish" throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous stream read operation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of bytes read in, or -1 on error.</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="read_fn" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="gpointer" c:type="void*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="cancellable" transfer-ownership="none">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="skip" invoker="skip" throws="1">
+        <doc xml:whitespace="preserve">Tries to skip @count bytes from the stream. Will block during the operation.
+This is identical to g_input_stream_read(), from a behaviour standpoint,
+but the bytes that are skipped are not returned to the user. Some
+streams have an implementation that is more efficient than reading the data.
+This function is optional for inherited classes, as the default implementation
+emulates it using read.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
+operation was partially finished when the operation was cancelled the
+partial result will be returned, without an error.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Number of bytes skipped, or -1 on error</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes that will be skipped from the stream</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="skip_async" invoker="skip_async">
+        <doc xml:whitespace="preserve">Request an asynchronous skip of @count bytes from the stream.
+When the operation is finished @callback will be called.
+You can then call g_input_stream_skip_finish() to get the result
+of the operation.
+During an async request no other sync and async calls are allowed,
+and will result in %G_IO_ERROR_PENDING errors.
+A value of @count larger than %G_MAXSSIZE will cause a %G_IO_ERROR_INVALID_ARGUMENT error.
+On success, the number of bytes skipped will be passed to the callback.
+It is not an error if this is not the same as the requested size, as it
+can happen e.g. near the end of a file, but generally we try to skip
+as many bytes as requested. Zero is returned on end of file
+(or if @count is zero), but never otherwise.
+Any outstanding i/o request with higher priority (lower numerical value)
+will be executed before an outstanding request with lower priority.
+Default priority is %G_PRIORITY_DEFAULT.
+The asynchronous methods have a default fallback that uses threads to
+implement asynchronicity, so they are optional for inheriting classes.
+However, if you override one, you must override all.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes that will be skipped from the stream</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="skip_finish" invoker="skip_finish" throws="1">
+        <doc xml:whitespace="preserve">Finishes a stream skip operation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the size of the bytes skipped, or %-1 on error.</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="clear_pending" c:identifier="g_input_stream_clear_pending">
+        <doc xml:whitespace="preserve">Clears the pending flag on @stream.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="close" c:identifier="g_input_stream_close" throws="1">
+        <doc xml:whitespace="preserve">Closes the stream, releasing resources related to it.
+Once the stream is closed, all other operations will return %G_IO_ERROR_CLOSED.
+Closing a stream multiple times will not return an error.
+Streams will be automatically closed when the last reference
+is dropped, but you might want to call this function to make sure
+resources are released as early as possible.
+Some streams might keep the backing store of the stream (e.g. a file descriptor)
+open after the stream is closed. See the documentation for the individual
+stream for details.
+On failure the first error that happened will be reported, but the close
+operation will finish as much as possible. A stream that failed to
+close will still return %G_IO_ERROR_CLOSED for all operations. Still, it
+is important to check and report the error to the user.
+If @cancellable is not NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+Cancelling a close will still leave the stream closed, but some streams
+can use a faster close that doesn't block to e.g. check errors.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on failure</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close_async" c:identifier="g_input_stream_close_async">
+        <doc xml:whitespace="preserve">Requests an asynchronous closes of the stream, releasing resources related to it.
+When the operation is finished @callback will be called.
+You can then call g_input_stream_close_finish() to get the result of the
+operation.
+For behaviour details see g_input_stream_close().
+The asyncronous methods have a default fallback that uses threads to implement
+asynchronicity, so they are optional for inheriting classes. However, if you
+override one you must override all.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional cancellable object</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close_finish"
+              c:identifier="g_input_stream_close_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes closing a stream asynchronously, started from g_input_stream_close_async().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the stream was closed successfully.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_pending" c:identifier="g_input_stream_has_pending">
+        <doc xml:whitespace="preserve">Checks if an input stream has pending actions.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @stream has pending actions.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_closed" c:identifier="g_input_stream_is_closed">
+        <doc xml:whitespace="preserve">Checks if an input stream is closed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the stream is closed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="read" c:identifier="g_input_stream_read" throws="1">
+        <doc xml:whitespace="preserve">Tries to read @count bytes from the stream into the buffer starting at
+If count is zero returns zero and does nothing. A value of @count
+larger than %G_MAXSSIZE will cause a %G_IO_ERROR_INVALID_ARGUMENT error.
+On success, the number of bytes read into the buffer is returned.
+It is not an error if this is not the same as the requested size, as it
+can happen e.g. near the end of a file. Zero is returned on end of file
+(or if @count is zero),  but never otherwise.
+If @cancellable is not NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error G_IO_ERROR_CANCELLED will be returned. If an
+operation was partially finished when the operation was cancelled the
+partial result will be returned, without an error.
+On error -1 is returned and @error is set accordingly.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Number of bytes read, or -1 on error</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a buffer to read data into (which should be at least count bytes long).</doc>
+            <type name="gpointer" c:type="void*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes that will be read from the stream</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_all"
+              c:identifier="g_input_stream_read_all"
+              throws="1">
+        <doc xml:whitespace="preserve">Tries to read @count bytes from the stream into the buffer starting at
+This function is similar to g_input_stream_read(), except it tries to
+read as many bytes as requested, only stopping on an error or end of stream.
+On a successful read of @count bytes, or if we reached the end of the
+stream,  %TRUE is returned, and @bytes_read is set to the number of bytes
+read into @buffer.
+If there is an error during the operation %FALSE is returned and @error
+is set to indicate the error status, @bytes_read is updated to contain
+the number of bytes read into @buffer before the error occurred.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE if there was an error</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a buffer to read data into (which should be at least count bytes long).</doc>
+            <type name="gpointer" c:type="void*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes that will be read from the stream</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="bytes_read" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the number of bytes that was read from the stream</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_async" c:identifier="g_input_stream_read_async">
+        <doc xml:whitespace="preserve">Request an asynchronous read of @count bytes from the stream into the buffer
+starting at @buffer. When the operation is finished @callback will be called.
+You can then call g_input_stream_read_finish() to get the result of the
+operation.
+During an async request no other sync and async calls are allowed on @stream, and will
+result in %G_IO_ERROR_PENDING errors.
+A value of @count larger than %G_MAXSSIZE will cause a %G_IO_ERROR_INVALID_ARGUMENT error.
+On success, the number of bytes read into the buffer will be passed to the
+callback. It is not an error if this is not the same as the requested size, as it
+can happen e.g. near the end of a file, but generally we try to read
+as many bytes as requested. Zero is returned on end of file
+(or if @count is zero),  but never otherwise.
+Any outstanding i/o request with higher priority (lower numerical value) will
+be executed before an outstanding request with lower priority. Default
+priority is %G_PRIORITY_DEFAULT.
+The asyncronous methods have a default fallback that uses threads to implement
+asynchronicity, so they are optional for inheriting classes. However, if you
+override one you must override all.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a buffer to read data into (which should be at least count bytes long).</doc>
+            <type name="gpointer" c:type="void*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes that will be read from the stream</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_finish"
+              c:identifier="g_input_stream_read_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous stream read operation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of bytes read in, or -1 on error.</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pending"
+              c:identifier="g_input_stream_set_pending"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets @stream to have actions pending. If the pending flag is
+already set or @stream is closed, it will return %FALSE and set</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if pending was previously unset and is now set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="skip" c:identifier="g_input_stream_skip" throws="1">
+        <doc xml:whitespace="preserve">Tries to skip @count bytes from the stream. Will block during the operation.
+This is identical to g_input_stream_read(), from a behaviour standpoint,
+but the bytes that are skipped are not returned to the user. Some
+streams have an implementation that is more efficient than reading the data.
+This function is optional for inherited classes, as the default implementation
+emulates it using read.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
+operation was partially finished when the operation was cancelled the
+partial result will be returned, without an error.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Number of bytes skipped, or -1 on error</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes that will be skipped from the stream</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="skip_async" c:identifier="g_input_stream_skip_async">
+        <doc xml:whitespace="preserve">Request an asynchronous skip of @count bytes from the stream.
+When the operation is finished @callback will be called.
+You can then call g_input_stream_skip_finish() to get the result
+of the operation.
+During an async request no other sync and async calls are allowed,
+and will result in %G_IO_ERROR_PENDING errors.
+A value of @count larger than %G_MAXSSIZE will cause a %G_IO_ERROR_INVALID_ARGUMENT error.
+On success, the number of bytes skipped will be passed to the callback.
+It is not an error if this is not the same as the requested size, as it
+can happen e.g. near the end of a file, but generally we try to skip
+as many bytes as requested. Zero is returned on end of file
+(or if @count is zero), but never otherwise.
+Any outstanding i/o request with higher priority (lower numerical value)
+will be executed before an outstanding request with lower priority.
+Default priority is %G_PRIORITY_DEFAULT.
+The asynchronous methods have a default fallback that uses threads to
+implement asynchronicity, so they are optional for inheriting classes.
+However, if you override one, you must override all.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes that will be skipped from the stream</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="skip_finish"
+              c:identifier="g_input_stream_skip_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes a stream skip operation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the size of the bytes skipped, or %-1 on error.</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="InputStreamPrivate" c:type="GInputStreamPrivate*"/>
+      </field>
+    </class>
+    <record name="InputStreamClass"
+            c:type="GInputStreamClass"
+            glib:is-gtype-struct-for="InputStream">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="read_fn">
+        <callback name="read_fn" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="glong" c:type="gssize"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="InputStream" c:type="GInputStream*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="gpointer" c:type="void*"/>
+            </parameter>
+            <parameter name="count" transfer-ownership="none">
+              <type name="gulong" c:type="gsize"/>
+            </parameter>
+            <parameter name="cancellable" transfer-ownership="none">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="skip">
+        <callback name="skip" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">Number of bytes skipped, or -1 on error</doc>
+            <type name="glong" c:type="gssize"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="InputStream" c:type="GInputStream*"/>
+            </parameter>
+            <parameter name="count" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the number of bytes that will be skipped from the stream</doc>
+              <type name="gulong" c:type="gsize"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_fn">
+        <callback name="close_fn" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="InputStream" c:type="GInputStream*"/>
+            </parameter>
+            <parameter name="cancellable" transfer-ownership="none">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="read_async">
+        <callback name="read_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="InputStream" c:type="GInputStream*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a buffer to read data into (which should be at least count bytes long).</doc>
+              <type name="gpointer" c:type="void*"/>
+            </parameter>
+            <parameter name="count" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the number of bytes that will be read from the stream</doc>
+              <type name="gulong" c:type="gsize"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="6">
+              <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="6">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="read_finish">
+        <callback name="read_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of bytes read in, or -1 on error.</doc>
+            <type name="glong" c:type="gssize"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="InputStream" c:type="GInputStream*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="skip_async">
+        <callback name="skip_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="InputStream" c:type="GInputStream*"/>
+            </parameter>
+            <parameter name="count" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the number of bytes that will be skipped from the stream</doc>
+              <type name="gulong" c:type="gsize"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="skip_finish">
+        <callback name="skip_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of the bytes skipped, or %-1 on error.</doc>
+            <type name="glong" c:type="gssize"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="InputStream" c:type="GInputStream*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_async">
+        <callback name="close_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="InputStream" c:type="GInputStream*"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional cancellable object</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="4">
+              <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_finish">
+        <callback name="close_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the stream was closed successfully.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="InputStream" c:type="GInputStream*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="InputStreamPrivate"
+            c:type="GInputStreamPrivate"
+            disguised="1">
+    </record>
+    <record name="InputVector" c:type="GInputVector" version="2.22">
+      <doc xml:whitespace="preserve">Structure used for scatter/gather data input.
+You generally pass in an array of #GInputVector&lt;!-- --&gt;s
+and the operation will store the read data starting in the
+first buffer, switching to the next as needed.</doc>
+      <field name="buffer" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="size" writable="1">
+        <type name="gulong" c:type="gsize"/>
+      </field>
+    </record>
+    <interface name="LoadableIcon"
+               c:symbol-prefix="loadable_icon"
+               c:type="GLoadableIcon"
+               glib:type-name="GLoadableIcon"
+               glib:get-type="g_loadable_icon_get_type"
+               glib:type-struct="LoadableIconIface">
+      <doc xml:whitespace="preserve">Generic type for all kinds of icons that can be loaded
+as a stream.</doc>
+      <prerequisite name="Icon"/>
+      <virtual-method name="load" invoker="load" throws="1">
+        <doc xml:whitespace="preserve">Loads a loadable icon. For the asynchronous version of this function,
+see g_loadable_icon_load_async().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GInputStream to read the icon from.</doc>
+          <type name="InputStream" c:type="GInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an integer.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a location to store the type of the loaded icon, %NULL to ignore.</doc>
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="load_async" invoker="load_async">
+        <doc xml:whitespace="preserve">Loads an icon asynchronously. To finish this function, see
+g_loadable_icon_load_finish(). For the synchronous, blocking
+version of this function, see g_loadable_icon_load().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an integer.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="3">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="load_finish" invoker="load_finish" throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous icon load started in g_loadable_icon_load_async().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GInputStream to read the icon from.</doc>
+          <type name="InputStream" c:type="GInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a location to store the type of the loaded icon, %NULL to ignore.</doc>
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="load" c:identifier="g_loadable_icon_load" throws="1">
+        <doc xml:whitespace="preserve">Loads a loadable icon. For the asynchronous version of this function,
+see g_loadable_icon_load_async().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GInputStream to read the icon from.</doc>
+          <type name="InputStream" c:type="GInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an integer.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a location to store the type of the loaded icon, %NULL to ignore.</doc>
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_async" c:identifier="g_loadable_icon_load_async">
+        <doc xml:whitespace="preserve">Loads an icon asynchronously. To finish this function, see
+g_loadable_icon_load_finish(). For the synchronous, blocking
+version of this function, see g_loadable_icon_load().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an integer.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_finish"
+              c:identifier="g_loadable_icon_load_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous icon load started in g_loadable_icon_load_async().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GInputStream to read the icon from.</doc>
+          <type name="InputStream" c:type="GInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a location to store the type of the loaded icon, %NULL to ignore.</doc>
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="LoadableIconIface"
+            c:type="GLoadableIconIface"
+            glib:is-gtype-struct-for="LoadableIcon">
+      <doc xml:whitespace="preserve">Interface for icons that can be loaded as a stream.</doc>
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="load">
+        <callback name="load" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GInputStream to read the icon from.</doc>
+            <type name="InputStream" c:type="GInputStream*"/>
+          </return-value>
+          <parameters>
+            <parameter name="icon" transfer-ownership="none">
+              <type name="LoadableIcon" c:type="GLoadableIcon*"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <doc xml:whitespace="preserve">an integer.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a location to store the type of the loaded icon, %NULL to ignore.</doc>
+              <type name="utf8" c:type="char**"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="load_async">
+        <callback name="load_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="icon" transfer-ownership="none">
+              <type name="LoadableIcon" c:type="GLoadableIcon*"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <doc xml:whitespace="preserve">an integer.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="4">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="load_finish">
+        <callback name="load_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GInputStream to read the icon from.</doc>
+            <type name="InputStream" c:type="GInputStream*"/>
+          </return-value>
+          <parameters>
+            <parameter name="icon" transfer-ownership="none">
+              <type name="LoadableIcon" c:type="GLoadableIcon*"/>
+            </parameter>
+            <parameter name="res" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a location to store the type of the loaded icon, %NULL to ignore.</doc>
+              <type name="utf8" c:type="char**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="MemoryInputStream"
+           c:symbol-prefix="memory_input_stream"
+           c:type="GMemoryInputStream"
+           parent="InputStream"
+           glib:type-name="GMemoryInputStream"
+           glib:get-type="g_memory_input_stream_get_type"
+           glib:type-struct="MemoryInputStreamClass">
+      <doc xml:whitespace="preserve">Implements #GInputStream for arbitrary memory chunks.</doc>
+      <implements name="Seekable"/>
+      <constructor name="new" c:identifier="g_memory_input_stream_new">
+        <doc xml:whitespace="preserve">Creates a new empty #GMemoryInputStream.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GInputStream</doc>
+          <type name="InputStream" c:type="GInputStream*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_data"
+                   c:identifier="g_memory_input_stream_new_from_data">
+        <doc xml:whitespace="preserve">Creates a new #GMemoryInputStream with data in memory of a given size.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">new #GInputStream read from @data of @len bytes.</doc>
+          <type name="InputStream" c:type="GInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">input data</doc>
+            <type name="gpointer" c:type="void*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">length of the data, may be -1 if @data is a nul-terminated string</doc>
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">function that is called to free @data, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add_data" c:identifier="g_memory_input_stream_add_data">
+        <doc xml:whitespace="preserve">Appends @data to data that can be read from the input stream</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">input data</doc>
+            <type name="gpointer" c:type="void*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">length of the data, may be -1 if @data is a nul-terminated string</doc>
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">function that is called to free @data, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="InputStream" c:type="GInputStream"/>
+      </field>
+      <field name="priv">
+        <type name="MemoryInputStreamPrivate"
+              c:type="GMemoryInputStreamPrivate*"/>
+      </field>
+    </class>
+    <record name="MemoryInputStreamClass"
+            c:type="GMemoryInputStreamClass"
+            glib:is-gtype-struct-for="MemoryInputStream">
+      <field name="parent_class">
+        <type name="InputStreamClass" c:type="GInputStreamClass"/>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="MemoryInputStreamPrivate"
+            c:type="GMemoryInputStreamPrivate"
+            disguised="1">
+    </record>
+    <class name="MemoryOutputStream"
+           c:symbol-prefix="memory_output_stream"
+           c:type="GMemoryOutputStream"
+           parent="OutputStream"
+           glib:type-name="GMemoryOutputStream"
+           glib:get-type="g_memory_output_stream_get_type"
+           glib:type-struct="MemoryOutputStreamClass">
+      <doc xml:whitespace="preserve">Implements #GOutputStream for arbitrary memory chunks.</doc>
+      <implements name="Seekable"/>
+      <constructor name="new"
+                   c:identifier="g_memory_output_stream_new"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #GMemoryOutputStream.
+If @data is non-%NULL, the stream  will use that for its internal storage.
+If @realloc_fn is non-%NULL, it will be used for resizing the internal
+storage when necessary. To construct a fixed-size output stream,
+pass %NULL as @realloc_fn.
+|[
+/&amp;ast; a stream that can grow &amp;ast;/
+stream = g_memory_output_stream_new (NULL, 0, realloc, free);
+/&amp;ast; another stream that can grow &amp;ast;/
+stream2 = g_memory_output_stream_new (NULL, 0, g_realloc, g_free);
+/&amp;ast; a fixed-size stream &amp;ast;/
+data = malloc (200);
+stream3 = g_memory_output_stream_new (data, 200, NULL, free);
+]|</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly created #GMemoryOutputStream object.</doc>
+          <type name="OutputStream" c:type="GOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer to a chunk of memory to use, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of @data</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="realloc_function"
+                     transfer-ownership="none"
+                     scope="notified"
+                     destroy="3">
+            <doc xml:whitespace="preserve">a function with realloc() semantics (like g_realloc()) to be called when @data needs to be grown, or %NULL</doc>
+            <type name="ReallocFunc" c:type="GReallocFunc"/>
+          </parameter>
+          <parameter name="destroy_function"
+                     transfer-ownership="none"
+                     scope="async">
+            <doc xml:whitespace="preserve">a function to be called on @data when the stream is finalized, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_data"
+              c:identifier="g_memory_output_stream_get_data"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets any loaded data from the @ostream.
+Note that the returned pointer may become invalid on the next
+write or truncate operation on the stream.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">pointer to the stream's data</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="get_data_size"
+              c:identifier="g_memory_output_stream_get_data_size"
+              version="2.18">
+        <doc xml:whitespace="preserve">Returns the number of bytes from the start up
+to including the last byte written in the stream
+that has not been truncated away.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of bytes written to the stream</doc>
+          <type name="gulong" c:type="gsize"/>
+        </return-value>
+      </method>
+      <method name="get_size" c:identifier="g_memory_output_stream_get_size">
+        <doc xml:whitespace="preserve">Gets the size of the currently allocated data area (availible from
+g_memory_output_stream_get_data()). If the stream isn't
+growable (no realloc was passed to g_memory_output_stream_new()) then
+this is the maximum size of the stream and further writes
+will return %G_IO_ERROR_NO_SPACE.
+Note that for growable streams the returned size may become invalid on
+the next write or truncate operation on the stream.
+If you want the number of bytes currently written to the stream, use
+g_memory_output_stream_get_data_size().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of bytes allocated for the data buffer</doc>
+          <type name="gulong" c:type="gsize"/>
+        </return-value>
+      </method>
+      <method name="steal_data"
+              c:identifier="g_memory_output_stream_steal_data"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets any loaded data from the @ostream. Ownership of the data
+is transferred to the caller; when no longer needed it must be
+freed using the free function set in @ostream's
+#GMemoryOutputStream:destroy-function property.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the stream's data</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <property name="data"
+                version="2.24"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Pointer to buffer where data will be written.</doc>
+        <type name="gpointer"/>
+      </property>
+      <property name="data-size" version="2.24" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Size of data written to the buffer.</doc>
+        <type name="gulong"/>
+      </property>
+      <property name="destroy-function"
+                version="2.24"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Function called with the buffer as argument when the stream is destroyed.</doc>
+        <type name="gpointer"/>
+      </property>
+      <property name="realloc-function"
+                version="2.24"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Function with realloc semantics called to enlarge the buffer.</doc>
+        <type name="gpointer"/>
+      </property>
+      <property name="size"
+                version="2.24"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Current size of the data buffer.</doc>
+        <type name="gulong"/>
+      </property>
+      <field name="parent_instance">
+        <type name="OutputStream" c:type="GOutputStream"/>
+      </field>
+      <field name="priv">
+        <type name="MemoryOutputStreamPrivate"
+              c:type="GMemoryOutputStreamPrivate*"/>
+      </field>
+    </class>
+    <record name="MemoryOutputStreamClass"
+            c:type="GMemoryOutputStreamClass"
+            glib:is-gtype-struct-for="MemoryOutputStream">
+      <field name="parent_class">
+        <type name="OutputStreamClass" c:type="GOutputStreamClass"/>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="MemoryOutputStreamPrivate"
+            c:type="GMemoryOutputStreamPrivate"
+            disguised="1">
+    </record>
+    <interface name="Mount"
+               c:symbol-prefix="mount"
+               c:type="GMount"
+               glib:type-name="GMount"
+               glib:get-type="g_mount_get_type"
+               glib:type-struct="MountIface">
+      <doc xml:whitespace="preserve">A handle to an object implementing the #GMountIface interface.</doc>
+      <virtual-method name="can_eject" invoker="can_eject">
+        <doc xml:whitespace="preserve">Checks if @mount can be eject.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @mount can be ejected.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="can_unmount" invoker="can_unmount">
+        <doc xml:whitespace="preserve">Checks if @mount can be mounted.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @mount can be unmounted.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="eject"
+                      invoker="eject"
+                      deprecated="Use g_mount_eject_with_operation() instead."
+                      deprecated-version="2.22">
+        <doc xml:whitespace="preserve">Ejects a mount. This is an asynchronous operation, and is
+finished by calling g_mount_eject_finish() with the @mount
+and #GAsyncResult data returned in the @callback.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the unmount if required for eject</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="3">
+            <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject_finish"
+                      invoker="eject_finish"
+                      deprecated="Use g_mount_eject_with_operation_finish() instead."
+                      deprecated-version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes ejecting a mount. If any errors occurred during the operation,</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the mount was successfully ejected. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject_with_operation"
+                      invoker="eject_with_operation"
+                      version="2.22">
+        <doc xml:whitespace="preserve">Ejects a mount. This is an asynchronous operation, and is
+finished by calling g_mount_eject_with_operation_finish() with the @mount
+and #GAsyncResult data returned in the @callback.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the unmount if required for eject</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject_with_operation_finish"
+                      invoker="eject_with_operation_finish"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes ejecting a mount. If any errors occurred during the operation,</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the mount was successfully ejected. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_default_location"
+                      invoker="get_default_location">
+        <doc xml:whitespace="preserve">Gets the default location of @mount. The default location of the given
+the home directory, or the root of the volume).
+The returned object should be unreffed with
+g_object_unref() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFile.</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_drive" invoker="get_drive">
+        <doc xml:whitespace="preserve">Gets the drive for the @mount.
+This is a convenience method for getting the #GVolume and then
+using that object to get the #GDrive.
+The returned object should be unreffed with
+g_object_unref() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GDrive or %NULL if @mount is not associated with a volume or a drive.</doc>
+          <type name="Drive" c:type="GDrive*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_icon" invoker="get_icon">
+        <doc xml:whitespace="preserve">Gets the icon for @mount.
+The returned object should be unreffed with
+g_object_unref() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GIcon.</doc>
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_name" invoker="get_name">
+        <doc xml:whitespace="preserve">Gets the name of @mount.
+The returned string should be freed with g_free()
+when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the name for the given @mount.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_root" invoker="get_root">
+        <doc xml:whitespace="preserve">Gets the root directory on @mount.
+The returned object should be unreffed with
+g_object_unref() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFile.</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_uuid" invoker="get_uuid">
+        <doc xml:whitespace="preserve">Gets the UUID for the @mount. The reference is typically based on
+the file system UUID for the mount in question and should be
+considered an opaque string. Returns %NULL if there is no UUID
+available.
+The returned string should be freed with g_free()
+when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the UUID for @mount or %NULL if no UUID can be computed.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_volume" invoker="get_volume">
+        <doc xml:whitespace="preserve">Gets the volume for the @mount.
+The returned object should be unreffed with
+g_object_unref() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GVolume or %NULL if @mount is not associated with a volume.</doc>
+          <type name="Volume" c:type="GVolume*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="guess_content_type"
+                      invoker="guess_content_type"
+                      version="2.18">
+        <doc xml:whitespace="preserve">Tries to guess the type of content stored on @mount. Returns one or
+more textual identifiers of well-known content types (typically
+prefixed with "x-content/"), e.g. x-content/image-dcf for camera
+memory cards. See the &lt;ulink url="http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec"&gt;shared-mime-info&lt;/ulink&gt;
+specification for more on x-content types.
+This is an asynchronous operation (see
+g_mount_guess_content_type_sync() for the synchronous version), and
+is finished by calling g_mount_guess_content_type_finish() with the</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="force_rescan" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Whether to force a rescan of the content. Otherwise a cached result will be used if available</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="3">
+            <doc xml:whitespace="preserve">user data passed to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="guess_content_type_finish"
+                      invoker="guess_content_type_finish"
+                      version="2.18"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes guessing content types of @mount. If any errors occured
+during the operation, @error will be set to contain the errors and
+%FALSE will be returned. In particular, you may get an
+%G_IO_ERROR_NOT_SUPPORTED if the mount does not support content
+guessing.
+Caller should free this array with g_strfreev() when done with it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a %NULL-terminated array of content types or %NULL on error.</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="guess_content_type_sync"
+                      invoker="guess_content_type_sync"
+                      version="2.18"
+                      throws="1">
+        <doc xml:whitespace="preserve">Tries to guess the type of content stored on @mount. Returns one or
+more textual identifiers of well-known content types (typically
+prefixed with "x-content/"), e.g. x-content/image-dcf for camera
+memory cards. See the &lt;ulink url="http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec"&gt;shared-mime-info&lt;/ulink&gt;
+specification for more on x-content types.
+This is an synchronous operation and as such may block doing IO;
+see g_mount_guess_content_type() for the asynchronous version.
+Caller should free this array with g_strfreev() when done with it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a %NULL-terminated array of content types or %NULL on error.</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="force_rescan" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Whether to force a rescan of the content. Otherwise a cached result will be used if available</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remount" invoker="remount">
+        <doc xml:whitespace="preserve">Remounts a mount. This is an asynchronous operation, and is
+finished by calling g_mount_remount_finish() with the @mount
+and #GAsyncResults data returned in the @callback.
+Remounting is useful when some setting affecting the operation
+of the volume has been changed, as these may need a remount to
+take affect. While this is semantically equivalent with unmounting
+and then remounting not all backends might need to actually be
+unmounted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the operation</doc>
+            <type name="MountMountFlags" c:type="GMountMountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remount_finish"
+                      invoker="remount_finish"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes remounting a mount. If any errors occurred during the operation,</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the mount was successfully remounted. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unmount"
+                      invoker="unmount"
+                      deprecated="Use g_mount_unmount_with_operation() instead."
+                      deprecated-version="2.22">
+        <doc xml:whitespace="preserve">Unmounts a mount. This is an asynchronous operation, and is
+finished by calling g_mount_unmount_finish() with the @mount
+and #GAsyncResult data returned in the @callback.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the operation</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="3">
+            <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unmount_finish"
+                      invoker="unmount_finish"
+                      deprecated="Use g_mount_unmount_with_operation_finish() instead."
+                      deprecated-version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes unmounting a mount. If any errors occurred during the operation,</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the mount was successfully unmounted. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unmount_with_operation"
+                      invoker="unmount_with_operation"
+                      version="2.22">
+        <doc xml:whitespace="preserve">Unmounts a mount. This is an asynchronous operation, and is
+finished by calling g_mount_unmount_with_operation_finish() with the @mount
+and #GAsyncResult data returned in the @callback.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the operation</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unmount_with_operation_finish"
+                      invoker="unmount_with_operation_finish"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes unmounting a mount. If any errors occurred during the operation,</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the mount was successfully unmounted. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="can_eject" c:identifier="g_mount_can_eject">
+        <doc xml:whitespace="preserve">Checks if @mount can be eject.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @mount can be ejected.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="can_unmount" c:identifier="g_mount_can_unmount">
+        <doc xml:whitespace="preserve">Checks if @mount can be mounted.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @mount can be unmounted.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="eject"
+              c:identifier="g_mount_eject"
+              deprecated="Use g_mount_eject_with_operation() instead."
+              deprecated-version="2.22">
+        <doc xml:whitespace="preserve">Ejects a mount. This is an asynchronous operation, and is
+finished by calling g_mount_eject_finish() with the @mount
+and #GAsyncResult data returned in the @callback.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the unmount if required for eject</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject_finish"
+              c:identifier="g_mount_eject_finish"
+              deprecated="Use g_mount_eject_with_operation_finish() instead."
+              deprecated-version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes ejecting a mount. If any errors occurred during the operation,</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the mount was successfully ejected. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject_with_operation"
+              c:identifier="g_mount_eject_with_operation"
+              version="2.22">
+        <doc xml:whitespace="preserve">Ejects a mount. This is an asynchronous operation, and is
+finished by calling g_mount_eject_with_operation_finish() with the @mount
+and #GAsyncResult data returned in the @callback.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the unmount if required for eject</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject_with_operation_finish"
+              c:identifier="g_mount_eject_with_operation_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes ejecting a mount. If any errors occurred during the operation,</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the mount was successfully ejected. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_default_location"
+              c:identifier="g_mount_get_default_location">
+        <doc xml:whitespace="preserve">Gets the default location of @mount. The default location of the given
+the home directory, or the root of the volume).
+The returned object should be unreffed with
+g_object_unref() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFile.</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+      </method>
+      <method name="get_drive" c:identifier="g_mount_get_drive">
+        <doc xml:whitespace="preserve">Gets the drive for the @mount.
+This is a convenience method for getting the #GVolume and then
+using that object to get the #GDrive.
+The returned object should be unreffed with
+g_object_unref() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GDrive or %NULL if @mount is not associated with a volume or a drive.</doc>
+          <type name="Drive" c:type="GDrive*"/>
+        </return-value>
+      </method>
+      <method name="get_icon" c:identifier="g_mount_get_icon">
+        <doc xml:whitespace="preserve">Gets the icon for @mount.
+The returned object should be unreffed with
+g_object_unref() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GIcon.</doc>
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </method>
+      <method name="get_name" c:identifier="g_mount_get_name">
+        <doc xml:whitespace="preserve">Gets the name of @mount.
+The returned string should be freed with g_free()
+when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the name for the given @mount.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_root" c:identifier="g_mount_get_root">
+        <doc xml:whitespace="preserve">Gets the root directory on @mount.
+The returned object should be unreffed with
+g_object_unref() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFile.</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+      </method>
+      <method name="get_uuid" c:identifier="g_mount_get_uuid">
+        <doc xml:whitespace="preserve">Gets the UUID for the @mount. The reference is typically based on
+the file system UUID for the mount in question and should be
+considered an opaque string. Returns %NULL if there is no UUID
+available.
+The returned string should be freed with g_free()
+when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the UUID for @mount or %NULL if no UUID can be computed.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_volume" c:identifier="g_mount_get_volume">
+        <doc xml:whitespace="preserve">Gets the volume for the @mount.
+The returned object should be unreffed with
+g_object_unref() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GVolume or %NULL if @mount is not associated with a volume.</doc>
+          <type name="Volume" c:type="GVolume*"/>
+        </return-value>
+      </method>
+      <method name="guess_content_type"
+              c:identifier="g_mount_guess_content_type"
+              version="2.18">
+        <doc xml:whitespace="preserve">Tries to guess the type of content stored on @mount. Returns one or
+more textual identifiers of well-known content types (typically
+prefixed with "x-content/"), e.g. x-content/image-dcf for camera
+memory cards. See the &lt;ulink url="http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec"&gt;shared-mime-info&lt;/ulink&gt;
+specification for more on x-content types.
+This is an asynchronous operation (see
+g_mount_guess_content_type_sync() for the synchronous version), and
+is finished by calling g_mount_guess_content_type_finish() with the</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="force_rescan" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Whether to force a rescan of the content. Otherwise a cached result will be used if available</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="guess_content_type_finish"
+              c:identifier="g_mount_guess_content_type_finish"
+              version="2.18"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes guessing content types of @mount. If any errors occured
+during the operation, @error will be set to contain the errors and
+%FALSE will be returned. In particular, you may get an
+%G_IO_ERROR_NOT_SUPPORTED if the mount does not support content
+guessing.
+Caller should free this array with g_strfreev() when done with it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a %NULL-terminated array of content types or %NULL on error.</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="guess_content_type_sync"
+              c:identifier="g_mount_guess_content_type_sync"
+              version="2.18"
+              throws="1">
+        <doc xml:whitespace="preserve">Tries to guess the type of content stored on @mount. Returns one or
+more textual identifiers of well-known content types (typically
+prefixed with "x-content/"), e.g. x-content/image-dcf for camera
+memory cards. See the &lt;ulink url="http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec"&gt;shared-mime-info&lt;/ulink&gt;
+specification for more on x-content types.
+This is an synchronous operation and as such may block doing IO;
+see g_mount_guess_content_type() for the asynchronous version.
+Caller should free this array with g_strfreev() when done with it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a %NULL-terminated array of content types or %NULL on error.</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="force_rescan" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Whether to force a rescan of the content. Otherwise a cached result will be used if available</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_shadowed"
+              c:identifier="g_mount_is_shadowed"
+              version="2.20">
+        <doc xml:whitespace="preserve">Determines if @mount is shadowed. Applications or libraries should
+avoid displaying @mount in the user interface if it is shadowed.
+A mount is said to be shadowed if there exists one or more user
+visible objects (currently #GMount objects) with a root that is
+inside the root of @mount.
+One application of shadow mounts is when exposing a single file
+system that is used to address several logical volumes. In this
+situation, a #GVolumeMonitor implementation would create two
+#GVolume objects (for example, one for the camera functionality of
+the device and one for a SD card reader on the device) with
+activation URIs &lt;literal&gt;gphoto2://[usb:001,002]/store1/&lt;/literal&gt;
+and &lt;literal&gt;gphoto2://[usb:001,002]/store2/&lt;/literal&gt;. When the
+underlying mount (with root
+&lt;literal&gt;gphoto2://[usb:001,002]/&lt;/literal&gt;) is mounted, said
+#GVolumeMonitor implementation would create two #GMount objects
+(each with their root matching the corresponding volume activation
+root) that would shadow the original mount.
+The proxy monitor in GVfs 2.26 and later, automatically creates and
+manage shadow mounts (and shadows the underlying mount) if the
+activation root on a #GVolume is set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @mount is shadowed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="remount" c:identifier="g_mount_remount">
+        <doc xml:whitespace="preserve">Remounts a mount. This is an asynchronous operation, and is
+finished by calling g_mount_remount_finish() with the @mount
+and #GAsyncResults data returned in the @callback.
+Remounting is useful when some setting affecting the operation
+of the volume has been changed, as these may need a remount to
+take affect. While this is semantically equivalent with unmounting
+and then remounting not all backends might need to actually be
+unmounted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the operation</doc>
+            <type name="MountMountFlags" c:type="GMountMountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remount_finish"
+              c:identifier="g_mount_remount_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes remounting a mount. If any errors occurred during the operation,</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the mount was successfully remounted. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="shadow" c:identifier="g_mount_shadow" version="2.20">
+        <doc xml:whitespace="preserve">Increments the shadow count on @mount. Usually used by
+#GVolumeMonitor implementations when creating a shadow mount for
+will need to emit the #GMount::changed signal on @mount manually.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unmount"
+              c:identifier="g_mount_unmount"
+              deprecated="Use g_mount_unmount_with_operation() instead."
+              deprecated-version="2.22">
+        <doc xml:whitespace="preserve">Unmounts a mount. This is an asynchronous operation, and is
+finished by calling g_mount_unmount_finish() with the @mount
+and #GAsyncResult data returned in the @callback.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the operation</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unmount_finish"
+              c:identifier="g_mount_unmount_finish"
+              deprecated="Use g_mount_unmount_with_operation_finish() instead."
+              deprecated-version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes unmounting a mount. If any errors occurred during the operation,</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the mount was successfully unmounted. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unmount_with_operation"
+              c:identifier="g_mount_unmount_with_operation"
+              version="2.22">
+        <doc xml:whitespace="preserve">Unmounts a mount. This is an asynchronous operation, and is
+finished by calling g_mount_unmount_with_operation_finish() with the @mount
+and #GAsyncResult data returned in the @callback.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the operation</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unmount_with_operation_finish"
+              c:identifier="g_mount_unmount_with_operation_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes unmounting a mount. If any errors occurred during the operation,</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the mount was successfully unmounted. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unshadow" c:identifier="g_mount_unshadow" version="2.20">
+        <doc xml:whitespace="preserve">Decrements the shadow count on @mount. Usually used by
+#GVolumeMonitor implementations when destroying a shadow mount for
+will need to emit the #GMount::changed signal on @mount manually.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <glib:signal name="changed">
+        <doc xml:whitespace="preserve">Emitted when the mount has been changed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="pre-unmount" version="2.22">
+        <doc xml:whitespace="preserve">This signal is emitted when the #GMount is about to be
+unmounted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unmounted">
+        <doc xml:whitespace="preserve">This signal is emitted when the #GMount have been
+unmounted. If the recipient is holding references to the
+object they should release them so the object can be
+finalized.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </interface>
+    <record name="MountIface"
+            c:type="GMountIface"
+            glib:is-gtype-struct-for="Mount">
+      <doc xml:whitespace="preserve">Interface for implementing operations for mounts.</doc>
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="changed">
+        <callback name="changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unmounted">
+        <callback name="unmounted">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_root">
+        <callback name="get_root">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFile.</doc>
+            <type name="File" c:type="GFile*"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_name">
+        <callback name="get_name">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the name for the given @mount.</doc>
+            <type name="utf8" c:type="char*"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_icon">
+        <callback name="get_icon">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GIcon.</doc>
+            <type name="Icon" c:type="GIcon*"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_uuid">
+        <callback name="get_uuid">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the UUID for @mount or %NULL if no UUID can be computed.</doc>
+            <type name="utf8" c:type="char*"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_volume">
+        <callback name="get_volume">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GVolume or %NULL if @mount is not associated with a volume.</doc>
+            <type name="Volume" c:type="GVolume*"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_drive">
+        <callback name="get_drive">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GDrive or %NULL if @mount is not associated with a volume or a drive.</doc>
+            <type name="Drive" c:type="GDrive*"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_unmount">
+        <callback name="can_unmount">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @mount can be unmounted.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_eject">
+        <callback name="can_eject">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @mount can be ejected.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unmount">
+        <callback name="unmount">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">flags affecting the operation</doc>
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="4">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unmount_finish">
+        <callback name="unmount_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the mount was successfully unmounted. %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject">
+        <callback name="eject">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">flags affecting the unmount if required for eject</doc>
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="4">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_finish">
+        <callback name="eject_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the mount was successfully ejected. %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remount">
+        <callback name="remount">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">flags affecting the operation</doc>
+              <type name="MountMountFlags" c:type="GMountMountFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remount_finish">
+        <callback name="remount_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the mount was successfully remounted. %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="guess_content_type">
+        <callback name="guess_content_type">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+            <parameter name="force_rescan" transfer-ownership="none">
+              <doc xml:whitespace="preserve">Whether to force a rescan of the content. Otherwise a cached result will be used if available</doc>
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="4">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <doc xml:whitespace="preserve">user data passed to @callback</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="guess_content_type_finish">
+        <callback name="guess_content_type_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a %NULL-terminated array of content types or %NULL on error.</doc>
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="guess_content_type_sync">
+        <callback name="guess_content_type_sync" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a %NULL-terminated array of content types or %NULL on error.</doc>
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+            <parameter name="force_rescan" transfer-ownership="none">
+              <doc xml:whitespace="preserve">Whether to force a rescan of the content. Otherwise a cached result will be used if available</doc>
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pre_unmount">
+        <callback name="pre_unmount">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unmount_with_operation">
+        <callback name="unmount_with_operation">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">flags affecting the operation</doc>
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unmount_with_operation_finish">
+        <callback name="unmount_with_operation_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the mount was successfully unmounted. %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_with_operation">
+        <callback name="eject_with_operation">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">flags affecting the unmount if required for eject</doc>
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_with_operation_finish">
+        <callback name="eject_with_operation_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the mount was successfully ejected. %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_default_location">
+        <callback name="get_default_location">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFile.</doc>
+            <type name="File" c:type="GFile*"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="MountMountFlags"
+                 glib:type-name="GMountMountFlags"
+                 glib:get-type="g_mount_mount_flags_get_type"
+                 c:type="GMountMountFlags">
+      <doc xml:whitespace="preserve">Flags used when mounting a mount.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="G_MOUNT_MOUNT_NONE"
+              glib:nick="none"/>
+    </enumeration>
+    <class name="MountOperation"
+           c:symbol-prefix="mount_operation"
+           c:type="GMountOperation"
+           parent="GObject.Object"
+           glib:type-name="GMountOperation"
+           glib:get-type="g_mount_operation_get_type"
+           glib:type-struct="MountOperationClass">
+      <doc xml:whitespace="preserve">Class for providing authentication methods for mounting operations,
+such as mounting a file locally, or authenticating with a server.</doc>
+      <constructor name="new" c:identifier="g_mount_operation_new">
+        <doc xml:whitespace="preserve">Creates a new mount operation.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GMountOperation.</doc>
+          <type name="MountOperation" c:type="GMountOperation*"/>
+        </return-value>
+      </constructor>
+      <method name="get_anonymous"
+              c:identifier="g_mount_operation_get_anonymous">
+        <doc xml:whitespace="preserve">Check to see whether the mount operation is being used
+for an anonymous user.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if mount operation is anonymous.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_choice" c:identifier="g_mount_operation_get_choice">
+        <doc xml:whitespace="preserve">Gets a choice from the mount operation.
+the choice's list, or %0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an integer containing an index of the user's choice from</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_domain" c:identifier="g_mount_operation_get_domain">
+        <doc xml:whitespace="preserve">Gets the domain of the mount operation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string set to the domain.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_password"
+              c:identifier="g_mount_operation_get_password">
+        <doc xml:whitespace="preserve">Gets a password from the mount operation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the password within @op.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_password_save"
+              c:identifier="g_mount_operation_get_password_save">
+        <doc xml:whitespace="preserve">Gets the state of saving passwords for the mount operation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GPasswordSave flag.</doc>
+          <type name="PasswordSave" c:type="GPasswordSave"/>
+        </return-value>
+      </method>
+      <method name="get_username"
+              c:identifier="g_mount_operation_get_username">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="reply" c:identifier="g_mount_operation_reply">
+        <doc xml:whitespace="preserve">Emits the #GMountOperation::reply signal.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperationResult</doc>
+            <type name="MountOperationResult" c:type="GMountOperationResult"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_anonymous"
+              c:identifier="g_mount_operation_set_anonymous">
+        <doc xml:whitespace="preserve">Sets the mount operation to use an anonymous user if @anonymous is %TRUE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="anonymous" transfer-ownership="none">
+            <doc xml:whitespace="preserve">boolean value.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_choice" c:identifier="g_mount_operation_set_choice">
+        <doc xml:whitespace="preserve">Sets a default choice for the mount operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="choice" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an integer.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_domain" c:identifier="g_mount_operation_set_domain">
+        <doc xml:whitespace="preserve">Sets the mount operation's domain.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="domain" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the domain to set.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_password"
+              c:identifier="g_mount_operation_set_password">
+        <doc xml:whitespace="preserve">Sets the mount operation's password to @password.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="password" transfer-ownership="none">
+            <doc xml:whitespace="preserve">password to set.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_password_save"
+              c:identifier="g_mount_operation_set_password_save">
+        <doc xml:whitespace="preserve">Sets the state of saving passwords for the mount operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="save" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GPasswordSave flags.</doc>
+            <type name="PasswordSave" c:type="GPasswordSave"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_username"
+              c:identifier="g_mount_operation_set_username">
+        <doc xml:whitespace="preserve">Sets the user name within @op to @username.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="username" transfer-ownership="none">
+            <doc xml:whitespace="preserve">input username.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="anonymous" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether to use an anonymous user when authenticating.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="choice" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The index of the user's choice when a question is asked during the
+mount operation. See the #GMountOperation::ask-question signal.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="domain" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The domain to use for the mount operation.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="password" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The password that is used for authentication when carrying out
+the mount operation.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="password-save" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Determines if and how the password information should be saved.</doc>
+        <type name="PasswordSave"/>
+      </property>
+      <property name="username" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The user name that is used for authentication when carrying out
+the mount operation.</doc>
+        <type name="utf8"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="MountOperationPrivate" c:type="GMountOperationPrivate*"/>
+      </field>
+      <glib:signal name="aborted" version="2.20">
+        <doc xml:whitespace="preserve">Emitted by the backend when e.g. a device becomes unavailable
+while a mount operation is in progress.
+Implementations of GMountOperation should handle this signal
+by dismissing open password dialogs.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="ask-password">
+        <doc xml:whitespace="preserve">Emitted when a mount operation asks the user for a password.
+If the message contains a line break, the first line should be
+presented as a heading. For example, it may be used as the
+primary text in a #GtkMessageDialog.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">string containing a message to display to the user.</doc>
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">string containing the default user name.</doc>
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">string containing the default domain.</doc>
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="p2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GAskPasswordFlags.</doc>
+            <type name="AskPasswordFlags"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="ask-question" introspectable="0">
+        <doc xml:whitespace="preserve">Emitted when asking the user a question and gives a list of
+choices for the user to choose from.
+If the message contains a line break, the first line should be
+presented as a heading. For example, it may be used as the
+primary text in a #GtkMessageDialog.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">string containing a message to display to the user.</doc>
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of strings for each possible choice.</doc>
+            <type/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="reply">
+        <doc xml:whitespace="preserve">Emitted when the user has replied to the mount operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperationResult indicating how the request was handled</doc>
+            <type name="MountOperationResult"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="show-processes" version="2.22" introspectable="0">
+        <doc xml:whitespace="preserve">Emitted when one or more processes are blocking an operation
+e.g. unmounting/ejecting a #GMount or stopping a #GDrive.
+Note that this signal may be emitted several times to update the
+list of blocking processes as processes close files. The
+application should only respond with g_mount_operation_reply() to
+the latest signal (setting #GMountOperation:choice to the choice
+the user made).
+If the message contains a line break, the first line should be
+presented as a heading. For example, it may be used as the
+primary text in a #GtkMessageDialog.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">string containing a message to display to the user.</doc>
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of #GPid for processes blocking the operation.</doc>
+            <array name="GLib.Array">
+              <type name="gpointer" c:type="gpointer"/>
+            </array>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of strings for each possible choice.</doc>
+            <type/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="MountOperationClass"
+            c:type="GMountOperationClass"
+            glib:is-gtype-struct-for="MountOperation">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="ask_password">
+        <callback name="ask_password">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="op" transfer-ownership="none">
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="message" transfer-ownership="none">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="default_user" transfer-ownership="none">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="default_domain" transfer-ownership="none">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="AskPasswordFlags" c:type="GAskPasswordFlags"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="ask_question">
+        <callback name="ask_question">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="op" transfer-ownership="none">
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="message" transfer-ownership="none">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="choices" transfer-ownership="none">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="reply">
+        <callback name="reply">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="op" transfer-ownership="none">
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <type name="MountOperationResult"
+                    c:type="GMountOperationResult"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="aborted">
+        <callback name="aborted">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="op" transfer-ownership="none">
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="show_processes">
+        <callback name="show_processes">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="op" transfer-ownership="none">
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="message" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="processes" transfer-ownership="none">
+              <array name="GLib.Array" c:type="GArray*">
+                <type name="gpointer" c:type="gpointer"/>
+              </array>
+            </parameter>
+            <parameter name="choices" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved6" introspectable="0">
+        <callback name="_g_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved7" introspectable="0">
+        <callback name="_g_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved8" introspectable="0">
+        <callback name="_g_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved9" introspectable="0">
+        <callback name="_g_reserved9">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved10" introspectable="0">
+        <callback name="_g_reserved10">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="MountOperationPrivate"
+            c:type="GMountOperationPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="MountOperationResult"
+                 glib:type-name="GMountOperationResult"
+                 glib:get-type="g_mount_operation_result_get_type"
+                 c:type="GMountOperationResult">
+      <doc xml:whitespace="preserve">#GMountOperationResult is returned as a result when a request for
+information is send by the mounting operation.</doc>
+      <member name="handled"
+              value="0"
+              c:identifier="G_MOUNT_OPERATION_HANDLED"
+              glib:nick="handled"/>
+      <member name="aborted"
+              value="1"
+              c:identifier="G_MOUNT_OPERATION_ABORTED"
+              glib:nick="aborted"/>
+      <member name="unhandled"
+              value="2"
+              c:identifier="G_MOUNT_OPERATION_UNHANDLED"
+              glib:nick="unhandled"/>
+    </enumeration>
+    <bitfield name="MountUnmountFlags"
+              glib:type-name="GMountUnmountFlags"
+              glib:get-type="g_mount_unmount_flags_get_type"
+              c:type="GMountUnmountFlags">
+      <doc xml:whitespace="preserve">Flags used when an unmounting a mount.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="G_MOUNT_UNMOUNT_NONE"
+              glib:nick="none"/>
+      <member name="force"
+              value="1"
+              c:identifier="G_MOUNT_UNMOUNT_FORCE"
+              glib:nick="force"/>
+    </bitfield>
+    <constant name="NATIVE_VOLUME_MONITOR_EXTENSION_POINT_NAME"
+              value="gio-native-volume-monitor">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <class name="NativeVolumeMonitor"
+           c:symbol-prefix="native_volume_monitor"
+           c:type="GNativeVolumeMonitor"
+           parent="VolumeMonitor"
+           abstract="1"
+           glib:type-name="GNativeVolumeMonitor"
+           glib:get-type="g_native_volume_monitor_get_type"
+           glib:type-struct="NativeVolumeMonitorClass">
+      <field name="parent_instance">
+        <type name="VolumeMonitor" c:type="GVolumeMonitor"/>
+      </field>
+    </class>
+    <record name="NativeVolumeMonitorClass"
+            c:type="GNativeVolumeMonitorClass"
+            glib:is-gtype-struct-for="NativeVolumeMonitor">
+      <field name="parent_class">
+        <type name="VolumeMonitorClass" c:type="GVolumeMonitorClass"/>
+      </field>
+      <field name="get_mount_for_mount_path" introspectable="0">
+        <callback name="get_mount_for_mount_path" introspectable="0">
+          <return-value>
+            <type name="Mount" c:type="GMount*"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount_path" transfer-ownership="none">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="cancellable" transfer-ownership="none">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="NetworkAddress"
+           c:symbol-prefix="network_address"
+           c:type="GNetworkAddress"
+           parent="GObject.Object"
+           glib:type-name="GNetworkAddress"
+           glib:get-type="g_network_address_get_type"
+           glib:type-struct="NetworkAddressClass">
+      <doc xml:whitespace="preserve">A #GSocketConnectable for resolving a hostname and connecting to
+that host.</doc>
+      <implements name="SocketConnectable"/>
+      <function name="new" c:identifier="g_network_address_new" version="2.22">
+        <doc xml:whitespace="preserve">Creates a new #GSocketConnectable for connecting to the given</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GNetworkAddress</doc>
+          <type name="SocketConnectable" c:type="GSocketConnectable*"/>
+        </return-value>
+        <parameters>
+          <parameter name="hostname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the hostname</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="port" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the port</doc>
+            <type name="guint16" c:type="guint16"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="parse"
+                c:identifier="g_network_address_parse"
+                version="2.22"
+                throws="1">
+        <doc xml:whitespace="preserve">Creates a new #GSocketConnectable for connecting to the given
+parsing @host_and_port fails.
+address, an IPv4 address, or a domain name (in which case a DNS
+lookup is performed). Quoting with [] is supported for all address
+types. A port override may be specified in the usual way with a
+colon. Ports may be given as decimal numbers or symbolic names (in
+which case an /etc/services lookup is performed).
+If no port is specified in @host_and_port then @default_port will be
+used as the port number to connect to.
+In general, @host_and_port is expected to be provided by the user
+(allowing them to give the hostname, and a port overide if necessary)
+and @default_port is expected to be provided by the application.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GNetworkAddress, or %NULL on error</doc>
+          <type name="SocketConnectable" c:type="GSocketConnectable*"/>
+        </return-value>
+        <parameters>
+          <parameter name="host_and_port" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the hostname and optionally a port</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="default_port" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the default port if not in @host_and_port</doc>
+            <type name="guint16" c:type="guint16"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="parse_uri"
+                c:identifier="g_network_address_parse_uri"
+                version="2.26"
+                throws="1">
+        <doc xml:whitespace="preserve">Creates a new #GSocketConnectable for connecting to the given
+Using this rather than g_network_address_new() or
+g_network_address_parse_host() allows #GSocketClient to determine
+when to use application-specific proxy protocols.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GNetworkAddress, or %NULL on error</doc>
+          <type name="SocketConnectable" c:type="GSocketConnectable*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the hostname and optionally a port</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="default_port" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The default port if none is found in the URI</doc>
+            <type name="guint16" c:type="guint16"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_hostname"
+              c:identifier="g_network_address_get_hostname"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets @addr's hostname. This might be either UTF-8 or ASCII-encoded,
+depending on what @addr was created with.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">@addr's hostname</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_port"
+              c:identifier="g_network_address_get_port"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets @addr's port number</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">@addr's port (which may be 0)</doc>
+          <type name="guint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <method name="get_scheme"
+              c:identifier="g_network_address_get_scheme"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets @addr's scheme</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">@addr's scheme (%NULL if not built from URI)</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <property name="hostname"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="port"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <property name="scheme"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="NetworkAddressPrivate" c:type="GNetworkAddressPrivate*"/>
+      </field>
+    </class>
+    <record name="NetworkAddressClass"
+            c:type="GNetworkAddressClass"
+            glib:is-gtype-struct-for="NetworkAddress">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <record name="NetworkAddressPrivate"
+            c:type="GNetworkAddressPrivate"
+            disguised="1">
+    </record>
+    <class name="NetworkService"
+           c:symbol-prefix="network_service"
+           c:type="GNetworkService"
+           parent="GObject.Object"
+           glib:type-name="GNetworkService"
+           glib:get-type="g_network_service_get_type"
+           glib:type-struct="NetworkServiceClass">
+      <doc xml:whitespace="preserve">A #GSocketConnectable for resolving a SRV record and connecting to
+that service.</doc>
+      <implements name="SocketConnectable"/>
+      <function name="new" c:identifier="g_network_service_new" version="2.22">
+        <doc xml:whitespace="preserve">Creates a new #GNetworkService representing the given @service,
+#GSocketConnectable interface to resolve it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GNetworkService</doc>
+          <type name="SocketConnectable" c:type="GSocketConnectable*"/>
+        </return-value>
+        <parameters>
+          <parameter name="service" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the service type to look up (eg, "ldap")</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="protocol" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the networking protocol to use for @service (eg, "tcp")</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="domain" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the DNS domain to look up the service in</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_domain"
+              c:identifier="g_network_service_get_domain"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the domain that @srv serves. This might be either UTF-8 or
+ASCII-encoded, depending on what @srv was created with.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">@srv's domain name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_protocol"
+              c:identifier="g_network_service_get_protocol"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets @srv's protocol name (eg, "tcp").</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">@srv's protocol name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_scheme"
+              c:identifier="g_network_service_get_scheme"
+              version="2.26">
+        <doc xml:whitespace="preserve">Get's the URI scheme used to resolve proxies. By default, the service name
+is used as scheme.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">@srv's scheme name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_service"
+              c:identifier="g_network_service_get_service"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets @srv's service name (eg, "ldap").</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">@srv's service name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_scheme"
+              c:identifier="g_network_service_set_scheme"
+              version="2.26">
+        <doc xml:whitespace="preserve">Set's the URI scheme used to resolve proxies. By default, the service name
+is used as scheme.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scheme" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a URI scheme</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="domain"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="protocol"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="scheme" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="service"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="NetworkServicePrivate" c:type="GNetworkServicePrivate*"/>
+      </field>
+    </class>
+    <record name="NetworkServiceClass"
+            c:type="GNetworkServiceClass"
+            glib:is-gtype-struct-for="NetworkService">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <record name="NetworkServicePrivate"
+            c:type="GNetworkServicePrivate"
+            disguised="1">
+    </record>
+    <class name="OutputStream"
+           c:symbol-prefix="output_stream"
+           c:type="GOutputStream"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GOutputStream"
+           glib:get-type="g_output_stream_get_type"
+           glib:type-struct="OutputStreamClass">
+      <doc xml:whitespace="preserve">Base class for writing output.
+All classes derived from GOutputStream should implement synchronous
+writing, splicing, flushing and closing streams, but may implement
+asynchronous versions.</doc>
+      <virtual-method name="close_async" invoker="close_async">
+        <doc xml:whitespace="preserve">Requests an asynchronous close of the stream, releasing resources
+related to it. When the operation is finished @callback will be
+called. You can then call g_output_stream_close_finish() to get
+the result of the operation.
+For behaviour details see g_output_stream_close().
+The asyncronous methods have a default fallback that uses threads
+to implement asynchronicity, so they are optional for inheriting
+classes. However, if you override one you must override all.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the io priority of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional cancellable object</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="3">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="close_finish" invoker="close_finish" throws="1">
+        <doc xml:whitespace="preserve">Closes an output stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if stream was successfully closed, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="close_fn" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable" transfer-ownership="none">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="flush" invoker="flush" throws="1">
+        <doc xml:whitespace="preserve">Flushed any outstanding buffers in the stream. Will block during
+the operation. Closing the stream will implicitly cause a flush.
+This function is optional for inherited classes.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional cancellable object</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="flush_async" invoker="flush_async">
+        <doc xml:whitespace="preserve">Flushes a stream asynchronously.
+For behaviour details see g_output_stream_flush().
+When the operation is finished @callback will be
+called. You can then call g_output_stream_flush_finish() to get the
+result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the io priority of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="3">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="flush_finish" invoker="flush_finish" throws="1">
+        <doc xml:whitespace="preserve">Finishes flushing an output stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if flush operation suceeded, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="splice" invoker="splice" throws="1">
+        <doc xml:whitespace="preserve">Splices an input stream into an output stream.
+-1 if an error occurred.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #gssize containing the size of the data spliced, or</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GInputStream.</doc>
+            <type name="InputStream" c:type="GInputStream*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GOutputStreamSpliceFlags.</doc>
+            <type name="OutputStreamSpliceFlags"
+                  c:type="GOutputStreamSpliceFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="splice_async" invoker="splice_async">
+        <doc xml:whitespace="preserve">Splices a stream asynchronously.
+When the operation is finished @callback will be called.
+You can then call g_output_stream_splice_finish() to get the
+result of the operation.
+For the synchronous, blocking version of this function, see
+g_output_stream_splice().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GInputStream.</doc>
+            <type name="InputStream" c:type="GInputStream*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GOutputStreamSpliceFlags.</doc>
+            <type name="OutputStreamSpliceFlags"
+                  c:type="GOutputStreamSpliceFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the io priority of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="splice_finish" invoker="splice_finish" throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous stream splice operation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #gssize of the number of bytes spliced.</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="write_async" invoker="write_async">
+        <doc xml:whitespace="preserve">Request an asynchronous write of @count bytes from @buffer into
+the stream. When the operation is finished @callback will be called.
+You can then call g_output_stream_write_finish() to get the result of the
+operation.
+During an async request no other sync and async calls are allowed,
+and will result in %G_IO_ERROR_PENDING errors.
+A value of @count larger than %G_MAXSSIZE will cause a
+%G_IO_ERROR_INVALID_ARGUMENT error.
+On success, the number of bytes written will be passed to the
+requested size, as it can happen e.g. on a partial I/O error,
+but generally we try to write as many bytes as requested.
+You are guaranteed that this method will never fail with
+%G_IO_ERROR_WOULD_BLOCK - if @stream can't accept more data, the
+method will just wait until this changes.
+Any outstanding I/O request with higher priority (lower numerical
+value) will be executed before an outstanding request with lower
+priority. Default priority is %G_PRIORITY_DEFAULT.
+The asyncronous methods have a default fallback that uses threads
+to implement asynchronicity, so they are optional for inheriting
+classes. However, if you override one you must override all.
+For the synchronous, blocking version of this function, see
+g_output_stream_write().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the buffer containing the data to write.</doc>
+            <array length="1" c:type="void*">
+              <type name="guint8"/>
+            </array>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes to write</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the io priority of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="write_finish" invoker="write_finish" throws="1">
+        <doc xml:whitespace="preserve">Finishes a stream write operation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #gssize containing the number of bytes written to the stream.</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="write_fn" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="gpointer" c:type="void*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="cancellable" transfer-ownership="none">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="clear_pending"
+              c:identifier="g_output_stream_clear_pending">
+        <doc xml:whitespace="preserve">Clears the pending flag on @stream.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="close" c:identifier="g_output_stream_close" throws="1">
+        <doc xml:whitespace="preserve">Closes the stream, releasing resources related to it.
+Once the stream is closed, all other operations will return %G_IO_ERROR_CLOSED.
+Closing a stream multiple times will not return an error.
+Closing a stream will automatically flush any outstanding buffers in the
+stream.
+Streams will be automatically closed when the last reference
+is dropped, but you might want to call this function to make sure
+resources are released as early as possible.
+Some streams might keep the backing store of the stream (e.g. a file descriptor)
+open after the stream is closed. See the documentation for the individual
+stream for details.
+On failure the first error that happened will be reported, but the close
+operation will finish as much as possible. A stream that failed to
+close will still return %G_IO_ERROR_CLOSED for all operations. Still, it
+is important to check and report the error to the user, otherwise
+there might be a loss of data as all data might not be written.
+If @cancellable is not NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+Cancelling a close will still leave the stream closed, but there some streams
+can use a faster close that doesn't block to e.g. check errors. On
+cancellation (as with any error) there is no guarantee that all written
+data will reach the target.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on failure</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional cancellable object</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close_async" c:identifier="g_output_stream_close_async">
+        <doc xml:whitespace="preserve">Requests an asynchronous close of the stream, releasing resources
+related to it. When the operation is finished @callback will be
+called. You can then call g_output_stream_close_finish() to get
+the result of the operation.
+For behaviour details see g_output_stream_close().
+The asyncronous methods have a default fallback that uses threads
+to implement asynchronicity, so they are optional for inheriting
+classes. However, if you override one you must override all.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the io priority of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional cancellable object</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close_finish"
+              c:identifier="g_output_stream_close_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Closes an output stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if stream was successfully closed, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="flush" c:identifier="g_output_stream_flush" throws="1">
+        <doc xml:whitespace="preserve">Flushed any outstanding buffers in the stream. Will block during
+the operation. Closing the stream will implicitly cause a flush.
+This function is optional for inherited classes.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional cancellable object</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="flush_async" c:identifier="g_output_stream_flush_async">
+        <doc xml:whitespace="preserve">Flushes a stream asynchronously.
+For behaviour details see g_output_stream_flush().
+When the operation is finished @callback will be
+called. You can then call g_output_stream_flush_finish() to get the
+result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the io priority of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="flush_finish"
+              c:identifier="g_output_stream_flush_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes flushing an output stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if flush operation suceeded, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_pending" c:identifier="g_output_stream_has_pending">
+        <doc xml:whitespace="preserve">Checks if an ouput stream has pending actions.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @stream has pending actions.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_closed" c:identifier="g_output_stream_is_closed">
+        <doc xml:whitespace="preserve">Checks if an output stream has already been closed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @stream is closed. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_closing"
+              c:identifier="g_output_stream_is_closing"
+              version="2.24">
+        <doc xml:whitespace="preserve">Checks if an output stream is being closed. This can be
+used inside e.g. a flush implementation to see if the
+flush (or other i/o operation) is called from within
+the closing operation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @stream is being closed. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_pending"
+              c:identifier="g_output_stream_set_pending"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets @stream to have actions pending. If the pending flag is
+already set or @stream is closed, it will return %FALSE and set</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if pending was previously unset and is now set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="splice" c:identifier="g_output_stream_splice" throws="1">
+        <doc xml:whitespace="preserve">Splices an input stream into an output stream.
+-1 if an error occurred.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #gssize containing the size of the data spliced, or</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GInputStream.</doc>
+            <type name="InputStream" c:type="GInputStream*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GOutputStreamSpliceFlags.</doc>
+            <type name="OutputStreamSpliceFlags"
+                  c:type="GOutputStreamSpliceFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="splice_async" c:identifier="g_output_stream_splice_async">
+        <doc xml:whitespace="preserve">Splices a stream asynchronously.
+When the operation is finished @callback will be called.
+You can then call g_output_stream_splice_finish() to get the
+result of the operation.
+For the synchronous, blocking version of this function, see
+g_output_stream_splice().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GInputStream.</doc>
+            <type name="InputStream" c:type="GInputStream*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a set of #GOutputStreamSpliceFlags.</doc>
+            <type name="OutputStreamSpliceFlags"
+                  c:type="GOutputStreamSpliceFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the io priority of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="splice_finish"
+              c:identifier="g_output_stream_splice_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous stream splice operation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #gssize of the number of bytes spliced.</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="write" c:identifier="g_output_stream_write" throws="1">
+        <doc xml:whitespace="preserve">Tries to write @count bytes from @buffer into the stream. Will block
+during the operation.
+If count is 0, returns 0 and does nothing. A value of @count
+larger than %G_MAXSSIZE will cause a %G_IO_ERROR_INVALID_ARGUMENT error.
+On success, the number of bytes written to the stream is returned.
+It is not an error if this is not the same as the requested size, as it
+can happen e.g. on a partial I/O error, or if there is not enough
+storage in the stream. All writes block until at least one byte
+is written or an error occurs; 0 is never returned (unless
+If @cancellable is not NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
+operation was partially finished when the operation was cancelled the
+partial result will be returned, without an error.
+On error -1 is returned and @error is set accordingly.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Number of bytes written, or -1 on error</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the buffer containing the data to write.</doc>
+            <array length="1" c:type="void*">
+              <type name="guint8"/>
+            </array>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes to write</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional cancellable object</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="write_all"
+              c:identifier="g_output_stream_write_all"
+              throws="1">
+        <doc xml:whitespace="preserve">Tries to write @count bytes from @buffer into the stream. Will block
+during the operation.
+This function is similar to g_output_stream_write(), except it tries to
+write as many bytes as requested, only stopping on an error.
+On a successful write of @count bytes, %TRUE is returned, and @bytes_written
+is set to @count.
+If there is an error during the operation FALSE is returned and @error
+is set to indicate the error status, @bytes_written is updated to contain
+the number of bytes written into the stream before the error occurred.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE if there was an error</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the buffer containing the data to write.</doc>
+            <array length="1" c:type="void*">
+              <type name="guint8"/>
+            </array>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes to write</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="bytes_written" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the number of bytes that was written to the stream</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="write_async" c:identifier="g_output_stream_write_async">
+        <doc xml:whitespace="preserve">Request an asynchronous write of @count bytes from @buffer into
+the stream. When the operation is finished @callback will be called.
+You can then call g_output_stream_write_finish() to get the result of the
+operation.
+During an async request no other sync and async calls are allowed,
+and will result in %G_IO_ERROR_PENDING errors.
+A value of @count larger than %G_MAXSSIZE will cause a
+%G_IO_ERROR_INVALID_ARGUMENT error.
+On success, the number of bytes written will be passed to the
+requested size, as it can happen e.g. on a partial I/O error,
+but generally we try to write as many bytes as requested.
+You are guaranteed that this method will never fail with
+%G_IO_ERROR_WOULD_BLOCK - if @stream can't accept more data, the
+method will just wait until this changes.
+Any outstanding I/O request with higher priority (lower numerical
+value) will be executed before an outstanding request with lower
+priority. Default priority is %G_PRIORITY_DEFAULT.
+The asyncronous methods have a default fallback that uses threads
+to implement asynchronicity, so they are optional for inheriting
+classes. However, if you override one you must override all.
+For the synchronous, blocking version of this function, see
+g_output_stream_write().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the buffer containing the data to write.</doc>
+            <array length="1" c:type="void*">
+              <type name="guint8"/>
+            </array>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes to write</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the io priority of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="write_finish"
+              c:identifier="g_output_stream_write_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes a stream write operation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #gssize containing the number of bytes written to the stream.</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="OutputStreamPrivate" c:type="GOutputStreamPrivate*"/>
+      </field>
+    </class>
+    <record name="OutputStreamClass"
+            c:type="GOutputStreamClass"
+            glib:is-gtype-struct-for="OutputStream">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="write_fn">
+        <callback name="write_fn" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="glong" c:type="gssize"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="OutputStream" c:type="GOutputStream*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="gpointer" c:type="void*"/>
+            </parameter>
+            <parameter name="count" transfer-ownership="none">
+              <type name="gulong" c:type="gsize"/>
+            </parameter>
+            <parameter name="cancellable" transfer-ownership="none">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="splice">
+        <callback name="splice" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gssize containing the size of the data spliced, or</doc>
+            <type name="glong" c:type="gssize"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="OutputStream" c:type="GOutputStream*"/>
+            </parameter>
+            <parameter name="source" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GInputStream.</doc>
+              <type name="InputStream" c:type="GInputStream*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a set of #GOutputStreamSpliceFlags.</doc>
+              <type name="OutputStreamSpliceFlags"
+                    c:type="GOutputStreamSpliceFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="flush">
+        <callback name="flush" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="OutputStream" c:type="GOutputStream*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional cancellable object</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_fn">
+        <callback name="close_fn" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="OutputStream" c:type="GOutputStream*"/>
+            </parameter>
+            <parameter name="cancellable" transfer-ownership="none">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="write_async">
+        <callback name="write_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="OutputStream" c:type="GOutputStream*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the buffer containing the data to write.</doc>
+              <array length="2" c:type="void*">
+                <type name="guint8"/>
+              </array>
+            </parameter>
+            <parameter name="count" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the number of bytes to write</doc>
+              <type name="gulong" c:type="gsize"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the io priority of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="6">
+              <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="6">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="write_finish">
+        <callback name="write_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gssize containing the number of bytes written to the stream.</doc>
+            <type name="glong" c:type="gssize"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="OutputStream" c:type="GOutputStream*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="splice_async">
+        <callback name="splice_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="OutputStream" c:type="GOutputStream*"/>
+            </parameter>
+            <parameter name="source" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GInputStream.</doc>
+              <type name="InputStream" c:type="GInputStream*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a set of #GOutputStreamSpliceFlags.</doc>
+              <type name="OutputStreamSpliceFlags"
+                    c:type="GOutputStreamSpliceFlags"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the io priority of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="6">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback.</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="splice_finish">
+        <callback name="splice_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gssize of the number of bytes spliced.</doc>
+            <type name="glong" c:type="gssize"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="OutputStream" c:type="GOutputStream*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="flush_async">
+        <callback name="flush_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="OutputStream" c:type="GOutputStream*"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the io priority of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="4">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="flush_finish">
+        <callback name="flush_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if flush operation suceeded, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="OutputStream" c:type="GOutputStream*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_async">
+        <callback name="close_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="OutputStream" c:type="GOutputStream*"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the io priority of the request.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional cancellable object</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="4">
+              <doc xml:whitespace="preserve">callback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_finish">
+        <callback name="close_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if stream was successfully closed, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stream" transfer-ownership="none">
+              <type name="OutputStream" c:type="GOutputStream*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved6" introspectable="0">
+        <callback name="_g_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved7" introspectable="0">
+        <callback name="_g_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved8" introspectable="0">
+        <callback name="_g_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="OutputStreamPrivate"
+            c:type="GOutputStreamPrivate"
+            disguised="1">
+    </record>
+    <bitfield name="OutputStreamSpliceFlags"
+              glib:type-name="GOutputStreamSpliceFlags"
+              glib:get-type="g_output_stream_splice_flags_get_type"
+              c:type="GOutputStreamSpliceFlags">
+      <doc xml:whitespace="preserve">GOutputStreamSpliceFlags determine how streams should be spliced.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="G_OUTPUT_STREAM_SPLICE_NONE"
+              glib:nick="none"/>
+      <member name="close_source"
+              value="1"
+              c:identifier="G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE"
+              glib:nick="close-source"/>
+      <member name="close_target"
+              value="2"
+              c:identifier="G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET"
+              glib:nick="close-target"/>
+    </bitfield>
+    <record name="OutputVector" c:type="GOutputVector" version="2.22">
+      <doc xml:whitespace="preserve">Structure used for scatter/gather data output.
+You generally pass in an array of #GOutputVector&lt;!-- --&gt;s
+and the operation will use all the buffers as if they were
+one buffer.</doc>
+      <field name="buffer" writable="1">
+        <type name="gpointer" c:type="gconstpointer"/>
+      </field>
+      <field name="size" writable="1">
+        <type name="gulong" c:type="gsize"/>
+      </field>
+    </record>
+    <constant name="PROXY_EXTENSION_POINT_NAME" value="gio-proxy">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PROXY_RESOLVER_EXTENSION_POINT_NAME"
+              value="gio-proxy-resolver">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <enumeration name="PasswordSave"
+                 glib:type-name="GPasswordSave"
+                 glib:get-type="g_password_save_get_type"
+                 c:type="GPasswordSave">
+      <doc xml:whitespace="preserve">#GPasswordSave is used to indicate the lifespan of a saved password.
+#Gvfs stores passwords in the Gnome keyring when this flag allows it
+to, and later retrieves it again from there.</doc>
+      <member name="never"
+              value="0"
+              c:identifier="G_PASSWORD_SAVE_NEVER"
+              glib:nick="never"/>
+      <member name="for_session"
+              value="1"
+              c:identifier="G_PASSWORD_SAVE_FOR_SESSION"
+              glib:nick="for-session"/>
+      <member name="permanently"
+              value="2"
+              c:identifier="G_PASSWORD_SAVE_PERMANENTLY"
+              glib:nick="permanently"/>
+    </enumeration>
+    <class name="Permission"
+           c:symbol-prefix="permission"
+           c:type="GPermission"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GPermission"
+           glib:get-type="g_permission_get_type"
+           glib:type-struct="PermissionClass">
+      <doc xml:whitespace="preserve">#GPermission is an opaque data structure and can only be accessed
+using the following functions.</doc>
+      <virtual-method name="acquire"
+                      invoker="acquire"
+                      version="2.26"
+                      throws="1">
+        <doc xml:whitespace="preserve">Attempts to acquire the permission represented by @permission.
+The precise method by which this happens depends on the permission
+and the underlying authentication mechanism.  A simple example is
+that a dialog may appear asking the user to enter their password.
+You should check with g_permission_get_can_acquire() before calling
+this function.
+If the permission is acquired then %TRUE is returned.  Otherwise,
+%FALSE is returned and @error is set appropriately.
+This call is blocking, likely for a very long time (in the case that
+user interaction is required).  See g_permission_acquire_async() for
+the non-blocking version.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the permission was successfully acquired</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="acquire_async"
+                      invoker="acquire_async"
+                      version="2.26">
+        <doc xml:whitespace="preserve">Attempts to acquire the permission represented by @permission.
+This is the first half of the asynchronous version of
+g_permission_acquire().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="2">
+            <doc xml:whitespace="preserve">the #GAsyncReadyCallback to call when done</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="2">
+            <doc xml:whitespace="preserve">the user data to pass to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="acquire_finish"
+                      invoker="acquire_finish"
+                      version="2.26"
+                      throws="1">
+        <doc xml:whitespace="preserve">Collects the result of attempting to acquire the permission
+represented by @permission.
+This is the second half of the asynchronous version of
+g_permission_acquire().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the permission was successfully acquired</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GAsyncResult given to the #GAsyncReadyCallback</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="release"
+                      invoker="release"
+                      version="2.26"
+                      throws="1">
+        <doc xml:whitespace="preserve">Attempts to release the permission represented by @permission.
+The precise method by which this happens depends on the permission
+and the underlying authentication mechanism.  In most cases the
+permission will be dropped immediately without further action.
+You should check with g_permission_get_can_release() before calling
+this function.
+If the permission is released then %TRUE is returned.  Otherwise,
+%FALSE is returned and @error is set appropriately.
+This call is blocking, likely for a very long time (in the case that
+user interaction is required).  See g_permission_release_async() for
+the non-blocking version.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the permission was successfully released</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="release_async"
+                      invoker="release_async"
+                      version="2.26">
+        <doc xml:whitespace="preserve">Attempts to release the permission represented by @permission.
+This is the first half of the asynchronous version of
+g_permission_release().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="2">
+            <doc xml:whitespace="preserve">the #GAsyncReadyCallback to call when done</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="2">
+            <doc xml:whitespace="preserve">the user data to pass to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="release_finish"
+                      invoker="release_finish"
+                      version="2.26"
+                      throws="1">
+        <doc xml:whitespace="preserve">Collects the result of attempting to release the permission
+represented by @permission.
+This is the second half of the asynchronous version of
+g_permission_release().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the permission was successfully released</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GAsyncResult given to the #GAsyncReadyCallback</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="acquire"
+              c:identifier="g_permission_acquire"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Attempts to acquire the permission represented by @permission.
+The precise method by which this happens depends on the permission
+and the underlying authentication mechanism.  A simple example is
+that a dialog may appear asking the user to enter their password.
+You should check with g_permission_get_can_acquire() before calling
+this function.
+If the permission is acquired then %TRUE is returned.  Otherwise,
+%FALSE is returned and @error is set appropriately.
+This call is blocking, likely for a very long time (in the case that
+user interaction is required).  See g_permission_acquire_async() for
+the non-blocking version.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the permission was successfully acquired</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="acquire_async"
+              c:identifier="g_permission_acquire_async"
+              version="2.26">
+        <doc xml:whitespace="preserve">Attempts to acquire the permission represented by @permission.
+This is the first half of the asynchronous version of
+g_permission_acquire().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="2">
+            <doc xml:whitespace="preserve">the #GAsyncReadyCallback to call when done</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the user data to pass to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="acquire_finish"
+              c:identifier="g_permission_acquire_finish"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Collects the result of attempting to acquire the permission
+represented by @permission.
+This is the second half of the asynchronous version of
+g_permission_acquire().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the permission was successfully acquired</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GAsyncResult given to the #GAsyncReadyCallback</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_allowed"
+              c:identifier="g_permission_get_allowed"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the value of the 'allowed' property.  This property is %TRUE if
+the caller currently has permission to perform the action that</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value of the 'allowed' property</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_can_acquire"
+              c:identifier="g_permission_get_can_acquire"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the value of the 'can-acquire' property.  This property is %TRUE
+if it is generally possible to acquire the permission by calling
+g_permission_acquire().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value of the 'can-acquire' property</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_can_release"
+              c:identifier="g_permission_get_can_release"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the value of the 'can-release' property.  This property is %TRUE
+if it is generally possible to release the permission by calling
+g_permission_release().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value of the 'can-release' property</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="impl_update"
+              c:identifier="g_permission_impl_update"
+              version="2.26">
+        <doc xml:whitespace="preserve">This function is called by the #GPermission implementation to update
+the properties of the permission.  You should never call this
+function except from a #GPermission implementation.
+GObject notify signals are generated, as appropriate.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="allowed" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new value for the 'allowed' property</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="can_acquire" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new value for the 'can-acquire' property</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="can_release" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new value for the 'can-release' property</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="release"
+              c:identifier="g_permission_release"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Attempts to release the permission represented by @permission.
+The precise method by which this happens depends on the permission
+and the underlying authentication mechanism.  In most cases the
+permission will be dropped immediately without further action.
+You should check with g_permission_get_can_release() before calling
+this function.
+If the permission is released then %TRUE is returned.  Otherwise,
+%FALSE is returned and @error is set appropriately.
+This call is blocking, likely for a very long time (in the case that
+user interaction is required).  See g_permission_release_async() for
+the non-blocking version.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the permission was successfully released</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="release_async"
+              c:identifier="g_permission_release_async"
+              version="2.26">
+        <doc xml:whitespace="preserve">Attempts to release the permission represented by @permission.
+This is the first half of the asynchronous version of
+g_permission_release().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="2">
+            <doc xml:whitespace="preserve">the #GAsyncReadyCallback to call when done</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the user data to pass to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="release_finish"
+              c:identifier="g_permission_release_finish"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Collects the result of attempting to release the permission
+represented by @permission.
+This is the second half of the asynchronous version of
+g_permission_release().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the permission was successfully released</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GAsyncResult given to the #GAsyncReadyCallback</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="allowed" transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the caller currently has permission to perform the action that</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="can-acquire" transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if it is generally possible to acquire the permission by calling
+g_permission_acquire().</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="can-release" transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if it is generally possible to release the permission by calling
+g_permission_release().</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="PermissionPrivate" c:type="GPermissionPrivate*"/>
+      </field>
+    </class>
+    <record name="PermissionClass"
+            c:type="GPermissionClass"
+            glib:is-gtype-struct-for="Permission">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="acquire">
+        <callback name="acquire" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the permission was successfully acquired</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="permission" transfer-ownership="none">
+              <type name="Permission" c:type="GPermission*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="acquire_async">
+        <callback name="acquire_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="permission" transfer-ownership="none">
+              <type name="Permission" c:type="GPermission*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="3">
+              <doc xml:whitespace="preserve">the #GAsyncReadyCallback to call when done</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="3">
+              <doc xml:whitespace="preserve">the user data to pass to @callback</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="acquire_finish">
+        <callback name="acquire_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the permission was successfully acquired</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="permission" transfer-ownership="none">
+              <type name="Permission" c:type="GPermission*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the #GAsyncResult given to the #GAsyncReadyCallback</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="release">
+        <callback name="release" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the permission was successfully released</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="permission" transfer-ownership="none">
+              <type name="Permission" c:type="GPermission*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="release_async">
+        <callback name="release_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="permission" transfer-ownership="none">
+              <type name="Permission" c:type="GPermission*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="3">
+              <doc xml:whitespace="preserve">the #GAsyncReadyCallback to call when done</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="3">
+              <doc xml:whitespace="preserve">the user data to pass to @callback</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="release_finish">
+        <callback name="release_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the permission was successfully released</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="permission" transfer-ownership="none">
+              <type name="Permission" c:type="GPermission*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the #GAsyncResult given to the #GAsyncReadyCallback</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="16">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="PermissionPrivate" c:type="GPermissionPrivate" disguised="1">
+    </record>
+    <interface name="Proxy"
+               c:symbol-prefix="proxy"
+               c:type="GProxy"
+               version="2.26"
+               glib:type-name="GProxy"
+               glib:get-type="g_proxy_get_type"
+               glib:type-struct="ProxyInterface">
+      <doc xml:whitespace="preserve">Interface that handles proxy connection and payload.</doc>
+      <virtual-method name="connect"
+                      invoker="connect"
+                      version="2.26"
+                      throws="1">
+        <doc xml:whitespace="preserve">Given @connection to communicate with a proxy (eg, a
+#GSocketConnection that is connected to the proxy server), this
+does the necessary handshake to connect to @proxy_address, and if
+required, wraps the #GIOStream to handle proxy payload.
+be the same as @connection, in which case a reference
+will be added.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GIOStream that will replace @connection. This might</doc>
+          <type name="IOStream" c:type="GIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="connection" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GIOStream</doc>
+            <type name="IOStream" c:type="GIOStream*"/>
+          </parameter>
+          <parameter name="proxy_address" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GProxyAddress</doc>
+            <type name="ProxyAddress" c:type="GProxyAddress*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="connect_async"
+                      invoker="connect_async"
+                      version="2.26">
+        <doc xml:whitespace="preserve">Asynchronous version of g_proxy_connect().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="connection" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GIOStream</doc>
+            <type name="IOStream" c:type="GIOStream*"/>
+          </parameter>
+          <parameter name="proxy_address" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GProxyAddress</doc>
+            <type name="ProxyAddress" c:type="GProxyAddress*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">callback data</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="connect_finish"
+                      invoker="connect_finish"
+                      version="2.26"
+                      throws="1">
+        <doc xml:whitespace="preserve">See g_proxy_connect().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GIOStream.</doc>
+          <type name="IOStream" c:type="GIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncRetult</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="supports_hostname"
+                      invoker="supports_hostname"
+                      version="2.26">
+        <doc xml:whitespace="preserve">Some proxy protocols expect to be passed a hostname, which they
+will resolve to an IP address themselves. Others, like SOCKS4, do
+not allow this. This function will return %FALSE if @proxy is
+implementing such a protocol. When %FALSE is returned, the caller
+should resolve the destination hostname first, and then pass a
+#GProxyAddress containing the stringified IP address to
+g_proxy_connect() or g_proxy_connect_async().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if hostname resolution is supported.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <method name="connect"
+              c:identifier="g_proxy_connect"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Given @connection to communicate with a proxy (eg, a
+#GSocketConnection that is connected to the proxy server), this
+does the necessary handshake to connect to @proxy_address, and if
+required, wraps the #GIOStream to handle proxy payload.
+be the same as @connection, in which case a reference
+will be added.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GIOStream that will replace @connection. This might</doc>
+          <type name="IOStream" c:type="GIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="connection" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GIOStream</doc>
+            <type name="IOStream" c:type="GIOStream*"/>
+          </parameter>
+          <parameter name="proxy_address" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GProxyAddress</doc>
+            <type name="ProxyAddress" c:type="GProxyAddress*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_async"
+              c:identifier="g_proxy_connect_async"
+              version="2.26">
+        <doc xml:whitespace="preserve">Asynchronous version of g_proxy_connect().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="connection" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GIOStream</doc>
+            <type name="IOStream" c:type="GIOStream*"/>
+          </parameter>
+          <parameter name="proxy_address" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GProxyAddress</doc>
+            <type name="ProxyAddress" c:type="GProxyAddress*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">callback data</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_finish"
+              c:identifier="g_proxy_connect_finish"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">See g_proxy_connect().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GIOStream.</doc>
+          <type name="IOStream" c:type="GIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncRetult</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="supports_hostname"
+              c:identifier="g_proxy_supports_hostname"
+              version="2.26">
+        <doc xml:whitespace="preserve">Some proxy protocols expect to be passed a hostname, which they
+will resolve to an IP address themselves. Others, like SOCKS4, do
+not allow this. This function will return %FALSE if @proxy is
+implementing such a protocol. When %FALSE is returned, the caller
+should resolve the destination hostname first, and then pass a
+#GProxyAddress containing the stringified IP address to
+g_proxy_connect() or g_proxy_connect_async().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if hostname resolution is supported.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </interface>
+    <class name="ProxyAddress"
+           c:symbol-prefix="proxy_address"
+           c:type="GProxyAddress"
+           version="2.26"
+           parent="InetSocketAddress"
+           glib:type-name="GProxyAddress"
+           glib:get-type="g_proxy_address_get_type"
+           glib:type-struct="ProxyAddressClass">
+      <doc xml:whitespace="preserve">A #GInetSocketAddress representing a connection via a proxy server</doc>
+      <implements name="SocketConnectable"/>
+      <constructor name="new"
+                   c:identifier="g_proxy_address_new"
+                   version="2.26">
+        <doc xml:whitespace="preserve">Creates a new #GProxyAddress for @inetaddr with @protocol that should
+tunnel through @dest_hostname and @dest_port.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GProxyAddress</doc>
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="inetaddr" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The proxy server #GInetAddress.</doc>
+            <type name="InetAddress" c:type="GInetAddress*"/>
+          </parameter>
+          <parameter name="port" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The proxy server port.</doc>
+            <type name="guint16" c:type="guint16"/>
+          </parameter>
+          <parameter name="protocol" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The proxy protocol to support, in lower case (e.g. socks, http).</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="dest_hostname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The destination hostname the the proxy should tunnel to.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="dest_port" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The destination port to tunnel to.</doc>
+            <type name="guint16" c:type="guint16"/>
+          </parameter>
+          <parameter name="username" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The username to authenticate to the proxy server (or %NULL).</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="password" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The password to authenticate to the proxy server (or %NULL).</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_destination_hostname"
+              c:identifier="g_proxy_address_get_destination_hostname">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_destination_port"
+              c:identifier="g_proxy_address_get_destination_port">
+        <return-value transfer-ownership="none">
+          <type name="guint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <method name="get_password" c:identifier="g_proxy_address_get_password">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_protocol"
+              c:identifier="g_proxy_address_get_protocol"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets @proxy's protocol.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the @proxy's protocol</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_username" c:identifier="g_proxy_address_get_username">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <property name="destination-hostname"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="destination-port"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <property name="password"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="protocol"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="username"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <field name="parent_instance">
+        <type name="InetSocketAddress" c:type="GInetSocketAddress"/>
+      </field>
+      <field name="priv">
+        <type name="ProxyAddressPrivate" c:type="GProxyAddressPrivate*"/>
+      </field>
+    </class>
+    <record name="ProxyAddressClass"
+            c:type="GProxyAddressClass"
+            glib:is-gtype-struct-for="ProxyAddress">
+      <field name="parent_class">
+        <type name="InetSocketAddressClass" c:type="GInetSocketAddressClass"/>
+      </field>
+    </record>
+    <class name="ProxyAddressEnumerator"
+           c:symbol-prefix="proxy_address_enumerator"
+           c:type="GProxyAddressEnumerator"
+           parent="SocketAddressEnumerator"
+           glib:type-name="GProxyAddressEnumerator"
+           glib:get-type="g_proxy_address_enumerator_get_type"
+           glib:type-struct="ProxyAddressEnumeratorClass">
+      <doc xml:whitespace="preserve">A subclass of #GSocketAddressEnumerator that takes another address
+enumerator and wraps its results in #GProxyAddress&lt;!-- --&gt;es as
+directed by the default #GProxyResolver.</doc>
+      <property name="connectable"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="SocketConnectable"/>
+      </property>
+      <property name="uri"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <field name="parent_instance">
+        <type name="SocketAddressEnumerator"
+              c:type="GSocketAddressEnumerator"/>
+      </field>
+      <field name="priv">
+        <type name="ProxyAddressEnumeratorPrivate"
+              c:type="GProxyAddressEnumeratorPrivate*"/>
+      </field>
+    </class>
+    <record name="ProxyAddressEnumeratorClass"
+            c:type="GProxyAddressEnumeratorClass"
+            glib:is-gtype-struct-for="ProxyAddressEnumerator">
+      <field name="parent_class">
+        <type name="SocketAddressEnumeratorClass"
+              c:type="GSocketAddressEnumeratorClass"/>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved6" introspectable="0">
+        <callback name="_g_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved7" introspectable="0">
+        <callback name="_g_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ProxyAddressEnumeratorPrivate"
+            c:type="GProxyAddressEnumeratorPrivate"
+            disguised="1">
+    </record>
+    <record name="ProxyAddressPrivate"
+            c:type="GProxyAddressPrivate"
+            disguised="1">
+    </record>
+    <record name="ProxyInterface"
+            c:type="GProxyInterface"
+            glib:is-gtype-struct-for="Proxy"
+            version="2.26">
+      <doc xml:whitespace="preserve">Provides an interface for handling proxy connection and payload.</doc>
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="connect">
+        <callback name="connect" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GIOStream that will replace @connection. This might</doc>
+            <type name="IOStream" c:type="GIOStream*"/>
+          </return-value>
+          <parameters>
+            <parameter name="proxy" transfer-ownership="none">
+              <type name="Proxy" c:type="GProxy*"/>
+            </parameter>
+            <parameter name="connection" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GIOStream</doc>
+              <type name="IOStream" c:type="GIOStream*"/>
+            </parameter>
+            <parameter name="proxy_address" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GProxyAddress</doc>
+              <type name="ProxyAddress" c:type="GProxyAddress*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">a #GCancellable</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="connect_async">
+        <callback name="connect_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="proxy" transfer-ownership="none">
+              <type name="Proxy" c:type="GProxy*"/>
+            </parameter>
+            <parameter name="connection" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GIOStream</doc>
+              <type name="IOStream" c:type="GIOStream*"/>
+            </parameter>
+            <parameter name="proxy_address" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GProxyAddress</doc>
+              <type name="ProxyAddress" c:type="GProxyAddress*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">a #GCancellable</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">callback data</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="connect_finish">
+        <callback name="connect_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GIOStream.</doc>
+            <type name="IOStream" c:type="GIOStream*"/>
+          </return-value>
+          <parameters>
+            <parameter name="proxy" transfer-ownership="none">
+              <type name="Proxy" c:type="GProxy*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncRetult</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="supports_hostname">
+        <callback name="supports_hostname">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if hostname resolution is supported.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="proxy" transfer-ownership="none">
+              <type name="Proxy" c:type="GProxy*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <interface name="ProxyResolver"
+               c:symbol-prefix="proxy_resolver"
+               c:type="GProxyResolver"
+               glib:type-name="GProxyResolver"
+               glib:get-type="g_proxy_resolver_get_type"
+               glib:type-struct="ProxyResolverInterface">
+      <doc xml:whitespace="preserve">Interface that can be used to resolve proxy address.</doc>
+      <virtual-method name="is_supported"
+                      invoker="is_supported"
+                      version="2.26">
+        <doc xml:whitespace="preserve">Checks if @resolver can be used on this system. (This is used
+internally; g_proxy_resolver_get_default() will only return a proxy
+resolver that returns %TRUE for this method.)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @resolver is supported.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="lookup" invoker="lookup" version="2.26" throws="1">
+        <doc xml:whitespace="preserve">Looks into the system proxy configuration to determine what proxy,
+if any, to use to connect to @uri. The returned proxy URIs are of the
+form &lt;literal&gt;&amp;lt;protocol&amp;gt;://[user[:password]@]host:port&lt;/literal&gt;
+or &lt;literal&gt;direct://&lt;/literal&gt;, where &amp;lt;protocol&amp;gt; could be
+http, rtsp, socks or other proxying protocol.
+If you don't know what network protocol is being used on the
+socket, you should use &lt;literal&gt;none&lt;/literal&gt; as the URI protocol.
+In this case, the resolver might still return a generic proxy type
+(such as SOCKS), but would not return protocol-specific proxy types
+(such as http).
+&lt;literal&gt;direct://&lt;/literal&gt; is used when no proxy is needed.
+Direct connection should not be attempted unless it is part of the
+returned array of proxies.
+g_strfreev().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A NULL-terminated array of proxy URIs. Must be freed with</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a URI representing the destination to connect to</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="lookup_async"
+                      invoker="lookup_async"
+                      version="2.26">
+        <doc xml:whitespace="preserve">Asynchronous lookup of proxy. See g_proxy_resolver_lookup() for more
+details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a URI representing the destination to connect to</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">callback to call after resolution completes</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="3">
+            <doc xml:whitespace="preserve">data for @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="lookup_finish"
+                      invoker="lookup_finish"
+                      version="2.26"
+                      throws="1">
+        <doc xml:whitespace="preserve">Call this function to obtain the array of proxy URIs when
+g_proxy_resolver_lookup_async() is complete. See
+g_proxy_resolver_lookup() for more details.
+g_strfreev().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A NULL-terminated array of proxy URIs. Must be freed with</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the result passed to your #GAsyncReadyCallback</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="is_supported"
+              c:identifier="g_proxy_resolver_is_supported"
+              version="2.26">
+        <doc xml:whitespace="preserve">Checks if @resolver can be used on this system. (This is used
+internally; g_proxy_resolver_get_default() will only return a proxy
+resolver that returns %TRUE for this method.)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @resolver is supported.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="lookup"
+              c:identifier="g_proxy_resolver_lookup"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Looks into the system proxy configuration to determine what proxy,
+if any, to use to connect to @uri. The returned proxy URIs are of the
+form &lt;literal&gt;&amp;lt;protocol&amp;gt;://[user[:password]@]host:port&lt;/literal&gt;
+or &lt;literal&gt;direct://&lt;/literal&gt;, where &amp;lt;protocol&amp;gt; could be
+http, rtsp, socks or other proxying protocol.
+If you don't know what network protocol is being used on the
+socket, you should use &lt;literal&gt;none&lt;/literal&gt; as the URI protocol.
+In this case, the resolver might still return a generic proxy type
+(such as SOCKS), but would not return protocol-specific proxy types
+(such as http).
+&lt;literal&gt;direct://&lt;/literal&gt; is used when no proxy is needed.
+Direct connection should not be attempted unless it is part of the
+returned array of proxies.
+g_strfreev().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A NULL-terminated array of proxy URIs. Must be freed with</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a URI representing the destination to connect to</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_async"
+              c:identifier="g_proxy_resolver_lookup_async"
+              version="2.26">
+        <doc xml:whitespace="preserve">Asynchronous lookup of proxy. See g_proxy_resolver_lookup() for more
+details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a URI representing the destination to connect to</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">callback to call after resolution completes</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data for @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_finish"
+              c:identifier="g_proxy_resolver_lookup_finish"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Call this function to obtain the array of proxy URIs when
+g_proxy_resolver_lookup_async() is complete. See
+g_proxy_resolver_lookup() for more details.
+g_strfreev().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A NULL-terminated array of proxy URIs. Must be freed with</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the result passed to your #GAsyncReadyCallback</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="ProxyResolverInterface"
+            c:type="GProxyResolverInterface"
+            glib:is-gtype-struct-for="ProxyResolver">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="is_supported">
+        <callback name="is_supported">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if @resolver is supported.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="resolver" transfer-ownership="none">
+              <type name="ProxyResolver" c:type="GProxyResolver*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lookup">
+        <callback name="lookup" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">A NULL-terminated array of proxy URIs. Must be freed with</doc>
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </return-value>
+          <parameters>
+            <parameter name="resolver" transfer-ownership="none">
+              <type name="ProxyResolver" c:type="GProxyResolver*"/>
+            </parameter>
+            <parameter name="uri" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a URI representing the destination to connect to</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lookup_async">
+        <callback name="lookup_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="resolver" transfer-ownership="none">
+              <type name="ProxyResolver" c:type="GProxyResolver*"/>
+            </parameter>
+            <parameter name="uri" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a URI representing the destination to connect to</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="4">
+              <doc xml:whitespace="preserve">callback to call after resolution completes</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <doc xml:whitespace="preserve">data for @callback</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lookup_finish">
+        <callback name="lookup_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">A NULL-terminated array of proxy URIs. Must be freed with</doc>
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </return-value>
+          <parameters>
+            <parameter name="resolver" transfer-ownership="none">
+              <type name="ProxyResolver" c:type="GProxyResolver*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the result passed to your #GAsyncReadyCallback</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <callback name="ReallocFunc" c:type="GReallocFunc" introspectable="0">
+      <doc xml:whitespace="preserve">Changes the size of the memory block pointed to by @data to
+The function should have the same semantics as realloc().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a pointer to the reallocated memory</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">memory block to reallocate</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">size to reallocate @data to</doc>
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="Resolver"
+           c:symbol-prefix="resolver"
+           c:type="GResolver"
+           parent="GObject.Object"
+           glib:type-name="GResolver"
+           glib:get-type="g_resolver_get_type"
+           glib:type-struct="ResolverClass">
+      <doc xml:whitespace="preserve">The object that handles DNS resolution. Use g_resolver_get_default()
+to get the default resolver.</doc>
+      <function name="free_addresses"
+                c:identifier="g_resolver_free_addresses"
+                version="2.22">
+        <doc xml:whitespace="preserve">Frees @addresses (which should be the return value from
+g_resolver_lookup_by_name() or g_resolver_lookup_by_name_finish()).
+(This is a convenience method; you can also simply free the results
+by hand.)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="addresses" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GList of #GInetAddress</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="free_targets"
+                c:identifier="g_resolver_free_targets"
+                version="2.22">
+        <doc xml:whitespace="preserve">Frees @targets (which should be the return value from
+g_resolver_lookup_service() or g_resolver_lookup_service_finish()).
+(This is a convenience method; you can also simply free the
+results by hand.)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="targets" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GList of #GSrvTarget</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_default"
+                c:identifier="g_resolver_get_default"
+                version="2.22">
+        <doc xml:whitespace="preserve">Gets the default #GResolver. You should unref it when you are done
+with it. #GResolver may use its reference count as a hint about how
+many threads/processes, etc it should allocate for concurrent DNS
+resolutions.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the default #GResolver.</doc>
+          <type name="Resolver" c:type="GResolver*"/>
+        </return-value>
+      </function>
+      <virtual-method name="lookup_by_address"
+                      invoker="lookup_by_address"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Synchronously reverse-resolves @address to determine its
+associated hostname.
+If the DNS resolution fails, @error (if non-%NULL) will be set to
+a value from #GResolverError.
+If @cancellable is non-%NULL, it can be used to cancel the
+operation, in which case @error (if non-%NULL) will be set to
+%G_IO_ERROR_CANCELLED.
+form), or %NULL on error.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a hostname (either ASCII-only, or in ASCII-encoded</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the address to reverse-resolve</doc>
+            <type name="InetAddress" c:type="GInetAddress*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="lookup_by_address_async"
+                      invoker="lookup_by_address_async"
+                      version="2.22">
+        <doc xml:whitespace="preserve">Begins asynchronously reverse-resolving @address to determine its
+associated hostname, and eventually calls @callback, which must
+call g_resolver_lookup_by_address_finish() to get the final result.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the address to reverse-resolve</doc>
+            <type name="InetAddress" c:type="GInetAddress*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">callback to call after resolution completes</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="3">
+            <doc xml:whitespace="preserve">data for @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="lookup_by_address_finish"
+                      invoker="lookup_by_address_finish"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Retrieves the result of a previous call to
+g_resolver_lookup_by_address_async().
+If the DNS resolution failed, @error (if non-%NULL) will be set to
+a value from #GResolverError. If the operation was cancelled,
+form), or %NULL on error.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a hostname (either ASCII-only, or in ASCII-encoded</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the result passed to your #GAsyncReadyCallback</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="lookup_by_name"
+                      invoker="lookup_by_name"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Synchronously resolves @hostname to determine its associated IP
+address(es). @hostname may be an ASCII-only or UTF-8 hostname, or
+the textual form of an IP address (in which case this just becomes
+a wrapper around g_inet_address_new_from_string()).
+On success, g_resolver_lookup_by_name() will return a #GList of
+#GInetAddress, sorted in order of preference. (That is, you should
+attempt to connect to the first address first, then the second if
+the first fails, etc.)
+If the DNS resolution fails, @error (if non-%NULL) will be set to a
+value from #GResolverError.
+If @cancellable is non-%NULL, it can be used to cancel the
+operation, in which case @error (if non-%NULL) will be set to
+%G_IO_ERROR_CANCELLED.
+If you are planning to connect to a socket on the resolved IP
+address, it may be easier to create a #GNetworkAddress and use its
+#GSocketConnectable interface.
+of #GInetAddress, or %NULL on error. You
+must unref each of the addresses and free the list when you are
+done with it. (You can use g_resolver_free_addresses() to do this.)</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GList</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="InetAddress"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="hostname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the hostname to look up</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="lookup_by_name_async"
+                      invoker="lookup_by_name_async"
+                      version="2.22">
+        <doc xml:whitespace="preserve">Begins asynchronously resolving @hostname to determine its
+associated IP address(es), and eventually calls @callback, which
+must call g_resolver_lookup_by_name_finish() to get the result.
+See g_resolver_lookup_by_name() for more details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hostname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the hostname to look up the address of</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">callback to call after resolution completes</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="3">
+            <doc xml:whitespace="preserve">data for @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="lookup_by_name_finish"
+                      invoker="lookup_by_name_finish"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Retrieves the result of a call to
+g_resolver_lookup_by_name_async().
+If the DNS resolution failed, @error (if non-%NULL) will be set to
+a value from #GResolverError. If the operation was cancelled,
+of #GInetAddress, or %NULL on error. See g_resolver_lookup_by_name()
+for more details.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GList</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="InetAddress"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the result passed to your #GAsyncReadyCallback</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="lookup_service" introspectable="0" throws="1">
+        <return-value>
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="rrname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable" transfer-ownership="none">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="lookup_service_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rrname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable" transfer-ownership="none">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="3">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="lookup_service_finish"
+                      invoker="lookup_service_finish"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Retrieves the result of a previous call to
+g_resolver_lookup_service_async().
+If the DNS resolution failed, @error (if non-%NULL) will be set to
+a value from #GResolverError. If the operation was cancelled,
+or %NULL on error. See g_resolver_lookup_service() for more details.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GList of #GSrvTarget,</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="SrvTarget"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the result passed to your #GAsyncReadyCallback</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="lookup_by_address"
+              c:identifier="g_resolver_lookup_by_address"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Synchronously reverse-resolves @address to determine its
+associated hostname.
+If the DNS resolution fails, @error (if non-%NULL) will be set to
+a value from #GResolverError.
+If @cancellable is non-%NULL, it can be used to cancel the
+operation, in which case @error (if non-%NULL) will be set to
+%G_IO_ERROR_CANCELLED.
+form), or %NULL on error.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a hostname (either ASCII-only, or in ASCII-encoded</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the address to reverse-resolve</doc>
+            <type name="InetAddress" c:type="GInetAddress*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_by_address_async"
+              c:identifier="g_resolver_lookup_by_address_async"
+              version="2.22">
+        <doc xml:whitespace="preserve">Begins asynchronously reverse-resolving @address to determine its
+associated hostname, and eventually calls @callback, which must
+call g_resolver_lookup_by_address_finish() to get the final result.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the address to reverse-resolve</doc>
+            <type name="InetAddress" c:type="GInetAddress*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">callback to call after resolution completes</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data for @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_by_address_finish"
+              c:identifier="g_resolver_lookup_by_address_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Retrieves the result of a previous call to
+g_resolver_lookup_by_address_async().
+If the DNS resolution failed, @error (if non-%NULL) will be set to
+a value from #GResolverError. If the operation was cancelled,
+form), or %NULL on error.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a hostname (either ASCII-only, or in ASCII-encoded</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the result passed to your #GAsyncReadyCallback</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_by_name"
+              c:identifier="g_resolver_lookup_by_name"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Synchronously resolves @hostname to determine its associated IP
+address(es). @hostname may be an ASCII-only or UTF-8 hostname, or
+the textual form of an IP address (in which case this just becomes
+a wrapper around g_inet_address_new_from_string()).
+On success, g_resolver_lookup_by_name() will return a #GList of
+#GInetAddress, sorted in order of preference. (That is, you should
+attempt to connect to the first address first, then the second if
+the first fails, etc.)
+If the DNS resolution fails, @error (if non-%NULL) will be set to a
+value from #GResolverError.
+If @cancellable is non-%NULL, it can be used to cancel the
+operation, in which case @error (if non-%NULL) will be set to
+%G_IO_ERROR_CANCELLED.
+If you are planning to connect to a socket on the resolved IP
+address, it may be easier to create a #GNetworkAddress and use its
+#GSocketConnectable interface.
+of #GInetAddress, or %NULL on error. You
+must unref each of the addresses and free the list when you are
+done with it. (You can use g_resolver_free_addresses() to do this.)</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GList</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="InetAddress"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="hostname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the hostname to look up</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_by_name_async"
+              c:identifier="g_resolver_lookup_by_name_async"
+              version="2.22">
+        <doc xml:whitespace="preserve">Begins asynchronously resolving @hostname to determine its
+associated IP address(es), and eventually calls @callback, which
+must call g_resolver_lookup_by_name_finish() to get the result.
+See g_resolver_lookup_by_name() for more details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hostname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the hostname to look up the address of</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">callback to call after resolution completes</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data for @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_by_name_finish"
+              c:identifier="g_resolver_lookup_by_name_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Retrieves the result of a call to
+g_resolver_lookup_by_name_async().
+If the DNS resolution failed, @error (if non-%NULL) will be set to
+a value from #GResolverError. If the operation was cancelled,
+of #GInetAddress, or %NULL on error. See g_resolver_lookup_by_name()
+for more details.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GList</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="InetAddress"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the result passed to your #GAsyncReadyCallback</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_service"
+              c:identifier="g_resolver_lookup_service"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Synchronously performs a DNS SRV lookup for the given @service and
+include the leading underscore that appears in the actual DNS
+entry.
+On success, g_resolver_lookup_service() will return a #GList of
+#GSrvTarget, sorted in order of preference. (That is, you should
+attempt to connect to the first target first, then the second if
+the first fails, etc.)
+If the DNS resolution fails, @error (if non-%NULL) will be set to
+a value from #GResolverError.
+If @cancellable is non-%NULL, it can be used to cancel the
+operation, in which case @error (if non-%NULL) will be set to
+%G_IO_ERROR_CANCELLED.
+If you are planning to connect to the service, it is usually easier
+to create a #GNetworkService and use its #GSocketConnectable
+interface.
+or %NULL on error. You must free each of the targets and the list when you are
+done with it. (You can use g_resolver_free_targets() to do this.)</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GList of #GSrvTarget,</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="SrvTarget"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="service" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the service type to look up (eg, "ldap")</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="protocol" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the networking protocol to use for @service (eg, "tcp")</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="domain" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the DNS domain to look up the service in</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_service_async"
+              c:identifier="g_resolver_lookup_service_async"
+              version="2.22">
+        <doc xml:whitespace="preserve">Begins asynchronously performing a DNS SRV lookup for the given
+get the final result. See g_resolver_lookup_service() for more
+details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="service" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the service type to look up (eg, "ldap")</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="protocol" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the networking protocol to use for @service (eg, "tcp")</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="domain" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the DNS domain to look up the service in</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <doc xml:whitespace="preserve">callback to call after resolution completes</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data for @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_service_finish"
+              c:identifier="g_resolver_lookup_service_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Retrieves the result of a previous call to
+g_resolver_lookup_service_async().
+If the DNS resolution failed, @error (if non-%NULL) will be set to
+a value from #GResolverError. If the operation was cancelled,
+or %NULL on error. See g_resolver_lookup_service() for more details.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GList of #GSrvTarget,</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="SrvTarget"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the result passed to your #GAsyncReadyCallback</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_default"
+              c:identifier="g_resolver_set_default"
+              version="2.22">
+        <doc xml:whitespace="preserve">Sets @resolver to be the application's default resolver (reffing
+Future calls to g_resolver_get_default() will return this resolver.
+This can be used if an application wants to perform any sort of DNS
+caching or "pinning"; it can implement its own #GResolver that
+calls the original default resolver for DNS operations, and
+implements its own cache policies on top of that, and then set
+itself as the default resolver for all later code to use.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ResolverPrivate" c:type="GResolverPrivate*"/>
+      </field>
+      <glib:signal name="reload">
+        <doc xml:whitespace="preserve">Emitted when the resolver notices that the system resolver
+configuration has changed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ResolverClass"
+            c:type="GResolverClass"
+            glib:is-gtype-struct-for="Resolver">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="reload">
+        <callback name="reload">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="resolver" transfer-ownership="none">
+              <type name="Resolver" c:type="GResolver*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lookup_by_name">
+        <callback name="lookup_by_name" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GList</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="InetAddress"/>
+            </type>
+          </return-value>
+          <parameters>
+            <parameter name="resolver" transfer-ownership="none">
+              <type name="Resolver" c:type="GResolver*"/>
+            </parameter>
+            <parameter name="hostname" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the hostname to look up</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lookup_by_name_async">
+        <callback name="lookup_by_name_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="resolver" transfer-ownership="none">
+              <type name="Resolver" c:type="GResolver*"/>
+            </parameter>
+            <parameter name="hostname" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the hostname to look up the address of</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="4">
+              <doc xml:whitespace="preserve">callback to call after resolution completes</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <doc xml:whitespace="preserve">data for @callback</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lookup_by_name_finish">
+        <callback name="lookup_by_name_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GList</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="InetAddress"/>
+            </type>
+          </return-value>
+          <parameters>
+            <parameter name="resolver" transfer-ownership="none">
+              <type name="Resolver" c:type="GResolver*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the result passed to your #GAsyncReadyCallback</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lookup_by_address">
+        <callback name="lookup_by_address" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a hostname (either ASCII-only, or in ASCII-encoded</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="resolver" transfer-ownership="none">
+              <type name="Resolver" c:type="GResolver*"/>
+            </parameter>
+            <parameter name="address" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the address to reverse-resolve</doc>
+              <type name="InetAddress" c:type="GInetAddress*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lookup_by_address_async">
+        <callback name="lookup_by_address_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="resolver" transfer-ownership="none">
+              <type name="Resolver" c:type="GResolver*"/>
+            </parameter>
+            <parameter name="address" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the address to reverse-resolve</doc>
+              <type name="InetAddress" c:type="GInetAddress*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="4">
+              <doc xml:whitespace="preserve">callback to call after resolution completes</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <doc xml:whitespace="preserve">data for @callback</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lookup_by_address_finish">
+        <callback name="lookup_by_address_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a hostname (either ASCII-only, or in ASCII-encoded</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="resolver" transfer-ownership="none">
+              <type name="Resolver" c:type="GResolver*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the result passed to your #GAsyncReadyCallback</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lookup_service" introspectable="0">
+        <callback name="lookup_service" introspectable="0" throws="1">
+          <return-value>
+            <type name="GLib.List" c:type="GList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </return-value>
+          <parameters>
+            <parameter name="resolver" transfer-ownership="none">
+              <type name="Resolver" c:type="GResolver*"/>
+            </parameter>
+            <parameter name="rrname" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="cancellable" transfer-ownership="none">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lookup_service_async">
+        <callback name="lookup_service_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="resolver" transfer-ownership="none">
+              <type name="Resolver" c:type="GResolver*"/>
+            </parameter>
+            <parameter name="rrname" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="cancellable" transfer-ownership="none">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="4">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lookup_service_finish">
+        <callback name="lookup_service_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GList of #GSrvTarget,</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="SrvTarget"/>
+            </type>
+          </return-value>
+          <parameters>
+            <parameter name="resolver" transfer-ownership="none">
+              <type name="Resolver" c:type="GResolver*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the result passed to your #GAsyncReadyCallback</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved6" introspectable="0">
+        <callback name="_g_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="ResolverError"
+                 version="2.22"
+                 glib:type-name="GResolverError"
+                 glib:get-type="g_resolver_error_get_type"
+                 c:type="GResolverError"
+                 glib:error-quark="g_resolver_error_quark">
+      <doc xml:whitespace="preserve">An error code used with %G_RESOLVER_ERROR in a #GError returned
+from a #GResolver routine.</doc>
+      <member name="not_found"
+              value="0"
+              c:identifier="G_RESOLVER_ERROR_NOT_FOUND"
+              glib:nick="not-found"/>
+      <member name="temporary_failure"
+              value="1"
+              c:identifier="G_RESOLVER_ERROR_TEMPORARY_FAILURE"
+              glib:nick="temporary-failure"/>
+      <member name="internal"
+              value="2"
+              c:identifier="G_RESOLVER_ERROR_INTERNAL"
+              glib:nick="internal"/>
+    </enumeration>
+    <record name="ResolverPrivate" c:type="GResolverPrivate" disguised="1">
+    </record>
+    <constant name="SETTINGS_BACKEND_EXTENSION_POINT_NAME"
+              value="gsettings-backend">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <interface name="Seekable"
+               c:symbol-prefix="seekable"
+               c:type="GSeekable"
+               glib:type-name="GSeekable"
+               glib:get-type="g_seekable_get_type"
+               glib:type-struct="SeekableIface">
+      <doc xml:whitespace="preserve">Seek object for streaming operations.</doc>
+      <virtual-method name="can_seek" invoker="can_seek">
+        <doc xml:whitespace="preserve">Tests if the stream supports the #GSeekableIface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @seekable can be seeked. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="can_truncate" invoker="can_truncate">
+        <doc xml:whitespace="preserve">Tests if the stream can be truncated.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the stream can be truncated, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="seek" invoker="seek" throws="1">
+        <doc xml:whitespace="preserve">Seeks in the stream by the given @offset, modified by @type.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+has occurred, this function will return %FALSE and set @error
+appropriately if present.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful. If an error</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #goffset.</doc>
+            <type name="gint64" c:type="goffset"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GSeekType.</doc>
+            <type name="GLib.SeekType" c:type="GSeekType"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="tell" invoker="tell">
+        <doc xml:whitespace="preserve">Tells the current position within the stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the offset from the beginning of the buffer.</doc>
+          <type name="gint64" c:type="goffset"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="truncate_fn" invoker="truncate" throws="1">
+        <doc xml:whitespace="preserve">Truncates a stream with a given #offset.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
+operation was partially finished when the operation was cancelled the
+partial result will be returned, without an error.
+has occurred, this function will return %FALSE and set @error
+appropriately if present.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful. If an error</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #goffset.</doc>
+            <type name="gint64" c:type="goffset"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="can_seek" c:identifier="g_seekable_can_seek">
+        <doc xml:whitespace="preserve">Tests if the stream supports the #GSeekableIface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @seekable can be seeked. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="can_truncate" c:identifier="g_seekable_can_truncate">
+        <doc xml:whitespace="preserve">Tests if the stream can be truncated.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the stream can be truncated, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="seek" c:identifier="g_seekable_seek" throws="1">
+        <doc xml:whitespace="preserve">Seeks in the stream by the given @offset, modified by @type.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+has occurred, this function will return %FALSE and set @error
+appropriately if present.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful. If an error</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #goffset.</doc>
+            <type name="gint64" c:type="goffset"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GSeekType.</doc>
+            <type name="GLib.SeekType" c:type="GSeekType"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="tell" c:identifier="g_seekable_tell">
+        <doc xml:whitespace="preserve">Tells the current position within the stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the offset from the beginning of the buffer.</doc>
+          <type name="gint64" c:type="goffset"/>
+        </return-value>
+      </method>
+      <method name="truncate" c:identifier="g_seekable_truncate" throws="1">
+        <doc xml:whitespace="preserve">Truncates a stream with a given #offset.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
+operation was partially finished when the operation was cancelled the
+partial result will be returned, without an error.
+has occurred, this function will return %FALSE and set @error
+appropriately if present.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful. If an error</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #goffset.</doc>
+            <type name="gint64" c:type="goffset"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="SeekableIface"
+            c:type="GSeekableIface"
+            glib:is-gtype-struct-for="Seekable">
+      <doc xml:whitespace="preserve">Provides an interface for implementing seekable functionality on I/O Streams.</doc>
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="tell">
+        <callback name="tell">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset from the beginning of the buffer.</doc>
+            <type name="gint64" c:type="goffset"/>
+          </return-value>
+          <parameters>
+            <parameter name="seekable" transfer-ownership="none">
+              <type name="Seekable" c:type="GSeekable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_seek">
+        <callback name="can_seek">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if @seekable can be seeked. %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="seekable" transfer-ownership="none">
+              <type name="Seekable" c:type="GSeekable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="seek">
+        <callback name="seek" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if successful. If an error</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="seekable" transfer-ownership="none">
+              <type name="Seekable" c:type="GSeekable*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #goffset.</doc>
+              <type name="gint64" c:type="goffset"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GSeekType.</doc>
+              <type name="GLib.SeekType" c:type="GSeekType"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_truncate">
+        <callback name="can_truncate">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the stream can be truncated, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="seekable" transfer-ownership="none">
+              <type name="Seekable" c:type="GSeekable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="truncate_fn">
+        <callback name="truncate_fn" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if successful. If an error</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="seekable" transfer-ownership="none">
+              <type name="Seekable" c:type="GSeekable*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #goffset.</doc>
+              <type name="gint64" c:type="goffset"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="Settings"
+           c:symbol-prefix="settings"
+           c:type="GSettings"
+           parent="GObject.Object"
+           glib:type-name="GSettings"
+           glib:get-type="g_settings_get_type"
+           glib:type-struct="SettingsClass">
+      <constructor name="new" c:identifier="g_settings_new" version="2.26">
+        <doc xml:whitespace="preserve">Creates a new #GSettings object with a given schema.
+Signals on the newly created #GSettings object will be dispatched
+via the thread-default #GMainContext in effect at the time of the
+call to g_settings_new().  The new #GSettings will hold a reference
+on the context.  See g_main_context_push_thread_default().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GSettings object</doc>
+          <type name="Settings" c:type="GSettings*"/>
+        </return-value>
+        <parameters>
+          <parameter name="schema" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the schema</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_backend"
+                   c:identifier="g_settings_new_with_backend"
+                   version="2.26">
+        <doc xml:whitespace="preserve">Creates a new #GSettings object with a given schema and backend.
+Creating settings objects with an different backend allows accessing settings
+from a database other than the usual one.  For example, it may make
+sense to pass a backend corresponding to the "defaults" settings database on
+the system to get a settings object that modifies the system default
+settings instead of the settings for this user.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GSettings object</doc>
+          <type name="Settings" c:type="GSettings*"/>
+        </return-value>
+        <parameters>
+          <parameter name="schema" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the schema</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="backend" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GSettingsBackend to use</doc>
+            <type name="SettingsBackend" c:type="GSettingsBackend*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_backend_and_path"
+                   c:identifier="g_settings_new_with_backend_and_path"
+                   version="2.26">
+        <doc xml:whitespace="preserve">Creates a new #GSettings object with a given schema, backend and
+path.
+This is a mix of g_settings_new_with_backend() and
+g_settings_new_with_path().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GSettings object</doc>
+          <type name="Settings" c:type="GSettings*"/>
+        </return-value>
+        <parameters>
+          <parameter name="schema" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the schema</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="backend" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GSettingsBackend to use</doc>
+            <type name="SettingsBackend" c:type="GSettingsBackend*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the path to use</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_path"
+                   c:identifier="g_settings_new_with_path"
+                   version="2.26">
+        <doc xml:whitespace="preserve">Creates a new #GSettings object with a given schema and path.
+You only need to do this if you want to directly create a settings
+object with a schema that doesn't have a specified path of its own.
+That's quite rare.
+It is a programmer error to call this function for a schema that
+has an explicitly specified path.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GSettings object</doc>
+          <type name="Settings" c:type="GSettings*"/>
+        </return-value>
+        <parameters>
+          <parameter name="schema" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the schema</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the path to use</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="list_schemas" c:identifier="g_settings_list_schemas">
+        <doc xml:whitespace="preserve">must not be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a list of GSettings schemas that are available.  The list</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </function>
+      <function name="sync" c:identifier="g_settings_sync">
+        <doc xml:whitespace="preserve">Ensures that all pending operations for the given are complete for
+the default backend.
+Writes made to a #GSettings are handled asynchronously.  For this
+reason, it is very unlikely that the changes have it to disk by the
+time g_settings_set() returns.
+This call will block until all of the writes have made it to the
+backend.  Since the mainloop is not running, no change notifications
+will be dispatched during this call (but some may be queued by the
+time the call is done).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </function>
+      <function name="unbind" c:identifier="g_settings_unbind" version="2.26">
+        <doc xml:whitespace="preserve">Removes an existing binding for @property on @object.
+Note that bindings are automatically removed when the
+object is finalized, so it is rarely necessary to call this
+function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the object</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the property whose binding is removed</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="apply" c:identifier="g_settings_apply">
+        <doc xml:whitespace="preserve">Applies any changes that have been made to the settings.  This
+function does nothing unless @settings is in 'delay-apply' mode;
+see g_settings_delay().  In the normal case settings are always
+applied immediately.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="bind" c:identifier="g_settings_bind" version="2.26">
+        <doc xml:whitespace="preserve">Create a binding between the @key in the @settings object
+and the property @property of @object.
+The binding uses the default GIO mapping functions to map
+between the settings and property values. These functions
+handle booleans, numeric types and string types in a
+straightforward way. Use g_settings_bind_with_mapping() if
+you need a custom mapping, or map between types that are not
+supported by the default mapping functions.
+Unless the @flags include %G_SETTINGS_BIND_NO_SENSITIVITY, this
+function also establishes a binding between the writability of
+a boolean property by that name). See g_settings_bind_writable()
+for more details about writable bindings.
+Note that the lifecycle of the binding is tied to the object,
+and that you can have only one binding per object property.
+If you bind the same property twice on the same object, the second
+binding overrides the first one.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the key to bind</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property to bind</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags for the binding</doc>
+            <type name="SettingsBindFlags" c:type="GSettingsBindFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="bind_with_mapping"
+              c:identifier="g_settings_bind_with_mapping"
+              version="2.26"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Create a binding between the @key in the @settings object
+and the property @property of @object.
+The binding uses the provided mapping functions to map between
+settings and property values.
+Note that the lifecycle of the binding is tied to the object,
+and that you can have only one binding per object property.
+If you bind the same property twice on the same object, the second
+binding overrides the first one.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the key to bind</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property to bind</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags for the binding</doc>
+            <type name="SettingsBindFlags" c:type="GSettingsBindFlags"/>
+          </parameter>
+          <parameter name="get_mapping" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a function that gets called to convert values from @settings to @object, or %NULL to use the default GIO mapping</doc>
+            <type name="SettingsBindGetMapping"
+                  c:type="GSettingsBindGetMapping"/>
+          </parameter>
+          <parameter name="set_mapping"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="6"
+                     destroy="7">
+            <doc xml:whitespace="preserve">a function that gets called to convert values from @object to @settings, or %NULL to use the default GIO mapping</doc>
+            <type name="SettingsBindSetMapping"
+                  c:type="GSettingsBindSetMapping"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data that gets passed to @get_mapping and @set_mapping</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">#GDestroyNotify function for @user_data</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="bind_writable"
+              c:identifier="g_settings_bind_writable"
+              version="2.26">
+        <doc xml:whitespace="preserve">Create a binding between the writability of @key in the
+The property must be boolean; "sensitive" or "visible"
+properties of widgets are the most likely candidates.
+Writable bindings are always uni-directional; changes of the
+writability of the setting will be propagated to the object
+property, not the other way.
+When the @inverted argument is %TRUE, the binding inverts the
+value as it passes from the setting to the object, i.e. @property
+will be set to %TRUE if the key is &lt;emphasis&gt;not&lt;/emphasis&gt;
+writable.
+Note that the lifecycle of the binding is tied to the object,
+and that you can have only one binding per object property.
+If you bind the same property twice on the same object, the second
+binding overrides the first one.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the key to bind</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a boolean property to bind</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="inverted" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to 'invert' the value</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delay" c:identifier="g_settings_delay" version="2.26">
+        <doc xml:whitespace="preserve">Changes the #GSettings object into 'delay-apply' mode. In this
+mode, changes to @settings are not immediately propagated to the
+backend, but kept locally until g_settings_apply() is called.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get"
+              c:identifier="g_settings_get"
+              version="2.26"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the value that is stored at @key in @settings.
+A convenience function that combines g_settings_get_value() with
+g_variant_get().
+It is a programmer error to give a @key that isn't contained in the
+schema for @settings or for the #GVariantType of @format to mismatch
+the type given in the schema.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the key to get the value for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GVariant format string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean"
+              c:identifier="g_settings_get_boolean"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the value that is stored at @key in @settings.
+A convenience variant of g_settings_get() for booleans.
+It is a programmer error to give a @key that isn't specified as
+having a boolean type in the schema for @settings.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a boolean</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the key to get the value for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child"
+              c:identifier="g_settings_get_child"
+              version="2.26">
+        <doc xml:whitespace="preserve">Creates a 'child' settings object which has a base path of
+&lt;replaceable&gt;base-path&lt;/replaceable&gt;/@name", where
+&lt;replaceable&gt;base-path&lt;/replaceable&gt; is the base path of @settings.
+The schema for the child settings object must have been declared
+in the schema of @settings using a &lt;tag class="starttag"&gt;child&lt;/tag&gt; element.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a 'child' settings object</doc>
+          <type name="Settings" c:type="GSettings*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the 'child' schema</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double"
+              c:identifier="g_settings_get_double"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the value that is stored at @key in @settings.
+A convenience variant of g_settings_get() for doubles.
+It is a programmer error to give a @key that isn't specified as
+having a 'double' type in the schema for @settings.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a double</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the key to get the value for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_enum"
+              c:identifier="g_settings_get_enum"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the value that is stored in @settings for @key and converts it
+to the enum value that it represents.
+In order to use this function the type of the value must be a string
+and it must be marked in the schema file as an enumerated type.
+It is a programmer error to give a @key that isn't contained in the
+schema for @settings or is not marked as an enumerated type.
+If the value stored in the configuration database is not a valid
+value for the enumerated type then this function will return the
+default value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the enum value</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the key to get the value for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_flags"
+              c:identifier="g_settings_get_flags"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the value that is stored in @settings for @key and converts it
+to the flags value that it represents.
+In order to use this function the type of the value must be an array
+of strings and it must be marked in the schema file as an flags type.
+It is a programmer error to give a @key that isn't contained in the
+schema for @settings or is not marked as a flags type.
+If the value stored in the configuration database is not a valid
+value for the flags type then this function will return the default
+value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the flags value</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the key to get the value for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_has_unapplied"
+              c:identifier="g_settings_get_has_unapplied"
+              version="2.26">
+        <doc xml:whitespace="preserve">Returns whether the #GSettings object has any unapplied
+changes.  This can only be the case if it is in 'delayed-apply' mode.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @settings has unapplied changes</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_int" c:identifier="g_settings_get_int" version="2.26">
+        <doc xml:whitespace="preserve">Gets the value that is stored at @key in @settings.
+A convenience variant of g_settings_get() for 32-bit integers.
+It is a programmer error to give a @key that isn't specified as
+having a int32 type in the schema for @settings.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an integer</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the key to get the value for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_mapped"
+              c:identifier="g_settings_get_mapped"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the value that is stored at @key in @settings, subject to
+application-level validation/mapping.
+You should use this function when the application needs to perform
+some processing on the value of the key (for example, parsing).  The
+indicates that the processing was unsuccessful (due to a parse error,
+for example) then the mapping is tried again with another value.
+This allows a robust 'fall back to defaults' behaviour to be
+implemented somewhat automatically.
+The first value that is tried is the user's setting for the key.  If
+the mapping function fails to map this value, other values may be
+tried in an unspecified order (system or site defaults, translated
+schema default values, untranslated schema default values, etc).
+If the mapping function fails for all possible values, one additional
+If the mapping function still indicates failure at this point then
+the application will be aborted.
+The result parameter for the @mapping function is pointed to a
+#gpointer which is initially set to %NULL.  The same pointer is given
+to each invocation of @mapping.  The final value of that #gpointer is
+what is returned by this function.  %NULL is valid; it is returned
+just as any other value would be.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the result, which may be %NULL</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the key to get the value for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="mapping" transfer-ownership="none" closure="2">
+            <doc xml:whitespace="preserve">the function to map the value in the settings database to the value used by the application</doc>
+            <type name="SettingsGetMapping" c:type="GSettingsGetMapping"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data for @mapping</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string"
+              c:identifier="g_settings_get_string"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the value that is stored at @key in @settings.
+A convenience variant of g_settings_get() for strings.
+It is a programmer error to give a @key that isn't specified as
+having a string type in the schema for @settings.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly-allocated string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the key to get the value for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_strv"
+              c:identifier="g_settings_get_strv"
+              version="2.26">
+        <doc xml:whitespace="preserve">A convenience variant of g_settings_get() for string arrays.
+It is a programmer error to give a @key that isn't specified as
+having an array of strings type in the schema for @settings.
+stored at @key in @settings.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the value that is</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the key to get the value for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value"
+              c:identifier="g_settings_get_value"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the value that is stored in @settings for @key.
+It is a programmer error to give a @key that isn't contained in the
+schema for @settings.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GVariant</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the key to get the value for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_writable"
+              c:identifier="g_settings_is_writable"
+              version="2.26">
+        <doc xml:whitespace="preserve">Finds out if a key can be written or not</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the key @name is writable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a key</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_children" c:identifier="g_settings_list_children">
+        <doc xml:whitespace="preserve">Gets the list of children on @settings.
+The list is exactly the list of strings for which it is not an error
+to call g_settings_get_child().
+For GSettings objects that are lists, this value can change at any
+time and you should connect to the "children-changed" signal to watch
+request a child after listing it only for it to have been destroyed
+in the meantime.  For this reason, g_settings_get_chuld() may return
+%NULL even for a child that was listed by this function.
+For GSettings objects that are not lists, you should probably not be
+calling this function from "normal" code (since you should already
+know what children are in your schema).  This function may still be
+useful there for introspection reasons, however.
+You should free the return value with g_strfreev() when you are done
+with it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a list of the children on @settings</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="list_keys" c:identifier="g_settings_list_keys">
+        <doc xml:whitespace="preserve">Introspects the list of keys on @settings.
+You should probably not be calling this function from "normal" code
+(since you should already know what keys are in your schema).  This
+function is intended for introspection reasons.
+You should free the return value with g_strfreev() when you are done
+with it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a list of the keys on @settings</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="reset" c:identifier="g_settings_reset">
+        <doc xml:whitespace="preserve">Resets @key to its default value.
+This call resets the key, as much as possible, to its default value.
+That might the value specified in the schema or the one set by the
+administrator.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a key</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="revert" c:identifier="g_settings_revert">
+        <doc xml:whitespace="preserve">Reverts all non-applied changes to the settings.  This function
+does nothing unless @settings is in 'delay-apply' mode; see
+g_settings_delay().  In the normal case settings are always applied
+immediately.
+Change notifications will be emitted for affected keys.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set"
+              c:identifier="g_settings_set"
+              version="2.26"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets @key in @settings to @value.
+A convenience function that combines g_settings_set_value() with
+g_variant_new().
+It is a programmer error to give a @key that isn't contained in the
+schema for @settings or for the #GVariantType of @format to mismatch
+the type given in the schema.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if setting the key succeeded, %FALSE if the key was not writable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the key to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GVariant format string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_boolean"
+              c:identifier="g_settings_set_boolean"
+              version="2.26">
+        <doc xml:whitespace="preserve">Sets @key in @settings to @value.
+A convenience variant of g_settings_set() for booleans.
+It is a programmer error to give a @key that isn't specified as
+having a boolean type in the schema for @settings.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if setting the key succeeded, %FALSE if the key was not writable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the key to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value to set it to</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_double"
+              c:identifier="g_settings_set_double"
+              version="2.26">
+        <doc xml:whitespace="preserve">Sets @key in @settings to @value.
+A convenience variant of g_settings_set() for doubles.
+It is a programmer error to give a @key that isn't specified as
+having a 'double' type in the schema for @settings.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if setting the key succeeded, %FALSE if the key was not writable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the key to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value to set it to</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_enum" c:identifier="g_settings_set_enum">
+        <doc xml:whitespace="preserve">Looks up the enumerated type nick for @value and writes it to @key,
+within @settings.
+It is a programmer error to give a @key that isn't contained in the
+schema for @settings or is not marked as an enumerated type, or for
+After performing the write, accessing @key directly with
+g_settings_get_string() will return the 'nick' associated with</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if the set succeeds</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a key, within @settings</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an enumerated value</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_flags" c:identifier="g_settings_set_flags">
+        <doc xml:whitespace="preserve">Looks up the flags type nicks for the bits specified by @value, puts
+them in an array of strings and writes the array to @key, withing
+It is a programmer error to give a @key that isn't contained in the
+schema for @settings or is not marked as a flags type, or for @value
+to contain any bits that are not value for the named type.
+After performing the write, accessing @key directly with
+g_settings_get_strv() will return an array of 'nicks'; one for each
+bit in @value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if the set succeeds</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a key, within @settings</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a flags value</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_int" c:identifier="g_settings_set_int" version="2.26">
+        <doc xml:whitespace="preserve">Sets @key in @settings to @value.
+A convenience variant of g_settings_set() for 32-bit integers.
+It is a programmer error to give a @key that isn't specified as
+having a int32 type in the schema for @settings.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if setting the key succeeded, %FALSE if the key was not writable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the key to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value to set it to</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_string"
+              c:identifier="g_settings_set_string"
+              version="2.26">
+        <doc xml:whitespace="preserve">Sets @key in @settings to @value.
+A convenience variant of g_settings_set() for strings.
+It is a programmer error to give a @key that isn't specified as
+having a string type in the schema for @settings.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if setting the key succeeded, %FALSE if the key was not writable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the key to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value to set it to</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_strv"
+              c:identifier="g_settings_set_strv"
+              version="2.26">
+        <doc xml:whitespace="preserve">Sets @key in @settings to @value.
+A convenience variant of g_settings_set() for string arrays.  If
+It is a programmer error to give a @key that isn't specified as
+having an array of strings type in the schema for @settings.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if setting the key succeeded, %FALSE if the key was not writable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the key to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the value to set it to, or %NULL</doc>
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value"
+              c:identifier="g_settings_set_value"
+              version="2.26">
+        <doc xml:whitespace="preserve">Sets @key in @settings to @value.
+It is a programmer error to give a @key that isn't contained in the
+schema for @settings or for @value to have the incorrect type, per
+the schema.
+If @value is floating then this function consumes the reference.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if setting the key succeeded, %FALSE if the key was not writable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the key to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GVariant of the correct type</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="backend"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="SettingsBackend"/>
+      </property>
+      <property name="has-unapplied" transfer-ownership="none">
+        <doc xml:whitespace="preserve">If this property is %TRUE, the #GSettings object has outstanding
+changes that will be applied when g_settings_apply() is called.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="path"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The path within the backend where the settings are stored.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="schema"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The name of the schema that describes the types of keys
+for this #GSettings object.</doc>
+        <type name="utf8"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="SettingsPrivate" c:type="GSettingsPrivate*"/>
+      </field>
+      <glib:signal name="change-event">
+        <doc xml:whitespace="preserve">The "change-event" signal is emitted once per change event that
+affects this settings object.  You should connect to this signal
+only if you are interested in viewing groups of changes before they
+are split out into multiple emissions of the "changed" signal.
+For most use cases it is more appropriate to use the "changed" signal.
+In the event that the change event applies to one or more specified
+keys, @keys will be an array of #GQuark of length @n_keys.  In the
+event that the change event applies to the #GSettings object as a
+be %NULL and @n_keys will be 0.
+The default handler for this signal invokes the "changed" signal
+for each affected key.  If any other connected handler returns
+%TRUE then this default functionality will be supressed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for the event. FALSE to propagate the event further.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of #GQuark&lt;!-- --&gt;s for the changed keys, or %NULL</doc>
+            <type name="gpointer"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of the @keys array, or 0</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="changed">
+        <doc xml:whitespace="preserve">The "changed" signal is emitted when a key has potentially changed.
+You should call one of the g_settings_get() calls to check the new
+value.
+This signal supports detailed connections.  You can connect to the
+detailed signal "changed::x" in order to only receive callbacks
+when key "x" changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the key that changed</doc>
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="writable-change-event">
+        <doc xml:whitespace="preserve">The "writable-change-event" signal is emitted once per writability
+change event that affects this settings object.  You should connect
+to this signal if you are interested in viewing groups of changes
+before they are split out into multiple emissions of the
+"writable-changed" signal.  For most use cases it is more
+appropriate to use the "writable-changed" signal.
+In the event that the writability change applies only to a single
+key, @key will be set to the #GQuark for that key.  In the event
+that the writability change affects the entire settings object,
+The default handler for this signal invokes the "writable-changed"
+and "changed" signals for each affected key.  This is done because
+changes in writability might also imply changes in value (if for
+example, a new mandatory setting is introduced).  If any other
+connected handler returns %TRUE then this default functionality
+will be supressed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for the event. FALSE to propagate the event further.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the quark of the key, or 0</doc>
+            <type name="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="writable-changed">
+        <doc xml:whitespace="preserve">The "writable-changed" signal is emitted when the writability of a
+key has potentially changed.  You should call
+g_settings_is_writable() in order to determine the new status.
+This signal supports detailed connections.  You can connect to the
+detailed signal "writable-changed::x" in order to only receive
+callbacks when the writability of "x" changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the key</doc>
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <class name="SettingsBackend"
+           c:symbol-prefix="settings_backend"
+           c:type="GSettingsBackend"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GSettingsBackend"
+           glib:get-type="g_settings_backend_get_type"
+           glib:type-struct="SettingsBackendClass">
+      <doc xml:whitespace="preserve">An implementation of a settings storage repository.</doc>
+      <function name="flatten_tree"
+                c:identifier="g_settings_backend_flatten_tree"
+                version="2.26">
+        <doc xml:whitespace="preserve">Calculate the longest common prefix of all keys in a tree and write
+out an array of the key names relative to that prefix and,
+optionally, the value to store at each of those keys.
+You must free the value returned in @path, @keys and @values using
+g_free().  You should not attempt to free or unref the contents of</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tree" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GTree containing the changes</doc>
+            <type name="GLib.Tree" c:type="GTree*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the location to save the path</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="keys" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the location to save the relative keys</doc>
+            <type name="utf8" c:type="gchar***"/>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the location to save the values, or %NULL</doc>
+            <type name="GLib.Variant" c:type="GVariant***"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="get_permission" introspectable="0">
+        <return-value>
+          <type name="Permission" c:type="GPermission*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_writable">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="read">
+        <return-value transfer-ownership="full">
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="expected_type" transfer-ownership="none">
+            <type name="GLib.VariantType" c:type="GVariantType*"/>
+          </parameter>
+          <parameter name="default_value" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="reset">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="origin_tag" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="subscribe">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="sync">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="unsubscribe">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="write">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+          <parameter name="origin_tag" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="write_tree">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tree" transfer-ownership="none">
+            <type name="GLib.Tree" c:type="GTree*"/>
+          </parameter>
+          <parameter name="origin_tag" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="changed"
+              c:identifier="g_settings_backend_changed"
+              version="2.26">
+        <doc xml:whitespace="preserve">Signals that a single key has possibly changed.  Backend
+implementations should call this if a key has possibly changed its
+value.
+'//', and not ending with a slash).
+The implementation must call this function during any call to
+g_settings_backend_write(), before the call returns (except in the
+case that no keys are actually changed and it cares to detect this
+fact).  It may not rely on the existence of a mainloop for
+dispatching the signal later.
+The implementation may call this function at any other time it likes
+in response to other events (such as changes occuring outside of the
+program).  These calls may originate from a mainloop or may originate
+in response to any other action (including from calls to
+g_settings_backend_write()).
+In the case that this call is in response to a call to
+g_settings_backend_write() then @origin_tag must be set to the same
+value that was passed to that call.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the key</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="origin_tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the origin tag</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="changed_tree"
+              c:identifier="g_settings_backend_changed_tree"
+              version="2.26">
+        <doc xml:whitespace="preserve">This call is a convenience wrapper.  It gets the list of changes from
+g_settings_backend_changed().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tree" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GTree containing the changes</doc>
+            <type name="GLib.Tree" c:type="GTree*"/>
+          </parameter>
+          <parameter name="origin_tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the origin tag</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="keys_changed"
+              c:identifier="g_settings_backend_keys_changed"
+              version="2.26">
+        <doc xml:whitespace="preserve">Signals that a list of keys have possibly changed.  Backend
+implementations should call this if keys have possibly changed their
+values.
+not containing '//').  Each string in @items must form a valid key
+end with '/' and must not contain '//').
+The meaning of this signal is that any of the key names resulting
+from the contatenation of @path with each item in @items may have
+changed.
+The same rules for when notifications must occur apply as per
+g_settings_backend_changed().  These two calls can be used
+interchangeably if exactly one item has changed (although in that
+case g_settings_backend_changed() is definitely preferred).
+For efficiency reasons, the implementation should strive for @path to
+keys that were changed) but this is not strictly required.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the path containing the changes</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="items" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the %NULL-terminated list of changed keys</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="origin_tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the origin tag</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="path_changed"
+              c:identifier="g_settings_backend_path_changed"
+              version="2.26">
+        <doc xml:whitespace="preserve">Signals that all keys below a given path may have possibly changed.
+Backend implementations should call this if an entire path of keys
+have possibly changed their values.
+not containing '//').
+The meaning of this signal is that any of the key which has a name
+starting with @path may have changed.
+The same rules for when notifications must occur apply as per
+g_settings_backend_changed().  This call might be an appropriate
+reasponse to a 'reset' call but implementations are also free to
+explicitly list the keys that were affected by that call if they can
+easily do so.
+For efficiency reasons, the implementation should strive for @path to
+keys that were changed) but this is not strictly required.  As an
+example, if this function is called with the path of "/" then every
+single key in the application will be notified of a possible change.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the path containing the changes</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="origin_tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the origin tag</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="path_writable_changed"
+              c:identifier="g_settings_backend_path_writable_changed"
+              version="2.26">
+        <doc xml:whitespace="preserve">Signals that the writability of all keys below a given path may have
+changed.
+Since GSettings performs no locking operations for itself, this call
+will always be made in response to external events.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the path</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="writable_changed"
+              c:identifier="g_settings_backend_writable_changed"
+              version="2.26">
+        <doc xml:whitespace="preserve">Signals that the writability of a single key has possibly changed.
+Since GSettings performs no locking operations for itself, this call
+will always be made in response to external events.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the key</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="SettingsBackendPrivate" c:type="GSettingsBackendPrivate*"/>
+      </field>
+    </class>
+    <record name="SettingsBackendClass"
+            c:type="GSettingsBackendClass"
+            glib:is-gtype-struct-for="SettingsBackend">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="read">
+        <callback name="read">
+          <return-value transfer-ownership="full">
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="SettingsBackend" c:type="GSettingsBackend*"/>
+            </parameter>
+            <parameter name="key" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="expected_type" transfer-ownership="none">
+              <type name="GLib.VariantType" c:type="GVariantType*"/>
+            </parameter>
+            <parameter name="default_value" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_writable">
+        <callback name="get_writable">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="SettingsBackend" c:type="GSettingsBackend*"/>
+            </parameter>
+            <parameter name="key" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="write">
+        <callback name="write">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="SettingsBackend" c:type="GSettingsBackend*"/>
+            </parameter>
+            <parameter name="key" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="GLib.Variant" c:type="GVariant*"/>
+            </parameter>
+            <parameter name="origin_tag" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="write_tree">
+        <callback name="write_tree">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="SettingsBackend" c:type="GSettingsBackend*"/>
+            </parameter>
+            <parameter name="tree" transfer-ownership="none">
+              <type name="GLib.Tree" c:type="GTree*"/>
+            </parameter>
+            <parameter name="origin_tag" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="reset">
+        <callback name="reset">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="SettingsBackend" c:type="GSettingsBackend*"/>
+            </parameter>
+            <parameter name="key" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="origin_tag" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="subscribe">
+        <callback name="subscribe">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="SettingsBackend" c:type="GSettingsBackend*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unsubscribe">
+        <callback name="unsubscribe">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="SettingsBackend" c:type="GSettingsBackend*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="sync">
+        <callback name="sync">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="SettingsBackend" c:type="GSettingsBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_permission" introspectable="0">
+        <callback name="get_permission" introspectable="0">
+          <return-value>
+            <type name="Permission" c:type="GPermission*"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="SettingsBackend" c:type="GSettingsBackend*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="padding">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="24">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="SettingsBackendPrivate"
+            c:type="GSettingsBackendPrivate"
+            disguised="1">
+    </record>
+    <bitfield name="SettingsBindFlags"
+              glib:type-name="GSettingsBindFlags"
+              glib:get-type="g_settings_bind_flags_get_type"
+              c:type="GSettingsBindFlags">
+      <doc xml:whitespace="preserve">Flags used when creating a binding. These flags determine in which
+direction the binding works. The default is to synchronize in both
+directions.</doc>
+      <member name="default"
+              value="0"
+              c:identifier="G_SETTINGS_BIND_DEFAULT"
+              glib:nick="default"/>
+      <member name="get"
+              value="1"
+              c:identifier="G_SETTINGS_BIND_GET"
+              glib:nick="get"/>
+      <member name="set"
+              value="2"
+              c:identifier="G_SETTINGS_BIND_SET"
+              glib:nick="set"/>
+      <member name="no_sensitivity"
+              value="4"
+              c:identifier="G_SETTINGS_BIND_NO_SENSITIVITY"
+              glib:nick="no-sensitivity"/>
+      <member name="get_no_changes"
+              value="8"
+              c:identifier="G_SETTINGS_BIND_GET_NO_CHANGES"
+              glib:nick="get-no-changes"/>
+      <member name="invert_boolean"
+              value="16"
+              c:identifier="G_SETTINGS_BIND_INVERT_BOOLEAN"
+              glib:nick="invert-boolean"/>
+    </bitfield>
+    <callback name="SettingsBindGetMapping" c:type="GSettingsBindGetMapping">
+      <doc xml:whitespace="preserve">The type for the function that is used to convert from #GSettings to
+an object property. The @value is already initialized to hold values
+of the appropriate type.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the conversion succeeded, %FALSE in case of an error</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for the property value</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="variant" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GVariant</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">user data that was specified when the binding was created</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="SettingsBindSetMapping" c:type="GSettingsBindSetMapping">
+      <doc xml:whitespace="preserve">The type for the function that is used to convert an object property
+value to a #GVariant for storing it in #GSettings.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GVariant holding the data from @value, or %NULL in case of an error</doc>
+        <type name="GLib.Variant" c:type="GVariant*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue containing the property value to map</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="expected_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GVariantType to create</doc>
+          <type name="GLib.VariantType" c:type="GVariantType*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">user data that was specified when the binding was created</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="SettingsClass"
+            c:type="GSettingsClass"
+            glib:is-gtype-struct-for="Settings">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="writable_changed">
+        <callback name="writable_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="settings" transfer-ownership="none">
+              <type name="Settings" c:type="GSettings*"/>
+            </parameter>
+            <parameter name="key" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="changed">
+        <callback name="changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="settings" transfer-ownership="none">
+              <type name="Settings" c:type="GSettings*"/>
+            </parameter>
+            <parameter name="key" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="writable_change_event">
+        <callback name="writable_change_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="settings" transfer-ownership="none">
+              <type name="Settings" c:type="GSettings*"/>
+            </parameter>
+            <parameter name="key" transfer-ownership="none">
+              <type name="GLib.Quark" c:type="GQuark"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="change_event">
+        <callback name="change_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="settings" transfer-ownership="none">
+              <type name="Settings" c:type="GSettings*"/>
+            </parameter>
+            <parameter name="keys" transfer-ownership="none">
+              <type name="GLib.Quark" c:type="GQuark*"/>
+            </parameter>
+            <parameter name="n_keys" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="padding">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <callback name="SettingsGetMapping" c:type="GSettingsGetMapping">
+      <doc xml:whitespace="preserve">The type of the function that is used to convert from a value stored
+in a #GSettings to a value that is useful to the application.
+If the value is successfully mapped, the result should be stored at
+is not in the right format) then %FALSE should be returned.
+If @value is %NULL then it means that the mapping function is being
+given a "last chance" to successfully return a valid value.  %TRUE
+must be returned in this case.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the conversion succeeded, %FALSE in case of an error</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GVariant to map, or %NULL</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </parameter>
+        <parameter name="result" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the result of the mapping</doc>
+          <type name="gpointer" c:type="gpointer*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">the user data that was passed to g_settings_get_mapped()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="SettingsPrivate" c:type="GSettingsPrivate" disguised="1">
+    </record>
+    <class name="SimpleAction"
+           c:symbol-prefix="simple_action"
+           c:type="GSimpleAction"
+           version="2.26"
+           parent="GObject.Object"
+           glib:type-name="GSimpleAction"
+           glib:get-type="g_simple_action_get_type"
+           glib:type-struct="SimpleActionClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;GSimpleAction&lt;/structname&gt; structure contains private
+data and should only be accessed using the provided API</doc>
+      <implements name="Action"/>
+      <constructor name="new"
+                   c:identifier="g_simple_action_new"
+                   version="2.26">
+        <doc xml:whitespace="preserve">Creates a new action.
+The created action is stateless.  See g_simple_action_new_stateful().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GSimpleAction</doc>
+          <type name="SimpleAction" c:type="GSimpleAction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="parameter_type"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the type of parameter to the activate function</doc>
+            <type name="GLib.VariantType" c:type="GVariantType*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_stateful"
+                   c:identifier="g_simple_action_new_stateful"
+                   version="2.26">
+        <doc xml:whitespace="preserve">Creates a new stateful action.
+must have the same #GVariantType as the initial state.
+If the @state GVariant is floating, it is consumed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GSimpleAction</doc>
+          <type name="SimpleAction" c:type="GSimpleAction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="parameter_type"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the type of the parameter to the activate function</doc>
+            <type name="GLib.VariantType" c:type="GVariantType*"/>
+          </parameter>
+          <parameter name="state" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the initial state of the action</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_enabled"
+              c:identifier="g_simple_action_set_enabled"
+              version="2.26">
+        <doc xml:whitespace="preserve">Sets the action as enabled or not.
+An action must be enabled in order to be activated or in order to
+have its state changed from outside callers.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enabled" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the action is enabled</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="enabled"
+                version="2.26"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If @action is currently enabled.
+If the action is disabled then calls to g_simple_action_activate() and
+g_simple_action_set_state() have no effect.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="name"
+                version="2.26"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The name of the action.  This is mostly meaningful for identifying
+the action once it has been added to a #GSimpleActionGroup.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="parameter-type"
+                version="2.26"
+                introspectable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The type of the parameter that must be given when activating the
+action.</doc>
+        <type/>
+      </property>
+      <property name="state"
+                version="2.26"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The state of the action, or %NULL if the action is stateless.</doc>
+        <type name="GLib.Variant"/>
+      </property>
+      <property name="state-type"
+                version="2.26"
+                introspectable="0"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GVariantType of the state that the action has, or %NULL if the
+action is stateless.</doc>
+        <type/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="SimpleActionPrivate" c:type="GSimpleActionPrivate*"/>
+      </field>
+      <glib:signal name="activate" version="2.26">
+        <doc xml:whitespace="preserve">Indicates that the action was just activated.
+an incorrect type was given, no signal will be emitted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the parameter to the activation</doc>
+            <type name="GLib.Variant"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="SimpleActionClass"
+            c:type="GSimpleActionClass"
+            glib:is-gtype-struct-for="SimpleAction"
+            version="2.26">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="activate">
+        <callback name="activate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="simple" transfer-ownership="none">
+              <type name="SimpleAction" c:type="GSimpleAction*"/>
+            </parameter>
+            <parameter name="parameter" transfer-ownership="none">
+              <type name="GLib.Variant" c:type="GVariant*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="padding">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="6">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <class name="SimpleActionGroup"
+           c:symbol-prefix="simple_action_group"
+           c:type="GSimpleActionGroup"
+           version="2.26"
+           parent="GObject.Object"
+           glib:type-name="GSimpleActionGroup"
+           glib:get-type="g_simple_action_group_get_type"
+           glib:type-struct="SimpleActionGroupClass">
+      <doc xml:whitespace="preserve">The #GSimpleActionGroup structure contains private data and should only be accessed using the provided API.</doc>
+      <implements name="ActionGroup"/>
+      <constructor name="new"
+                   c:identifier="g_simple_action_group_new"
+                   version="2.26">
+        <doc xml:whitespace="preserve">Creates a new, empty, #GSimpleActionGroup.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GSimpleActionGroup</doc>
+          <type name="SimpleActionGroup" c:type="GSimpleActionGroup*"/>
+        </return-value>
+      </constructor>
+      <method name="insert"
+              c:identifier="g_simple_action_group_insert"
+              version="2.26">
+        <doc xml:whitespace="preserve">Adds an action to the action group.
+If the action group already contains an action with the same name as
+The action group takes its own reference on @action.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAction</doc>
+            <type name="Action" c:type="GAction*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup"
+              c:identifier="g_simple_action_group_lookup"
+              version="2.26">
+        <doc xml:whitespace="preserve">Looks up the action with the name @action_name in the group.
+If no such action exists, returns %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GAction, or %NULL</doc>
+          <type name="Action" c:type="GAction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of an action</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="g_simple_action_group_remove"
+              version="2.26">
+        <doc xml:whitespace="preserve">Removes the named action from the action group.
+If no action of this name is in the group then nothing happens.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="SimpleActionGroupPrivate"
+              c:type="GSimpleActionGroupPrivate*"/>
+      </field>
+    </class>
+    <record name="SimpleActionGroupClass"
+            c:type="GSimpleActionGroupClass"
+            glib:is-gtype-struct-for="SimpleActionGroup">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="padding">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="12">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="SimpleActionGroupPrivate"
+            c:type="GSimpleActionGroupPrivate"
+            disguised="1">
+    </record>
+    <record name="SimpleActionPrivate"
+            c:type="GSimpleActionPrivate"
+            disguised="1">
+    </record>
+    <class name="SimpleAsyncResult"
+           c:symbol-prefix="simple_async_result"
+           c:type="GSimpleAsyncResult"
+           parent="GObject.Object"
+           glib:type-name="GSimpleAsyncResult"
+           glib:get-type="g_simple_async_result_get_type"
+           glib:type-struct="SimpleAsyncResultClass">
+      <doc xml:whitespace="preserve">A simple implementation of #GAsyncResult.</doc>
+      <implements name="AsyncResult"/>
+      <constructor name="new" c:identifier="g_simple_async_result_new">
+        <doc xml:whitespace="preserve">Creates a #GSimpleAsyncResult.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSimpleAsyncResult.</doc>
+          <type name="SimpleAsyncResult" c:type="GSimpleAsyncResult*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject the asynchronous function was called with, or %NULL.</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="2">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="source_tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the asynchronous function.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_error"
+                   c:identifier="g_simple_async_result_new_error"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #GSimpleAsyncResult with a set error.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSimpleAsyncResult.</doc>
+          <type name="SimpleAsyncResult" c:type="GSimpleAsyncResult*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject, or %NULL.</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="2">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="domain" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GQuark.</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="code" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an error code.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string with format characters.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_error"
+                   c:identifier="g_simple_async_result_new_from_error">
+        <doc xml:whitespace="preserve">Creates a #GSimpleAsyncResult from an error condition.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSimpleAsyncResult.</doc>
+          <type name="SimpleAsyncResult" c:type="GSimpleAsyncResult*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject, or %NULL.</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="2">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GError location.</doc>
+            <type name="GLib.Error" c:type="GError*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="is_valid" c:identifier="g_simple_async_result_is_valid">
+        <doc xml:whitespace="preserve">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 either %NULL (as it is when the result was
+created by g_simple_async_report_error_in_idle() or
+g_simple_async_report_gerror_in_idle()) or equal to the
+convention, is a pointer to the _async function corresponding to the
+_finish function from which this function is called).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#TRUE if all checks passed or #FALSE if any failed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GAsyncResult passed to the _finish function.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GObject passed to the _finish function.</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="source_tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the asynchronous function.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="complete" c:identifier="g_simple_async_result_complete">
+        <doc xml:whitespace="preserve">Completes an asynchronous I/O job immediately. Must be called in
+the thread where the asynchronous result was to be delivered, as it
+invokes the callback directly. If you are in a different thread use
+g_simple_async_result_complete_in_idle().
+Calling this function takes a reference to @simple for as long as
+is needed to complete the call.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="complete_in_idle"
+              c:identifier="g_simple_async_result_complete_in_idle">
+        <doc xml:whitespace="preserve">Completes an asynchronous function in an idle handler in the &lt;link
+linkend="g-main-context-push-thread-default"&gt;thread-default main
+loop&lt;/link&gt; of the thread that @simple was initially created in.
+Calling this function takes a reference to @simple for as long as
+is needed to complete the call.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_op_res_gboolean"
+              c:identifier="g_simple_async_result_get_op_res_gboolean">
+        <doc xml:whitespace="preserve">Gets the operation result boolean from within the asynchronous result.
+if the operation's result was %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation's result was %TRUE, %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_op_res_gpointer"
+              c:identifier="g_simple_async_result_get_op_res_gpointer"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets a pointer result as returned by the asynchronous function.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a pointer from the result.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="get_op_res_gssize"
+              c:identifier="g_simple_async_result_get_op_res_gssize">
+        <doc xml:whitespace="preserve">Gets a gssize from the asynchronous result.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gssize returned from the asynchronous function.</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+      </method>
+      <method name="get_source_tag"
+              c:identifier="g_simple_async_result_get_source_tag"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the source tag for the #GSimpleAsyncResult.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a #gpointer to the source object for the #GSimpleAsyncResult.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="propagate_error"
+              c:identifier="g_simple_async_result_propagate_error"
+              throws="1">
+        <doc xml:whitespace="preserve">Propagates an error from within the simple asynchronous result to
+a given destination.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the error was propagated to @dest. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="run_in_thread"
+              c:identifier="g_simple_async_result_run_in_thread"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Runs the asynchronous job in a separate thread and then calls
+g_simple_async_result_complete_in_idle() on @simple to return
+the result to the appropriate main loop.
+Calling this function takes a reference to @simple for as long as
+is needed to run the job and report its completion.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GSimpleAsyncThreadFunc.</doc>
+            <type name="SimpleAsyncThreadFunc"
+                  c:type="GSimpleAsyncThreadFunc"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the io priority of the request.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_error"
+              c:identifier="g_simple_async_result_set_error"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets an error within the asynchronous result without a #GError.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="domain" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GQuark (usually #G_IO_ERROR).</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="code" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an error code.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a formatted error reporting string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_error_va"
+              c:identifier="g_simple_async_result_set_error_va"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets an error within the asynchronous result without a #GError.
+Unless writing a binding, see g_simple_async_result_set_error().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="domain" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GQuark (usually #G_IO_ERROR).</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="code" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an error code.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a formatted error reporting string.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">va_list of arguments.</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_error"
+              c:identifier="g_simple_async_result_set_from_error">
+        <doc xml:whitespace="preserve">Sets the result from a #GError.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="error" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GError.</doc>
+            <type name="GLib.Error" c:type="GError*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_handle_cancellation"
+              c:identifier="g_simple_async_result_set_handle_cancellation">
+        <doc xml:whitespace="preserve">Sets whether to handle cancellation within the asynchronous operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handle_cancellation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gboolean.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_op_res_gboolean"
+              c:identifier="g_simple_async_result_set_op_res_gboolean">
+        <doc xml:whitespace="preserve">Sets the operation result to a boolean within the asynchronous result.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="op_res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gboolean.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_op_res_gpointer"
+              c:identifier="g_simple_async_result_set_op_res_gpointer">
+        <doc xml:whitespace="preserve">Sets the operation result within the asynchronous result to a pointer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="op_res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer result from an asynchronous function.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy_op_res"
+                     transfer-ownership="none"
+                     scope="async">
+            <doc xml:whitespace="preserve">a #GDestroyNotify function.</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_op_res_gssize"
+              c:identifier="g_simple_async_result_set_op_res_gssize">
+        <doc xml:whitespace="preserve">Sets the operation result within the asynchronous result to
+the given @op_res.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="op_res" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gssize.</doc>
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <record name="SimpleAsyncResultClass"
+            c:type="GSimpleAsyncResultClass"
+            disguised="1"
+            glib:is-gtype-struct-for="SimpleAsyncResult">
+    </record>
+    <callback name="SimpleAsyncThreadFunc" c:type="GSimpleAsyncThreadFunc">
+      <doc xml:whitespace="preserve">Simple thread function that runs an asynchronous operation and
+checks for cancellation.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="res" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GSimpleAsyncResult.</doc>
+          <type name="SimpleAsyncResult" c:type="GSimpleAsyncResult*"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObject.</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="cancellable" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+          <type name="Cancellable" c:type="GCancellable*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="SimplePermission"
+           c:symbol-prefix="simple_permission"
+           c:type="GSimplePermission"
+           parent="Permission"
+           glib:type-name="GSimplePermission"
+           glib:get-type="g_simple_permission_get_type">
+      <doc xml:whitespace="preserve">#GSimplePermission is an opaque data structure.  There are no methods
+except for those defined by #GPermission.</doc>
+      <constructor name="new"
+                   c:identifier="g_simple_permission_new"
+                   version="2.26">
+        <doc xml:whitespace="preserve">Creates a new #GPermission instance that represents an action that is
+either always or never allowed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GSimplePermission, as a #GPermission</doc>
+          <type name="Permission" c:type="GPermission*"/>
+        </return-value>
+        <parameters>
+          <parameter name="allowed" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the action is allowed</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+    </class>
+    <class name="Socket"
+           c:symbol-prefix="socket"
+           c:type="GSocket"
+           version="2.22"
+           parent="GObject.Object"
+           glib:type-name="GSocket"
+           glib:get-type="g_socket_get_type"
+           glib:type-struct="SocketClass">
+      <doc xml:whitespace="preserve">A lowlevel network socket object.</doc>
+      <implements name="Initable"/>
+      <constructor name="new"
+                   c:identifier="g_socket_new"
+                   version="2.22"
+                   throws="1">
+        <doc xml:whitespace="preserve">Creates a new #GSocket with the defined family, type and protocol.
+If @protocol is 0 (%G_SOCKET_PROTOCOL_DEFAULT) the default protocol type
+for the family and type is used.
+The @protocol is a family and type specific int that specifies what
+kind of protocol to use. #GSocketProtocol lists several common ones.
+Many families only support one protocol, and use 0 for this, others
+support several and using 0 means to use the default protocol for
+the family and type.
+The protocol id is passed directly to the operating
+system, so you can use protocols not listed in #GSocketProtocol if you
+know the protocol number used for it.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSocket or %NULL on error.</doc>
+          <type name="Socket" c:type="GSocket*"/>
+        </return-value>
+        <parameters>
+          <parameter name="family" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the socket family to use, e.g. %G_SOCKET_FAMILY_IPV4.</doc>
+            <type name="SocketFamily" c:type="GSocketFamily"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the socket type to use.</doc>
+            <type name="SocketType" c:type="GSocketType"/>
+          </parameter>
+          <parameter name="protocol" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id of the protocol to use, or 0 for default.</doc>
+            <type name="SocketProtocol" c:type="GSocketProtocol"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_fd"
+                   c:identifier="g_socket_new_from_fd"
+                   version="2.22"
+                   throws="1">
+        <doc xml:whitespace="preserve">Creates a new #GSocket from a native file descriptor
+or winsock SOCKET handle.
+This reads all the settings from the file descriptor so that
+all properties should work. Note that the file descriptor
+will be set to non-blocking mode, independent on the blocking
+mode of the #GSocket.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSocket or %NULL on error.</doc>
+          <type name="Socket" c:type="GSocket*"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a native socket file descriptor.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="accept"
+              c:identifier="g_socket_accept"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Accept incoming connections on a connection-based socket. This removes
+the first outstanding connection request from the listening socket and
+creates a #GSocket object for it.
+The @socket must be bound to a local address with g_socket_bind() and
+must be listening for incoming connections (g_socket_listen()).
+If there are no outstanding connections then the operation will block
+or return %G_IO_ERROR_WOULD_BLOCK if non-blocking I/O is enabled.
+To be notified of an incoming connection, wait for the %G_IO_IN condition.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GSocket, or %NULL on error.</doc>
+          <type name="Socket" c:type="GSocket*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a %GCancellable or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="bind"
+              c:identifier="g_socket_bind"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">When a socket is created it is attached to an address family, but it
+doesn't have an address in this family. g_socket_bind() assigns the
+address (sometimes called name) of the socket.
+It is generally required to bind to a local address before you can
+receive connections. (See g_socket_listen() and g_socket_accept() ).
+In certain situations, you may also want to bind a socket that will be
+used to initiate connections, though this is not normally required.
+eventually call g_socket_accept() on), and %FALSE for client sockets.
+(Specifically, if it is %TRUE, then g_socket_bind() will set the
+%SO_REUSEADDR flag on the socket, allowing it to bind @address even if
+that address was previously used by another socket that has not yet been
+fully cleaned-up by the kernel. Failing to set this flag on a server
+socket may cause the bind call to return %G_IO_ERROR_ADDRESS_IN_USE if
+the server program is stopped and then immediately restarted.)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GSocketAddress specifying the local address.</doc>
+            <type name="SocketAddress" c:type="GSocketAddress*"/>
+          </parameter>
+          <parameter name="allow_reuse" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to allow reusing this address</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="check_connect_result"
+              c:identifier="g_socket_check_connect_result"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Checks and resets the pending connect error for the socket.
+This is used to check for errors when g_socket_connect() is
+used in non-blocking mode.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if no error, %FALSE otherwise, setting @error to the error</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="close"
+              c:identifier="g_socket_close"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Closes the socket, shutting down any active connection.
+Closing a socket does not wait for all outstanding I/O operations
+to finish, so the caller should not rely on them to be guaranteed
+to complete even if the close returns with no error.
+Once the socket is closed, all other operations will return
+%G_IO_ERROR_CLOSED. Closing a socket multiple times will not
+return an error.
+Sockets will be automatically closed when the last reference
+is dropped, but you might want to call this function to make sure
+resources are released as early as possible.
+Beware that due to the way that TCP works, it is possible for
+recently-sent data to be lost if either you close a socket while the
+%G_IO_IN condition is set, or else if the remote connection tries to
+send something to you after you close the socket but before it has
+finished reading all of the data you sent. There is no easy generic
+way to avoid this problem; the easiest fix is to design the network
+protocol such that the client will never send data "out of turn".
+Another solution is for the server to half-close the connection by
+calling g_socket_shutdown() with only the @shutdown_write flag set,
+and then wait for the client to notice this and close its side of the
+connection, after which the server can safely call g_socket_close().
+(This is what #GTcpConnection does if you call
+g_tcp_connection_set_graceful_disconnect(). But of course, this
+only works if the client will close its connection after the server
+does.)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="condition_check"
+              c:identifier="g_socket_condition_check"
+              version="2.22">
+        <doc xml:whitespace="preserve">Checks on the readiness of @socket to perform operations.
+The operations specified in @condition are checked for and masked
+against the currently-satisfied conditions on @socket. The result
+is returned.
+Note that on Windows, it is possible for an operation to return
+%G_IO_ERROR_WOULD_BLOCK even immediately after
+g_socket_condition_check() has claimed that the socket is ready for
+writing. Rather than calling g_socket_condition_check() and then
+writing to the socket if it succeeds, it is generally better to
+simply try writing to the socket right away, and try again later if
+the initial attempt returns %G_IO_ERROR_WOULD_BLOCK.
+It is meaningless to specify %G_IO_ERR or %G_IO_HUP in condition;
+these conditions will always be set in the output if they are true.
+This call never blocks.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the @GIOCondition mask of the current state</doc>
+          <type name="GLib.IOCondition" c:type="GIOCondition"/>
+        </return-value>
+        <parameters>
+          <parameter name="condition" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GIOCondition mask to check</doc>
+            <type name="GLib.IOCondition" c:type="GIOCondition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="condition_wait"
+              c:identifier="g_socket_condition_wait"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Waits for @condition to become true on @socket. When the condition
+is met, %TRUE is returned.
+If @cancellable is cancelled before the condition is met, or if the
+socket has a timeout set and it is reached before the condition is
+met, then %FALSE is returned and @error, if non-%NULL, is set to
+the appropriate value (%G_IO_ERROR_CANCELLED or
+%G_IO_ERROR_TIMED_OUT).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the condition was met, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="condition" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GIOCondition mask to wait for</doc>
+            <type name="GLib.IOCondition" c:type="GIOCondition"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect"
+              c:identifier="g_socket_connect"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Connect the socket to the specified remote address.
+For connection oriented socket this generally means we attempt to make
+a connection to the @address. For a connection-less socket it sets
+the default address for g_socket_send() and discards all incoming datagrams
+from other sources.
+Generally connection oriented sockets can only connect once, but
+connection-less sockets can connect multiple times to change the
+default address.
+If the connect call needs to do network I/O it will block, unless
+non-blocking I/O is enabled. Then %G_IO_ERROR_PENDING is returned
+and the user can be notified of the connection finishing by waiting
+for the G_IO_OUT condition. The result of the connection can then be
+checked with g_socket_check_connect_result().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if connected, %FALSE on error.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GSocketAddress specifying the remote address.</doc>
+            <type name="SocketAddress" c:type="GSocketAddress*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a %GCancellable or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connection_factory_create_connection"
+              c:identifier="g_socket_connection_factory_create_connection"
+              version="2.22">
+        <doc xml:whitespace="preserve">Creates a #GSocketConnection subclass of the right type for</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSocketConnection</doc>
+          <type name="SocketConnection" c:type="GSocketConnection*"/>
+        </return-value>
+      </method>
+      <method name="create_source"
+              c:identifier="g_socket_create_source"
+              version="2.22"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Creates a %GSource that can be attached to a %GMainContext to monitor
+for the availibility of the specified @condition on the socket.
+The callback on the source is of the #GSocketSourceFunc type.
+It is meaningless to specify %G_IO_ERR or %G_IO_HUP in @condition;
+these conditions will always be reported output if they are true.
+cause the source to trigger, reporting the current condition (which
+is likely 0 unless cancellation happened at the same time as a
+condition change). You can check for this in the callback using
+g_cancellable_is_cancelled().
+If @socket has a timeout set, and it is reached before @condition
+occurs, the source will then trigger anyway, reporting %G_IO_IN or
+%G_IO_OUT depending on @condition. However, @socket will have been
+marked as having had a timeout, and so the next #GSocket I/O method
+you call will then fail with a %G_IO_ERROR_TIMED_OUT.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated %GSource, free with g_source_unref().</doc>
+          <type name="GLib.Source" c:type="GSource*"/>
+        </return-value>
+        <parameters>
+          <parameter name="condition" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GIOCondition mask to monitor</doc>
+            <type name="GLib.IOCondition" c:type="GIOCondition"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a %GCancellable or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_blocking"
+              c:identifier="g_socket_get_blocking"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the blocking mode of the socket. For details on blocking I/O,
+see g_socket_set_blocking().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if blocking I/O is used, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_credentials"
+              c:identifier="g_socket_get_credentials"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Returns the credentials of the foreign process connected to this
+socket, if any (e.g. it is only supported for %G_SOCKET_FAMILY_UNIX
+sockets).
+If this operation isn't supported on the OS, the method fails with
+the %G_IO_ERROR_NOT_SUPPORTED error. On Linux this is implemented
+by reading the %SO_PEERCRED option on the underlying socket.
+Other ways to obtain credentials from a foreign peer includes the
+#GUnixCredentialsMessage type and
+g_unix_connection_send_credentials() /
+g_unix_connection_receive_credentials() functions.
+that must be freed with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">%NULL if @error is set, otherwise a #GCredentials object</doc>
+          <type name="Credentials" c:type="GCredentials*"/>
+        </return-value>
+      </method>
+      <method name="get_family"
+              c:identifier="g_socket_get_family"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the socket family of the socket.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GSocketFamily</doc>
+          <type name="SocketFamily" c:type="GSocketFamily"/>
+        </return-value>
+      </method>
+      <method name="get_fd" c:identifier="g_socket_get_fd" version="2.22">
+        <doc xml:whitespace="preserve">Returns the underlying OS socket object. On unix this
+is a socket file descriptor, and on windows this is
+a Winsock2 SOCKET handle. This may be useful for
+doing platform specific or otherwise unusual operations
+on the socket.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the file descriptor of the socket.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_keepalive"
+              c:identifier="g_socket_get_keepalive"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the keepalive mode of the socket. For details on this,
+see g_socket_set_keepalive().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if keepalive is active, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_listen_backlog"
+              c:identifier="g_socket_get_listen_backlog"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the listen backlog setting of the socket. For details on this,
+see g_socket_set_listen_backlog().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the maximum number of pending connections.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_local_address"
+              c:identifier="g_socket_get_local_address"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Try to get the local address of a bound socket. This is only
+useful if the socket has been bound to a local address,
+either explicitly or implicitly when connecting.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSocketAddress or %NULL on error.</doc>
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+      </method>
+      <method name="get_protocol"
+              c:identifier="g_socket_get_protocol"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the socket protocol id the socket was created with.
+In case the protocol is unknown, -1 is returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a protocol id, or -1 if unknown</doc>
+          <type name="SocketProtocol" c:type="GSocketProtocol"/>
+        </return-value>
+      </method>
+      <method name="get_remote_address"
+              c:identifier="g_socket_get_remote_address"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Try to get the remove address of a connected socket. This is only
+useful for connection oriented sockets that have been connected.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSocketAddress or %NULL on error.</doc>
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+      </method>
+      <method name="get_socket_type"
+              c:identifier="g_socket_get_socket_type"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the socket type of the socket.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GSocketType</doc>
+          <type name="SocketType" c:type="GSocketType"/>
+        </return-value>
+      </method>
+      <method name="get_timeout"
+              c:identifier="g_socket_get_timeout"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the timeout setting of the socket. For details on this, see
+g_socket_set_timeout().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the timeout in seconds</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="is_closed"
+              c:identifier="g_socket_is_closed"
+              version="2.22">
+        <doc xml:whitespace="preserve">Checks whether a socket is closed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if socket is closed, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_connected"
+              c:identifier="g_socket_is_connected"
+              version="2.22">
+        <doc xml:whitespace="preserve">Check whether the socket is connected. This is only useful for
+connection-oriented sockets.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if socket is connected, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="listen"
+              c:identifier="g_socket_listen"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Marks the socket as a server socket, i.e. a socket that is used
+to accept incoming requests using g_socket_accept().
+Before calling this the socket must be bound to a local address using
+g_socket_bind().
+To set the maximum amount of outstanding clients, use
+g_socket_set_listen_backlog().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="receive"
+              c:identifier="g_socket_receive"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Receive data (up to @size bytes) from a socket. This is mainly used by
+connection-oriented sockets; it is identical to g_socket_receive_from()
+with @address set to %NULL.
+For %G_SOCKET_TYPE_DATAGRAM and %G_SOCKET_TYPE_SEQPACKET sockets,
+g_socket_receive() will always read either 0 or 1 complete messages from
+the socket. If the received message is too large to fit in @buffer, then
+the data beyond @size bytes will be discarded, without any explicit
+indication that this has occurred.
+For %G_SOCKET_TYPE_STREAM sockets, g_socket_receive() can return any
+number of bytes, up to @size. If more than @size bytes have been
+received, the additional data will be returned in future calls to
+g_socket_receive().
+If the socket is in blocking mode the call will block until there is
+some data to receive or there is an error. If there is no data available
+and the socket is in non-blocking mode, a %G_IO_ERROR_WOULD_BLOCK error
+will be returned. To be notified when data is available, wait for the
+%G_IO_IN condition.
+On error -1 is returned and @error is set accordingly.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Number of bytes read, or -1 on error</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a buffer to read data into (which should be at least @size bytes long).</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes you want to read from the socket</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a %GCancellable or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="receive_from"
+              c:identifier="g_socket_receive_from"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Receive data (up to @size bytes) from a socket.
+If @address is non-%NULL then @address will be set equal to the
+source address of the received packet.
+See g_socket_receive() for additional information.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Number of bytes read, or -1 on error</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to a #GSocketAddress pointer, or %NULL</doc>
+            <type name="SocketAddress" c:type="GSocketAddress**"/>
+          </parameter>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a buffer to read data into (which should be at least @size bytes long).</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes you want to read from the socket</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a %GCancellable or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="receive_message"
+              c:identifier="g_socket_receive_message"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Receive data from a socket.  This is the most complicated and
+fully-featured version of this call. For easier use, see
+g_socket_receive() and g_socket_receive_from().
+If @address is non-%NULL then @address will be set equal to the
+source address of the received packet.
+describe the buffers that received data will be scattered into.
+If @num_vectors is -1, then @vectors is assumed to be terminated
+by a #GInputVector with a %NULL buffer pointer.
+As a special case, if @num_vectors is 0 (in which case, @vectors
+may of course be %NULL), then a single byte is received and
+discarded. This is to facilitate the common practice of sending a
+single '\0' byte for the purposes of transferring ancillary data.
+array of #GSocketControlMessage instances or %NULL if no such
+messages was received. These correspond to the control messages
+received from the kernel, one #GSocketControlMessage per message
+from the kernel. This array is %NULL-terminated and must be freed
+by the caller using g_free() after calling g_object_unref() on each
+element. If @messages is %NULL, any control messages received will
+be discarded.
+messages received.
+If both @messages and @num_messages are non-%NULL, then
+for this are available in the #GSocketMsgFlags enum, but the
+values there are the same as the system values, and the flags
+are passed in as-is, so you can pass in system-specific flags too
+(and g_socket_receive_message() may pass system-specific flags out).
+As with g_socket_receive(), data may be discarded if @socket is
+%G_SOCKET_TYPE_DATAGRAM or %G_SOCKET_TYPE_SEQPACKET and you do not
+provide enough buffer space to read a complete message. You can pass
+%G_SOCKET_MSG_PEEK in @flags to peek at the current message without
+removing it from the receive queue, but there is no portable way to find
+out the length of the message other than by reading it into a
+sufficiently-large buffer.
+If the socket is in blocking mode the call will block until there
+is some data to receive or there is an error. If there is no data
+available and the socket is in non-blocking mode, a
+%G_IO_ERROR_WOULD_BLOCK error will be returned. To be notified when
+data is available, wait for the %G_IO_IN condition.
+On error -1 is returned and @error is set accordingly.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Number of bytes read, or -1 on error</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to a #GSocketAddress pointer, or %NULL</doc>
+            <type name="SocketAddress" c:type="GSocketAddress**"/>
+          </parameter>
+          <parameter name="vectors" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of #GInputVector structs</doc>
+            <type name="InputVector" c:type="GInputVector*"/>
+          </parameter>
+          <parameter name="num_vectors" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of elements in @vectors, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="messages" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer which may be filled with an array of #GSocketControlMessages, or %NULL</doc>
+            <type name="SocketControlMessage"
+                  c:type="GSocketControlMessage***"/>
+          </parameter>
+          <parameter name="num_messages" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer which will be filled with the number of elements in @messages, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to an int containing #GSocketMsgFlags flags</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a %GCancellable or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="receive_with_blocking"
+              c:identifier="g_socket_receive_with_blocking"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">This behaves exactly the same as g_socket_receive(), except that
+the choice of blocking or non-blocking behavior is determined by
+the @blocking argument rather than by @socket's properties.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Number of bytes read, or -1 on error</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a buffer to read data into (which should be at least @size bytes long).</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes you want to read from the socket</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="blocking" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to do blocking or non-blocking I/O</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a %GCancellable or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send"
+              c:identifier="g_socket_send"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Tries to send @size bytes from @buffer on the socket. This is
+mainly used by connection-oriented sockets; it is identical to
+g_socket_send_to() with @address set to %NULL.
+If the socket is in blocking mode the call will block until there is
+space for the data in the socket queue. If there is no space available
+and the socket is in non-blocking mode a %G_IO_ERROR_WOULD_BLOCK error
+will be returned. To be notified when space is available, wait for the
+%G_IO_OUT condition. Note though that you may still receive
+%G_IO_ERROR_WOULD_BLOCK from g_socket_send() even if you were previously
+notified of a %G_IO_OUT condition. (On Windows in particular, this is
+very common due to the way the underlying APIs work.)
+On error -1 is returned and @error is set accordingly.
+on error</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Number of bytes written (which may be less than @size), or -1</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the buffer containing the data to send.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes to send</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a %GCancellable or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_message"
+              c:identifier="g_socket_send_message"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Send data to @address on @socket.  This is the most complicated and
+fully-featured version of this call. For easier use, see
+g_socket_send() and g_socket_send_to().
+If @address is %NULL then the message is sent to the default receiver
+(set by g_socket_connect()).
+then @vectors is assumed to be terminated by a #GOutputVector with a
+%NULL buffer pointer.) The #GOutputVector structs describe the buffers
+that the sent data will be gathered from. Using multiple
+#GOutputVector&lt;!-- --&gt;s is more memory-efficient than manually copying
+data from multiple sources into a single buffer, and more
+network-efficient than making multiple calls to g_socket_send().
+#GSocketControlMessage instances. These correspond to the control
+messages to be sent on the socket.
+If @num_messages is -1 then @messages is treated as a %NULL-terminated
+array.
+for this are available in the #GSocketMsgFlags enum, but the
+values there are the same as the system values, and the flags
+are passed in as-is, so you can pass in system-specific flags too.
+If the socket is in blocking mode the call will block until there is
+space for the data in the socket queue. If there is no space available
+and the socket is in non-blocking mode a %G_IO_ERROR_WOULD_BLOCK error
+will be returned. To be notified when space is available, wait for the
+%G_IO_OUT condition. Note though that you may still receive
+%G_IO_ERROR_WOULD_BLOCK from g_socket_send() even if you were previously
+notified of a %G_IO_OUT condition. (On Windows in particular, this is
+very common due to the way the underlying APIs work.)
+On error -1 is returned and @error is set accordingly.
+on error</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Number of bytes written (which may be less than @size), or -1</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GSocketAddress, or %NULL</doc>
+            <type name="SocketAddress" c:type="GSocketAddress*"/>
+          </parameter>
+          <parameter name="vectors" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of #GOutputVector structs</doc>
+            <type name="OutputVector" c:type="GOutputVector*"/>
+          </parameter>
+          <parameter name="num_vectors" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of elements in @vectors, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="messages" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to an array of #GSocketControlMessages, or %NULL.</doc>
+            <type name="SocketControlMessage"
+                  c:type="GSocketControlMessage**"/>
+          </parameter>
+          <parameter name="num_messages" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of elements in @messages, or -1.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an int containing #GSocketMsgFlags flags</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a %GCancellable or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_to"
+              c:identifier="g_socket_send_to"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Tries to send @size bytes from @buffer to @address. If @address is
+%NULL then the message is sent to the default receiver (set by
+g_socket_connect()).
+See g_socket_send() for additional information.
+on error</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Number of bytes written (which may be less than @size), or -1</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GSocketAddress, or %NULL</doc>
+            <type name="SocketAddress" c:type="GSocketAddress*"/>
+          </parameter>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the buffer containing the data to send.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes to send</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a %GCancellable or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_with_blocking"
+              c:identifier="g_socket_send_with_blocking"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">This behaves exactly the same as g_socket_send(), except that
+the choice of blocking or non-blocking behavior is determined by
+the @blocking argument rather than by @socket's properties.
+on error</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Number of bytes written (which may be less than @size), or -1</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the buffer containing the data to send.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes to send</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="blocking" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to do blocking or non-blocking I/O</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a %GCancellable or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blocking"
+              c:identifier="g_socket_set_blocking"
+              version="2.22">
+        <doc xml:whitespace="preserve">Sets the blocking mode of the socket. In blocking mode
+all operations block until they succeed or there is an error. In
+non-blocking mode all functions return results immediately or
+with a %G_IO_ERROR_WOULD_BLOCK error.
+All sockets are created in blocking mode. However, note that the
+platform level socket is always non-blocking, and blocking mode
+is a GSocket level feature.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="blocking" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Whether to use blocking I/O or not.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_keepalive"
+              c:identifier="g_socket_set_keepalive"
+              version="2.22">
+        <doc xml:whitespace="preserve">Sets or unsets the %SO_KEEPALIVE flag on the underlying socket. When
+this flag is set on a socket, the system will attempt to verify that the
+remote socket endpoint is still present if a sufficiently long period of
+time passes with no data being exchanged. If the system is unable to
+verify the presence of the remote endpoint, it will automatically close
+the connection.
+This option is only functional on certain kinds of sockets. (Notably,
+%G_SOCKET_PROTOCOL_TCP sockets.)
+The exact time between pings is system- and protocol-dependent, but will
+normally be at least two hours. Most commonly, you would set this flag
+on a server socket if you want to allow clients to remain idle for long
+periods of time, but also want to ensure that connections are eventually
+garbage-collected if clients crash or become unreachable.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="keepalive" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value for the keepalive flag</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_listen_backlog"
+              c:identifier="g_socket_set_listen_backlog"
+              version="2.22">
+        <doc xml:whitespace="preserve">Sets the maximum number of outstanding connections allowed
+when listening on this socket. If more clients than this are
+connecting to the socket and the application is not handling them
+on time then the new connections will be refused.
+Note that this must be called before g_socket_listen() and has no
+effect if called after that.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="backlog" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the maximum number of pending connections.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_timeout"
+              c:identifier="g_socket_set_timeout"
+              version="2.26">
+        <doc xml:whitespace="preserve">Sets the time in seconds after which I/O operations on @socket will
+time out if they have not yet completed.
+On a blocking socket, this means that any blocking #GSocket
+operation will time out after @timeout seconds of inactivity,
+returning %G_IO_ERROR_TIMED_OUT.
+On a non-blocking socket, calls to g_socket_condition_wait() will
+also fail with %G_IO_ERROR_TIMED_OUT after the given time. Sources
+created with g_socket_create_source() will trigger after
+set, at which point calling g_socket_receive(), g_socket_send(),
+g_socket_check_connect_result(), etc, will fail with
+%G_IO_ERROR_TIMED_OUT.
+If @timeout is 0 (the default), operations will never time out
+on their own.
+Note that if an I/O operation is interrupted by a signal, this may
+cause the timeout to be reset.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeout" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the timeout for @socket, in seconds, or 0 for none</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="shutdown"
+              c:identifier="g_socket_shutdown"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Shut down part of a full-duplex connection.
+If @shutdown_read is %TRUE then the recieving side of the connection
+is shut down, and further reading is disallowed.
+If @shutdown_write is %TRUE then the sending side of the connection
+is shut down, and further writing is disallowed.
+It is allowed for both @shutdown_read and @shutdown_write to be %TRUE.
+One example where this is used is graceful disconnect for TCP connections
+where you close the sending side, then wait for the other side to close
+the connection, thus ensuring that the other side saw all sent data.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="shutdown_read" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to shut down the read side</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="shutdown_write" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to shut down the write side</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="speaks_ipv4"
+              c:identifier="g_socket_speaks_ipv4"
+              version="2.22">
+        <doc xml:whitespace="preserve">Checks if a socket is capable of speaking IPv4.
+IPv4 sockets are capable of speaking IPv4.  On some operating systems
+and under some combinations of circumstances IPv6 sockets are also
+capable of speaking IPv4.  See RFC 3493 section 3.7 for more
+information.
+No other types of sockets are currently considered as being capable
+of speaking IPv4.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if this socket can be used with IPv4.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="blocking" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="family"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="SocketFamily"/>
+      </property>
+      <property name="fd"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="keepalive" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="listen-backlog" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="local-address" transfer-ownership="none">
+        <type name="SocketAddress"/>
+      </property>
+      <property name="protocol"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="SocketProtocol"/>
+      </property>
+      <property name="remote-address" transfer-ownership="none">
+        <type name="SocketAddress"/>
+      </property>
+      <property name="timeout"
+                version="2.26"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The timeout in seconds on socket I/O</doc>
+        <type name="guint"/>
+      </property>
+      <property name="type"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="SocketType"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="SocketPrivate" c:type="GSocketPrivate*"/>
+      </field>
+    </class>
+    <class name="SocketAddress"
+           c:symbol-prefix="socket_address"
+           c:type="GSocketAddress"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GSocketAddress"
+           glib:get-type="g_socket_address_get_type"
+           glib:type-struct="SocketAddressClass">
+      <doc xml:whitespace="preserve">A socket endpoint address, corresponding to &lt;type&gt;struct sockaddr&lt;/type&gt;
+or one of its subtypes.</doc>
+      <implements name="SocketConnectable"/>
+      <constructor name="new_from_native"
+                   c:identifier="g_socket_address_new_from_native"
+                   version="2.22">
+        <doc xml:whitespace="preserve">Creates a #GSocketAddress subclass corresponding to the native
+&lt;type&gt;struct sockaddr&lt;/type&gt; @native.
+otherwise %NULL.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GSocketAddress if @native could successfully be converted,</doc>
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="native" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to a &lt;type&gt;struct sockaddr&lt;/type&gt;</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of the memory location pointed to by @native</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="get_family" invoker="get_family" version="2.22">
+        <doc xml:whitespace="preserve">Gets the socket family type of @address.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the socket family type of @address.</doc>
+          <type name="SocketFamily" c:type="GSocketFamily"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_native_size"
+                      invoker="get_native_size"
+                      version="2.22">
+        <doc xml:whitespace="preserve">Gets the size of @address's native &lt;type&gt;struct sockaddr&lt;/type&gt;.
+You can use this to allocate memory to pass to
+g_socket_address_to_native().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the size of the native &lt;type&gt;struct sockaddr&lt;/type&gt; that</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="to_native"
+                      invoker="to_native"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Converts a #GSocketAddress to a native &lt;type&gt;struct
+sockaddr&lt;/type&gt;, which can be passed to low-level functions like
+connect() or bind().
+If not enough space is availible, a %G_IO_ERROR_NO_SPACE error is
+returned. If the address type is not known on the system
+then a %G_IO_ERROR_NOT_SUPPORTED error is returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @dest was filled in, %FALSE on error</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to a memory location that will contain the native &lt;type&gt;struct sockaddr&lt;/type&gt;.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destlen" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of @dest. Must be at least as large as g_socket_address_get_native_size().</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_family"
+              c:identifier="g_socket_address_get_family"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the socket family type of @address.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the socket family type of @address.</doc>
+          <type name="SocketFamily" c:type="GSocketFamily"/>
+        </return-value>
+      </method>
+      <method name="get_native_size"
+              c:identifier="g_socket_address_get_native_size"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the size of @address's native &lt;type&gt;struct sockaddr&lt;/type&gt;.
+You can use this to allocate memory to pass to
+g_socket_address_to_native().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the size of the native &lt;type&gt;struct sockaddr&lt;/type&gt; that</doc>
+          <type name="glong" c:type="gssize"/>
+        </return-value>
+      </method>
+      <method name="to_native"
+              c:identifier="g_socket_address_to_native"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Converts a #GSocketAddress to a native &lt;type&gt;struct
+sockaddr&lt;/type&gt;, which can be passed to low-level functions like
+connect() or bind().
+If not enough space is availible, a %G_IO_ERROR_NO_SPACE error is
+returned. If the address type is not known on the system
+then a %G_IO_ERROR_NOT_SUPPORTED error is returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @dest was filled in, %FALSE on error</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to a memory location that will contain the native &lt;type&gt;struct sockaddr&lt;/type&gt;.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destlen" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of @dest. Must be at least as large as g_socket_address_get_native_size().</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="family" transfer-ownership="none">
+        <type name="SocketFamily"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+    </class>
+    <record name="SocketAddressClass"
+            c:type="GSocketAddressClass"
+            glib:is-gtype-struct-for="SocketAddress">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_family">
+        <callback name="get_family">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the socket family type of @address.</doc>
+            <type name="SocketFamily" c:type="GSocketFamily"/>
+          </return-value>
+          <parameters>
+            <parameter name="address" transfer-ownership="none">
+              <type name="SocketAddress" c:type="GSocketAddress*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_native_size">
+        <callback name="get_native_size">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of the native &lt;type&gt;struct sockaddr&lt;/type&gt; that</doc>
+            <type name="glong" c:type="gssize"/>
+          </return-value>
+          <parameters>
+            <parameter name="address" transfer-ownership="none">
+              <type name="SocketAddress" c:type="GSocketAddress*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="to_native">
+        <callback name="to_native" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if @dest was filled in, %FALSE on error</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="address" transfer-ownership="none">
+              <type name="SocketAddress" c:type="GSocketAddress*"/>
+            </parameter>
+            <parameter name="dest" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a pointer to a memory location that will contain the native &lt;type&gt;struct sockaddr&lt;/type&gt;.</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+            <parameter name="destlen" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the size of @dest. Must be at least as large as g_socket_address_get_native_size().</doc>
+              <type name="gulong" c:type="gsize"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="SocketAddressEnumerator"
+           c:symbol-prefix="socket_address_enumerator"
+           c:type="GSocketAddressEnumerator"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GSocketAddressEnumerator"
+           glib:get-type="g_socket_address_enumerator_get_type"
+           glib:type-struct="SocketAddressEnumeratorClass">
+      <doc xml:whitespace="preserve">Enumerator type for objects that contain or generate
+#GSocketAddress&lt;!-- --&gt;es.</doc>
+      <virtual-method name="next" invoker="next" throws="1">
+        <doc xml:whitespace="preserve">Retrieves the next #GSocketAddress from @enumerator. Note that this
+may block for some amount of time. (Eg, a #GNetworkAddress may need
+to do a DNS lookup before it can return an address.) Use
+g_socket_address_enumerator_next_async() if you need to avoid
+blocking.
+If @enumerator is expected to yield addresses, but for some reason
+is unable to (eg, because of a DNS error), then the first call to
+g_socket_address_enumerator_next() will return an appropriate error
+in *@error. However, if the first call to
+g_socket_address_enumerator_next() succeeds, then any further
+internal errors (other than @cancellable being triggered) will be
+ignored.
+error (in which case *@error will be set) or if there are no
+more addresses.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSocketAddress (owned by the caller), or %NULL on</doc>
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="next_async" invoker="next_async">
+        <doc xml:whitespace="preserve">Asynchronously retrieves the next #GSocketAddress from @enumerator
+and then calls @callback, which must call
+g_socket_address_enumerator_next_finish() to get the result.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="2">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="2">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="next_finish" invoker="next_finish" throws="1">
+        <doc xml:whitespace="preserve">Retrieves the result of a completed call to
+g_socket_address_enumerator_next_async(). See
+g_socket_address_enumerator_next() for more information about
+error handling.
+error (in which case *@error will be set) or if there are no
+more addresses.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSocketAddress (owned by the caller), or %NULL on</doc>
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="next"
+              c:identifier="g_socket_address_enumerator_next"
+              throws="1">
+        <doc xml:whitespace="preserve">Retrieves the next #GSocketAddress from @enumerator. Note that this
+may block for some amount of time. (Eg, a #GNetworkAddress may need
+to do a DNS lookup before it can return an address.) Use
+g_socket_address_enumerator_next_async() if you need to avoid
+blocking.
+If @enumerator is expected to yield addresses, but for some reason
+is unable to (eg, because of a DNS error), then the first call to
+g_socket_address_enumerator_next() will return an appropriate error
+in *@error. However, if the first call to
+g_socket_address_enumerator_next() succeeds, then any further
+internal errors (other than @cancellable being triggered) will be
+ignored.
+error (in which case *@error will be set) or if there are no
+more addresses.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSocketAddress (owned by the caller), or %NULL on</doc>
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="next_async"
+              c:identifier="g_socket_address_enumerator_next_async">
+        <doc xml:whitespace="preserve">Asynchronously retrieves the next #GSocketAddress from @enumerator
+and then calls @callback, which must call
+g_socket_address_enumerator_next_finish() to get the result.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="2">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="next_finish"
+              c:identifier="g_socket_address_enumerator_next_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Retrieves the result of a completed call to
+g_socket_address_enumerator_next_async(). See
+g_socket_address_enumerator_next() for more information about
+error handling.
+error (in which case *@error will be set) or if there are no
+more addresses.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSocketAddress (owned by the caller), or %NULL on</doc>
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+    </class>
+    <record name="SocketAddressEnumeratorClass"
+            c:type="GSocketAddressEnumeratorClass"
+            glib:is-gtype-struct-for="SocketAddressEnumerator">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="next">
+        <callback name="next" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GSocketAddress (owned by the caller), or %NULL on</doc>
+            <type name="SocketAddress" c:type="GSocketAddress*"/>
+          </return-value>
+          <parameters>
+            <parameter name="enumerator" transfer-ownership="none">
+              <type name="SocketAddressEnumerator"
+                    c:type="GSocketAddressEnumerator*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="next_async">
+        <callback name="next_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="enumerator" transfer-ownership="none">
+              <type name="SocketAddressEnumerator"
+                    c:type="GSocketAddressEnumerator*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="3">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="3">
+              <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="next_finish">
+        <callback name="next_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GSocketAddress (owned by the caller), or %NULL on</doc>
+            <type name="SocketAddress" c:type="GSocketAddress*"/>
+          </return-value>
+          <parameters>
+            <parameter name="enumerator" transfer-ownership="none">
+              <type name="SocketAddressEnumerator"
+                    c:type="GSocketAddressEnumerator*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="SocketClass"
+            c:type="GSocketClass"
+            glib:is-gtype-struct-for="Socket">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved6" introspectable="0">
+        <callback name="_g_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved7" introspectable="0">
+        <callback name="_g_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved8" introspectable="0">
+        <callback name="_g_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved9" introspectable="0">
+        <callback name="_g_reserved9">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved10" introspectable="0">
+        <callback name="_g_reserved10">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="SocketClient"
+           c:symbol-prefix="socket_client"
+           c:type="GSocketClient"
+           version="2.22"
+           parent="GObject.Object"
+           glib:type-name="GSocketClient"
+           glib:get-type="g_socket_client_get_type"
+           glib:type-struct="SocketClientClass">
+      <doc xml:whitespace="preserve">A helper class for network servers to listen for and accept connections.</doc>
+      <constructor name="new"
+                   c:identifier="g_socket_client_new"
+                   version="2.22">
+        <doc xml:whitespace="preserve">Creates a new #GSocketClient with the default options.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSocketClient.</doc>
+          <type name="SocketClient" c:type="GSocketClient*"/>
+        </return-value>
+      </constructor>
+      <method name="add_application_proxy"
+              c:identifier="g_socket_client_add_application_proxy">
+        <doc xml:whitespace="preserve">Enable proxy protocols to be handled by the application. When the
+indicated proxy protocol is returned by the #GProxyResolver,
+#GSocketClient will consider this protocol as supported but will
+not try find a #GProxy instance to handle handshaking. The
+application must check for this case by calling
+g_socket_connection_get_remote_address() on the returned
+#GSocketConnection, and seeing if it's a #GProxyAddress of the
+appropriate type, to determine whether or not it needs to handle
+the proxy handshaking itself.
+This should be used for proxy protocols that are dialects of
+another protocol such as HTTP proxy. It also allows cohabitation of
+proxy protocols that are reused between protocols. A good example
+is HTTP. It can be used to proxy HTTP, FTP and Gopher and can also
+be use as generic socket proxy through the HTTP CONNECT method.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="protocol" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The proxy protocol</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect"
+              c:identifier="g_socket_client_connect"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Tries to resolve the @connectable and make a network connection to it..
+Upon a successful connection, a new #GSocketConnection is constructed
+and returned.  The caller owns this new object and must drop their
+reference to it when finished with it.
+The type of the #GSocketConnection object returned depends on the type of
+the underlying socket that is used. For instance, for a TCP/IP connection
+it will be a #GTcpConnection.
+The socket created will be the same family as the the address that the
+or indirectly via g_socket_client_set_local_address(). The socket type
+defaults to %G_SOCKET_TYPE_STREAM but can be set with
+g_socket_client_set_socket_type().
+If a local address is specified with g_socket_client_set_local_address() the
+socket will be bound to this address before connecting.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSocketConnection on success, %NULL on error.</doc>
+          <type name="SocketConnection" c:type="GSocketConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="connectable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GSocketConnectable specifying the remote address.</doc>
+            <type name="SocketConnectable" c:type="GSocketConnectable*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_async"
+              c:identifier="g_socket_client_connect_async"
+              version="2.22">
+        <doc xml:whitespace="preserve">This is the asynchronous version of g_socket_client_connect().
+When the operation is finished @callback will be
+called. You can then call g_socket_client_connect_finish() to get
+the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="connectable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GSocketConnectable specifying the remote address.</doc>
+            <type name="SocketConnectable" c:type="GSocketConnectable*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data for the callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_finish"
+              c:identifier="g_socket_client_connect_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an async connect operation. See g_socket_client_connect_async()</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSocketConnection on success, %NULL on error.</doc>
+          <type name="SocketConnection" c:type="GSocketConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_to_host"
+              c:identifier="g_socket_client_connect_to_host"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">This is a helper function for g_socket_client_connect().
+Attempts to create a TCP connection to the named host.
+address, an IPv4 address, or a domain name (in which case a DNS
+lookup is performed).  Quoting with [] is supported for all address
+types.  A port override may be specified in the usual way with a
+colon.  Ports may be given as decimal numbers or symbolic names (in
+which case an /etc/services lookup is performed).
+If no port override is given in @host_and_port then @default_port will be
+used as the port number to connect to.
+In general, @host_and_port is expected to be provided by the user (allowing
+them to give the hostname, and a port overide if necessary) and
+In the case that an IP address is given, a single connection
+attempt is made.  In the case that a name is given, multiple
+connection attempts may be made, in turn and according to the
+number of address records in DNS, until a connection succeeds.
+Upon a successful connection, a new #GSocketConnection is constructed
+and returned.  The caller owns this new object and must drop their
+reference to it when finished with it.
+In the event of any failure (DNS error, service not found, no hosts
+connectable) %NULL is returned and @error (if non-%NULL) is set
+accordingly.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSocketConnection on success, %NULL on error.</doc>
+          <type name="SocketConnection" c:type="GSocketConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="host_and_port" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name and optionally port of the host to connect to</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="default_port" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the default port to connect to</doc>
+            <type name="guint16" c:type="guint16"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_to_host_async"
+              c:identifier="g_socket_client_connect_to_host_async"
+              version="2.22">
+        <doc xml:whitespace="preserve">This is the asynchronous version of g_socket_client_connect_to_host().
+When the operation is finished @callback will be
+called. You can then call g_socket_client_connect_to_host_finish() to get
+the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="host_and_port" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name and optionally the port of the host to connect to</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="default_port" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the default port to connect to</doc>
+            <type name="guint16" c:type="guint16"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data for the callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_to_host_finish"
+              c:identifier="g_socket_client_connect_to_host_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an async connect operation. See g_socket_client_connect_to_host_async()</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSocketConnection on success, %NULL on error.</doc>
+          <type name="SocketConnection" c:type="GSocketConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_to_service"
+              c:identifier="g_socket_client_connect_to_service"
+              throws="1">
+        <doc xml:whitespace="preserve">Attempts to create a TCP connection to a service.
+This call looks up the SRV record for @service at @domain for the
+"tcp" protocol.  It then attempts to connect, in turn, to each of
+the hosts providing the service until either a connection succeeds
+or there are no hosts remaining.
+Upon a successful connection, a new #GSocketConnection is constructed
+and returned.  The caller owns this new object and must drop their
+reference to it when finished with it.
+In the event of any failure (DNS error, service not found, no hosts
+connectable) %NULL is returned and @error (if non-%NULL) is set
+accordingly.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSocketConnection if successful, or %NULL on error</doc>
+          <type name="SocketConnection" c:type="GSocketConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="domain" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a domain name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="service" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the service to connect to</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_to_service_async"
+              c:identifier="g_socket_client_connect_to_service_async"
+              version="2.22">
+        <doc xml:whitespace="preserve">This is the asynchronous version of
+g_socket_client_connect_to_service().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="domain" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a domain name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="service" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the service to connect to</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data for the callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_to_service_finish"
+              c:identifier="g_socket_client_connect_to_service_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an async connect operation. See g_socket_client_connect_to_service_async()</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSocketConnection on success, %NULL on error.</doc>
+          <type name="SocketConnection" c:type="GSocketConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_to_uri"
+              c:identifier="g_socket_client_connect_to_uri"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">This is a helper function for g_socket_client_connect().
+Attempts to create a TCP connection with a network URI.
+component. If a port is not specified in the URI, @default_port
+will be used.
+Using this rather than g_socket_client_connect() or
+g_socket_client_connect_to_host() allows #GSocketClient to
+determine when to use application-specific proxy protocols.
+Upon a successful connection, a new #GSocketConnection is constructed
+and returned.  The caller owns this new object and must drop their
+reference to it when finished with it.
+In the event of any failure (DNS error, service not found, no hosts
+connectable) %NULL is returned and @error (if non-%NULL) is set
+accordingly.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSocketConnection on success, %NULL on error.</doc>
+          <type name="SocketConnection" c:type="GSocketConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A network URI</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="default_port" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the default port to connect to</doc>
+            <type name="guint16" c:type="guint16"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_to_uri_async"
+              c:identifier="g_socket_client_connect_to_uri_async"
+              version="2.26">
+        <doc xml:whitespace="preserve">This is the asynchronous version of g_socket_client_connect_to_uri().
+When the operation is finished @callback will be
+called. You can then call g_socket_client_connect_to_uri_finish() to get
+the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a network uri</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="default_port" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the default port to connect to</doc>
+            <type name="guint16" c:type="guint16"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data for the callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_to_uri_finish"
+              c:identifier="g_socket_client_connect_to_uri_finish"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an async connect operation. See g_socket_client_connect_to_uri_async()</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSocketConnection on success, %NULL on error.</doc>
+          <type name="SocketConnection" c:type="GSocketConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_enable_proxy"
+              c:identifier="g_socket_client_get_enable_proxy"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the proxy enable state; see g_socket_client_set_enable_proxy()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether proxying is enabled</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_family"
+              c:identifier="g_socket_client_get_family"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the socket family of the socket client.
+See g_socket_client_set_family() for details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GSocketFamily</doc>
+          <type name="SocketFamily" c:type="GSocketFamily"/>
+        </return-value>
+      </method>
+      <method name="get_local_address"
+              c:identifier="g_socket_client_get_local_address"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the local address of the socket client.
+See g_socket_client_set_local_address() for details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GSocketAddres or %NULL. don't free</doc>
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+      </method>
+      <method name="get_protocol"
+              c:identifier="g_socket_client_get_protocol"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the protocol name type of the socket client.
+See g_socket_client_set_protocol() for details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GSocketProtocol</doc>
+          <type name="SocketProtocol" c:type="GSocketProtocol"/>
+        </return-value>
+      </method>
+      <method name="get_socket_type"
+              c:identifier="g_socket_client_get_socket_type"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the socket type of the socket client.
+See g_socket_client_set_socket_type() for details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GSocketFamily</doc>
+          <type name="SocketType" c:type="GSocketType"/>
+        </return-value>
+      </method>
+      <method name="get_timeout"
+              c:identifier="g_socket_client_get_timeout"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the I/O timeout time for sockets created by @client.
+See g_socket_client_set_timeout() for details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the timeout in seconds</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_enable_proxy"
+              c:identifier="g_socket_client_set_enable_proxy"
+              version="2.26">
+        <doc xml:whitespace="preserve">Sets whether or not @client attempts to make connections via a
+proxy server. When enabled (the default), #GSocketClient will use a
+#GProxyResolver to determine if a proxy protocol such as SOCKS is
+needed, and automatically do the necessary proxy negotiation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to enable proxies</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_family"
+              c:identifier="g_socket_client_set_family"
+              version="2.22">
+        <doc xml:whitespace="preserve">Sets the socket family of the socket client.
+If this is set to something other than %G_SOCKET_FAMILY_INVALID
+then the sockets created by this object will be of the specified
+family.
+This might be useful for instance if you want to force the local
+connection to be an ipv4 socket, even though the address might
+be an ipv6 mapped to ipv4 address.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="family" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GSocketFamily</doc>
+            <type name="SocketFamily" c:type="GSocketFamily"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_local_address"
+              c:identifier="g_socket_client_set_local_address"
+              version="2.22">
+        <doc xml:whitespace="preserve">Sets the local address of the socket client.
+The sockets created by this object will bound to the
+specified address (if not %NULL) before connecting.
+This is useful if you want to ensure the the local
+side of the connection is on a specific port, or on
+a specific interface.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GSocketAddress, or %NULL</doc>
+            <type name="SocketAddress" c:type="GSocketAddress*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_protocol"
+              c:identifier="g_socket_client_set_protocol"
+              version="2.22">
+        <doc xml:whitespace="preserve">Sets the protocol of the socket client.
+The sockets created by this object will use of the specified
+protocol.
+If @protocol is %0 that means to use the default
+protocol for the socket family and type.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="protocol" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GSocketProtocol</doc>
+            <type name="SocketProtocol" c:type="GSocketProtocol"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_socket_type"
+              c:identifier="g_socket_client_set_socket_type"
+              version="2.22">
+        <doc xml:whitespace="preserve">Sets the socket type of the socket client.
+The sockets created by this object will be of the specified
+type.
+It doesn't make sense to specify a type of %G_SOCKET_TYPE_DATAGRAM,
+as GSocketClient is used for connection oriented services.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GSocketType</doc>
+            <type name="SocketType" c:type="GSocketType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_timeout"
+              c:identifier="g_socket_client_set_timeout"
+              version="2.26">
+        <doc xml:whitespace="preserve">Sets the I/O timeout for sockets created by @client. @timeout is a
+time in seconds, or 0 for no timeout (the default).
+The timeout value affects the initial connection attempt as well,
+so setting this may cause calls to g_socket_client_connect(), etc,
+to fail with %G_IO_ERROR_TIMED_OUT.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeout" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the timeout</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="enable-proxy"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="family"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="SocketFamily"/>
+      </property>
+      <property name="local-address"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="SocketAddress"/>
+      </property>
+      <property name="protocol"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="SocketProtocol"/>
+      </property>
+      <property name="timeout"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <property name="type"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="SocketType"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="SocketClientPrivate" c:type="GSocketClientPrivate*"/>
+      </field>
+    </class>
+    <record name="SocketClientClass"
+            c:type="GSocketClientClass"
+            glib:is-gtype-struct-for="SocketClient">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="SocketClientPrivate"
+            c:type="GSocketClientPrivate"
+            disguised="1">
+    </record>
+    <interface name="SocketConnectable"
+               c:symbol-prefix="socket_connectable"
+               c:type="GSocketConnectable"
+               glib:type-name="GSocketConnectable"
+               glib:get-type="g_socket_connectable_get_type"
+               glib:type-struct="SocketConnectableIface">
+      <doc xml:whitespace="preserve">Interface for objects that contain or generate #GSocketAddress&lt;!-- --&gt;es.</doc>
+      <virtual-method name="enumerate" invoker="enumerate" version="2.22">
+        <doc xml:whitespace="preserve">Creates a #GSocketAddressEnumerator for @connectable.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GSocketAddressEnumerator.</doc>
+          <type name="SocketAddressEnumerator"
+                c:type="GSocketAddressEnumerator*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="proxy_enumerate"
+                      invoker="proxy_enumerate"
+                      version="2.26">
+        <doc xml:whitespace="preserve">Creates a #GSocketAddressEnumerator for @connectable that will
+return #GProxyAddress&lt;!-- --&gt;es for addresses that you must connect
+to via a proxy.
+If @connectable does not implement
+g_socket_connectable_proxy_enumerate(), this will fall back to
+calling g_socket_connectable_enumerate().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GSocketAddressEnumerator.</doc>
+          <type name="SocketAddressEnumerator"
+                c:type="GSocketAddressEnumerator*"/>
+        </return-value>
+      </virtual-method>
+      <method name="enumerate"
+              c:identifier="g_socket_connectable_enumerate"
+              version="2.22">
+        <doc xml:whitespace="preserve">Creates a #GSocketAddressEnumerator for @connectable.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GSocketAddressEnumerator.</doc>
+          <type name="SocketAddressEnumerator"
+                c:type="GSocketAddressEnumerator*"/>
+        </return-value>
+      </method>
+      <method name="proxy_enumerate"
+              c:identifier="g_socket_connectable_proxy_enumerate"
+              version="2.26">
+        <doc xml:whitespace="preserve">Creates a #GSocketAddressEnumerator for @connectable that will
+return #GProxyAddress&lt;!-- --&gt;es for addresses that you must connect
+to via a proxy.
+If @connectable does not implement
+g_socket_connectable_proxy_enumerate(), this will fall back to
+calling g_socket_connectable_enumerate().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GSocketAddressEnumerator.</doc>
+          <type name="SocketAddressEnumerator"
+                c:type="GSocketAddressEnumerator*"/>
+        </return-value>
+      </method>
+    </interface>
+    <record name="SocketConnectableIface"
+            c:type="GSocketConnectableIface"
+            glib:is-gtype-struct-for="SocketConnectable">
+      <doc xml:whitespace="preserve">Provides an interface for returning a #GSocketAddressEnumerator
+and #GProxyAddressEnumerator</doc>
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="enumerate">
+        <callback name="enumerate">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a new #GSocketAddressEnumerator.</doc>
+            <type name="SocketAddressEnumerator"
+                  c:type="GSocketAddressEnumerator*"/>
+          </return-value>
+          <parameters>
+            <parameter name="connectable" transfer-ownership="none">
+              <type name="SocketConnectable" c:type="GSocketConnectable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="proxy_enumerate">
+        <callback name="proxy_enumerate">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a new #GSocketAddressEnumerator.</doc>
+            <type name="SocketAddressEnumerator"
+                  c:type="GSocketAddressEnumerator*"/>
+          </return-value>
+          <parameters>
+            <parameter name="connectable" transfer-ownership="none">
+              <type name="SocketConnectable" c:type="GSocketConnectable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="SocketConnection"
+           c:symbol-prefix="socket_connection"
+           c:type="GSocketConnection"
+           version="2.22"
+           parent="IOStream"
+           glib:type-name="GSocketConnection"
+           glib:get-type="g_socket_connection_get_type"
+           glib:type-struct="SocketConnectionClass">
+      <doc xml:whitespace="preserve">A socket connection GIOStream object for connection-oriented sockets.</doc>
+      <function name="factory_lookup_type"
+                c:identifier="g_socket_connection_factory_lookup_type"
+                version="2.22">
+        <doc xml:whitespace="preserve">Looks up the #GType to be used when creating socket connections on
+sockets with the specified @family,@type and @protocol_id.
+If no type is registered, the #GSocketConnection base type is returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GType</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="family" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GSocketFamily</doc>
+            <type name="SocketFamily" c:type="GSocketFamily"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GSocketType</doc>
+            <type name="SocketType" c:type="GSocketType"/>
+          </parameter>
+          <parameter name="protocol_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a protocol id</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="factory_register_type"
+                c:identifier="g_socket_connection_factory_register_type"
+                version="2.22">
+        <doc xml:whitespace="preserve">Looks up the #GType to be used when creating socket connections on
+sockets with the specified @family,@type and @protocol.
+If no type is registered, the #GSocketConnection base type is returned.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="g_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GType, inheriting from %G_TYPE_SOCKET_CONNECTION</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="family" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GSocketFamily</doc>
+            <type name="SocketFamily" c:type="GSocketFamily"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GSocketType</doc>
+            <type name="SocketType" c:type="GSocketType"/>
+          </parameter>
+          <parameter name="protocol" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a protocol id</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_local_address"
+              c:identifier="g_socket_connection_get_local_address"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Try to get the local address of a socket connection.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSocketAddress or %NULL on error.</doc>
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+      </method>
+      <method name="get_remote_address"
+              c:identifier="g_socket_connection_get_remote_address"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Try to get the remote address of a socket connection.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSocketAddress or %NULL on error.</doc>
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+      </method>
+      <method name="get_socket"
+              c:identifier="g_socket_connection_get_socket"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the underlying #GSocket object of the connection.
+This can be useful if you want to do something unusual on it
+not supported by the #GSocketConnection APIs.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GSocketAddress or %NULL on error.</doc>
+          <type name="Socket" c:type="GSocket*"/>
+        </return-value>
+      </method>
+      <property name="socket"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="Socket"/>
+      </property>
+      <field name="parent_instance">
+        <type name="IOStream" c:type="GIOStream"/>
+      </field>
+      <field name="priv">
+        <type name="SocketConnectionPrivate"
+              c:type="GSocketConnectionPrivate*"/>
+      </field>
+    </class>
+    <record name="SocketConnectionClass"
+            c:type="GSocketConnectionClass"
+            glib:is-gtype-struct-for="SocketConnection">
+      <field name="parent_class">
+        <type name="IOStreamClass" c:type="GIOStreamClass"/>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved6" introspectable="0">
+        <callback name="_g_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="SocketConnectionPrivate"
+            c:type="GSocketConnectionPrivate"
+            disguised="1">
+    </record>
+    <class name="SocketControlMessage"
+           c:symbol-prefix="socket_control_message"
+           c:type="GSocketControlMessage"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GSocketControlMessage"
+           glib:get-type="g_socket_control_message_get_type"
+           glib:type-struct="SocketControlMessageClass">
+      <doc xml:whitespace="preserve">Base class for socket-type specific control messages that can be sent and
+received over #GSocket.</doc>
+      <function name="deserialize"
+                c:identifier="g_socket_control_message_deserialize"
+                version="2.22">
+        <doc xml:whitespace="preserve">Tries to deserialize a socket control message of a given
+of #GSocketControlMessage if they can understand this kind
+of message and if so deserialize it into a #GSocketControlMessage.
+If there is no implementation for this kind of control message, %NULL
+will be returned.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the deserialized message or %NULL</doc>
+          <type name="SocketControlMessage" c:type="GSocketControlMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="level" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a socket level</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a socket control message type for the given @level</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of the data in bytes</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer to the message data</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="get_level" invoker="get_level" version="2.22">
+        <doc xml:whitespace="preserve">Returns the "level" (i.e. the originating protocol) of the control message.
+This is often SOL_SOCKET.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an integer describing the level</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_size" invoker="get_size" version="2.22">
+        <doc xml:whitespace="preserve">Returns the space required for the control message, not including
+headers or alignment.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of bytes required.</doc>
+          <type name="gulong" c:type="gsize"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_type">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="serialize" invoker="serialize" version="2.22">
+        <doc xml:whitespace="preserve">Converts the data in the message to bytes placed in the
+message.
+returned by g_socket_control_message_get_size() on this
+object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A buffer to write data to</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_level"
+              c:identifier="g_socket_control_message_get_level"
+              version="2.22">
+        <doc xml:whitespace="preserve">Returns the "level" (i.e. the originating protocol) of the control message.
+This is often SOL_SOCKET.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an integer describing the level</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_msg_type"
+              c:identifier="g_socket_control_message_get_msg_type"
+              version="2.22">
+        <doc xml:whitespace="preserve">Returns the protocol specific type of the control message.
+For instance, for UNIX fd passing this would be SCM_RIGHTS.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an integer describing the type of control message</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_size"
+              c:identifier="g_socket_control_message_get_size"
+              version="2.22">
+        <doc xml:whitespace="preserve">Returns the space required for the control message, not including
+headers or alignment.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of bytes required.</doc>
+          <type name="gulong" c:type="gsize"/>
+        </return-value>
+      </method>
+      <method name="serialize"
+              c:identifier="g_socket_control_message_serialize"
+              version="2.22">
+        <doc xml:whitespace="preserve">Converts the data in the message to bytes placed in the
+message.
+returned by g_socket_control_message_get_size() on this
+object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A buffer to write data to</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="SocketControlMessagePrivate"
+              c:type="GSocketControlMessagePrivate*"/>
+      </field>
+    </class>
+    <record name="SocketControlMessageClass"
+            c:type="GSocketControlMessageClass"
+            glib:is-gtype-struct-for="SocketControlMessage">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_size">
+        <callback name="get_size">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">The number of bytes required.</doc>
+            <type name="gulong" c:type="gsize"/>
+          </return-value>
+          <parameters>
+            <parameter name="message" transfer-ownership="none">
+              <type name="SocketControlMessage"
+                    c:type="GSocketControlMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_level">
+        <callback name="get_level">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">an integer describing the level</doc>
+            <type name="gint" c:type="int"/>
+          </return-value>
+          <parameters>
+            <parameter name="message" transfer-ownership="none">
+              <type name="SocketControlMessage"
+                    c:type="GSocketControlMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_type">
+        <callback name="get_type">
+          <return-value transfer-ownership="none">
+            <type name="gint" c:type="int"/>
+          </return-value>
+          <parameters>
+            <parameter name="message" transfer-ownership="none">
+              <type name="SocketControlMessage"
+                    c:type="GSocketControlMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="serialize">
+        <callback name="serialize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="message" transfer-ownership="none">
+              <type name="SocketControlMessage"
+                    c:type="GSocketControlMessage*"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <doc xml:whitespace="preserve">A buffer to write data to</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="deserialize" introspectable="0">
+        <callback name="deserialize" introspectable="0">
+          <return-value>
+            <type name="SocketControlMessage" c:type="GSocketControlMessage*"/>
+          </return-value>
+          <parameters>
+            <parameter name="level" transfer-ownership="none">
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <type name="gulong" c:type="gsize"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="SocketControlMessagePrivate"
+            c:type="GSocketControlMessagePrivate"
+            disguised="1">
+    </record>
+    <enumeration name="SocketFamily"
+                 version="2.22"
+                 glib:type-name="GSocketFamily"
+                 glib:get-type="g_socket_family_get_type"
+                 c:type="GSocketFamily">
+      <doc xml:whitespace="preserve">The protocol family of a #GSocketAddress. (These values are
+identical to the system defines %AF_INET, %AF_INET6 and %AF_UNIX,
+if available.)</doc>
+      <member name="invalid"
+              value="0"
+              c:identifier="G_SOCKET_FAMILY_INVALID"
+              glib:nick="invalid"/>
+      <member name="unix"
+              value="1"
+              c:identifier="G_SOCKET_FAMILY_UNIX"
+              glib:nick="unix"/>
+      <member name="ipv4"
+              value="2"
+              c:identifier="G_SOCKET_FAMILY_IPV4"
+              glib:nick="ipv4"/>
+      <member name="ipv6"
+              value="10"
+              c:identifier="G_SOCKET_FAMILY_IPV6"
+              glib:nick="ipv6"/>
+    </enumeration>
+    <class name="SocketListener"
+           c:symbol-prefix="socket_listener"
+           c:type="GSocketListener"
+           parent="GObject.Object"
+           glib:type-name="GSocketListener"
+           glib:get-type="g_socket_listener_get_type"
+           glib:type-struct="SocketListenerClass">
+      <constructor name="new"
+                   c:identifier="g_socket_listener_new"
+                   version="2.22">
+        <doc xml:whitespace="preserve">Creates a new #GSocketListener with no sockets to listen for.
+New listeners can be added with e.g. g_socket_listener_add_address()
+or g_socket_listener_add_inet_port().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GSocketListener.</doc>
+          <type name="SocketListener" c:type="GSocketListener*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="accept"
+              c:identifier="g_socket_listener_accept"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Blocks waiting for a client to connect to any of the sockets added
+to the listener. Returns a #GSocketConnection for the socket that was
+accepted.
+If @source_object is not %NULL it will be filled out with the source
+object specified when the corresponding socket or address was added
+to the listener.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSocketConnection on success, %NULL on error.</doc>
+          <type name="SocketConnection" c:type="GSocketConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_object"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location where #GObject pointer will be stored, or %NULL</doc>
+            <type name="GObject.Object" c:type="GObject**"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="accept_async"
+              c:identifier="g_socket_listener_accept_async"
+              version="2.22">
+        <doc xml:whitespace="preserve">This is the asynchronous version of g_socket_listener_accept().
+When the operation is finished @callback will be
+called. You can then call g_socket_listener_accept_socket()
+to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="2">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data for the callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="accept_finish"
+              c:identifier="g_socket_listener_accept_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an async accept operation. See g_socket_listener_accept_async()</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSocketConnection on success, %NULL on error.</doc>
+          <type name="SocketConnection" c:type="GSocketConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="source_object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Optional #GObject identifying this source</doc>
+            <type name="GObject.Object" c:type="GObject**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="accept_socket"
+              c:identifier="g_socket_listener_accept_socket"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Blocks waiting for a client to connect to any of the sockets added
+to the listener. Returns the #GSocket that was accepted.
+If you want to accept the high-level #GSocketConnection, not a #GSocket,
+which is often the case, then you should use g_socket_listener_accept()
+instead.
+If @source_object is not %NULL it will be filled out with the source
+object specified when the corresponding socket or address was added
+to the listener.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the cancellable object from another thread. If the operation
+was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSocket on success, %NULL on error.</doc>
+          <type name="Socket" c:type="GSocket*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_object"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location where #GObject pointer will be stored, or %NULL.</doc>
+            <type name="GObject.Object" c:type="GObject**"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="accept_socket_async"
+              c:identifier="g_socket_listener_accept_socket_async"
+              version="2.22">
+        <doc xml:whitespace="preserve">This is the asynchronous version of g_socket_listener_accept_socket().
+When the operation is finished @callback will be
+called. You can then call g_socket_listener_accept_socket_finish()
+to get the result of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="2">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data for the callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="accept_socket_finish"
+              c:identifier="g_socket_listener_accept_socket_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an async accept operation. See g_socket_listener_accept_socket_async()</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSocket on success, %NULL on error.</doc>
+          <type name="Socket" c:type="GSocket*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="source_object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Optional #GObject identifying this source</doc>
+            <type name="GObject.Object" c:type="GObject**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_address"
+              c:identifier="g_socket_listener_add_address"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Creates a socket of type @type and protocol @protocol, binds
+it to @address and adds it to the set of sockets we're accepting
+sockets from.
+Note that adding an IPv6 address, depending on the platform,
+may or may not result in a listener that also accepts IPv4
+connections.  For more determinstic behaviour, see
+g_socket_listener_add_inet_port().
+to accept to identify this particular source, which is
+useful if you're listening on multiple addresses and do
+different things depending on what address is connected to.
+If successful and @effective_address is non-%NULL then it will
+be set to the address that the binding actually occured at.  This
+is helpful for determining the port number that was used for when
+requested, belongs to the caller and must be freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GSocketAddress</doc>
+            <type name="SocketAddress" c:type="GSocketAddress*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GSocketType</doc>
+            <type name="SocketType" c:type="GSocketType"/>
+          </parameter>
+          <parameter name="protocol" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GSocketProtocol</doc>
+            <type name="SocketProtocol" c:type="GSocketProtocol"/>
+          </parameter>
+          <parameter name="source_object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Optional #GObject identifying this source</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="effective_address"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the address that was bound to, or %NULL.</doc>
+            <type name="SocketAddress" c:type="GSocketAddress**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_any_inet_port"
+              c:identifier="g_socket_listener_add_any_inet_port"
+              version="2.24"
+              throws="1">
+        <doc xml:whitespace="preserve">Listens for TCP connections on any available port number for both
+IPv6 and IPv4 (if each are available).
+This is useful if you need to have a socket for incoming connections
+but don't care about the specific port number.
+to accept to identify this particular source, which is
+useful if you're listening on multiple addresses and do
+different things depending on what address is connected to.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the port number, or 0 in case of failure.</doc>
+          <type name="guint16" c:type="guint16"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Optional #GObject identifying this source</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_inet_port"
+              c:identifier="g_socket_listener_add_inet_port"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Helper function for g_socket_listener_add_address() that
+creates a TCP/IP socket listening on IPv4 and IPv6 (if
+supported) on the specified port on all interfaces.
+to accept to identify this particular source, which is
+useful if you're listening on multiple addresses and do
+different things depending on what address is connected to.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="port" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an IP port number (non-zero)</doc>
+            <type name="guint16" c:type="guint16"/>
+          </parameter>
+          <parameter name="source_object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Optional #GObject identifying this source</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_socket"
+              c:identifier="g_socket_listener_add_socket"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Adds @socket to the set of sockets that we try to accept
+new clients from. The socket must be bound to a local
+address and listened to.
+to accept to identify this particular source, which is
+useful if you're listening on multiple addresses and do
+different things depending on what address is connected to.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="socket" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a listening #GSocket</doc>
+            <type name="Socket" c:type="GSocket*"/>
+          </parameter>
+          <parameter name="source_object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Optional #GObject identifying this source</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close"
+              c:identifier="g_socket_listener_close"
+              version="2.22">
+        <doc xml:whitespace="preserve">Closes all the sockets in the listener.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_backlog"
+              c:identifier="g_socket_listener_set_backlog"
+              version="2.22">
+        <doc xml:whitespace="preserve">Sets the listen backlog on the sockets in the listener.
+See g_socket_set_listen_backlog() for details</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="listen_backlog" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an integer</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="listen-backlog"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="SocketListenerPrivate" c:type="GSocketListenerPrivate*"/>
+      </field>
+    </class>
+    <record name="SocketListenerClass"
+            c:type="GSocketListenerClass"
+            glib:is-gtype-struct-for="SocketListener">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="changed">
+        <callback name="changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="listener" transfer-ownership="none">
+              <type name="SocketListener" c:type="GSocketListener*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved6" introspectable="0">
+        <callback name="_g_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="SocketListenerPrivate"
+            c:type="GSocketListenerPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="SocketMsgFlags"
+                 version="2.22"
+                 glib:type-name="GSocketMsgFlags"
+                 glib:get-type="g_socket_msg_flags_get_type"
+                 c:type="GSocketMsgFlags">
+      <doc xml:whitespace="preserve">Flags used in g_socket_receive_message() and g_socket_send_message().
+The flags listed in the enum are some commonly available flags, but the
+values used for them are the same as on the platform, and any other flags
+are passed in/out as is. So to use a platform specific flag, just include
+the right system header and pass in the flag.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="G_SOCKET_MSG_NONE"
+              glib:nick="none"/>
+      <member name="oob"
+              value="1"
+              c:identifier="G_SOCKET_MSG_OOB"
+              glib:nick="oob"/>
+      <member name="peek"
+              value="2"
+              c:identifier="G_SOCKET_MSG_PEEK"
+              glib:nick="peek"/>
+      <member name="dontroute"
+              value="4"
+              c:identifier="G_SOCKET_MSG_DONTROUTE"
+              glib:nick="dontroute"/>
+    </enumeration>
+    <record name="SocketPrivate" c:type="GSocketPrivate" disguised="1">
+    </record>
+    <enumeration name="SocketProtocol"
+                 version="2.22"
+                 glib:type-name="GSocketProtocol"
+                 glib:get-type="g_socket_protocol_get_type"
+                 c:type="GSocketProtocol">
+      <doc xml:whitespace="preserve">A protocol identifier is specified when creating a #GSocket, which is a
+family/type specific identifier, where 0 means the default protocol for
+the particular family/type.
+This enum contains a set of commonly available and used protocols. You
+can also pass any other identifiers handled by the platform in order to
+use protocols not listed here.</doc>
+      <member name="unknown"
+              value="-1"
+              c:identifier="G_SOCKET_PROTOCOL_UNKNOWN"
+              glib:nick="unknown"/>
+      <member name="default"
+              value="0"
+              c:identifier="G_SOCKET_PROTOCOL_DEFAULT"
+              glib:nick="default"/>
+      <member name="tcp"
+              value="6"
+              c:identifier="G_SOCKET_PROTOCOL_TCP"
+              glib:nick="tcp"/>
+      <member name="udp"
+              value="17"
+              c:identifier="G_SOCKET_PROTOCOL_UDP"
+              glib:nick="udp"/>
+      <member name="sctp"
+              value="132"
+              c:identifier="G_SOCKET_PROTOCOL_SCTP"
+              glib:nick="sctp"/>
+    </enumeration>
+    <class name="SocketService"
+           c:symbol-prefix="socket_service"
+           c:type="GSocketService"
+           version="2.22"
+           parent="SocketListener"
+           glib:type-name="GSocketService"
+           glib:get-type="g_socket_service_get_type"
+           glib:type-struct="SocketServiceClass">
+      <doc xml:whitespace="preserve">A helper class for handling accepting incomming connections in the
+glib mainloop.</doc>
+      <constructor name="new"
+                   c:identifier="g_socket_service_new"
+                   version="2.22">
+        <doc xml:whitespace="preserve">Creates a new #GSocketService with no sockets to listen for.
+New listeners can be added with e.g. g_socket_listener_add_address()
+or g_socket_listener_add_inet_port().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GSocketService.</doc>
+          <type name="SocketService" c:type="GSocketService*"/>
+        </return-value>
+      </constructor>
+      <method name="is_active"
+              c:identifier="g_socket_service_is_active"
+              version="2.22">
+        <doc xml:whitespace="preserve">Check whether the service is active or not. An active
+service will accept new clients that connect, while
+a non-active service will let connecting clients queue
+up until the service is started.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the service is active, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="start"
+              c:identifier="g_socket_service_start"
+              version="2.22">
+        <doc xml:whitespace="preserve">Starts the service, i.e. start accepting connections
+from the added sockets when the mainloop runs.
+This call is threadsafe, so it may be called from a thread
+handling an incomming client request.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="stop" c:identifier="g_socket_service_stop" version="2.22">
+        <doc xml:whitespace="preserve">Stops the service, i.e. stops accepting connections
+from the added sockets when the mainloop runs.
+This call is threadsafe, so it may be called from a thread
+handling an incomming client request.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="SocketListener" c:type="GSocketListener"/>
+      </field>
+      <field name="priv">
+        <type name="SocketServicePrivate" c:type="GSocketServicePrivate*"/>
+      </field>
+      <glib:signal name="incoming" version="2.22">
+        <doc xml:whitespace="preserve">The ::incoming signal is emitted when a new incoming connection
+to @service needs to be handled. The handler must initiate the
+handling of @connection, but may not block; in essence,
+asynchronous operations must be used.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being called</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a new #GSocketConnection object.</doc>
+            <type name="SocketConnection"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the source_object passed to g_socket_listener_add_address().</doc>
+            <type name="GObject.Object"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="SocketServiceClass"
+            c:type="GSocketServiceClass"
+            glib:is-gtype-struct-for="SocketService">
+      <field name="parent_class">
+        <type name="SocketListenerClass" c:type="GSocketListenerClass"/>
+      </field>
+      <field name="incoming">
+        <callback name="incoming">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="service" transfer-ownership="none">
+              <type name="SocketService" c:type="GSocketService*"/>
+            </parameter>
+            <parameter name="connection" transfer-ownership="none">
+              <type name="SocketConnection" c:type="GSocketConnection*"/>
+            </parameter>
+            <parameter name="source_object" transfer-ownership="none">
+              <type name="GObject.Object" c:type="GObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved6" introspectable="0">
+        <callback name="_g_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="SocketServicePrivate"
+            c:type="GSocketServicePrivate"
+            disguised="1">
+    </record>
+    <callback name="SocketSourceFunc"
+              c:type="GSocketSourceFunc"
+              version="2.22">
+      <doc xml:whitespace="preserve">This is the function type of the callback used for the #GSource
+returned by g_socket_create_source().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">it should return %FALSE if the source should be removed.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="socket" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GSocket</doc>
+          <type name="Socket" c:type="GSocket*"/>
+        </parameter>
+        <parameter name="condition" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current condition at the source fired.</doc>
+          <type name="GLib.IOCondition" c:type="GIOCondition"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">data passed in by the user.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="SocketType"
+                 version="2.22"
+                 glib:type-name="GSocketType"
+                 glib:get-type="g_socket_type_get_type"
+                 c:type="GSocketType">
+      <doc xml:whitespace="preserve">Flags used when creating a #GSocket. Some protocols may not implement
+all the socket types.</doc>
+      <member name="invalid"
+              value="0"
+              c:identifier="G_SOCKET_TYPE_INVALID"
+              glib:nick="invalid"/>
+      <member name="stream"
+              value="1"
+              c:identifier="G_SOCKET_TYPE_STREAM"
+              glib:nick="stream"/>
+      <member name="datagram"
+              value="2"
+              c:identifier="G_SOCKET_TYPE_DATAGRAM"
+              glib:nick="datagram"/>
+      <member name="seqpacket"
+              value="3"
+              c:identifier="G_SOCKET_TYPE_SEQPACKET"
+              glib:nick="seqpacket"/>
+    </enumeration>
+    <record name="SrvTarget"
+            c:type="GSrvTarget"
+            glib:type-name="GSrvTarget"
+            glib:get-type="g_srv_target_get_type"
+            c:symbol-prefix="srv_target">
+      <doc xml:whitespace="preserve">A single target host/port that a network service is running on.</doc>
+      <constructor name="new" c:identifier="g_srv_target_new" version="2.22">
+        <doc xml:whitespace="preserve">Creates a new #GSrvTarget with the given parameters.
+You should not need to use this; normally #GSrvTarget&lt;!-- --&gt;s are
+created by #GResolver.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GSrvTarget.</doc>
+          <type name="SrvTarget" c:type="GSrvTarget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="hostname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the host that the service is running on</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="port" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the port that the service is running on</doc>
+            <type name="guint16" c:type="guint16"/>
+          </parameter>
+          <parameter name="priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the target's priority</doc>
+            <type name="guint16" c:type="guint16"/>
+          </parameter>
+          <parameter name="weight" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the target's weight</doc>
+            <type name="guint16" c:type="guint16"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy" c:identifier="g_srv_target_copy" version="2.22">
+        <doc xml:whitespace="preserve">Copies @target</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a copy of @target</doc>
+          <type name="SrvTarget" c:type="GSrvTarget*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="g_srv_target_free" version="2.22">
+        <doc xml:whitespace="preserve">Frees @target</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_hostname"
+              c:identifier="g_srv_target_get_hostname"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets @target's hostname (in ASCII form; if you are going to present
+this to the user, you should use g_hostname_is_ascii_encoded() to
+check if it contains encoded Unicode segments, and use
+g_hostname_to_unicode() to convert it if it does.)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">@target's hostname</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_port"
+              c:identifier="g_srv_target_get_port"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets @target's port</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">@target's port</doc>
+          <type name="guint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <method name="get_priority"
+              c:identifier="g_srv_target_get_priority"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets @target's priority. You should not need to look at this;
+#GResolver already sorts the targets according to the algorithm in
+RFC 2782.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">@target's priority</doc>
+          <type name="guint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <method name="get_weight"
+              c:identifier="g_srv_target_get_weight"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets @target's weight. You should not need to look at this;
+#GResolver already sorts the targets according to the algorithm in
+RFC 2782.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">@target's weight</doc>
+          <type name="guint16" c:type="guint16"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="TcpConnection"
+           c:symbol-prefix="tcp_connection"
+           c:type="GTcpConnection"
+           version="2.22"
+           parent="SocketConnection"
+           glib:type-name="GTcpConnection"
+           glib:get-type="g_tcp_connection_get_type"
+           glib:type-struct="TcpConnectionClass">
+      <doc xml:whitespace="preserve">A #GSocketConnection for UNIX domain socket connections.</doc>
+      <method name="get_graceful_disconnect"
+              c:identifier="g_tcp_connection_get_graceful_disconnect"
+              version="2.22">
+        <doc xml:whitespace="preserve">Checks if graceful disconnects are used. See
+g_tcp_connection_set_graceful_disconnect().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if graceful disconnect is used on close, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_graceful_disconnect"
+              c:identifier="g_tcp_connection_set_graceful_disconnect"
+              version="2.22">
+        <doc xml:whitespace="preserve">This enabled graceful disconnects on close. A graceful disconnect
+means that we signal the recieving end that the connection is terminated
+and wait for it to close the connection before closing the connection.
+A graceful disconnect means that we can be sure that we successfully sent
+all the outstanding data to the other end, or get an error reported.
+However, it also means we have to wait for all the data to reach the
+other side and for it to acknowledge this by closing the socket, which may
+take a while. For this reason it is disabled by default.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="graceful_disconnect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Whether to do graceful disconnects or not</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="graceful-disconnect"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="SocketConnection" c:type="GSocketConnection"/>
+      </field>
+      <field name="priv">
+        <type name="TcpConnectionPrivate" c:type="GTcpConnectionPrivate*"/>
+      </field>
+    </class>
+    <record name="TcpConnectionClass"
+            c:type="GTcpConnectionClass"
+            glib:is-gtype-struct-for="TcpConnection">
+      <field name="parent_class">
+        <type name="SocketConnectionClass" c:type="GSocketConnectionClass"/>
+      </field>
+    </record>
+    <record name="TcpConnectionPrivate"
+            c:type="GTcpConnectionPrivate"
+            disguised="1">
+    </record>
+    <class name="ThemedIcon"
+           c:symbol-prefix="themed_icon"
+           c:type="GThemedIcon"
+           parent="GObject.Object"
+           glib:type-name="GThemedIcon"
+           glib:get-type="g_themed_icon_get_type"
+           glib:type-struct="ThemedIconClass">
+      <doc xml:whitespace="preserve">An implementation of #GIcon for themed icons.</doc>
+      <implements name="Icon"/>
+      <function name="new" c:identifier="g_themed_icon_new">
+        <doc xml:whitespace="preserve">Creates a new themed icon for @iconname.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GThemedIcon.</doc>
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+        <parameters>
+          <parameter name="iconname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing an icon name.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="new_from_names"
+                c:identifier="g_themed_icon_new_from_names">
+        <doc xml:whitespace="preserve">Creates a new themed icon for @iconnames.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GThemedIcon</doc>
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+        <parameters>
+          <parameter name="iconnames" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of strings containing icon names.</doc>
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of the @iconnames array, or -1 if @iconnames is %NULL-terminated</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="new_with_default_fallbacks"
+                c:identifier="g_themed_icon_new_with_default_fallbacks">
+        <doc xml:whitespace="preserve">Creates a new themed icon for @iconname, and all the names
+that can be created by shortening @iconname at '-' characters.
+In the following example, @icon1 and @icon2 are equivalent:
+|[
+const char *names[] = {
+"gnome-dev-cdrom-audio",
+"gnome-dev-cdrom",
+"gnome-dev",
+"gnome"
+};
+icon1 = g_themed_icon_new_from_names (names, 4);
+icon2 = g_themed_icon_new_with_default_fallbacks ("gnome-dev-cdrom-audio");
+]|</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GThemedIcon.</doc>
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+        <parameters>
+          <parameter name="iconname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing an icon name</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="append_name" c:identifier="g_themed_icon_append_name">
+        <doc xml:whitespace="preserve">Append a name to the list of icons from within @icon.
+&lt;note&gt;&lt;para&gt;
+Note that doing so invalidates the hash computed by prior calls
+to g_icon_hash().
+&lt;/para&gt;&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iconname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of icon to append to list of icons from within @icon.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_names" c:identifier="g_themed_icon_get_names">
+        <doc xml:whitespace="preserve">Gets the names of icons from within @icon.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a list of icon names.</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="prepend_name"
+              c:identifier="g_themed_icon_prepend_name"
+              version="2.18">
+        <doc xml:whitespace="preserve">Prepend a name to the list of icons from within @icon.
+&lt;note&gt;&lt;para&gt;
+Note that doing so invalidates the hash computed by prior calls
+to g_icon_hash().
+&lt;/para&gt;&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iconname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of icon to prepend to list of icons from within @icon.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="name"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The icon name.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="names"
+                introspectable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A %NULL-terminated array of icon names.</doc>
+        <type/>
+      </property>
+      <property name="use-default-fallbacks"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether to use the default fallbacks found by shortening the icon name
+at '-' characters. If the "names" array has more than one element,
+ignores any past the first.
+For example, if the icon name was "gnome-dev-cdrom-audio", the array
+would become
+|[
+{
+"gnome-dev-cdrom-audio",
+"gnome-dev-cdrom",
+"gnome-dev",
+"gnome",
+NULL
+};
+]|</doc>
+        <type name="gboolean"/>
+      </property>
+    </class>
+    <record name="ThemedIconClass"
+            c:type="GThemedIconClass"
+            disguised="1"
+            glib:is-gtype-struct-for="ThemedIcon">
+    </record>
+    <class name="ThreadedSocketService"
+           c:symbol-prefix="threaded_socket_service"
+           c:type="GThreadedSocketService"
+           version="2.22"
+           parent="SocketService"
+           glib:type-name="GThreadedSocketService"
+           glib:get-type="g_threaded_socket_service_get_type"
+           glib:type-struct="ThreadedSocketServiceClass">
+      <doc xml:whitespace="preserve">A helper class for handling accepting incomming connections in the
+glib mainloop and handling them in a thread.</doc>
+      <constructor name="new"
+                   c:identifier="g_threaded_socket_service_new"
+                   version="2.22">
+        <doc xml:whitespace="preserve">Creates a new #GThreadedSocketService with no listeners. Listeners
+must be added with g_socket_service_add_listeners().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GSocketService.</doc>
+          <type name="SocketService" c:type="GSocketService*"/>
+        </return-value>
+        <parameters>
+          <parameter name="max_threads" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the maximal number of threads to execute concurrently handling incoming clients, -1 means no limit</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <property name="max-threads"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="SocketService" c:type="GSocketService"/>
+      </field>
+      <field name="priv">
+        <type name="ThreadedSocketServicePrivate"
+              c:type="GThreadedSocketServicePrivate*"/>
+      </field>
+      <glib:signal name="run">
+        <doc xml:whitespace="preserve">The ::run signal is emitted in a worker thread in response to an
+incoming connection. This thread is dedicated to handling
+not return until the connection is closed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stope further signal handlers from being called</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a new #GSocketConnection object.</doc>
+            <type name="SocketConnection"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the source_object passed to g_socket_listener_add_address().</doc>
+            <type name="GObject.Object"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ThreadedSocketServiceClass"
+            c:type="GThreadedSocketServiceClass"
+            glib:is-gtype-struct-for="ThreadedSocketService">
+      <field name="parent_class">
+        <type name="SocketServiceClass" c:type="GSocketServiceClass"/>
+      </field>
+      <field name="run">
+        <callback name="run">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="service" transfer-ownership="none">
+              <type name="ThreadedSocketService"
+                    c:type="GThreadedSocketService*"/>
+            </parameter>
+            <parameter name="connection" transfer-ownership="none">
+              <type name="SocketConnection" c:type="GSocketConnection*"/>
+            </parameter>
+            <parameter name="source_object" transfer-ownership="none">
+              <type name="GObject.Object" c:type="GObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ThreadedSocketServicePrivate"
+            c:type="GThreadedSocketServicePrivate"
+            disguised="1">
+    </record>
+    <class name="UnixConnection"
+           c:symbol-prefix="unix_connection"
+           c:type="GUnixConnection"
+           parent="SocketConnection"
+           glib:type-name="GUnixConnection"
+           glib:get-type="g_unix_connection_get_type"
+           glib:type-struct="UnixConnectionClass">
+      <method name="receive_credentials"
+              c:identifier="g_unix_connection_receive_credentials"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Receives credentials from the sending end of the connection.  The
+sending end has to call g_unix_connection_send_credentials() (or
+similar) for this to work.
+As well as reading the credentials this also reads (and discards) a
+single byte from the stream, as this is required for credentials
+passing to work on some implementations.
+Other ways to exchange credentials with a foreign peer includes the
+#GUnixCredentialsMessage type and g_socket_get_credentials() function.
+g_object_unref()), %NULL if @error is set.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">Received credentials on success (free with</doc>
+          <type name="Credentials" c:type="GCredentials*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="receive_fd"
+              c:identifier="g_unix_connection_receive_fd"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Receives a file descriptor from the sending end of the connection.
+The sending end has to call g_unix_connection_send_fd() for this
+to work.
+As well as reading the fd this also reads a single byte from the
+stream, as this is required for fd passing to work on some
+implementations.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a file descriptor on success, -1 on error.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_credentials"
+              c:identifier="g_unix_connection_send_credentials"
+              version="2.26"
+              throws="1">
+        <doc xml:whitespace="preserve">Passes the credentials of the current user the receiving side
+of the connection. The recieving end has to call
+g_unix_connection_receive_credentials() (or similar) to accept the
+credentials.
+As well as sending the credentials this also writes a single NUL
+byte to the stream, as this is required for credentials passing to
+work on some implementations.
+Other ways to exchange credentials with a foreign peer includes the
+#GUnixCredentialsMessage type and g_socket_get_credentials() function.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE if @error is set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_fd"
+              c:identifier="g_unix_connection_send_fd"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Passes a file descriptor to the recieving side of the
+connection. The recieving end has to call g_unix_connection_receive_fd()
+to accept the file descriptor.
+As well as sending the fd this also writes a single byte to the
+stream, as this is required for fd passing to work on some
+implementations.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a %TRUE on success, %NULL on error.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file descriptor</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="SocketConnection" c:type="GSocketConnection"/>
+      </field>
+      <field name="priv">
+        <type name="UnixConnectionPrivate" c:type="GUnixConnectionPrivate*"/>
+      </field>
+    </class>
+    <record name="UnixConnectionClass"
+            c:type="GUnixConnectionClass"
+            glib:is-gtype-struct-for="UnixConnection">
+      <field name="parent_class">
+        <type name="SocketConnectionClass" c:type="GSocketConnectionClass"/>
+      </field>
+    </record>
+    <record name="UnixConnectionPrivate"
+            c:type="GUnixConnectionPrivate"
+            disguised="1">
+    </record>
+    <class name="UnixCredentialsMessage"
+           c:symbol-prefix="unix_credentials_message"
+           c:type="GUnixCredentialsMessage"
+           version="2.26"
+           parent="SocketControlMessage"
+           glib:type-name="GUnixCredentialsMessage"
+           glib:get-type="g_unix_credentials_message_get_type"
+           glib:type-struct="UnixCredentialsMessageClass">
+      <doc xml:whitespace="preserve">The #GUnixCredentialsMessage structure contains only private data
+and should only be accessed using the provided API.</doc>
+      <constructor name="new"
+                   c:identifier="g_unix_credentials_message_new"
+                   version="2.26">
+        <doc xml:whitespace="preserve">Creates a new #GUnixCredentialsMessage with credentials matching the current processes.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GUnixCredentialsMessage</doc>
+          <type name="SocketControlMessage" c:type="GSocketControlMessage*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_credentials"
+                   c:identifier="g_unix_credentials_message_new_with_credentials"
+                   version="2.26">
+        <doc xml:whitespace="preserve">Creates a new #GUnixCredentialsMessage holding @credentials.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GUnixCredentialsMessage</doc>
+          <type name="SocketControlMessage" c:type="GSocketControlMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="credentials" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GCredentials object.</doc>
+            <type name="Credentials" c:type="GCredentials*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="is_supported"
+                c:identifier="g_unix_credentials_message_is_supported"
+                version="2.26">
+        <doc xml:whitespace="preserve">Checks if passing a #GCredential on a #GSocket is supported on this platform.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if supported, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </function>
+      <method name="get_credentials"
+              c:identifier="g_unix_credentials_message_get_credentials"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets the credentials stored in @message.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GCredentials instance. Do not free, it is owned by @message.</doc>
+          <type name="Credentials" c:type="GCredentials*"/>
+        </return-value>
+      </method>
+      <property name="credentials"
+                version="2.26"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The credentials stored in the message.</doc>
+        <type name="Credentials"/>
+      </property>
+      <field name="parent_instance">
+        <type name="SocketControlMessage" c:type="GSocketControlMessage"/>
+      </field>
+      <field name="priv">
+        <type name="UnixCredentialsMessagePrivate"
+              c:type="GUnixCredentialsMessagePrivate*"/>
+      </field>
+    </class>
+    <record name="UnixCredentialsMessageClass"
+            c:type="GUnixCredentialsMessageClass"
+            glib:is-gtype-struct-for="UnixCredentialsMessage"
+            version="2.26">
+      <doc xml:whitespace="preserve">Class structure for #GUnixCredentialsMessage.</doc>
+      <field name="parent_class">
+        <type name="SocketControlMessageClass"
+              c:type="GSocketControlMessageClass"/>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="UnixCredentialsMessagePrivate"
+            c:type="GUnixCredentialsMessagePrivate"
+            disguised="1">
+    </record>
+    <class name="UnixFDList"
+           c:symbol-prefix="unix_fd_list"
+           c:type="GUnixFDList"
+           parent="GObject.Object"
+           glib:type-name="GUnixFDList"
+           glib:get-type="g_unix_fd_list_get_type"
+           glib:type-struct="UnixFDListClass">
+      <constructor name="new" c:identifier="g_unix_fd_list_new" version="2.24">
+        <doc xml:whitespace="preserve">Creates a new #GUnixFDList containing no file descriptors.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GUnixFDList</doc>
+          <type name="UnixFDList" c:type="GUnixFDList*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_array"
+                   c:identifier="g_unix_fd_list_new_from_array"
+                   version="2.24">
+        <doc xml:whitespace="preserve">Creates a new #GUnixFDList containing the file descriptors given in
+may no longer be used by the caller.  The array itself is owned by
+the caller.
+Each file descriptor in the array should be set to close-on-exec.
+If @n_fds is -1 then @fds must be terminated with -1.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GUnixFDList</doc>
+          <type name="UnixFDList" c:type="GUnixFDList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="fds" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the initial list of file descriptors</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="n_fds" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of #fds, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="append"
+              c:identifier="g_unix_fd_list_append"
+              version="2.24"
+              throws="1">
+        <doc xml:whitespace="preserve">Adds a file descriptor to @list.
+The file descriptor is duplicated using dup(). You keep your copy
+of the descriptor and the copy contained in @list will be closed
+when @list is finalized.
+A possible cause of failure is exceeding the per-process or
+system-wide file descriptor limit.
+The index of the file descriptor in the list is returned.  If you use
+this index with g_unix_fd_list_get() then you will receive back a
+duplicated copy of the same file descriptor.
+(and @error is set)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index of the appended fd in case of success, else -1</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid open file descriptor</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get"
+              c:identifier="g_unix_fd_list_get"
+              version="2.24"
+              throws="1">
+        <doc xml:whitespace="preserve">Gets a file descriptor out of @list.
+programmer error for @index_ to be out of range; see
+g_unix_fd_list_get_length().
+The file descriptor is duplicated using dup() and set as
+close-on-exec before being returned.  You must call close() on it
+when you are done.
+A possible cause of failure is exceeding the per-process or
+system-wide file descriptor limit.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the file descriptor, or -1 in case of error</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index into the list</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_length"
+              c:identifier="g_unix_fd_list_get_length"
+              version="2.24">
+        <doc xml:whitespace="preserve">contained within).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the length of @list</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="peek_fds"
+              c:identifier="g_unix_fd_list_peek_fds"
+              version="2.24">
+        <doc xml:whitespace="preserve">Returns the array of file descriptors that is contained in this
+object.
+After this call, the descriptors remain the property of @list.  The
+caller must not close them and must not free the array.  The array is
+valid only until @list is changed in any way.
+If @length is non-%NULL then it is set to the number of file
+descriptors in the returned array. The returned array is also
+terminated with -1.
+This function never returns %NULL. In case there are no file
+descriptors contained in @list, an empty array is returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an array of file descriptors</doc>
+          <type name="gint" c:type="gint*"/>
+        </return-value>
+        <parameters>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer to the length of the returned array, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="steal_fds"
+              c:identifier="g_unix_fd_list_steal_fds"
+              version="2.24">
+        <doc xml:whitespace="preserve">Returns the array of file descriptors that is contained in this
+object.
+After this call, the descriptors are no longer contained in
+descriptors have been added).
+The return result of this function must be freed with g_free().
+The caller is also responsible for closing all of the file
+descriptors.  The file descriptors in the array are set to
+close-on-exec.
+If @length is non-%NULL then it is set to the number of file
+descriptors in the returned array. The returned array is also
+terminated with -1.
+This function never returns %NULL. In case there are no file
+descriptors contained in @list, an empty array is returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an array of file descriptors</doc>
+          <type name="gint" c:type="gint*"/>
+        </return-value>
+        <parameters>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer to the length of the returned array, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="UnixFDListPrivate" c:type="GUnixFDListPrivate*"/>
+      </field>
+    </class>
+    <record name="UnixFDListClass"
+            c:type="GUnixFDListClass"
+            glib:is-gtype-struct-for="UnixFDList">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="UnixFDListPrivate" c:type="GUnixFDListPrivate" disguised="1">
+    </record>
+    <class name="UnixFDMessage"
+           c:symbol-prefix="unix_fd_message"
+           c:type="GUnixFDMessage"
+           parent="SocketControlMessage"
+           glib:type-name="GUnixFDMessage"
+           glib:get-type="g_unix_fd_message_get_type"
+           glib:type-struct="UnixFDMessageClass">
+      <constructor name="new"
+                   c:identifier="g_unix_fd_message_new"
+                   version="2.22">
+        <doc xml:whitespace="preserve">Creates a new #GUnixFDMessage containing an empty file descriptor
+list.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GUnixFDMessage</doc>
+          <type name="SocketControlMessage" c:type="GSocketControlMessage*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_fd_list"
+                   c:identifier="g_unix_fd_message_new_with_fd_list"
+                   version="2.24">
+        <doc xml:whitespace="preserve">Creates a new #GUnixFDMessage containing @list.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GUnixFDMessage</doc>
+          <type name="SocketControlMessage" c:type="GSocketControlMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd_list" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GUnixFDList</doc>
+            <type name="UnixFDList" c:type="GUnixFDList*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="append_fd"
+              c:identifier="g_unix_fd_message_append_fd"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Adds a file descriptor to @message.
+The file descriptor is duplicated using dup(). You keep your copy
+of the descriptor and the copy contained in @message will be closed
+when @message is finalized.
+A possible cause of failure is exceeding the per-process or
+system-wide file descriptor limit.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE in case of success, else %FALSE (and @error is set)</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid open file descriptor</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fd_list"
+              c:identifier="g_unix_fd_message_get_fd_list"
+              version="2.24">
+        <doc xml:whitespace="preserve">Gets the #GUnixFDList contained in @message.  This function does not
+return a reference to the caller, but the returned list is valid for
+the lifetime of @message.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GUnixFDList from @message</doc>
+          <type name="UnixFDList" c:type="GUnixFDList*"/>
+        </return-value>
+      </method>
+      <method name="steal_fds"
+              c:identifier="g_unix_fd_message_steal_fds"
+              version="2.22">
+        <doc xml:whitespace="preserve">Returns the array of file descriptors that is contained in this
+object.
+After this call, the descriptors are no longer contained in
+descriptors have been added).
+The return result of this function must be freed with g_free().
+The caller is also responsible for closing all of the file
+descriptors.
+If @length is non-%NULL then it is set to the number of file
+descriptors in the returned array. The returned array is also
+terminated with -1.
+This function never returns %NULL. In case there are no file
+descriptors contained in @message, an empty array is returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an array of file descriptors</doc>
+          <type name="gint" c:type="gint*"/>
+        </return-value>
+        <parameters>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer to the length of the returned array, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="fd-list"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="UnixFDList"/>
+      </property>
+      <field name="parent_instance">
+        <type name="SocketControlMessage" c:type="GSocketControlMessage"/>
+      </field>
+      <field name="priv">
+        <type name="UnixFDMessagePrivate" c:type="GUnixFDMessagePrivate*"/>
+      </field>
+    </class>
+    <record name="UnixFDMessageClass"
+            c:type="GUnixFDMessageClass"
+            glib:is-gtype-struct-for="UnixFDMessage">
+      <field name="parent_class">
+        <type name="SocketControlMessageClass"
+              c:type="GSocketControlMessageClass"/>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="UnixFDMessagePrivate"
+            c:type="GUnixFDMessagePrivate"
+            disguised="1">
+    </record>
+    <class name="UnixInputStream"
+           c:symbol-prefix="unix_input_stream"
+           c:type="GUnixInputStream"
+           parent="InputStream"
+           glib:type-name="GUnixInputStream"
+           glib:get-type="g_unix_input_stream_get_type"
+           glib:type-struct="UnixInputStreamClass">
+      <doc xml:whitespace="preserve">Implements #GInputStream for reading from selectable unix file descriptors</doc>
+      <constructor name="new" c:identifier="g_unix_input_stream_new">
+        <doc xml:whitespace="preserve">Creates a new #GUnixInputStream for the given @fd.
+If @close_fd is %TRUE, the file descriptor will be closed
+when the stream is closed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GUnixInputStream</doc>
+          <type name="InputStream" c:type="GInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a UNIX file descriptor</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="close_fd" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to close the file descriptor when done</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_close_fd"
+              c:identifier="g_unix_input_stream_get_close_fd"
+              version="2.20">
+        <doc xml:whitespace="preserve">Returns whether the file descriptor of @stream will be
+closed when the stream is closed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the file descriptor is closed when done</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_fd"
+              c:identifier="g_unix_input_stream_get_fd"
+              version="2.20">
+        <doc xml:whitespace="preserve">Return the UNIX file descriptor that the stream reads from.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The file descriptor of @stream</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_close_fd"
+              c:identifier="g_unix_input_stream_set_close_fd"
+              version="2.20">
+        <doc xml:whitespace="preserve">Sets whether the file descriptor of @stream shall be closed
+when the stream is closed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="close_fd" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to close the file descriptor when done</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="close-fd"
+                version="2.20"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether to close the file descriptor when the stream is closed.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="fd"
+                version="2.20"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The file descriptor that the stream reads from.</doc>
+        <type name="gint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="InputStream" c:type="GInputStream"/>
+      </field>
+      <field name="priv">
+        <type name="UnixInputStreamPrivate" c:type="GUnixInputStreamPrivate*"/>
+      </field>
+    </class>
+    <record name="UnixInputStreamClass"
+            c:type="GUnixInputStreamClass"
+            glib:is-gtype-struct-for="UnixInputStream">
+      <field name="parent_class">
+        <type name="InputStreamClass" c:type="GInputStreamClass"/>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="UnixInputStreamPrivate"
+            c:type="GUnixInputStreamPrivate"
+            disguised="1">
+    </record>
+    <record name="UnixMountEntry" c:type="GUnixMountEntry" disguised="1">
+      <doc xml:whitespace="preserve">Defines a Unix mount entry (e.g. &lt;filename&gt;/media/cdrom&lt;/filename&gt;).
+This corresponds roughly to a mtab entry.</doc>
+    </record>
+    <class name="UnixMountMonitor"
+           c:symbol-prefix="unix_mount_monitor"
+           c:type="GUnixMountMonitor"
+           parent="GObject.Object"
+           glib:type-name="GUnixMountMonitor"
+           glib:get-type="g_unix_mount_monitor_get_type"
+           glib:type-struct="UnixMountMonitorClass">
+      <doc xml:whitespace="preserve">Watches #GUnixMount&lt;!-- --&gt;s for changes.</doc>
+      <constructor name="new" c:identifier="g_unix_mount_monitor_new">
+        <doc xml:whitespace="preserve">Gets a new #GUnixMountMonitor. The default rate limit for which the
+monitor will report consecutive changes for the mount and mount
+point entry files is the default for a #GFileMonitor. Use
+g_unix_mount_monitor_set_rate_limit() to change this.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GUnixMountMonitor.</doc>
+          <type name="UnixMountMonitor" c:type="GUnixMountMonitor*"/>
+        </return-value>
+      </constructor>
+      <method name="set_rate_limit"
+              c:identifier="g_unix_mount_monitor_set_rate_limit"
+              version="2.18">
+        <doc xml:whitespace="preserve">Sets the rate limit to which the @mount_monitor will report
+consecutive change events to the mount and mount point entry files.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="limit_msec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a integer with the limit in milliseconds to poll for changes.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="mountpoints-changed">
+        <doc xml:whitespace="preserve">Emitted when the unix mount points have changed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="mounts-changed">
+        <doc xml:whitespace="preserve">Emitted when the unix mounts have changed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="UnixMountMonitorClass"
+            c:type="GUnixMountMonitorClass"
+            disguised="1"
+            glib:is-gtype-struct-for="UnixMountMonitor">
+    </record>
+    <record name="UnixMountPoint" c:type="GUnixMountPoint" disguised="1">
+      <doc xml:whitespace="preserve">Defines a Unix mount point (e.g. &lt;filename&gt;/dev&lt;/filename&gt;).
+This corresponds roughly to a fstab entry.</doc>
+      <method name="compare" c:identifier="g_unix_mount_point_compare">
+        <doc xml:whitespace="preserve">Compares two unix mount points.
+or less than @mount2, respectively.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">1, 0 or -1 if @mount1 is greater than, equal to,</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="mount2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GUnixMount.</doc>
+            <type name="UnixMountPoint" c:type="GUnixMountPoint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="g_unix_mount_point_free">
+        <doc xml:whitespace="preserve">Frees a unix mount point.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_device_path"
+              c:identifier="g_unix_mount_point_get_device_path">
+        <doc xml:whitespace="preserve">Gets the device path for a unix mount point.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the device path.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_fs_type" c:identifier="g_unix_mount_point_get_fs_type">
+        <doc xml:whitespace="preserve">Gets the file system type for the mount point.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the file system type.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_mount_path"
+              c:identifier="g_unix_mount_point_get_mount_path">
+        <doc xml:whitespace="preserve">Gets the mount path for a unix mount point.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the mount path.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="guess_can_eject"
+              c:identifier="g_unix_mount_point_guess_can_eject">
+        <doc xml:whitespace="preserve">Guesses whether a Unix mount point can be ejected.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @mount_point is deemed to be ejectable.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="guess_icon" c:identifier="g_unix_mount_point_guess_icon">
+        <doc xml:whitespace="preserve">Guesses the icon of a Unix mount point.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GIcon</doc>
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </method>
+      <method name="guess_name" c:identifier="g_unix_mount_point_guess_name">
+        <doc xml:whitespace="preserve">Guesses the name of a Unix mount point.
+The result is a translated string.
+be freed with g_free()</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly allocated string that must</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="is_loopback" c:identifier="g_unix_mount_point_is_loopback">
+        <doc xml:whitespace="preserve">Checks if a unix mount point is a loopback device.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the mount point is a loopback. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_readonly" c:identifier="g_unix_mount_point_is_readonly">
+        <doc xml:whitespace="preserve">Checks if a unix mount point is read only.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a mount point is read only.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_user_mountable"
+              c:identifier="g_unix_mount_point_is_user_mountable">
+        <doc xml:whitespace="preserve">Checks if a unix mount point is mountable by the user.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the mount point is user mountable.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="UnixOutputStream"
+           c:symbol-prefix="unix_output_stream"
+           c:type="GUnixOutputStream"
+           parent="OutputStream"
+           glib:type-name="GUnixOutputStream"
+           glib:get-type="g_unix_output_stream_get_type"
+           glib:type-struct="UnixOutputStreamClass">
+      <doc xml:whitespace="preserve">Implements #GOutputStream for outputting to selectable unix file descriptors</doc>
+      <constructor name="new" c:identifier="g_unix_output_stream_new">
+        <doc xml:whitespace="preserve">Creates a new #GUnixOutputStream for the given @fd.
+If @close_fd, is %TRUE, the file descriptor will be closed when
+the output stream is destroyed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GOutputStream</doc>
+          <type name="OutputStream" c:type="GOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a UNIX file descriptor</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="close_fd" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to close the file descriptor when done</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_close_fd"
+              c:identifier="g_unix_output_stream_get_close_fd"
+              version="2.20">
+        <doc xml:whitespace="preserve">Returns whether the file descriptor of @stream will be
+closed when the stream is closed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the file descriptor is closed when done</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_fd"
+              c:identifier="g_unix_output_stream_get_fd"
+              version="2.20">
+        <doc xml:whitespace="preserve">Return the UNIX file descriptor that the stream writes to.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The file descriptor of @stream</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_close_fd"
+              c:identifier="g_unix_output_stream_set_close_fd"
+              version="2.20">
+        <doc xml:whitespace="preserve">Sets whether the file descriptor of @stream shall be closed
+when the stream is closed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="close_fd" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to close the file descriptor when done</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="close-fd"
+                version="2.20"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether to close the file descriptor when the stream is closed.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="fd"
+                version="2.20"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The file descriptor that the stream writes to.</doc>
+        <type name="gint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="OutputStream" c:type="GOutputStream"/>
+      </field>
+      <field name="priv">
+        <type name="UnixOutputStreamPrivate"
+              c:type="GUnixOutputStreamPrivate*"/>
+      </field>
+    </class>
+    <record name="UnixOutputStreamClass"
+            c:type="GUnixOutputStreamClass"
+            glib:is-gtype-struct-for="UnixOutputStream">
+      <field name="parent_class">
+        <type name="OutputStreamClass" c:type="GOutputStreamClass"/>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="UnixOutputStreamPrivate"
+            c:type="GUnixOutputStreamPrivate"
+            disguised="1">
+    </record>
+    <class name="UnixSocketAddress"
+           c:symbol-prefix="unix_socket_address"
+           c:type="GUnixSocketAddress"
+           parent="SocketAddress"
+           glib:type-name="GUnixSocketAddress"
+           glib:get-type="g_unix_socket_address_get_type"
+           glib:type-struct="UnixSocketAddressClass">
+      <doc xml:whitespace="preserve">A UNIX-domain (local) socket address, corresponding to a
+&lt;type&gt;struct sockaddr_un&lt;/type&gt;.</doc>
+      <implements name="SocketConnectable"/>
+      <constructor name="new"
+                   c:identifier="g_unix_socket_address_new"
+                   version="2.22">
+        <doc xml:whitespace="preserve">Creates a new #GUnixSocketAddress for @path.
+To create abstract socket addresses, on systems that support that,
+use g_unix_socket_address_new_abstract().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GUnixSocketAddress</doc>
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the socket path</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_abstract"
+                   c:identifier="g_unix_socket_address_new_abstract"
+                   deprecated="Use g_unix_socket_address_new_with_type().">
+        <doc xml:whitespace="preserve">Creates a new %G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED
+#GUnixSocketAddress for @path.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GUnixSocketAddress</doc>
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the abstract name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="path_len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of @path, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_type"
+                   c:identifier="g_unix_socket_address_new_with_type"
+                   version="2.26">
+        <doc xml:whitespace="preserve">Creates a new #GUnixSocketAddress of type @type with name @path.
+If @type is %G_UNIX_SOCKET_ADDRESS_PATH, this is equivalent to
+calling g_unix_socket_address_new().
+If @path_type is %G_UNIX_SOCKET_ADDRESS_ABSTRACT, then @path_len
+bytes of @path will be copied to the socket's path, and only those
+bytes will be considered part of the name. (If @path_len is -1,
+then @path is assumed to be NUL-terminated.) For example, if @path
+was "test", then calling g_socket_address_get_native_size() on the
+returned socket would return 7 (2 bytes of overhead, 1 byte for the
+abstract-socket indicator byte, and 4 bytes for the name "test").
+If @path_type is %G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED, then
+rest of the path will be padded with 0 bytes, and the entire
+zero-padded buffer will be considered the name. (As above, if
+this case, g_socket_address_get_native_size() will always return
+the full size of a &lt;literal&gt;struct sockaddr_un&lt;/literal&gt;, although
+g_unix_socket_address_get_path_len() will still return just the
+length of @path.
+%G_UNIX_SOCKET_ADDRESS_ABSTRACT is preferred over
+%G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED for new programs. Of course,
+when connecting to a server created by another process, you must
+use the appropriate type corresponding to how that process created
+its listening socket.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GUnixSocketAddress</doc>
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="path_len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of @path, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GUnixSocketAddressType</doc>
+            <type name="UnixSocketAddressType"
+                  c:type="GUnixSocketAddressType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="abstract_names_supported"
+                c:identifier="g_unix_socket_address_abstract_names_supported"
+                version="2.22">
+        <doc xml:whitespace="preserve">Checks if abstract unix domain socket names are supported.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if supported, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </function>
+      <method name="get_address_type"
+              c:identifier="g_unix_socket_address_get_address_type"
+              version="2.26">
+        <doc xml:whitespace="preserve">Gets @address's type.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GUnixSocketAddressType</doc>
+          <type name="UnixSocketAddressType" c:type="GUnixSocketAddressType"/>
+        </return-value>
+      </method>
+      <method name="get_is_abstract"
+              c:identifier="g_unix_socket_address_get_is_abstract"
+              version="2.22"
+              deprecated="Use g_unix_socket_address_get_address_type()">
+        <doc xml:whitespace="preserve">Tests if @address is abstract.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the address is abstract, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_path"
+              c:identifier="g_unix_socket_address_get_path"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets @address's path, or for abstract sockets the "name".
+Guaranteed to be zero-terminated, but an abstract socket
+may contain embedded zeros, and thus you should use
+g_unix_socket_address_get_path_len() to get the true length
+of this string.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the path for @address</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_path_len"
+              c:identifier="g_unix_socket_address_get_path_len"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the length of @address's path.
+For details, see g_unix_socket_address_get_path().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the length of the path</doc>
+          <type name="gulong" c:type="gsize"/>
+        </return-value>
+      </method>
+      <property name="abstract"
+                deprecated="Use #GUnixSocketAddress:address-type, which"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether or not this is an abstract address
+distinguishes between zero-padded and non-zero-padded
+abstract addresses.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="address-type"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="UnixSocketAddressType"/>
+      </property>
+      <property name="path"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="path-as-array"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <array name="GLib.ByteArray">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </property>
+      <field name="parent_instance">
+        <type name="SocketAddress" c:type="GSocketAddress"/>
+      </field>
+      <field name="priv">
+        <type name="UnixSocketAddressPrivate"
+              c:type="GUnixSocketAddressPrivate*"/>
+      </field>
+    </class>
+    <record name="UnixSocketAddressClass"
+            c:type="GUnixSocketAddressClass"
+            glib:is-gtype-struct-for="UnixSocketAddress">
+      <field name="parent_class">
+        <type name="SocketAddressClass" c:type="GSocketAddressClass"/>
+      </field>
+    </record>
+    <record name="UnixSocketAddressPrivate"
+            c:type="GUnixSocketAddressPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="UnixSocketAddressType"
+                 version="2.26"
+                 glib:type-name="GUnixSocketAddressType"
+                 glib:get-type="g_unix_socket_address_type_get_type"
+                 c:type="GUnixSocketAddressType">
+      <doc xml:whitespace="preserve">The type of name used by a #GUnixSocketAddress.
+%G_UNIX_SOCKET_ADDRESS_PATH indicates a traditional unix domain
+socket bound to a filesystem path. %G_UNIX_SOCKET_ADDRESS_ANONYMOUS
+indicates a socket not bound to any name (eg, a client-side socket,
+or a socket created with socketpair()).
+For abstract sockets, there are two incompatible ways of naming
+sockaddr_un&lt;/literal&gt; as the name, padding the unused parts of the
+%sun_path field with zeroes; this corresponds to
+%G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED. However, many programs
+instead just use a portion of %sun_path, and pass an appropriate
+smaller length to bind() or connect(). This is
+%G_UNIX_SOCKET_ADDRESS_ABSTRACT.</doc>
+      <member name="invalid"
+              value="0"
+              c:identifier="G_UNIX_SOCKET_ADDRESS_INVALID"
+              glib:nick="invalid"/>
+      <member name="anonymous"
+              value="1"
+              c:identifier="G_UNIX_SOCKET_ADDRESS_ANONYMOUS"
+              glib:nick="anonymous"/>
+      <member name="path"
+              value="2"
+              c:identifier="G_UNIX_SOCKET_ADDRESS_PATH"
+              glib:nick="path"/>
+      <member name="abstract"
+              value="3"
+              c:identifier="G_UNIX_SOCKET_ADDRESS_ABSTRACT"
+              glib:nick="abstract"/>
+      <member name="abstract_padded"
+              value="4"
+              c:identifier="G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED"
+              glib:nick="abstract-padded"/>
+    </enumeration>
+    <constant name="VFS_EXTENSION_POINT_NAME" value="gio-vfs">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="VOLUME_IDENTIFIER_KIND_HAL_UDI" value="hal-udi">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="VOLUME_IDENTIFIER_KIND_LABEL" value="label">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="VOLUME_IDENTIFIER_KIND_NFS_MOUNT" value="nfs-mount">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="VOLUME_IDENTIFIER_KIND_UNIX_DEVICE" value="unix-device">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="VOLUME_IDENTIFIER_KIND_UUID" value="uuid">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="VOLUME_MONITOR_EXTENSION_POINT_NAME"
+              value="gio-volume-monitor">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <class name="Vfs"
+           c:symbol-prefix="vfs"
+           c:type="GVfs"
+           parent="GObject.Object"
+           glib:type-name="GVfs"
+           glib:get-type="g_vfs_get_type"
+           glib:type-struct="VfsClass">
+      <doc xml:whitespace="preserve">Virtual File System object.</doc>
+      <function name="get_default" c:identifier="g_vfs_get_default">
+        <doc xml:whitespace="preserve">Gets the default #GVfs for the system.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GVfs.</doc>
+          <type name="Vfs" c:type="GVfs*"/>
+        </return-value>
+      </function>
+      <function name="get_local" c:identifier="g_vfs_get_local">
+        <doc xml:whitespace="preserve">Gets the local #GVfs for the system.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GVfs.</doc>
+          <type name="Vfs" c:type="GVfs*"/>
+        </return-value>
+      </function>
+      <virtual-method name="add_writable_namespaces">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="FileAttributeInfoList"
+                  c:type="GFileAttributeInfoList*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_file_for_path" invoker="get_file_for_path">
+        <doc xml:whitespace="preserve">Gets a #GFile for @path.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFile.</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing a VFS path.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_file_for_uri" invoker="get_file_for_uri">
+        <doc xml:whitespace="preserve">Gets a #GFile for @uri.
+This operation never fails, but the returned object
+might not support any I/O operation if the URI
+is malformed or if the URI scheme is not supported.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFile.</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing a URI</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_supported_uri_schemes"
+                      invoker="get_supported_uri_schemes">
+        <doc xml:whitespace="preserve">Gets a list of URI schemes supported by @vfs.
+The returned array belongs to GIO and must
+not be freed or modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a %NULL-terminated array of strings.</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="is_active" invoker="is_active">
+        <doc xml:whitespace="preserve">Checks if the VFS is active.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if construction of the @vfs was successful and it is now active.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="local_file_add_info">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="device" transfer-ownership="none">
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="attribute_matcher" transfer-ownership="none">
+            <type name="FileAttributeMatcher" c:type="GFileAttributeMatcher*"/>
+          </parameter>
+          <parameter name="info" transfer-ownership="none">
+            <type name="FileInfo" c:type="GFileInfo*"/>
+          </parameter>
+          <parameter name="cancellable" transfer-ownership="none">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="extra_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer*"/>
+          </parameter>
+          <parameter name="free_extra_data"
+                     transfer-ownership="none"
+                     scope="async">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="local_file_moved">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="local_file_removed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="local_file_set_attributes" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="info" transfer-ownership="none">
+            <type name="FileInfo" c:type="GFileInfo*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable" transfer-ownership="none">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="parse_name" invoker="parse_name">
+        <doc xml:whitespace="preserve">This operation never fails, but the returned object might
+not support any I/O operations if the @parse_name cannot
+be parsed by the #GVfs module.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFile for the given @parse_name.</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parse_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string to be parsed by the VFS module.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_file_for_path" c:identifier="g_vfs_get_file_for_path">
+        <doc xml:whitespace="preserve">Gets a #GFile for @path.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFile.</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing a VFS path.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_file_for_uri" c:identifier="g_vfs_get_file_for_uri">
+        <doc xml:whitespace="preserve">Gets a #GFile for @uri.
+This operation never fails, but the returned object
+might not support any I/O operation if the URI
+is malformed or if the URI scheme is not supported.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFile.</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing a URI</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_supported_uri_schemes"
+              c:identifier="g_vfs_get_supported_uri_schemes">
+        <doc xml:whitespace="preserve">Gets a list of URI schemes supported by @vfs.
+The returned array belongs to GIO and must
+not be freed or modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a %NULL-terminated array of strings.</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="is_active" c:identifier="g_vfs_is_active">
+        <doc xml:whitespace="preserve">Checks if the VFS is active.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if construction of the @vfs was successful and it is now active.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="parse_name" c:identifier="g_vfs_parse_name">
+        <doc xml:whitespace="preserve">This operation never fails, but the returned object might
+not support any I/O operations if the @parse_name cannot
+be parsed by the #GVfs module.
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GFile for the given @parse_name.</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parse_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string to be parsed by the VFS module.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+    </class>
+    <record name="VfsClass" c:type="GVfsClass" glib:is-gtype-struct-for="Vfs">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="is_active">
+        <callback name="is_active">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if construction of the @vfs was successful and it is now active.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="vfs" transfer-ownership="none">
+              <type name="Vfs" c:type="GVfs*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_file_for_path">
+        <callback name="get_file_for_path">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFile.</doc>
+            <type name="File" c:type="GFile*"/>
+          </return-value>
+          <parameters>
+            <parameter name="vfs" transfer-ownership="none">
+              <type name="Vfs" c:type="GVfs*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a string containing a VFS path.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_file_for_uri">
+        <callback name="get_file_for_uri">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFile.</doc>
+            <type name="File" c:type="GFile*"/>
+          </return-value>
+          <parameters>
+            <parameter name="vfs" transfer-ownership="none">
+              <type name="Vfs" c:type="GVfs*"/>
+            </parameter>
+            <parameter name="uri" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a string containing a URI</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_supported_uri_schemes">
+        <callback name="get_supported_uri_schemes">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a %NULL-terminated array of strings.</doc>
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </return-value>
+          <parameters>
+            <parameter name="vfs" transfer-ownership="none">
+              <type name="Vfs" c:type="GVfs*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parse_name">
+        <callback name="parse_name">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GFile for the given @parse_name.</doc>
+            <type name="File" c:type="GFile*"/>
+          </return-value>
+          <parameters>
+            <parameter name="vfs" transfer-ownership="none">
+              <type name="Vfs" c:type="GVfs*"/>
+            </parameter>
+            <parameter name="parse_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a string to be parsed by the VFS module.</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="local_file_add_info">
+        <callback name="local_file_add_info">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="vfs" transfer-ownership="none">
+              <type name="Vfs" c:type="GVfs*"/>
+            </parameter>
+            <parameter name="filename" transfer-ownership="none">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="device" transfer-ownership="none">
+              <type name="guint64" c:type="guint64"/>
+            </parameter>
+            <parameter name="attribute_matcher" transfer-ownership="none">
+              <type name="FileAttributeMatcher"
+                    c:type="GFileAttributeMatcher*"/>
+            </parameter>
+            <parameter name="info" transfer-ownership="none">
+              <type name="FileInfo" c:type="GFileInfo*"/>
+            </parameter>
+            <parameter name="cancellable" transfer-ownership="none">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="extra_data" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer*"/>
+            </parameter>
+            <parameter name="free_extra_data"
+                       transfer-ownership="none"
+                       scope="async">
+              <type name="GLib.DestroyNotify" c:type="GDestroyNotify*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_writable_namespaces">
+        <callback name="add_writable_namespaces">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="vfs" transfer-ownership="none">
+              <type name="Vfs" c:type="GVfs*"/>
+            </parameter>
+            <parameter name="list" transfer-ownership="none">
+              <type name="FileAttributeInfoList"
+                    c:type="GFileAttributeInfoList*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="local_file_set_attributes">
+        <callback name="local_file_set_attributes" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="vfs" transfer-ownership="none">
+              <type name="Vfs" c:type="GVfs*"/>
+            </parameter>
+            <parameter name="filename" transfer-ownership="none">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="info" transfer-ownership="none">
+              <type name="FileInfo" c:type="GFileInfo*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+            </parameter>
+            <parameter name="cancellable" transfer-ownership="none">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="local_file_removed">
+        <callback name="local_file_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="vfs" transfer-ownership="none">
+              <type name="Vfs" c:type="GVfs*"/>
+            </parameter>
+            <parameter name="filename" transfer-ownership="none">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="local_file_moved">
+        <callback name="local_file_moved">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="vfs" transfer-ownership="none">
+              <type name="Vfs" c:type="GVfs*"/>
+            </parameter>
+            <parameter name="source" transfer-ownership="none">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="dest" transfer-ownership="none">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved6" introspectable="0">
+        <callback name="_g_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved7" introspectable="0">
+        <callback name="_g_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <interface name="Volume"
+               c:symbol-prefix="volume"
+               c:type="GVolume"
+               glib:type-name="GVolume"
+               glib:get-type="g_volume_get_type"
+               glib:type-struct="VolumeIface">
+      <doc xml:whitespace="preserve">Opaque mountable volume object.</doc>
+      <virtual-method name="can_eject" invoker="can_eject">
+        <doc xml:whitespace="preserve">Checks if a volume can be ejected.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @volume can be ejected. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="can_mount" invoker="can_mount">
+        <doc xml:whitespace="preserve">Checks if a volume can be mounted.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @volume can be mounted. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="eject"
+                      invoker="eject"
+                      deprecated="Use g_volume_eject_with_operation() instead."
+                      deprecated-version="2.22">
+        <doc xml:whitespace="preserve">Ejects a volume. This is an asynchronous operation, and is
+finished by calling g_volume_eject_finish() with the @volume
+and #GAsyncResult returned in the @callback.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the unmount if required for eject</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="3">
+            <doc xml:whitespace="preserve">user data that gets passed to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject_finish"
+                      invoker="eject_finish"
+                      deprecated="Use g_volume_eject_with_operation_finish() instead."
+                      deprecated-version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes ejecting a volume. If any errors occured during the operation,</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, %FALSE if operation failed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject_with_operation"
+                      invoker="eject_with_operation"
+                      version="2.22">
+        <doc xml:whitespace="preserve">Ejects a volume. This is an asynchronous operation, and is
+finished by calling g_volume_eject_with_operation_finish() with the @volume
+and #GAsyncResult data returned in the @callback.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the unmount if required for eject</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject_with_operation_finish"
+                      invoker="eject_with_operation_finish"
+                      version="2.22"
+                      throws="1">
+        <doc xml:whitespace="preserve">Finishes ejecting a volume. If any errors occurred during the operation,</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the volume was successfully ejected. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="enumerate_identifiers"
+                      invoker="enumerate_identifiers">
+        <doc xml:whitespace="preserve">Gets the kinds of &lt;link linkend="volume-identifier"&gt;identifiers&lt;/link&gt;
+that @volume has. Use g_volume_get_identifer() to obtain
+the identifiers themselves.
+of strings containing kinds of identifiers. Use g_strfreev() to free.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a %NULL-terminated array</doc>
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_activation_root"
+                      invoker="get_activation_root"
+                      version="2.18">
+        <doc xml:whitespace="preserve">Gets the activation root for a #GVolume if it is known ahead of
+mount time. Returns %NULL otherwise. If not %NULL and if @volume
+is mounted, then the result of g_mount_get_root() on the
+#GMount object obtained from g_volume_get_mount() will always
+either be equal or a prefix of what this function returns. In
+other words, in code
+&lt;programlisting&gt;
+GMount *mount;
+GFile *mount_root
+GFile *volume_activation_root;
+mount = g_volume_get_mount (volume); /&amp;ast; mounted, so never NULL &amp;ast;/
+mount_root = g_mount_get_root (mount);
+volume_activation_root = g_volume_get_activation_root(volume); /&amp;ast; assume not NULL &amp;ast;/
+&lt;/programlisting&gt;
+then the expression
+&lt;programlisting&gt;
+(g_file_has_prefix (volume_activation_root, mount_root) ||
+&lt;/programlisting&gt;
+will always be %TRUE.
+Activation roots are typically used in #GVolumeMonitor
+implementations to find the underlying mount to shadow, see
+g_mount_is_shadowed() for more details.
+g_object_unref() to free.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the activation root of @volume or %NULL. Use</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_drive" invoker="get_drive">
+        <doc xml:whitespace="preserve">Gets the drive for the @volume.
+The returned object should be unreffed with g_object_unref()
+when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GDrive or %NULL if @volume is not associated with a drive.</doc>
+          <type name="Drive" c:type="GDrive*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_icon" invoker="get_icon">
+        <doc xml:whitespace="preserve">Gets the icon for @volume.
+The returned object should be unreffed with g_object_unref()
+when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GIcon.</doc>
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_identifier" invoker="get_identifier">
+        <doc xml:whitespace="preserve">Gets the identifier of the given kind for @volume.
+See the &lt;link linkend="volume-identifier"&gt;introduction&lt;/link&gt;
+for more information about volume identifiers.
+requested identfier, or %NULL if the #GVolume
+doesn't have this kind of identifier</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated string containing the</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="kind" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the kind of identifier to return</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_mount" invoker="get_mount">
+        <doc xml:whitespace="preserve">Gets the mount for the @volume.
+The returned object should be unreffed with g_object_unref()
+when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GMount or %NULL if @volume isn't mounted.</doc>
+          <type name="Mount" c:type="GMount*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_name" invoker="get_name">
+        <doc xml:whitespace="preserve">Gets the name of @volume.
+be freed with g_free() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the name for the given @volume. The returned string should</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_uuid" invoker="get_uuid">
+        <doc xml:whitespace="preserve">Gets the UUID for the @volume. The reference is typically based on
+the file system UUID for the volume in question and should be
+considered an opaque string. Returns %NULL if there is no UUID
+available.
+The returned string should be freed with g_free()
+when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the UUID for @volume or %NULL if no UUID can be computed.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="mount_finish" invoker="mount_finish" throws="1">
+        <doc xml:whitespace="preserve">Finishes mounting a volume. If any errors occured during the operation,
+If the mount operation succeeded, g_volume_get_mount() on @volume
+is guaranteed to return the mount right after calling this
+function; there's no need to listen for the 'mount-added' signal on
+#GVolumeMonitor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, %FALSE if operation failed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="mount_fn" invoker="mount">
+        <doc xml:whitespace="preserve">Mounts a volume. This is an asynchronous operation, and is
+finished by calling g_volume_mount_finish() with the @volume
+and #GAsyncResult returned in the @callback.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the operation</doc>
+            <type name="MountMountFlags" c:type="GMountMountFlags"/>
+          </parameter>
+          <parameter name="mount_operation"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">user data that gets passed to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="should_automount" invoker="should_automount">
+        <doc xml:whitespace="preserve">Returns whether the volume should be automatically mounted.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the volume should be automatically mounted.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <method name="can_eject" c:identifier="g_volume_can_eject">
+        <doc xml:whitespace="preserve">Checks if a volume can be ejected.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @volume can be ejected. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="can_mount" c:identifier="g_volume_can_mount">
+        <doc xml:whitespace="preserve">Checks if a volume can be mounted.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @volume can be mounted. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="eject"
+              c:identifier="g_volume_eject"
+              deprecated="Use g_volume_eject_with_operation() instead."
+              deprecated-version="2.22">
+        <doc xml:whitespace="preserve">Ejects a volume. This is an asynchronous operation, and is
+finished by calling g_volume_eject_finish() with the @volume
+and #GAsyncResult returned in the @callback.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the unmount if required for eject</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data that gets passed to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject_finish"
+              c:identifier="g_volume_eject_finish"
+              deprecated="Use g_volume_eject_with_operation_finish() instead."
+              deprecated-version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes ejecting a volume. If any errors occured during the operation,</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, %FALSE if operation failed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject_with_operation"
+              c:identifier="g_volume_eject_with_operation"
+              version="2.22">
+        <doc xml:whitespace="preserve">Ejects a volume. This is an asynchronous operation, and is
+finished by calling g_volume_eject_with_operation_finish() with the @volume
+and #GAsyncResult data returned in the @callback.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the unmount if required for eject</doc>
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject_with_operation_finish"
+              c:identifier="g_volume_eject_with_operation_finish"
+              version="2.22"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes ejecting a volume. If any errors occurred during the operation,</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the volume was successfully ejected. %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="enumerate_identifiers"
+              c:identifier="g_volume_enumerate_identifiers">
+        <doc xml:whitespace="preserve">Gets the kinds of &lt;link linkend="volume-identifier"&gt;identifiers&lt;/link&gt;
+that @volume has. Use g_volume_get_identifer() to obtain
+the identifiers themselves.
+of strings containing kinds of identifiers. Use g_strfreev() to free.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a %NULL-terminated array</doc>
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_activation_root"
+              c:identifier="g_volume_get_activation_root"
+              version="2.18">
+        <doc xml:whitespace="preserve">Gets the activation root for a #GVolume if it is known ahead of
+mount time. Returns %NULL otherwise. If not %NULL and if @volume
+is mounted, then the result of g_mount_get_root() on the
+#GMount object obtained from g_volume_get_mount() will always
+either be equal or a prefix of what this function returns. In
+other words, in code
+&lt;programlisting&gt;
+GMount *mount;
+GFile *mount_root
+GFile *volume_activation_root;
+mount = g_volume_get_mount (volume); /&amp;ast; mounted, so never NULL &amp;ast;/
+mount_root = g_mount_get_root (mount);
+volume_activation_root = g_volume_get_activation_root(volume); /&amp;ast; assume not NULL &amp;ast;/
+&lt;/programlisting&gt;
+then the expression
+&lt;programlisting&gt;
+(g_file_has_prefix (volume_activation_root, mount_root) ||
+&lt;/programlisting&gt;
+will always be %TRUE.
+Activation roots are typically used in #GVolumeMonitor
+implementations to find the underlying mount to shadow, see
+g_mount_is_shadowed() for more details.
+g_object_unref() to free.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the activation root of @volume or %NULL. Use</doc>
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+      </method>
+      <method name="get_drive" c:identifier="g_volume_get_drive">
+        <doc xml:whitespace="preserve">Gets the drive for the @volume.
+The returned object should be unreffed with g_object_unref()
+when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GDrive or %NULL if @volume is not associated with a drive.</doc>
+          <type name="Drive" c:type="GDrive*"/>
+        </return-value>
+      </method>
+      <method name="get_icon" c:identifier="g_volume_get_icon">
+        <doc xml:whitespace="preserve">Gets the icon for @volume.
+The returned object should be unreffed with g_object_unref()
+when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GIcon.</doc>
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </method>
+      <method name="get_identifier" c:identifier="g_volume_get_identifier">
+        <doc xml:whitespace="preserve">Gets the identifier of the given kind for @volume.
+See the &lt;link linkend="volume-identifier"&gt;introduction&lt;/link&gt;
+for more information about volume identifiers.
+requested identfier, or %NULL if the #GVolume
+doesn't have this kind of identifier</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated string containing the</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="kind" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the kind of identifier to return</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_mount" c:identifier="g_volume_get_mount">
+        <doc xml:whitespace="preserve">Gets the mount for the @volume.
+The returned object should be unreffed with g_object_unref()
+when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GMount or %NULL if @volume isn't mounted.</doc>
+          <type name="Mount" c:type="GMount*"/>
+        </return-value>
+      </method>
+      <method name="get_name" c:identifier="g_volume_get_name">
+        <doc xml:whitespace="preserve">Gets the name of @volume.
+be freed with g_free() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the name for the given @volume. The returned string should</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_uuid" c:identifier="g_volume_get_uuid">
+        <doc xml:whitespace="preserve">Gets the UUID for the @volume. The reference is typically based on
+the file system UUID for the volume in question and should be
+considered an opaque string. Returns %NULL if there is no UUID
+available.
+The returned string should be freed with g_free()
+when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the UUID for @volume or %NULL if no UUID can be computed.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="mount" c:identifier="g_volume_mount">
+        <doc xml:whitespace="preserve">Mounts a volume. This is an asynchronous operation, and is
+finished by calling g_volume_mount_finish() with the @volume
+and #GAsyncResult returned in the @callback.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting the operation</doc>
+            <type name="MountMountFlags" c:type="GMountMountFlags"/>
+          </parameter>
+          <parameter name="mount_operation"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data that gets passed to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="mount_finish"
+              c:identifier="g_volume_mount_finish"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes mounting a volume. If any errors occured during the operation,
+If the mount operation succeeded, g_volume_get_mount() on @volume
+is guaranteed to return the mount right after calling this
+function; there's no need to listen for the 'mount-added' signal on
+#GVolumeMonitor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, %FALSE if operation failed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult</doc>
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="should_automount" c:identifier="g_volume_should_automount">
+        <doc xml:whitespace="preserve">Returns whether the volume should be automatically mounted.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the volume should be automatically mounted.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <glib:signal name="changed">
+        <doc xml:whitespace="preserve">Emitted when the volume has been changed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="removed">
+        <doc xml:whitespace="preserve">This signal is emitted when the #GVolume have been removed. If
+the recipient is holding references to the object they should
+release them so the object can be finalized.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </interface>
+    <record name="VolumeIface"
+            c:type="GVolumeIface"
+            glib:is-gtype-struct-for="Volume">
+      <doc xml:whitespace="preserve">Interface for implementing operations for mountable volumes.</doc>
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="changed">
+        <callback name="changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume" transfer-ownership="none">
+              <type name="Volume" c:type="GVolume*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="removed">
+        <callback name="removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume" transfer-ownership="none">
+              <type name="Volume" c:type="GVolume*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_name">
+        <callback name="get_name">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the name for the given @volume. The returned string should</doc>
+            <type name="utf8" c:type="char*"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume" transfer-ownership="none">
+              <type name="Volume" c:type="GVolume*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_icon">
+        <callback name="get_icon">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GIcon.</doc>
+            <type name="Icon" c:type="GIcon*"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume" transfer-ownership="none">
+              <type name="Volume" c:type="GVolume*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_uuid">
+        <callback name="get_uuid">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the UUID for @volume or %NULL if no UUID can be computed.</doc>
+            <type name="utf8" c:type="char*"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume" transfer-ownership="none">
+              <type name="Volume" c:type="GVolume*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_drive">
+        <callback name="get_drive">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GDrive or %NULL if @volume is not associated with a drive.</doc>
+            <type name="Drive" c:type="GDrive*"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume" transfer-ownership="none">
+              <type name="Volume" c:type="GVolume*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_mount">
+        <callback name="get_mount">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GMount or %NULL if @volume isn't mounted.</doc>
+            <type name="Mount" c:type="GMount*"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume" transfer-ownership="none">
+              <type name="Volume" c:type="GVolume*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_mount">
+        <callback name="can_mount">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @volume can be mounted. %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume" transfer-ownership="none">
+              <type name="Volume" c:type="GVolume*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_eject">
+        <callback name="can_eject">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @volume can be ejected. %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume" transfer-ownership="none">
+              <type name="Volume" c:type="GVolume*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="mount_fn">
+        <callback name="mount_fn">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume" transfer-ownership="none">
+              <type name="Volume" c:type="GVolume*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">flags affecting the operation</doc>
+              <type name="MountMountFlags" c:type="GMountMountFlags"/>
+            </parameter>
+            <parameter name="mount_operation"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">user data that gets passed to @callback</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="mount_finish">
+        <callback name="mount_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE, %FALSE if operation failed.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume" transfer-ownership="none">
+              <type name="Volume" c:type="GVolume*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject">
+        <callback name="eject">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume" transfer-ownership="none">
+              <type name="Volume" c:type="GVolume*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">flags affecting the unmount if required for eject</doc>
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="4">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <doc xml:whitespace="preserve">user data that gets passed to @callback</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_finish">
+        <callback name="eject_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE, %FALSE if operation failed.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume" transfer-ownership="none">
+              <type name="Volume" c:type="GVolume*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_identifier">
+        <callback name="get_identifier">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a newly allocated string containing the</doc>
+            <type name="utf8" c:type="char*"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume" transfer-ownership="none">
+              <type name="Volume" c:type="GVolume*"/>
+            </parameter>
+            <parameter name="kind" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the kind of identifier to return</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="enumerate_identifiers">
+        <callback name="enumerate_identifiers">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a %NULL-terminated array</doc>
+            <array c:type="char**">
+              <type name="utf8"/>
+            </array>
+          </return-value>
+          <parameters>
+            <parameter name="volume" transfer-ownership="none">
+              <type name="Volume" c:type="GVolume*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="should_automount">
+        <callback name="should_automount">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the volume should be automatically mounted.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume" transfer-ownership="none">
+              <type name="Volume" c:type="GVolume*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_activation_root">
+        <callback name="get_activation_root">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the activation root of @volume or %NULL. Use</doc>
+            <type name="File" c:type="GFile*"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume" transfer-ownership="none">
+              <type name="Volume" c:type="GVolume*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_with_operation">
+        <callback name="eject_with_operation">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume" transfer-ownership="none">
+              <type name="Volume" c:type="GVolume*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">flags affecting the unmount if required for eject</doc>
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GMountOperation or %NULL to avoid user interaction.</doc>
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="async"
+                       closure="5">
+              <doc xml:whitespace="preserve">a #GAsyncReadyCallback, or %NULL.</doc>
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_with_operation_finish">
+        <callback name="eject_with_operation_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the volume was successfully ejected. %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume" transfer-ownership="none">
+              <type name="Volume" c:type="GVolume*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GAsyncResult.</doc>
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="VolumeMonitor"
+           c:symbol-prefix="volume_monitor"
+           c:type="GVolumeMonitor"
+           parent="GObject.Object"
+           glib:type-name="GVolumeMonitor"
+           glib:get-type="g_volume_monitor_get_type"
+           glib:type-struct="VolumeMonitorClass">
+      <doc xml:whitespace="preserve">A Volume Monitor that watches for volume events.</doc>
+      <function name="adopt_orphan_mount"
+                c:identifier="g_volume_monitor_adopt_orphan_mount"
+                deprecated="Instead of using this function, #GVolumeMonitor"
+                deprecated-version="2.20">
+        <doc xml:whitespace="preserve">This function should be called by any #GVolumeMonitor
+implementation when a new #GMount object is created that is not
+associated with a #GVolume object. It must be called just before
+emitting the @mount_added signal.
+If the return value is not %NULL, the caller must associate the
+returned #GVolume object with the #GMount. This involves returning
+it in its g_mount_get_volume() implementation. The caller must
+also listen for the "removed" signal on the returned object
+and give up its reference when handling that signal
+Similary, if implementing g_volume_monitor_adopt_orphan_mount(),
+the implementor must take a reference to @mount and return it in
+its g_volume_get_mount() implemented. Also, the implementor must
+listen for the "unmounted" signal on @mount and give up its
+reference upon handling that signal.
+There are two main use cases for this function.
+One is when implementing a user space file system driver that reads
+blocks of a block device that is already represented by the native
+volume monitor (for example a CD Audio file system driver). Such
+a driver will generate its own #GMount object that needs to be
+assoicated with the #GVolume object that represents the volume.
+The other is for implementing a #GVolumeMonitor whose sole purpose
+is to return #GVolume objects representing entries in the users
+"favorite servers" list or similar.
+if no wants to adopt the #GMount.
+implementations should instead create shadow mounts with the URI of
+the mount they intend to adopt. See the proxy volume monitor in
+gvfs for an example of this. Also see g_mount_is_shadowed(),
+g_mount_shadow() and g_mount_unshadow() functions.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GVolume object that is the parent for @mount or %NULL</doc>
+          <type name="Volume" c:type="GVolume*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mount" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMount object to find a parent for</doc>
+            <type name="Mount" c:type="GMount*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get" c:identifier="g_volume_monitor_get">
+        <doc xml:whitespace="preserve">Gets the volume monitor used by gio.
+g_object_unref() when done with it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a reference to the #GVolumeMonitor used by gio. Call</doc>
+          <type name="VolumeMonitor" c:type="GVolumeMonitor*"/>
+        </return-value>
+      </function>
+      <virtual-method name="get_connected_drives"
+                      invoker="get_connected_drives">
+        <doc xml:whitespace="preserve">Gets a list of drives connected to the system.
+The returned list should be freed with g_list_free(), after
+its elements have been unreffed with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GList of connected #GDrive objects.</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Drive"/>
+          </type>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_mount_for_uuid" invoker="get_mount_for_uuid">
+        <doc xml:whitespace="preserve">Finds a #GMount object by its UUID (see g_mount_get_uuid())
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GMount or %NULL if no such mount is available.</doc>
+          <type name="Mount" c:type="GMount*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uuid" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the UUID to look for</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_mounts" invoker="get_mounts">
+        <doc xml:whitespace="preserve">Gets a list of the mounts on the system.
+The returned list should be freed with g_list_free(), after
+its elements have been unreffed with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GList of #GMount objects.</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Mount"/>
+          </type>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_volume_for_uuid" invoker="get_volume_for_uuid">
+        <doc xml:whitespace="preserve">Finds a #GVolume object by its UUID (see g_volume_get_uuid())
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GVolume or %NULL if no such volume is available.</doc>
+          <type name="Volume" c:type="GVolume*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uuid" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the UUID to look for</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_volumes" invoker="get_volumes">
+        <doc xml:whitespace="preserve">Gets a list of the volumes on the system.
+The returned list should be freed with g_list_free(), after
+its elements have been unreffed with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GList of #GVolume objects.</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Volume"/>
+          </type>
+        </return-value>
+      </virtual-method>
+      <method name="get_connected_drives"
+              c:identifier="g_volume_monitor_get_connected_drives">
+        <doc xml:whitespace="preserve">Gets a list of drives connected to the system.
+The returned list should be freed with g_list_free(), after
+its elements have been unreffed with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GList of connected #GDrive objects.</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Drive"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_mount_for_uuid"
+              c:identifier="g_volume_monitor_get_mount_for_uuid">
+        <doc xml:whitespace="preserve">Finds a #GMount object by its UUID (see g_mount_get_uuid())
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GMount or %NULL if no such mount is available.</doc>
+          <type name="Mount" c:type="GMount*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uuid" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the UUID to look for</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_mounts" c:identifier="g_volume_monitor_get_mounts">
+        <doc xml:whitespace="preserve">Gets a list of the mounts on the system.
+The returned list should be freed with g_list_free(), after
+its elements have been unreffed with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GList of #GMount objects.</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Mount"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_volume_for_uuid"
+              c:identifier="g_volume_monitor_get_volume_for_uuid">
+        <doc xml:whitespace="preserve">Finds a #GVolume object by its UUID (see g_volume_get_uuid())
+Free the returned object with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GVolume or %NULL if no such volume is available.</doc>
+          <type name="Volume" c:type="GVolume*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uuid" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the UUID to look for</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_volumes" c:identifier="g_volume_monitor_get_volumes">
+        <doc xml:whitespace="preserve">Gets a list of the volumes on the system.
+The returned list should be freed with g_list_free(), after
+its elements have been unreffed with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GList of #GVolume objects.</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Volume"/>
+          </type>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <glib:signal name="drive-changed">
+        <doc xml:whitespace="preserve">Emitted when a drive changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the drive that changed</doc>
+            <type name="Drive"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drive-connected">
+        <doc xml:whitespace="preserve">Emitted when a drive is connected to the system.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GDrive that was connected.</doc>
+            <type name="Drive"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drive-disconnected">
+        <doc xml:whitespace="preserve">Emitted when a drive is disconnected from the system.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GDrive that was disconnected.</doc>
+            <type name="Drive"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drive-eject-button" version="2.18">
+        <doc xml:whitespace="preserve">Emitted when the eject button is pressed on @drive.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the drive where the eject button was pressed</doc>
+            <type name="Drive"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drive-stop-button" version="2.22">
+        <doc xml:whitespace="preserve">Emitted when the stop button is pressed on @drive.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the drive where the stop button was pressed</doc>
+            <type name="Drive"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="mount-added">
+        <doc xml:whitespace="preserve">Emitted when a mount is added.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMount that was added.</doc>
+            <type name="Mount"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="mount-changed">
+        <doc xml:whitespace="preserve">Emitted when a mount changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMount that changed.</doc>
+            <type name="Mount"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="mount-pre-unmount">
+        <doc xml:whitespace="preserve">Emitted when a mount is about to be removed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMount that is being unmounted.</doc>
+            <type name="Mount"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="mount-removed">
+        <doc xml:whitespace="preserve">Emitted when a mount is removed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMount that was removed.</doc>
+            <type name="Mount"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="volume-added">
+        <doc xml:whitespace="preserve">Emitted when a mountable volume is added to the system.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GVolume that was added.</doc>
+            <type name="Volume"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="volume-changed">
+        <doc xml:whitespace="preserve">Emitted when mountable volume is changed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GVolume that changed.</doc>
+            <type name="Volume"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="volume-removed">
+        <doc xml:whitespace="preserve">Emitted when a mountable volume is removed from the system.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GVolume that was removed.</doc>
+            <type name="Volume"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="VolumeMonitorClass"
+            c:type="GVolumeMonitorClass"
+            glib:is-gtype-struct-for="VolumeMonitor">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="volume_added">
+        <callback name="volume_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume_monitor" transfer-ownership="none">
+              <type name="VolumeMonitor" c:type="GVolumeMonitor*"/>
+            </parameter>
+            <parameter name="volume" transfer-ownership="none">
+              <type name="Volume" c:type="GVolume*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="volume_removed">
+        <callback name="volume_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume_monitor" transfer-ownership="none">
+              <type name="VolumeMonitor" c:type="GVolumeMonitor*"/>
+            </parameter>
+            <parameter name="volume" transfer-ownership="none">
+              <type name="Volume" c:type="GVolume*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="volume_changed">
+        <callback name="volume_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume_monitor" transfer-ownership="none">
+              <type name="VolumeMonitor" c:type="GVolumeMonitor*"/>
+            </parameter>
+            <parameter name="volume" transfer-ownership="none">
+              <type name="Volume" c:type="GVolume*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="mount_added">
+        <callback name="mount_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume_monitor" transfer-ownership="none">
+              <type name="VolumeMonitor" c:type="GVolumeMonitor*"/>
+            </parameter>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="mount_removed">
+        <callback name="mount_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume_monitor" transfer-ownership="none">
+              <type name="VolumeMonitor" c:type="GVolumeMonitor*"/>
+            </parameter>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="mount_pre_unmount">
+        <callback name="mount_pre_unmount">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume_monitor" transfer-ownership="none">
+              <type name="VolumeMonitor" c:type="GVolumeMonitor*"/>
+            </parameter>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="mount_changed">
+        <callback name="mount_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume_monitor" transfer-ownership="none">
+              <type name="VolumeMonitor" c:type="GVolumeMonitor*"/>
+            </parameter>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drive_connected">
+        <callback name="drive_connected">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume_monitor" transfer-ownership="none">
+              <type name="VolumeMonitor" c:type="GVolumeMonitor*"/>
+            </parameter>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drive_disconnected">
+        <callback name="drive_disconnected">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume_monitor" transfer-ownership="none">
+              <type name="VolumeMonitor" c:type="GVolumeMonitor*"/>
+            </parameter>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drive_changed">
+        <callback name="drive_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume_monitor" transfer-ownership="none">
+              <type name="VolumeMonitor" c:type="GVolumeMonitor*"/>
+            </parameter>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_supported">
+        <callback name="is_supported">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="get_connected_drives">
+        <callback name="get_connected_drives">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GList of connected #GDrive objects.</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="Drive"/>
+            </type>
+          </return-value>
+          <parameters>
+            <parameter name="volume_monitor" transfer-ownership="none">
+              <type name="VolumeMonitor" c:type="GVolumeMonitor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_volumes">
+        <callback name="get_volumes">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GList of #GVolume objects.</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="Volume"/>
+            </type>
+          </return-value>
+          <parameters>
+            <parameter name="volume_monitor" transfer-ownership="none">
+              <type name="VolumeMonitor" c:type="GVolumeMonitor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_mounts">
+        <callback name="get_mounts">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GList of #GMount objects.</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="Mount"/>
+            </type>
+          </return-value>
+          <parameters>
+            <parameter name="volume_monitor" transfer-ownership="none">
+              <type name="VolumeMonitor" c:type="GVolumeMonitor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_volume_for_uuid">
+        <callback name="get_volume_for_uuid">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GVolume or %NULL if no such volume is available.</doc>
+            <type name="Volume" c:type="GVolume*"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume_monitor" transfer-ownership="none">
+              <type name="VolumeMonitor" c:type="GVolumeMonitor*"/>
+            </parameter>
+            <parameter name="uuid" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the UUID to look for</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_mount_for_uuid">
+        <callback name="get_mount_for_uuid">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GMount or %NULL if no such mount is available.</doc>
+            <type name="Mount" c:type="GMount*"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume_monitor" transfer-ownership="none">
+              <type name="VolumeMonitor" c:type="GVolumeMonitor*"/>
+            </parameter>
+            <parameter name="uuid" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the UUID to look for</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="adopt_orphan_mount" introspectable="0">
+        <callback name="adopt_orphan_mount" introspectable="0">
+          <return-value>
+            <type name="Volume" c:type="GVolume*"/>
+          </return-value>
+          <parameters>
+            <parameter name="mount" transfer-ownership="none">
+              <type name="Mount" c:type="GMount*"/>
+            </parameter>
+            <parameter name="volume_monitor" transfer-ownership="none">
+              <type name="VolumeMonitor" c:type="GVolumeMonitor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drive_eject_button">
+        <callback name="drive_eject_button">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume_monitor" transfer-ownership="none">
+              <type name="VolumeMonitor" c:type="GVolumeMonitor*"/>
+            </parameter>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drive_stop_button">
+        <callback name="drive_stop_button">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="volume_monitor" transfer-ownership="none">
+              <type name="VolumeMonitor" c:type="GVolumeMonitor*"/>
+            </parameter>
+            <parameter name="drive" transfer-ownership="none">
+              <type name="Drive" c:type="GDrive*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_g_reserved1" introspectable="0">
+        <callback name="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved2" introspectable="0">
+        <callback name="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved3" introspectable="0">
+        <callback name="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved4" introspectable="0">
+        <callback name="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved5" introspectable="0">
+        <callback name="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_g_reserved6" introspectable="0">
+        <callback name="_g_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="ZlibCompressor"
+           c:symbol-prefix="zlib_compressor"
+           c:type="GZlibCompressor"
+           parent="GObject.Object"
+           glib:type-name="GZlibCompressor"
+           glib:get-type="g_zlib_compressor_get_type"
+           glib:type-struct="ZlibCompressorClass">
+      <doc xml:whitespace="preserve">Zlib decompression</doc>
+      <implements name="Converter"/>
+      <constructor name="new"
+                   c:identifier="g_zlib_compressor_new"
+                   version="2.24">
+        <doc xml:whitespace="preserve">Creates a new #GZlibCompressor.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GZlibCompressor</doc>
+          <type name="ZlibCompressor" c:type="GZlibCompressor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The format to use for the compressed data</doc>
+            <type name="ZlibCompressorFormat" c:type="GZlibCompressorFormat"/>
+          </parameter>
+          <parameter name="level" transfer-ownership="none">
+            <doc xml:whitespace="preserve">compression level (0-9), -1 for default</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_file_info"
+              c:identifier="g_zlib_compressor_get_file_info"
+              version="2.26">
+        <doc xml:whitespace="preserve">Returns the #GZlibCompressor:file-info property.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GFileInfo, or %NULL</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+      </method>
+      <method name="set_file_info"
+              c:identifier="g_zlib_compressor_set_file_info"
+              version="2.26">
+        <doc xml:whitespace="preserve">Sets @file_info in @compressor. If non-%NULL, and @compressor's
+#GZlibCompressor:format property is %G_ZLIB_COMPRESSOR_FORMAT_GZIP,
+it will be used to set the file name and modification time in
+the GZIP header of the compressed data.
+progress; it may only be called immediately after creation of @compressor,
+or after resetting it with g_converter_reset().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="file_info" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GFileInfo</doc>
+            <type name="FileInfo" c:type="GFileInfo*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="file-info"
+                version="2.26"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If set to a non-%NULL #GFileInfo object, and #GZlibCompressor:format is
+%G_ZLIB_COMPRESSOR_FORMAT_GZIP, the compressor will write the file name
+and modification time from the file info to the the GZIP header.</doc>
+        <type name="FileInfo"/>
+      </property>
+      <property name="format"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="ZlibCompressorFormat"/>
+      </property>
+      <property name="level"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+    </class>
+    <record name="ZlibCompressorClass"
+            c:type="GZlibCompressorClass"
+            glib:is-gtype-struct-for="ZlibCompressor">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <enumeration name="ZlibCompressorFormat"
+                 version="2.24"
+                 glib:type-name="GZlibCompressorFormat"
+                 glib:get-type="g_zlib_compressor_format_get_type"
+                 c:type="GZlibCompressorFormat">
+      <doc xml:whitespace="preserve">Used to select the type of data format to use for #GZlibDecompressor
+and #GZlibCompressor.</doc>
+      <member name="zlib"
+              value="0"
+              c:identifier="G_ZLIB_COMPRESSOR_FORMAT_ZLIB"
+              glib:nick="zlib"/>
+      <member name="gzip"
+              value="1"
+              c:identifier="G_ZLIB_COMPRESSOR_FORMAT_GZIP"
+              glib:nick="gzip"/>
+      <member name="raw"
+              value="2"
+              c:identifier="G_ZLIB_COMPRESSOR_FORMAT_RAW"
+              glib:nick="raw"/>
+    </enumeration>
+    <class name="ZlibDecompressor"
+           c:symbol-prefix="zlib_decompressor"
+           c:type="GZlibDecompressor"
+           parent="GObject.Object"
+           glib:type-name="GZlibDecompressor"
+           glib:get-type="g_zlib_decompressor_get_type"
+           glib:type-struct="ZlibDecompressorClass">
+      <doc xml:whitespace="preserve">Zlib decompression</doc>
+      <implements name="Converter"/>
+      <constructor name="new"
+                   c:identifier="g_zlib_decompressor_new"
+                   version="2.24">
+        <doc xml:whitespace="preserve">Creates a new #GZlibDecompressor.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GZlibDecompressor</doc>
+          <type name="ZlibDecompressor" c:type="GZlibDecompressor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The format to use for the compressed data</doc>
+            <type name="ZlibCompressorFormat" c:type="GZlibCompressorFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_file_info"
+              c:identifier="g_zlib_decompressor_get_file_info"
+              version="2.26">
+        <doc xml:whitespace="preserve">Retrieves the #GFileInfo constructed from the GZIP header data
+of compressed data processed by @compressor, or %NULL if @decompressor's
+#GZlibDecompressor:format property is not %G_ZLIB_COMPRESSOR_FORMAT_GZIP,
+or the header data was not fully processed yet, or it not present in the
+data stream at all.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GFileInfo, or %NULL</doc>
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+      </method>
+      <property name="file-info" version="2.26" transfer-ownership="none">
+        <doc xml:whitespace="preserve">A #GFileInfo containing the information found in the GZIP header
+of the data stream processed, or %NULL if the header was not yet
+fully processed, is not present at all, or the compressor's
+#GZlibDecompressor:format property is not %G_ZLIB_COMPRESSOR_FORMAT_GZIP.</doc>
+        <type name="FileInfo"/>
+      </property>
+      <property name="format"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="ZlibCompressorFormat"/>
+      </property>
+    </class>
+    <record name="ZlibDecompressorClass"
+            c:type="GZlibDecompressorClass"
+            glib:is-gtype-struct-for="ZlibDecompressor">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <function name="app_info_create_from_commandline"
+              c:identifier="g_app_info_create_from_commandline"
+              throws="1">
+      <doc xml:whitespace="preserve">Creates a new #GAppInfo from the given information.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">new #GAppInfo for given command.</doc>
+        <type name="AppInfo" c:type="GAppInfo*"/>
+      </return-value>
+      <parameters>
+        <parameter name="commandline" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the commandline to use</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="application_name"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">the application name, or %NULL to use @commandline</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags that can specify details of the created #GAppInfo</doc>
+          <type name="AppInfoCreateFlags" c:type="GAppInfoCreateFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="app_info_get_all" c:identifier="g_app_info_get_all">
+      <doc xml:whitespace="preserve">Gets a list of all of the applications currently registered
+on this system.
+For desktop files, this includes applications that have
+&lt;literal&gt;NoDisplay=true&lt;/literal&gt; set or are excluded from
+display by means of &lt;literal&gt;OnlyShowIn&lt;/literal&gt; or
+&lt;literal&gt;NotShowIn&lt;/literal&gt;. See g_app_info_should_show().
+The returned list does not include applications which have
+the &lt;literal&gt;Hidden&lt;/literal&gt; key set.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a newly allocated #GList of references to #GAppInfo&lt;!----&gt;s.</doc>
+        <type name="GLib.List" c:type="GList*">
+          <type name="AppInfo"/>
+        </type>
+      </return-value>
+    </function>
+    <function name="app_info_get_all_for_type"
+              c:identifier="g_app_info_get_all_for_type">
+      <doc xml:whitespace="preserve">Gets a list of all #GAppInfo&lt;!-- --&gt;s for a given content type.
+or %NULL on error.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">#GList of #GAppInfo&lt;!-- --&gt;s for given @content_type</doc>
+        <type name="GLib.List" c:type="GList*">
+          <type name="AppInfo"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="content_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the content type to find a #GAppInfo for</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="app_info_get_default_for_type"
+              c:identifier="g_app_info_get_default_for_type"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Gets the #GAppInfo that corresponds to a given content type.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">#GAppInfo for given @content_type or %NULL on error.</doc>
+        <type name="AppInfo" c:type="GAppInfo*"/>
+      </return-value>
+      <parameters>
+        <parameter name="content_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the content type to find a #GAppInfo for</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="must_support_uris" transfer-ownership="none">
+          <doc xml:whitespace="preserve">if %TRUE, the #GAppInfo is expected to support URIs</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="app_info_get_default_for_uri_scheme"
+              c:identifier="g_app_info_get_default_for_uri_scheme"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Gets the default application for launching applications
+using this URI scheme. A URI scheme is the initial part
+of the URI, up to but not including the ':', e.g. "http",
+"ftp" or "sip".</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">#GAppInfo for given @uri_scheme or %NULL on error.</doc>
+        <type name="AppInfo" c:type="GAppInfo*"/>
+      </return-value>
+      <parameters>
+        <parameter name="uri_scheme" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing a URI scheme.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="app_info_launch_default_for_uri"
+              c:identifier="g_app_info_launch_default_for_uri"
+              throws="1">
+      <doc xml:whitespace="preserve">Utility function that launches the default application
+registered to handle the specified uri. Synchronous I/O
+is done on the uri to detect the type of the file if
+required.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="uri" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the uri to show</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="launch_context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an optional #GAppLaunchContext.</doc>
+          <type name="AppLaunchContext" c:type="GAppLaunchContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="app_info_reset_type_associations"
+              c:identifier="g_app_info_reset_type_associations"
+              version="2.20">
+      <doc xml:whitespace="preserve">Removes all changes to the type associations done by
+g_app_info_set_as_default_for_type(),
+g_app_info_set_as_default_for_extension(),
+g_app_info_add_supports_type() or g_app_info_remove_supports_type().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="content_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a content type</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_initable_new_async"
+              c:identifier="g_async_initable_new_async"
+              version="2.22"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Helper function for constructing #GAsyncInitiable object. This is
+similar to g_object_new() but also initializes the object asynchronously.
+When the initialization is finished, @callback will be called. You can
+then call g_async_initable_new_finish() to get the new object and check
+for any errors.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GType supporting #GAsyncInitable.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="io_priority" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the operation.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="cancellable" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+          <type name="Cancellable" c:type="GCancellable*"/>
+        </parameter>
+        <parameter name="callback"
+                   transfer-ownership="none"
+                   scope="async"
+                   closure="4">
+          <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the initialization is finished</doc>
+          <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="first_property_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the first property, or %NULL if no properties</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_initable_new_valist_async"
+              c:identifier="g_async_initable_new_valist_async"
+              version="2.22"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Helper function for constructing #GAsyncInitiable object. This is
+similar to g_object_new_valist() but also initializes the object
+asynchronously.
+When the initialization is finished, @callback will be called. You can
+then call g_async_initable_new_finish() to get the new object and check
+for any errors.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GType supporting #GAsyncInitable.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="first_property_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the first property, followed by the value, and other property value pairs, and ended by %NULL.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="var_args" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The var args list generated from @first_property_name.</doc>
+          <type name="va_list" c:type="va_list"/>
+        </parameter>
+        <parameter name="io_priority" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the operation.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="cancellable" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+          <type name="Cancellable" c:type="GCancellable*"/>
+        </parameter>
+        <parameter name="callback"
+                   transfer-ownership="none"
+                   scope="async"
+                   closure="6">
+          <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the initialization is finished</doc>
+          <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_initable_newv_async"
+              c:identifier="g_async_initable_newv_async"
+              version="2.22">
+      <doc xml:whitespace="preserve">Helper function for constructing #GAsyncInitiable object. This is
+similar to g_object_newv() but also initializes the object asynchronously.
+When the initialization is finished, @callback will be called. You can
+then call g_async_initable_new_finish() to get the new object and check
+for any errors.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GType supporting #GAsyncInitable.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_parameters" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of parameters in @parameters</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="parameters" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the parameters to use to construct the object</doc>
+          <type name="GObject.Parameter" c:type="GParameter*"/>
+        </parameter>
+        <parameter name="io_priority" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the &lt;link linkend="io-priority"&gt;I/O priority&lt;/link&gt; of the operation.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="cancellable" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+          <type name="Cancellable" c:type="GCancellable*"/>
+        </parameter>
+        <parameter name="callback"
+                   transfer-ownership="none"
+                   scope="async"
+                   closure="6">
+          <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the initialization is finished</doc>
+          <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the data to pass to callback function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bus_get" c:identifier="g_bus_get" version="2.26">
+      <doc xml:whitespace="preserve">Asynchronously connects to the message bus specified by @bus_type.
+When the operation is finished, @callback will be invoked. You can
+then call g_bus_get_finish() to get the result of the operation.
+This is a asynchronous failable function. See g_bus_get_sync() for
+the synchronous version.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="bus_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GBusType.</doc>
+          <type name="BusType" c:type="GBusType"/>
+        </parameter>
+        <parameter name="cancellable" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+          <type name="Cancellable" c:type="GCancellable*"/>
+        </parameter>
+        <parameter name="callback"
+                   transfer-ownership="none"
+                   scope="async"
+                   closure="3">
+          <doc xml:whitespace="preserve">A #GAsyncReadyCallback to call when the request is satisfied.</doc>
+          <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The data to pass to @callback.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bus_get_finish"
+              c:identifier="g_bus_get_finish"
+              version="2.26"
+              throws="1">
+      <doc xml:whitespace="preserve">Finishes an operation started with g_bus_get().
+The returned object is a singleton, that is, shared with other
+callers of g_bus_get() and g_bus_get_sync() for @bus_type. In the
+event that you need a private message bus connection, use
+g_dbus_address_get_for_bus() and
+g_dbus_connection_new_for_address().
+Note that the returned #GDBusConnection object will (usually) have
+the #GDBusConnection:exit-on-close property set to %TRUE.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">A #GDBusConnection or %NULL if @error is set. Free with g_object_unref().</doc>
+        <type name="DBusConnection" c:type="GDBusConnection*"/>
+      </return-value>
+      <parameters>
+        <parameter name="res" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GAsyncResult obtained from the #GAsyncReadyCallback passed to g_bus_get().</doc>
+          <type name="AsyncResult" c:type="GAsyncResult*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bus_get_sync"
+              c:identifier="g_bus_get_sync"
+              version="2.26"
+              throws="1">
+      <doc xml:whitespace="preserve">Synchronously connects to the message bus specified by @bus_type.
+Note that the returned object may shared with other callers,
+e.g. if two separate parts of a process calls this function with
+the same @bus_type, they will share the same object.
+This is a synchronous failable function. See g_bus_get() and
+g_bus_get_finish() for the asynchronous version.
+The returned object is a singleton, that is, shared with other
+callers of g_bus_get() and g_bus_get_sync() for @bus_type. In the
+event that you need a private message bus connection, use
+g_dbus_address_get_for_bus_sync() and
+g_dbus_connection_new_for_address().
+Note that the returned #GDBusConnection object will (usually) have
+the #GDBusConnection:exit-on-close property set to %TRUE.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">A #GDBusConnection or %NULL if @error is set. Free with g_object_unref().</doc>
+        <type name="DBusConnection" c:type="GDBusConnection*"/>
+      </return-value>
+      <parameters>
+        <parameter name="bus_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GBusType.</doc>
+          <type name="BusType" c:type="GBusType"/>
+        </parameter>
+        <parameter name="cancellable" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+          <type name="Cancellable" c:type="GCancellable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bus_own_name"
+              c:identifier="g_bus_own_name"
+              shadowed-by="bus_own_name_with_closures"
+              version="2.26"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Starts acquiring @name on the bus specified by @bus_type and calls
+acquired respectively lost. Callbacks will be invoked in the &lt;link
+linkend="g-main-context-push-thread-default"&gt;thread-default main
+loop&lt;/link&gt; of the thread you are calling this function from.
+You are guaranteed that one of the @name_acquired_handler and @name_lost_handler
+callbacks will be invoked after calling this function - there are three
+possible cases:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+When you are done owning the name, just call g_bus_unown_name()
+with the owner id this function returns.
+If the name is acquired or lost (for example another application
+could acquire the name if you allow replacement or the application
+currently owning the name exits), the handlers are also invoked. If the
+#GDBusConnection that is used for attempting to own the name
+closes, then @name_lost_handler is invoked since it is no
+longer possible for other processes to access the process.
+You cannot use g_bus_own_name() several times for the same name (unless
+interleaved with calls to g_bus_unown_name()) - only the first call
+will work.
+Another guarantee is that invocations of @name_acquired_handler
+and @name_lost_handler are guaranteed to alternate; that
+is, if @name_acquired_handler is invoked then you are
+guaranteed that the next time one of the handlers is invoked, it
+will be @name_lost_handler. The reverse is also true.
+If you plan on exporting objects (using e.g.
+g_dbus_connection_register_object()), note that it is generally too late
+to export the objects in @name_acquired_handler. Instead, you can do this
+in @bus_acquired_handler since you are guaranteed that this will run
+before @name is requested from the bus.
+This behavior makes it very simple to write applications that wants
+to own names and export objects, see &lt;xref linkend="gdbus-owning-names"/&gt;.
+Simply register objects to be exported in @bus_acquired_handler and
+unregister the objects (if any) in @name_lost_handler.
+g_bus_unown_name() to stop owning the name.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">An identifier (never 0) that an be used with</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="bus_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The type of bus to own a name on.</doc>
+          <type name="BusType" c:type="GBusType"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The well-known name to own.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A set of flags from the #GBusNameOwnerFlags enumeration.</doc>
+          <type name="BusNameOwnerFlags" c:type="GBusNameOwnerFlags"/>
+        </parameter>
+        <parameter name="bus_acquired_handler" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Handler to invoke when connected to the bus of type @bus_type or %NULL.</doc>
+          <type name="BusAcquiredCallback" c:type="GBusAcquiredCallback"/>
+        </parameter>
+        <parameter name="name_acquired_handler" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Handler to invoke when @name is acquired or %NULL.</doc>
+          <type name="BusNameAcquiredCallback"
+                c:type="GBusNameAcquiredCallback"/>
+        </parameter>
+        <parameter name="name_lost_handler"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="6"
+                   destroy="7">
+          <doc xml:whitespace="preserve">Handler to invoke when @name is lost or %NULL.</doc>
+          <type name="BusNameLostCallback" c:type="GBusNameLostCallback"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">User data to pass to handlers.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="user_data_free_func"
+                   transfer-ownership="none"
+                   scope="async">
+          <doc xml:whitespace="preserve">Function for freeing @user_data or %NULL.</doc>
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bus_own_name_on_connection"
+              c:identifier="g_bus_own_name_on_connection"
+              shadowed-by="bus_own_name_on_connection_with_closures"
+              version="2.26"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Like g_bus_own_name() but takes a #GDBusConnection instead of a
+#GBusType.
+g_bus_unown_name() to stop owning the name.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">An identifier (never 0) that an be used with</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="connection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GDBusConnection.</doc>
+          <type name="DBusConnection" c:type="GDBusConnection*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The well-known name to own.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A set of flags from the #GBusNameOwnerFlags enumeration.</doc>
+          <type name="BusNameOwnerFlags" c:type="GBusNameOwnerFlags"/>
+        </parameter>
+        <parameter name="name_acquired_handler" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Handler to invoke when @name is acquired or %NULL.</doc>
+          <type name="BusNameAcquiredCallback"
+                c:type="GBusNameAcquiredCallback"/>
+        </parameter>
+        <parameter name="name_lost_handler"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="5"
+                   destroy="6">
+          <doc xml:whitespace="preserve">Handler to invoke when @name is lost or %NULL.</doc>
+          <type name="BusNameLostCallback" c:type="GBusNameLostCallback"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">User data to pass to handlers.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="user_data_free_func"
+                   transfer-ownership="none"
+                   scope="async">
+          <doc xml:whitespace="preserve">Function for freeing @user_data or %NULL.</doc>
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bus_own_name_on_connection_with_closures"
+              c:identifier="g_bus_own_name_on_connection_with_closures"
+              shadows="bus_own_name_on_connection"
+              version="2.26">
+      <doc xml:whitespace="preserve">Version of g_bus_own_name_on_connection() using closures instead of callbacks for
+easier binding in other languages.
+g_bus_unown_name() to stop owning the name.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">An identifier (never 0) that an be used with</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="connection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GDBusConnection.</doc>
+          <type name="DBusConnection" c:type="GDBusConnection*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The well-known name to own.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A set of flags from the #GBusNameOwnerFlags enumeration.</doc>
+          <type name="BusNameOwnerFlags" c:type="GBusNameOwnerFlags"/>
+        </parameter>
+        <parameter name="name_acquired_closure"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">#GClosure to invoke when @name is acquired or %NULL.</doc>
+          <type name="GObject.Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="name_lost_closure"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">#GClosure to invoke when @name is lost or %NULL.</doc>
+          <type name="GObject.Closure" c:type="GClosure*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bus_own_name_with_closures"
+              c:identifier="g_bus_own_name_with_closures"
+              shadows="bus_own_name"
+              version="2.26">
+      <doc xml:whitespace="preserve">Version of g_bus_own_name() using closures instead of callbacks for
+easier binding in other languages.
+g_bus_unown_name() to stop owning the name.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">An identifier (never 0) that an be used with</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="bus_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The type of bus to own a name on.</doc>
+          <type name="BusType" c:type="GBusType"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The well-known name to own.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A set of flags from the #GBusNameOwnerFlags enumeration.</doc>
+          <type name="BusNameOwnerFlags" c:type="GBusNameOwnerFlags"/>
+        </parameter>
+        <parameter name="bus_acquired_closure"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">#GClosure to invoke when connected to the bus of type @bus_type or %NULL.</doc>
+          <type name="GObject.Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="name_acquired_closure"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">#GClosure to invoke when @name is acquired or %NULL.</doc>
+          <type name="GObject.Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="name_lost_closure"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">#GClosure to invoke when @name is lost or %NULL.</doc>
+          <type name="GObject.Closure" c:type="GClosure*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bus_unown_name"
+              c:identifier="g_bus_unown_name"
+              version="2.26">
+      <doc xml:whitespace="preserve">Stops owning a name.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="owner_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An identifier obtained from g_bus_own_name()</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bus_unwatch_name"
+              c:identifier="g_bus_unwatch_name"
+              version="2.26">
+      <doc xml:whitespace="preserve">Stops watching a name.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="watcher_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An identifier obtained from g_bus_watch_name()</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bus_watch_name"
+              c:identifier="g_bus_watch_name"
+              shadowed-by="bus_watch_name_with_closures"
+              version="2.26"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Starts watching @name on the bus specified by @bus_type and calls
+known to have a owner respectively known to lose its
+owner. Callbacks will be invoked in the &lt;link
+linkend="g-main-context-push-thread-default"&gt;thread-default main
+loop&lt;/link&gt; of the thread you are calling this function from.
+You are guaranteed that one of the handlers will be invoked after
+calling this function. When you are done watching the name, just
+call g_bus_unwatch_name() with the watcher id this function
+returns.
+If the name vanishes or appears (for example the application owning
+the name could restart), the handlers are also invoked. If the
+#GDBusConnection that is used for watching the name disconnects, then
+possible to access the name.
+Another guarantee is that invocations of @name_appeared_handler
+and @name_vanished_handler are guaranteed to alternate; that
+is, if @name_appeared_handler is invoked then you are
+guaranteed that the next time one of the handlers is invoked, it
+will be @name_vanished_handler. The reverse is also true.
+This behavior makes it very simple to write applications that wants
+to take action when a certain name exists, see &lt;xref
+linkend="gdbus-watching-names"/&gt;. Basically, the application
+should create object proxies in @name_appeared_handler and destroy
+them again (if any) in @name_vanished_handler.
+g_bus_unwatch_name() to stop watching the name.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">An identifier (never 0) that an be used with</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="bus_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The type of bus to watch a name on.</doc>
+          <type name="BusType" c:type="GBusType"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name (well-known or unique) to watch.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Flags from the #GBusNameWatcherFlags enumeration.</doc>
+          <type name="BusNameWatcherFlags" c:type="GBusNameWatcherFlags"/>
+        </parameter>
+        <parameter name="name_appeared_handler" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Handler to invoke when @name is known to exist or %NULL.</doc>
+          <type name="BusNameAppearedCallback"
+                c:type="GBusNameAppearedCallback"/>
+        </parameter>
+        <parameter name="name_vanished_handler"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="5"
+                   destroy="6">
+          <doc xml:whitespace="preserve">Handler to invoke when @name is known to not exist or %NULL.</doc>
+          <type name="BusNameVanishedCallback"
+                c:type="GBusNameVanishedCallback"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">User data to pass to handlers.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="user_data_free_func"
+                   transfer-ownership="none"
+                   scope="async">
+          <doc xml:whitespace="preserve">Function for freeing @user_data or %NULL.</doc>
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bus_watch_name_on_connection"
+              c:identifier="g_bus_watch_name_on_connection"
+              shadowed-by="bus_watch_name_on_connection_with_closures"
+              version="2.26"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Like g_bus_watch_name() but takes a #GDBusConnection instead of a
+#GBusType.
+g_bus_unwatch_name() to stop watching the name.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">An identifier (never 0) that an be used with</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="connection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GDBusConnection.</doc>
+          <type name="DBusConnection" c:type="GDBusConnection*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name (well-known or unique) to watch.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Flags from the #GBusNameWatcherFlags enumeration.</doc>
+          <type name="BusNameWatcherFlags" c:type="GBusNameWatcherFlags"/>
+        </parameter>
+        <parameter name="name_appeared_handler" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Handler to invoke when @name is known to exist or %NULL.</doc>
+          <type name="BusNameAppearedCallback"
+                c:type="GBusNameAppearedCallback"/>
+        </parameter>
+        <parameter name="name_vanished_handler"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="5"
+                   destroy="6">
+          <doc xml:whitespace="preserve">Handler to invoke when @name is known to not exist or %NULL.</doc>
+          <type name="BusNameVanishedCallback"
+                c:type="GBusNameVanishedCallback"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">User data to pass to handlers.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="user_data_free_func"
+                   transfer-ownership="none"
+                   scope="async">
+          <doc xml:whitespace="preserve">Function for freeing @user_data or %NULL.</doc>
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bus_watch_name_on_connection_with_closures"
+              c:identifier="g_bus_watch_name_on_connection_with_closures"
+              shadows="bus_watch_name_on_connection"
+              version="2.26">
+      <doc xml:whitespace="preserve">Version of g_bus_watch_name_on_connection() using closures instead of callbacks for
+easier binding in other languages.
+g_bus_unwatch_name() to stop watching the name.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">An identifier (never 0) that an be used with</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="connection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GDBusConnection.</doc>
+          <type name="DBusConnection" c:type="GDBusConnection*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name (well-known or unique) to watch.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Flags from the #GBusNameWatcherFlags enumeration.</doc>
+          <type name="BusNameWatcherFlags" c:type="GBusNameWatcherFlags"/>
+        </parameter>
+        <parameter name="name_appeared_closure"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">#GClosure to invoke when @name is known to exist or %NULL.</doc>
+          <type name="GObject.Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="name_vanished_closure"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">#GClosure to invoke when @name is known to not exist or %NULL.</doc>
+          <type name="GObject.Closure" c:type="GClosure*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bus_watch_name_with_closures"
+              c:identifier="g_bus_watch_name_with_closures"
+              shadows="bus_watch_name"
+              version="2.26">
+      <doc xml:whitespace="preserve">Version of g_bus_watch_name() using closures instead of callbacks for
+easier binding in other languages.
+g_bus_unwatch_name() to stop watching the name.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">An identifier (never 0) that an be used with</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="bus_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The type of bus to watch a name on.</doc>
+          <type name="BusType" c:type="GBusType"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name (well-known or unique) to watch.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Flags from the #GBusNameWatcherFlags enumeration.</doc>
+          <type name="BusNameWatcherFlags" c:type="GBusNameWatcherFlags"/>
+        </parameter>
+        <parameter name="name_appeared_closure"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">#GClosure to invoke when @name is known to exist or %NULL.</doc>
+          <type name="GObject.Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="name_vanished_closure"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">#GClosure to invoke when @name is known to not exist or %NULL.</doc>
+          <type name="GObject.Closure" c:type="GClosure*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="content_type_can_be_executable"
+              c:identifier="g_content_type_can_be_executable">
+      <doc xml:whitespace="preserve">Checks if a content type can be executable. Note that for instance
+things like text files can be executables (i.e. scripts and batch files).
+can be executable, %FALSE otherwise.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the file type corresponds to a type that</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a content type string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="content_type_equals" c:identifier="g_content_type_equals">
+      <doc xml:whitespace="preserve">Compares two content types for equality.
+%FALSE otherwise.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the two strings are identical or equivalent,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a content type string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="type2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a content type string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="content_type_from_mime_type"
+              c:identifier="g_content_type_from_mime_type"
+              version="2.18">
+      <doc xml:whitespace="preserve">Tries to find a content type based on the mime type name.
+or %NULL. Free with g_free()</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">Newly allocated string with content type</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mime_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a mime type string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="content_type_get_description"
+              c:identifier="g_content_type_get_description">
+      <doc xml:whitespace="preserve">Gets the human readable description of the content type.
+returned string with g_free()</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a short description of the content type @type. Free the</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a content type string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="content_type_get_icon"
+              c:identifier="g_content_type_get_icon">
+      <doc xml:whitespace="preserve">Gets the icon for a content type.
+object with g_object_unref()</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">#GIcon corresponding to the content type. Free the returned</doc>
+        <type name="Icon" c:type="GIcon*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a content type string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="content_type_get_mime_type"
+              c:identifier="g_content_type_get_mime_type">
+      <doc xml:whitespace="preserve">Gets the mime type for the content type, if one is registered.
+or %NULL if unknown.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the registered mime type for the given @type,</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a content type string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="content_type_guess" c:identifier="g_content_type_guess">
+      <doc xml:whitespace="preserve">Guesses the content type based on example data. If the function is
+uncertain, @result_uncertain will be set to %TRUE. Either @filename
+or @data may be %NULL, in which case the guess will be based solely
+on the other argument.
+given data. Free with g_free()</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a string indicating a guessed content type for the</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a string, or %NULL</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a stream of data, or %NULL</doc>
+          <array length="2" c:type="guchar*">
+            <type name="guint8"/>
+          </array>
+        </parameter>
+        <parameter name="data_size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the size of @data</doc>
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+        <parameter name="result_uncertain"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">return location for the certainty of the result, or %NULL</doc>
+          <type name="gboolean" c:type="gboolean*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="content_type_guess_for_tree"
+              c:identifier="g_content_type_guess_for_tree"
+              version="2.18">
+      <doc xml:whitespace="preserve">Tries to guess the type of the tree with root @root, by
+looking at the files it contains. The result is an array
+of content types, with the best guess coming first.
+The types returned all have the form x-content/foo, e.g.
+x-content/audio-cdda (for audio CDs) or x-content/image-dcf
+(for a camera memory card). See the &lt;ulink url="http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec"&gt;shared-mime-info&lt;/ulink&gt;
+specification for more on x-content types.
+This function is useful in the implementation of
+g_mount_guess_content_type().
+or %NULL. Free with g_strfreev()</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">an %NULL-terminated array of zero or more content types,</doc>
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="root" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the root of the tree to guess a type for</doc>
+          <type name="File" c:type="GFile*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="content_type_is_a" c:identifier="g_content_type_is_a">
+      <doc xml:whitespace="preserve">Determines if @type is a subset of @supertype.
+%FALSE otherwise.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @type is a kind of @supertype,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a content type string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="supertype" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a content type string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="content_type_is_unknown"
+              c:identifier="g_content_type_is_unknown">
+      <doc xml:whitespace="preserve">Checks if the content type is the generic "unknown" type.
+On UNIX this is the "application/octet-stream" mimetype,
+while on win32 it is "*".</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the type is the unknown type.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a content type string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="content_types_get_registered"
+              c:identifier="g_content_types_get_registered">
+      <doc xml:whitespace="preserve">Gets a list of strings containing all the registered content types
+known to the system. The list and its data should be freed using
+&lt;programlisting&gt;
+g_list_foreach (list, g_free, NULL);
+g_list_free (list);
+&lt;/programlisting&gt;</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">#GList of the registered content types</doc>
+        <type name="GLib.List" c:type="GList*">
+          <type name="utf8"/>
+        </type>
+      </return-value>
+    </function>
+    <function name="dbus_address_get_for_bus_sync"
+              c:identifier="g_dbus_address_get_for_bus_sync"
+              version="2.26"
+              throws="1">
+      <doc xml:whitespace="preserve">Synchronously looks up the D-Bus address for the well-known message
+bus instance specified by @bus_type. This may involve using various
+platform specific mechanisms.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">A valid D-Bus address string for @bus_type or %NULL if @error is set.</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="bus_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GBusType.</doc>
+          <type name="BusType" c:type="GBusType"/>
+        </parameter>
+        <parameter name="cancellable" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+          <type name="Cancellable" c:type="GCancellable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dbus_address_get_stream"
+              c:identifier="g_dbus_address_get_stream"
+              version="2.26">
+      <doc xml:whitespace="preserve">Asynchronously connects to an endpoint specified by @address and
+sets up the connection so it is in a state to run the client-side
+of the D-Bus authentication conversation.
+When the operation is finished, @callback will be invoked. You can
+then call g_dbus_address_get_stream_finish() to get the result of
+the operation.
+This is an asynchronous failable function. See
+g_dbus_address_get_stream_sync() for the synchronous version.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="address" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A valid D-Bus address.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="cancellable" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+          <type name="Cancellable" c:type="GCancellable*"/>
+        </parameter>
+        <parameter name="callback"
+                   transfer-ownership="none"
+                   scope="async"
+                   closure="3">
+          <doc xml:whitespace="preserve">A #GAsyncReadyCallback to call when the request is satisfied.</doc>
+          <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Data to pass to @callback.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dbus_address_get_stream_finish"
+              c:identifier="g_dbus_address_get_stream_finish"
+              version="2.26"
+              throws="1">
+      <doc xml:whitespace="preserve">Finishes an operation started with g_dbus_address_get_stream().</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">A #GIOStream or %NULL if @error is set.</doc>
+        <type name="IOStream" c:type="GIOStream*"/>
+      </return-value>
+      <parameters>
+        <parameter name="res" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GAsyncResult obtained from the GAsyncReadyCallback passed to g_dbus_address_get_stream().</doc>
+          <type name="AsyncResult" c:type="GAsyncResult*"/>
+        </parameter>
+        <parameter name="out_guid" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%NULL or return location to store the GUID extracted from @address, if any.</doc>
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dbus_address_get_stream_sync"
+              c:identifier="g_dbus_address_get_stream_sync"
+              version="2.26"
+              throws="1">
+      <doc xml:whitespace="preserve">Synchronously connects to an endpoint specified by @address and
+sets up the connection so it is in a state to run the client-side
+of the D-Bus authentication conversation.
+This is a synchronous failable function. See
+g_dbus_address_get_stream() for the asynchronous version.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">A #GIOStream or %NULL if @error is set.</doc>
+        <type name="IOStream" c:type="GIOStream*"/>
+      </return-value>
+      <parameters>
+        <parameter name="address" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A valid D-Bus address.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="out_guid" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%NULL or return location to store the GUID extracted from @address, if any.</doc>
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="cancellable" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">A #GCancellable or %NULL.</doc>
+          <type name="Cancellable" c:type="GCancellable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dbus_annotation_info_lookup"
+              c:identifier="g_dbus_annotation_info_lookup"
+              version="2.26">
+      <doc xml:whitespace="preserve">Looks up the value of an annotation.
+This cost of this function is O(n) in number of annotations.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The value or %NULL if not found. Do not free, it is owned by @annotations.</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="annotations" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A %NULL-terminated array of annotations or %NULL.</doc>
+          <type name="DBusAnnotationInfo" c:type="GDBusAnnotationInfo**"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name of the annotation to look up.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dbus_error_encode_gerror"
+              c:identifier="g_dbus_error_encode_gerror"
+              version="2.26">
+      <doc xml:whitespace="preserve">Creates a D-Bus error name to use for @error. If @error matches
+a registered error (cf. g_dbus_error_register_error()), the corresponding
+D-Bus error name will be returned.
+Otherwise the a name of the form
+&lt;literal&gt;org.gtk.GDBus.UnmappedGError.Quark._ESCAPED_QUARK_NAME.Code_ERROR_CODE&lt;/literal&gt;
+will be used. This allows other GDBus applications to map the error
+on the wire back to a #GError using g_dbus_error_new_for_dbus_error().
+This function is typically only used in object mappings to put a
+#GError on the wire. Regular applications should not use it.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">A D-Bus error name (never %NULL). Free with g_free().</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="error" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GError.</doc>
+          <type name="GLib.Error" c:type="GError*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dbus_error_get_remote_error"
+              c:identifier="g_dbus_error_get_remote_error"
+              version="2.26">
+      <doc xml:whitespace="preserve">Gets the D-Bus error name used for @error, if any.
+This function is guaranteed to return a D-Bus error name for all
+#GError&lt;!-- --&gt;s returned from functions handling remote method
+calls (e.g. g_dbus_connection_call_finish()) unless
+g_dbus_error_strip_remote_error() has been used on @error.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">An allocated string or %NULL if the D-Bus error name could not be found. Free with g_free().</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="error" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GError.</doc>
+          <type name="GLib.Error" c:type="GError*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dbus_error_is_remote_error"
+              c:identifier="g_dbus_error_is_remote_error"
+              version="2.26">
+      <doc xml:whitespace="preserve">Checks if @error represents an error received via D-Bus from a remote peer. If so,
+use g_dbus_error_get_remote_error() to get the name of the error.
+%FALSE otherwise.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @error represents an error from a remote peer,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="error" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GError.</doc>
+          <type name="GLib.Error" c:type="GError*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dbus_error_new_for_dbus_error"
+              c:identifier="g_dbus_error_new_for_dbus_error"
+              version="2.26"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a #GError based on the contents of @dbus_error_name and
+Errors registered with g_dbus_error_register_error() will be looked
+up using @dbus_error_name and if a match is found, the error domain
+and code is used. Applications can use g_dbus_error_get_remote_error()
+to recover @dbus_error_name.
+If a match against a registered error is not found and the D-Bus
+error name is in a form as returned by g_dbus_error_encode_gerror()
+the error domain and code encoded in the name is used to
+create the #GError. Also, @dbus_error_name is added to the error message
+such that it can be recovered with g_dbus_error_get_remote_error().
+Otherwise, a #GError with the error code %G_IO_ERROR_DBUS_ERROR
+in the #G_IO_ERROR error domain is returned. Also, @dbus_error_name is
+added to the error message such that it can be recovered with
+g_dbus_error_get_remote_error().
+In all three cases, @dbus_error_name can always be recovered from the
+returned #GError using the g_dbus_error_get_remote_error() function
+(unless g_dbus_error_strip_remote_error() hasn't been used on the returned error).
+This function is typically only used in object mappings to prepare
+#GError instances for applications. Regular applications should not use
+it.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">An allocated #GError. Free with g_error_free().</doc>
+        <type name="GLib.Error" c:type="GError*"/>
+      </return-value>
+      <parameters>
+        <parameter name="dbus_error_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">D-Bus error name.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="dbus_error_message" transfer-ownership="none">
+          <doc xml:whitespace="preserve">D-Bus error message.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dbus_error_quark" c:identifier="g_dbus_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="dbus_error_register_error"
+              c:identifier="g_dbus_error_register_error"
+              version="2.26">
+      <doc xml:whitespace="preserve">Creates an association to map between @dbus_error_name and
+#GError&lt;!-- --&gt;s specified by @error_domain and @error_code.
+This is typically done in the routine that returns the #GQuark for
+an error domain.
+exists.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the association was created, %FALSE if it already</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="error_domain" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GQuark for a error domain.</doc>
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="error_code" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An error code.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="dbus_error_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A D-Bus error name.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dbus_error_register_error_domain"
+              c:identifier="g_dbus_error_register_error_domain"
+              version="2.26">
+      <doc xml:whitespace="preserve">Helper function for associating a #GError error domain with D-Bus error names.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="error_domain_quark_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The error domain name.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="quark_volatile" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A pointer where to store the #GQuark.</doc>
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+        <parameter name="entries" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A pointer to @num_entries #GDBusErrorEntry struct items.</doc>
+          <type name="DBusErrorEntry" c:type="GDBusErrorEntry*"/>
+        </parameter>
+        <parameter name="num_entries" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Number of items to register.</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dbus_error_set_dbus_error"
+              c:identifier="g_dbus_error_set_dbus_error"
+              version="2.26"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Does nothing if @error is %NULL. Otherwise sets *@error to
+a new #GError created with g_dbus_error_new_for_dbus_error()
+with @dbus_error_message prepend with @format (unless %NULL).</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="error" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A pointer to a #GError or %NULL.</doc>
+          <type name="GLib.Error" c:type="GError**"/>
+        </parameter>
+        <parameter name="dbus_error_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">D-Bus error name.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="dbus_error_message" transfer-ownership="none">
+          <doc xml:whitespace="preserve">D-Bus error message.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">printf()-style format to prepend to @dbus_error_message or %NULL.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dbus_error_set_dbus_error_valist"
+              c:identifier="g_dbus_error_set_dbus_error_valist"
+              version="2.26"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Like g_dbus_error_set_dbus_error() but intended for language bindings.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="error" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A pointer to a #GError or %NULL.</doc>
+          <type name="GLib.Error" c:type="GError**"/>
+        </parameter>
+        <parameter name="dbus_error_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">D-Bus error name.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="dbus_error_message" transfer-ownership="none">
+          <doc xml:whitespace="preserve">D-Bus error message.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">printf()-style format to prepend to @dbus_error_message or %NULL.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="var_args" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Arguments for @format.</doc>
+          <type name="va_list" c:type="va_list"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dbus_error_strip_remote_error"
+              c:identifier="g_dbus_error_strip_remote_error"
+              version="2.26">
+      <doc xml:whitespace="preserve">Looks for extra information in the error message used to recover
+the D-Bus error name and strips it if found. If stripped, the
+message field in @error will correspond exactly to what was
+received on the wire.
+This is typically used when presenting errors to the end user.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if information was stripped, %FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="error" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GError.</doc>
+          <type name="GLib.Error" c:type="GError*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dbus_error_unregister_error"
+              c:identifier="g_dbus_error_unregister_error"
+              version="2.26">
+      <doc xml:whitespace="preserve">Destroys an association previously set up with g_dbus_error_register_error().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the association was destroyed, %FALSE if it wasn't found.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="error_domain" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GQuark for a error domain.</doc>
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="error_code" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An error code.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="dbus_error_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A D-Bus error name.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dbus_generate_guid"
+              c:identifier="g_dbus_generate_guid"
+              version="2.26">
+      <doc xml:whitespace="preserve">Generate a D-Bus GUID that can be used with
+e.g. g_dbus_connection_new().
+See the D-Bus specification regarding what strings are valid D-Bus
+GUID (for example, D-Bus GUIDs are not RFC-4122 compliant).</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">A valid D-Bus GUID. Free with g_free().</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="dbus_is_address"
+              c:identifier="g_dbus_is_address"
+              version="2.26">
+      <doc xml:whitespace="preserve">Checks if @string is a D-Bus address.
+This doesn't check if @string is actually supported by #GDBusServer
+or #GDBusConnection - use g_dbus_is_supported_address() to do more
+checks.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @string is a valid D-Bus address, %FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A string.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dbus_is_guid" c:identifier="g_dbus_is_guid" version="2.26">
+      <doc xml:whitespace="preserve">Checks if @string is a D-Bus GUID.
+See the D-Bus specification regarding what strings are valid D-Bus
+GUID (for example, D-Bus GUIDs are not RFC-4122 compliant).</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @string is a guid, %FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The string to check.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dbus_is_interface_name"
+              c:identifier="g_dbus_is_interface_name"
+              version="2.26">
+      <doc xml:whitespace="preserve">Checks if @string is a valid D-Bus interface name.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if valid, %FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The string to check.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dbus_is_member_name"
+              c:identifier="g_dbus_is_member_name"
+              version="2.26">
+      <doc xml:whitespace="preserve">Checks if @string is a valid D-Bus member (e.g. signal or method) name.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if valid, %FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The string to check.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dbus_is_name" c:identifier="g_dbus_is_name" version="2.26">
+      <doc xml:whitespace="preserve">Checks if @string is a valid D-Bus bus name (either unique or well-known).</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if valid, %FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The string to check.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dbus_is_supported_address"
+              c:identifier="g_dbus_is_supported_address"
+              version="2.26"
+              throws="1">
+      <doc xml:whitespace="preserve">Like g_dbus_is_address() but also checks if the library suppors the
+transports in @string and that key/value pairs for each transport
+are valid.
+supported by this library, %FALSE if @error is set.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @string is a valid D-Bus address that is</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A string.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dbus_is_unique_name"
+              c:identifier="g_dbus_is_unique_name"
+              version="2.26">
+      <doc xml:whitespace="preserve">Checks if @string is a valid D-Bus unique bus name.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if valid, %FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The string to check.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="file_hash" c:identifier="g_file_hash">
+      <doc xml:whitespace="preserve">Creates a hash value for a #GFile.
+This call does no blocking i/o.
+integer that can be used as hash value for the #GFile.
+This function is intended for easily hashing a #GFile to
+add to a #GHashTable or similar data structure.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">0 if @file is not a valid #GFile, otherwise an</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="file" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#gconstpointer to a #GFile.</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="file_new_for_commandline_arg"
+              c:identifier="g_file_new_for_commandline_arg">
+      <doc xml:whitespace="preserve">Creates a #GFile with the given argument from the command line. The value of
+relative to the current working directory.
+This operation never fails, but the returned object might not support any
+I/O operation if @arg points to a malformed path.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GFile.</doc>
+        <type name="File" c:type="GFile*"/>
+      </return-value>
+      <parameters>
+        <parameter name="arg" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a command line string.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="file_new_for_path" c:identifier="g_file_new_for_path">
+      <doc xml:whitespace="preserve">Constructs a #GFile for a given path. This operation never
+fails, but the returned object might not support any I/O
+operation if @path is malformed.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GFile for the given @path.</doc>
+        <type name="File" c:type="GFile*"/>
+      </return-value>
+      <parameters>
+        <parameter name="path" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing a relative or absolute path. The string must be encoded in the glib filename encoding.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="file_new_for_uri" c:identifier="g_file_new_for_uri">
+      <doc xml:whitespace="preserve">Constructs a #GFile for a given URI. This operation never
+fails, but the returned object might not support any I/O
+operation if @uri is malformed or if the uri type is
+not supported.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a #GFile for the given @uri.</doc>
+        <type name="File" c:type="GFile*"/>
+      </return-value>
+      <parameters>
+        <parameter name="uri" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a UTF8 string containing a URI.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="file_parse_name" c:identifier="g_file_parse_name">
+      <doc xml:whitespace="preserve">Constructs a #GFile with the given @parse_name (i.e. something given by g_file_get_parse_name()).
+This operation never fails, but the returned object might not support any I/O
+operation if the @parse_name cannot be parsed.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GFile.</doc>
+        <type name="File" c:type="GFile*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parse_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a file name or path to be parsed.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="icon_hash" c:identifier="g_icon_hash">
+      <doc xml:whitespace="preserve">Gets a hash for an icon.
+use in a #GHashTable or similar data structure.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a #guint containing a hash for the @icon, suitable for</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="icon" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#gconstpointer to an icon object.</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="icon_new_for_string"
+              c:identifier="g_icon_new_for_string"
+              version="2.20"
+              introspectable="0"
+              throws="1">
+      <doc xml:whitespace="preserve">Generate a #GIcon instance from @str. This function can fail if
+If your application or library provides one or more #GIcon
+implementations you need to ensure that each #GType is registered
+with the type system prior to calling g_icon_new_for_string().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">An object implementing the #GIcon interface or %NULL if</doc>
+        <type name="Icon" c:type="GIcon*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A string obtained via g_icon_to_string().</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="initable_new"
+              c:identifier="g_initable_new"
+              version="2.22"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Helper function for constructing #GInitiable object. This is
+similar to g_object_new() but also initializes the object
+and returns %NULL, setting an error on failure.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a newly allocated #GObject, or %NULL on error</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="object_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GType supporting #GInitable.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="cancellable" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+          <type name="Cancellable" c:type="GCancellable*"/>
+        </parameter>
+        <parameter name="error" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GError location to store the error occuring, or %NULL to ignore.</doc>
+          <type name="GLib.Error" c:type="GError**"/>
+        </parameter>
+        <parameter name="first_property_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the first property, or %NULL if no properties</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="initable_new_valist"
+              c:identifier="g_initable_new_valist"
+              version="2.22"
+              introspectable="0"
+              throws="1">
+      <doc xml:whitespace="preserve">Helper function for constructing #GInitiable object. This is
+similar to g_object_new_valist() but also initializes the object
+and returns %NULL, setting an error on failure.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a newly allocated #GObject, or %NULL on error</doc>
+        <type name="GObject.Object" c:type="GObject*"/>
+      </return-value>
+      <parameters>
+        <parameter name="object_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GType supporting #GInitable.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="first_property_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the first property, followed by the value, and other property value pairs, and ended by %NULL.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="var_args" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The var args list generated from @first_property_name.</doc>
+          <type name="va_list" c:type="va_list"/>
+        </parameter>
+        <parameter name="cancellable" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+          <type name="Cancellable" c:type="GCancellable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="initable_newv"
+              c:identifier="g_initable_newv"
+              version="2.22"
+              throws="1">
+      <doc xml:whitespace="preserve">Helper function for constructing #GInitiable object. This is
+similar to g_object_newv() but also initializes the object
+and returns %NULL, setting an error on failure.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a newly allocated #GObject, or %NULL on error</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="object_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GType supporting #GInitable.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_parameters" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of parameters in @parameters</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="parameters" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the parameters to use to construct the object</doc>
+          <type name="GObject.Parameter" c:type="GParameter*"/>
+        </parameter>
+        <parameter name="cancellable" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+          <type name="Cancellable" c:type="GCancellable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_error_from_errno" c:identifier="g_io_error_from_errno">
+      <doc xml:whitespace="preserve">Converts errno.h error codes into GIO error codes.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">#GIOErrorEnum value for the given errno.h error number.</doc>
+        <type name="IOErrorEnum" c:type="GIOErrorEnum"/>
+      </return-value>
+      <parameters>
+        <parameter name="err_no" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Error number as defined in errno.h.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_error_quark" c:identifier="g_io_error_quark">
+      <doc xml:whitespace="preserve">Gets the GIO Error Quark.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a #GQuark.</doc>
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="io_extension_get_type"
+              c:identifier="g_io_extension_get_type">
+      <doc xml:whitespace="preserve">Gets the type associated with @extension.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the type of @extension</doc>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="extension" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GIOExtension</doc>
+          <type name="IOExtension" c:type="GIOExtension*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_extension_point_implement"
+              c:identifier="g_io_extension_point_implement"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Registers @type as extension for the extension point with name
+If @type has already been registered as an extension for this
+extension point, the existing #GIOExtension object is returned.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a #GIOExtension object for #GType</doc>
+        <type name="IOExtension" c:type="GIOExtension*"/>
+      </return-value>
+      <parameters>
+        <parameter name="extension_point_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the extension point</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType to register as extension</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="extension_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name for the extension</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="priority" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the priority for the extension</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_extension_point_lookup"
+              c:identifier="g_io_extension_point_lookup"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Looks up an existing extension point.
+registered extension point with the given name</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the #GIOExtensionPoint, or %NULL if there is no</doc>
+        <type name="IOExtensionPoint" c:type="GIOExtensionPoint*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the extension point</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_extension_point_register"
+              c:identifier="g_io_extension_point_register"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Registers an extension point.
+and should not be freed</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the new #GIOExtensionPoint. This object is owned by GIO</doc>
+        <type name="IOExtensionPoint" c:type="GIOExtensionPoint*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name of the extension point</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_modules_load_all_in_directory"
+              c:identifier="g_io_modules_load_all_in_directory">
+      <doc xml:whitespace="preserve">Loads all the modules in the specified directory.
+If don't require all modules to be initialized (and thus registering
+all gtypes) then you can use g_io_modules_scan_all_in_directory()
+which allows delayed/lazy loading of modules.
+from the directory,
+All the modules are loaded into memory, if you want to
+unload them (enabling on-demand loading) you must call
+g_type_module_unuse() on all the modules. Free the list
+with g_list_free().</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a list of #GIOModules loaded</doc>
+        <type name="GLib.List" c:type="GList*">
+          <type name="IOModule"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="dirname" transfer-ownership="none">
+          <doc xml:whitespace="preserve">pathname for a directory containing modules to load.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_modules_scan_all_in_directory"
+              c:identifier="g_io_modules_scan_all_in_directory"
+              version="2.24">
+      <doc xml:whitespace="preserve">Scans all the modules in the specified directory, ensuring that
+any extension point implemented by a module is registered.
+This may not actually load and initialize all the types in each
+module, some modules may be lazily loaded and initialized when
+an extension point it implementes is used with e.g.
+g_io_extension_point_get_extensions() or
+g_io_extension_point_get_extension_by_name().
+If you need to guarantee that all types are loaded in all the modules,
+use g_io_modules_scan_all_in_directory().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dirname" transfer-ownership="none">
+          <doc xml:whitespace="preserve">pathname for a directory containing modules to scan.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_scheduler_cancel_all_jobs"
+              c:identifier="g_io_scheduler_cancel_all_jobs">
+      <doc xml:whitespace="preserve">Cancels all cancellable I/O jobs.
+A job is cancellable if a #GCancellable was passed into
+g_io_scheduler_push_job().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="io_scheduler_push_job"
+              c:identifier="g_io_scheduler_push_job">
+      <doc xml:whitespace="preserve">Schedules the I/O job to run.
+regardless whether the job was cancelled or has run to completion.
+If @cancellable is not %NULL, it can be used to cancel the I/O job
+by calling g_cancellable_cancel() or by calling
+g_io_scheduler_cancel_all_jobs().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="job_func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="1"
+                   destroy="2">
+          <doc xml:whitespace="preserve">a #GIOSchedulerJobFunc.</doc>
+          <type name="IOSchedulerJobFunc" c:type="GIOSchedulerJobFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to @job_func</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="async">
+          <doc xml:whitespace="preserve">a #GDestroyNotify for @user_data, or %NULL</doc>
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+        <parameter name="io_priority" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the &lt;link linkend="gioscheduler"&gt;I/O priority&lt;/link&gt; of the request.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="cancellable" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">optional #GCancellable object, %NULL to ignore.</doc>
+          <type name="Cancellable" c:type="GCancellable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="keyfile_settings_backend_new"
+              c:identifier="g_keyfile_settings_backend_new">
+      <doc xml:whitespace="preserve">Creates a keyfile-backed #GSettingsBackend.
+The filename of the keyfile to use is given by @filename.
+All settings read to or written from the backend must fall under the
+path given in @root_path (which must start and end with a slash and
+not contain two consecutive slashes).  @root_path may be "/".
+If @root_group is non-%NULL then it specifies the name of the keyfile
+group used for keys that are written directly below @root_path.  For
+example, if @root_path is "/apps/example/" and @root_group is
+"toplevel", then settings the key "/apps/example/enabled" to a value
+of %TRUE will cause the following to appear in the keyfile:
+|[
+[toplevel]
+enabled=true
+]|
+If @root_group is %NULL then it is not permitted to store keys
+directly below the @root_path.
+the name of the subpath (with the final slash stripped) is used as
+the name of the keyfile group.  To continue the example, if
+"/apps/example/profiles/default/font-size" were set to
+12 then the following would appear in the keyfile:
+|[
+[profiles/default]
+font-size=12
+]|
+The backend will refuse writes (and return writability as being
+%FALSE) for keys outside of @root_path and, in the event that
+Writes will also be refused if the backend detects that it has the
+writable).
+There is no checking done for your key namespace clashing with the
+syntax of the key file format.  For example, if you have '[' or ']'
+characters in your path names or '=' in your key names you may be in
+trouble.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a keyfile-backed #GSettingsBackend</doc>
+        <type name="SettingsBackend" c:type="GSettingsBackend*"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the filename of the keyfile</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="root_path" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the path under which all settings keys appear</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="root_group" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the group name corresponding to</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="proxy_get_default_for_protocol"
+              c:identifier="g_proxy_get_default_for_protocol"
+              version="2.26"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Lookup "gio-proxy" extension point for a proxy implementation that supports
+specified protocol.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">return a #GProxy or NULL if protocol is not supported.</doc>
+        <type name="Proxy" c:type="GProxy*"/>
+      </return-value>
+      <parameters>
+        <parameter name="protocol" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the proxy protocol name (e.g. http, socks, etc)</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="proxy_resolver_get_default"
+              c:identifier="g_proxy_resolver_get_default"
+              version="2.26">
+      <doc xml:whitespace="preserve">Gets the default #GProxyResolver for the system.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the default #GProxyResolver.</doc>
+        <type name="ProxyResolver" c:type="GProxyResolver*"/>
+      </return-value>
+    </function>
+    <function name="resolver_error_quark"
+              c:identifier="g_resolver_error_quark"
+              version="2.22">
+      <doc xml:whitespace="preserve">Gets the #GResolver Error Quark.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a #GQuark.</doc>
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="simple_async_report_error_in_idle"
+              c:identifier="g_simple_async_report_error_in_idle"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Reports an error in an asynchronous function in an idle function by
+directly setting the contents of the #GAsyncResult with the given error
+information.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObject.</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="callback"
+                   transfer-ownership="none"
+                   scope="async"
+                   closure="2">
+          <doc xml:whitespace="preserve">a #GAsyncReadyCallback.</doc>
+          <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="domain" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GQuark containing the error domain (usually #G_IO_ERROR).</doc>
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="code" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a specific error code.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a formatted error reporting string.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="simple_async_report_gerror_in_idle"
+              c:identifier="g_simple_async_report_gerror_in_idle">
+      <doc xml:whitespace="preserve">Reports an error in an idle function. Similar to
+g_simple_async_report_error_in_idle(), but takes a #GError rather
+than building a new one.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObject.</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="callback"
+                   transfer-ownership="none"
+                   scope="async"
+                   closure="2">
+          <doc xml:whitespace="preserve">a #GAsyncReadyCallback.</doc>
+          <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data passed to @callback.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="error" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GError to report</doc>
+          <type name="GLib.Error" c:type="GError*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="srv_target_list_sort"
+              c:identifier="g_srv_target_list_sort"
+              version="2.22">
+      <doc xml:whitespace="preserve">Sorts @targets in place according to the algorithm in RFC 2782.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the head of the sorted list.</doc>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="targets" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GList of #GSrvTarget</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_is_mount_path_system_internal"
+              c:identifier="g_unix_is_mount_path_system_internal">
+      <doc xml:whitespace="preserve">Determines if @mount_path is considered an implementation of the
+OS. This is primarily used for hiding mountable and mounted volumes
+that only are used in the OS and has little to no relevance to the
+casual user.
+of the OS.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @mount_path is considered an implementation detail</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount_path" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a mount path, e.g. &lt;filename&gt;/media/disk&lt;/filename&gt; or &lt;filename&gt;/usr&lt;/filename&gt;</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_at"
+              c:identifier="g_unix_mount_at"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Gets a #GUnixMountEntry for a given mount path. If @time_read
+is set, it will be filled with a unix timestamp for checking
+if the mounts have changed since with g_unix_mounts_changed_since().</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a #GUnixMount.</doc>
+        <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount_path" transfer-ownership="none">
+          <doc xml:whitespace="preserve">path for a possible unix mount.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="time_read" transfer-ownership="none">
+          <doc xml:whitespace="preserve">guint64 to contain a timestamp.</doc>
+          <type name="guint64" c:type="guint64*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_compare" c:identifier="g_unix_mount_compare">
+      <doc xml:whitespace="preserve">Compares two unix mounts.
+or less than @mount2, respectively.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">1, 0 or -1 if @mount1 is greater than, equal to,</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">first #GUnixMountEntry to compare.</doc>
+          <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+        </parameter>
+        <parameter name="mount2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">second #GUnixMountEntry to compare.</doc>
+          <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_free" c:identifier="g_unix_mount_free">
+      <doc xml:whitespace="preserve">Frees a unix mount.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount_entry" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GUnixMount.</doc>
+          <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_get_device_path"
+              c:identifier="g_unix_mount_get_device_path">
+      <doc xml:whitespace="preserve">Gets the device path for a unix mount.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a string containing the device path.</doc>
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount_entry" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GUnixMount.</doc>
+          <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_get_fs_type"
+              c:identifier="g_unix_mount_get_fs_type">
+      <doc xml:whitespace="preserve">Gets the filesystem type for the unix mount.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a string containing the file system type.</doc>
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount_entry" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GUnixMount.</doc>
+          <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_get_mount_path"
+              c:identifier="g_unix_mount_get_mount_path">
+      <doc xml:whitespace="preserve">Gets the mount path for a unix mount.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the mount path for @mount_entry.</doc>
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount_entry" transfer-ownership="none">
+          <doc xml:whitespace="preserve">input #GUnixMountEntry to get the mount path for.</doc>
+          <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_guess_can_eject"
+              c:identifier="g_unix_mount_guess_can_eject">
+      <doc xml:whitespace="preserve">Guesses whether a Unix mount can be ejected.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @mount_entry is deemed to be ejectable.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount_entry" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GUnixMountEntry</doc>
+          <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_guess_icon"
+              c:identifier="g_unix_mount_guess_icon">
+      <doc xml:whitespace="preserve">Guesses the icon of a Unix mount.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a #GIcon</doc>
+        <type name="Icon" c:type="GIcon*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount_entry" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GUnixMountEntry</doc>
+          <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_guess_name"
+              c:identifier="g_unix_mount_guess_name">
+      <doc xml:whitespace="preserve">Guesses the name of a Unix mount.
+The result is a translated string.
+be freed with g_free()</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">A newly allocated string that must</doc>
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount_entry" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GUnixMountEntry</doc>
+          <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_guess_should_display"
+              c:identifier="g_unix_mount_guess_should_display">
+      <doc xml:whitespace="preserve">Guesses whether a Unix mount should be displayed in the UI.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @mount_entry is deemed to be displayable.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount_entry" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GUnixMountEntry</doc>
+          <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_is_readonly"
+              c:identifier="g_unix_mount_is_readonly">
+      <doc xml:whitespace="preserve">Checks if a unix mount is mounted read only.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @mount_entry is read only.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount_entry" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GUnixMount.</doc>
+          <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_is_system_internal"
+              c:identifier="g_unix_mount_is_system_internal">
+      <doc xml:whitespace="preserve">Checks if a unix mount is a system path.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the unix mount is for a system path.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount_entry" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GUnixMount.</doc>
+          <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_points_changed_since"
+              c:identifier="g_unix_mount_points_changed_since">
+      <doc xml:whitespace="preserve">Checks if the unix mount points have changed since a given unix time.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the mount points have changed since @time.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="time" transfer-ownership="none">
+          <doc xml:whitespace="preserve">guint64 to contain a timestamp.</doc>
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_points_get"
+              c:identifier="g_unix_mount_points_get">
+      <doc xml:whitespace="preserve">Gets a #GList of #GUnixMountPoint containing the unix mount points.
+If @time_read is set, it will be filled with the mount timestamp,
+allowing for checking if the mounts have changed with
+g_unix_mounts_points_changed_since().</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a #GList of the UNIX mountpoints.</doc>
+        <type name="GLib.List" c:type="GList*">
+          <type name="utf8"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="time_read" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">guint64 to contain a timestamp.</doc>
+          <type name="guint64" c:type="guint64*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mounts_changed_since"
+              c:identifier="g_unix_mounts_changed_since">
+      <doc xml:whitespace="preserve">Checks if the unix mounts have changed since a given unix time.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the mounts have changed since @time.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="time" transfer-ownership="none">
+          <doc xml:whitespace="preserve">guint64 to contain a timestamp.</doc>
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mounts_get" c:identifier="g_unix_mounts_get">
+      <doc xml:whitespace="preserve">Gets a #GList of #GUnixMountEntry containing the unix mounts.
+If @time_read is set, it will be filled with the mount
+timestamp, allowing for checking if the mounts have changed
+with g_unix_mounts_changed_since().</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a #GList of the UNIX mounts.</doc>
+        <type name="GLib.List" c:type="GList*">
+          <type name="utf8"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="time_read" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">guint64 to contain a timestamp, or %NULL</doc>
+          <type name="guint64" c:type="guint64*"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/basis/gio/authors.txt b/basis/gio/authors.txt
new file mode 100644 (file)
index 0000000..ce9bcc8
--- /dev/null
@@ -0,0 +1 @@
+Anton Gorenko
\ No newline at end of file
diff --git a/basis/gio/ffi/ffi.factor b/basis/gio/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..e2247e8
--- /dev/null
@@ -0,0 +1,21 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries alien.syntax combinators
+gobject-introspection kernel system vocabs.loader ;
+IN: gio.ffi
+
+<<
+"gobject.ffi" require
+>>
+
+LIBRARY: gio
+
+<<
+"gio" {
+    { [ os winnt? ] [ "libgio-2.0-0.dll" cdecl add-library ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgio-2.0.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gio/Gio-2.0.gir
diff --git a/basis/gio/gio.factor b/basis/gio/gio.factor
new file mode 100644 (file)
index 0000000..6ab6d1f
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gio.ffi ;
+IN: gio
+
diff --git a/basis/gio/summary.txt b/basis/gio/summary.txt
new file mode 100644 (file)
index 0000000..d21533b
--- /dev/null
@@ -0,0 +1 @@
+GIO binding
diff --git a/basis/gio/tags.txt b/basis/gio/tags.txt
new file mode 100755 (executable)
index 0000000..bb863cf
--- /dev/null
@@ -0,0 +1 @@
+bindings
diff --git a/basis/glib/GLib-2.0.gir b/basis/glib/GLib-2.0.gir
new file mode 100644 (file)
index 0000000..7d02445
--- /dev/null
@@ -0,0 +1,20393 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <package name="glib-2.0"/>
+  <c:include name="glib.h"/>
+  <namespace name="GLib"
+             version="2.0"
+             shared-library="libglib-2.0.so.0"
+             c:identifier-prefixes="G"
+             c:symbol-prefixes="g,glib">
+    <alias name="DateDay" c:type="GDateDay">
+      <type name="guint8" c:type="guint8"/>
+    </alias>
+    <alias name="DateYear" c:type="GDateYear">
+      <type name="guint16" c:type="guint16"/>
+    </alias>
+    <alias name="Pid" c:type="GPid">
+      <doc xml:whitespace="preserve">A type which is used to hold a process identification.
+On UNIX, processes are identified by a process id (an integer),
+while Windows uses process handles (which are pointers).</doc>
+      <type name="gint" c:type="int"/>
+    </alias>
+    <alias name="Quark" c:type="GQuark">
+      <type name="guint32" c:type="guint32"/>
+    </alias>
+    <alias name="Time" c:type="GTime">
+      <type name="gint32" c:type="gint32"/>
+    </alias>
+    <alias name="TimeSpan" c:type="GTimeSpan">
+      <doc xml:whitespace="preserve">A value representing an interval of time, in microseconds.</doc>
+      <type name="gint64" c:type="gint64"/>
+    </alias>
+    <constant name="ALLOCATOR_LIST" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ALLOCATOR_NODE" value="3">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ALLOCATOR_SLIST" value="2">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ALLOC_AND_FREE" value="2">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ALLOC_ONLY" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ASCII_DTOSTR_BUF_SIZE" value="39">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ATOMIC_OP_MEMORY_BARRIER_NEEDED" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="Allocator" c:type="GAllocator" disguised="1">
+      <method name="free" c:identifier="g_allocator_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="Array" c:type="GArray">
+      <field name="data" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="len" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <bitfield name="AsciiType" c:type="GAsciiType">
+      <member name="alnum" value="1" c:identifier="G_ASCII_ALNUM"/>
+      <member name="alpha" value="2" c:identifier="G_ASCII_ALPHA"/>
+      <member name="cntrl" value="4" c:identifier="G_ASCII_CNTRL"/>
+      <member name="digit" value="8" c:identifier="G_ASCII_DIGIT"/>
+      <member name="graph" value="16" c:identifier="G_ASCII_GRAPH"/>
+      <member name="lower" value="32" c:identifier="G_ASCII_LOWER"/>
+      <member name="print" value="64" c:identifier="G_ASCII_PRINT"/>
+      <member name="punct" value="128" c:identifier="G_ASCII_PUNCT"/>
+      <member name="space" value="256" c:identifier="G_ASCII_SPACE"/>
+      <member name="upper" value="512" c:identifier="G_ASCII_UPPER"/>
+      <member name="xdigit" value="1024" c:identifier="G_ASCII_XDIGIT"/>
+    </bitfield>
+    <record name="AsyncQueue" c:type="GAsyncQueue" disguised="1">
+      <method name="length" c:identifier="g_async_queue_length">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="length_unlocked"
+              c:identifier="g_async_queue_length_unlocked">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="lock" c:identifier="g_async_queue_lock">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="pop" c:identifier="g_async_queue_pop" introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="pop_unlocked"
+              c:identifier="g_async_queue_pop_unlocked"
+              introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="push" c:identifier="g_async_queue_push">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push_sorted"
+              c:identifier="g_async_queue_push_sorted"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="func" transfer-ownership="none" closure="2">
+            <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push_sorted_unlocked"
+              c:identifier="g_async_queue_push_sorted_unlocked"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="func" transfer-ownership="none" closure="2">
+            <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push_unlocked" c:identifier="g_async_queue_push_unlocked">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref" c:identifier="g_async_queue_ref" introspectable="0">
+        <return-value>
+          <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+        </return-value>
+      </method>
+      <method name="ref_unlocked" c:identifier="g_async_queue_ref_unlocked">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="sort" c:identifier="g_async_queue_sort" introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" closure="1">
+            <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sort_unlocked"
+              c:identifier="g_async_queue_sort_unlocked"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" closure="1">
+            <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="timed_pop"
+              c:identifier="g_async_queue_timed_pop"
+              introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="end_time" transfer-ownership="none">
+            <type name="TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="timed_pop_unlocked"
+              c:identifier="g_async_queue_timed_pop_unlocked"
+              introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="end_time" transfer-ownership="none">
+            <type name="TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="try_pop"
+              c:identifier="g_async_queue_try_pop"
+              introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="try_pop_unlocked"
+              c:identifier="g_async_queue_try_pop_unlocked"
+              introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="unlock" c:identifier="g_async_queue_unlock">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unref" c:identifier="g_async_queue_unref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unref_and_unlock"
+              c:identifier="g_async_queue_unref_and_unlock">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <constant name="BIG_ENDIAN" value="4321">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="BookmarkFile" c:type="GBookmarkFile" disguised="1">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;GBookmarkFile&lt;/structname&gt; struct contains only
+private data and should not be directly accessed.</doc>
+      <method name="add_application"
+              c:identifier="g_bookmark_file_add_application">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="exec" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_group" c:identifier="g_bookmark_file_add_group">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="group" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="g_bookmark_file_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_added"
+              c:identifier="g_bookmark_file_get_added"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="glong" c:type="time_t"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_app_info"
+              c:identifier="g_bookmark_file_get_app_info"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="exec" transfer-ownership="none">
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="stamp" transfer-ownership="none">
+            <type name="glong" c:type="time_t*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_applications"
+              c:identifier="g_bookmark_file_get_applications"
+              introspectable="0"
+              throws="1">
+        <return-value>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_description"
+              c:identifier="g_bookmark_file_get_description"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_groups"
+              c:identifier="g_bookmark_file_get_groups"
+              introspectable="0"
+              throws="1">
+        <return-value>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon"
+              c:identifier="g_bookmark_file_get_icon"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="href" transfer-ownership="none">
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="mime_type" transfer-ownership="none">
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_is_private"
+              c:identifier="g_bookmark_file_get_is_private"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_mime_type"
+              c:identifier="g_bookmark_file_get_mime_type"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_modified"
+              c:identifier="g_bookmark_file_get_modified"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="glong" c:type="time_t"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size" c:identifier="g_bookmark_file_get_size">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_title"
+              c:identifier="g_bookmark_file_get_title"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uris"
+              c:identifier="g_bookmark_file_get_uris"
+              introspectable="0">
+        <return-value>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_visited"
+              c:identifier="g_bookmark_file_get_visited"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="glong" c:type="time_t"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_application"
+              c:identifier="g_bookmark_file_has_application"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_group"
+              c:identifier="g_bookmark_file_has_group"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="group" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_item" c:identifier="g_bookmark_file_has_item">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_from_data"
+              c:identifier="g_bookmark_file_load_from_data"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_from_data_dirs"
+              c:identifier="g_bookmark_file_load_from_data_dirs"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="full_path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_from_file"
+              c:identifier="g_bookmark_file_load_from_file"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_item"
+              c:identifier="g_bookmark_file_move_item"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="new_uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_application"
+              c:identifier="g_bookmark_file_remove_application"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_group"
+              c:identifier="g_bookmark_file_remove_group"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="group" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_item"
+              c:identifier="g_bookmark_file_remove_item"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_added" c:identifier="g_bookmark_file_set_added">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="added" transfer-ownership="none">
+            <type name="glong" c:type="time_t"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_app_info"
+              c:identifier="g_bookmark_file_set_app_info"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="exec" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="stamp" transfer-ownership="none">
+            <type name="glong" c:type="time_t"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_description"
+              c:identifier="g_bookmark_file_set_description">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_groups" c:identifier="g_bookmark_file_set_groups">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="groups" transfer-ownership="none">
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon" c:identifier="g_bookmark_file_set_icon">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="href" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="mime_type" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_is_private"
+              c:identifier="g_bookmark_file_set_is_private">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="is_private" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_mime_type"
+              c:identifier="g_bookmark_file_set_mime_type">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="mime_type" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_modified" c:identifier="g_bookmark_file_set_modified">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="modified" transfer-ownership="none">
+            <type name="glong" c:type="time_t"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_title" c:identifier="g_bookmark_file_set_title">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="title" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_visited" c:identifier="g_bookmark_file_set_visited">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="visited" transfer-ownership="none">
+            <type name="glong" c:type="time_t"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_data" c:identifier="g_bookmark_file_to_data" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_file" c:identifier="g_bookmark_file_to_file" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="BookmarkFileError"
+                 c:type="GBookmarkFileError"
+                 glib:error-quark="g_bookmark_file_error_quark">
+      <doc xml:whitespace="preserve">Error codes returned by bookmark file parsing.</doc>
+      <member name="invalid_uri"
+              value="0"
+              c:identifier="G_BOOKMARK_FILE_ERROR_INVALID_URI"/>
+      <member name="invalid_value"
+              value="1"
+              c:identifier="G_BOOKMARK_FILE_ERROR_INVALID_VALUE"/>
+      <member name="app_not_registered"
+              value="2"
+              c:identifier="G_BOOKMARK_FILE_ERROR_APP_NOT_REGISTERED"/>
+      <member name="uri_not_found"
+              value="3"
+              c:identifier="G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND"/>
+      <member name="read" value="4" c:identifier="G_BOOKMARK_FILE_ERROR_READ"/>
+      <member name="unknown_encoding"
+              value="5"
+              c:identifier="G_BOOKMARK_FILE_ERROR_UNKNOWN_ENCODING"/>
+      <member name="write"
+              value="6"
+              c:identifier="G_BOOKMARK_FILE_ERROR_WRITE"/>
+      <member name="file_not_found"
+              value="7"
+              c:identifier="G_BOOKMARK_FILE_ERROR_FILE_NOT_FOUND"/>
+    </enumeration>
+    <record name="ByteArray" c:type="GByteArray">
+      <field name="data" writable="1">
+        <type name="guint8" c:type="guint8*"/>
+      </field>
+      <field name="len" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <constant name="CAN_INLINE" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="CSET_A_2_Z" value="ABCDEFGHIJKLMNOPQRSTUVWXYZ">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="CSET_DIGITS" value="0123456789">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="CSET_a_2_z" value="abcdefghijklmnopqrstuvwxyz">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <record name="Cache" c:type="GCache" disguised="1">
+      <method name="destroy" c:identifier="g_cache_destroy">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="insert" c:identifier="g_cache_insert" introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="key_foreach"
+              c:identifier="g_cache_key_foreach"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" closure="1">
+            <type name="HFunc" c:type="GHFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove" c:identifier="g_cache_remove">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="value_foreach"
+              c:identifier="g_cache_value_foreach"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" closure="1">
+            <type name="HFunc" c:type="GHFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="CacheDestroyFunc" c:type="GCacheDestroyFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="CacheDupFunc" c:type="GCacheDupFunc" introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="CacheNewFunc" c:type="GCacheNewFunc" introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="key" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="Checksum" c:type="GChecksum" disguised="1" version="2.16">
+      <doc xml:whitespace="preserve">An opaque structure representing a checksumming operation.
+To create a new GChecksum, use g_checksum_new(). To free
+a GChecksum, use g_checksum_free().</doc>
+      <method name="copy" c:identifier="g_checksum_copy" introspectable="0">
+        <return-value>
+          <type name="Checksum" c:type="GChecksum*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="g_checksum_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_digest" c:identifier="g_checksum_get_digest">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="guint8" c:type="guint8*"/>
+          </parameter>
+          <parameter name="digest_len" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string" c:identifier="g_checksum_get_string">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="reset" c:identifier="g_checksum_reset">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="update" c:identifier="g_checksum_update">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="guint8" c:type="guchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="ChecksumType" version="2.16" c:type="GChecksumType">
+      <doc xml:whitespace="preserve">The hashing algorithm to be used by #GChecksum when performing the
+digest of some data.
+Note that the #GChecksumType enumeration may be extended at a later
+date to include new hashing algorithm types.</doc>
+      <member name="md5" value="0" c:identifier="G_CHECKSUM_MD5"/>
+      <member name="sha1" value="1" c:identifier="G_CHECKSUM_SHA1"/>
+      <member name="sha256" value="2" c:identifier="G_CHECKSUM_SHA256"/>
+    </enumeration>
+    <callback name="ChildWatchFunc" c:type="GChildWatchFunc">
+      <doc xml:whitespace="preserve">The type of functions to be called when a child exists.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pid" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the process id of the child process</doc>
+          <type name="Pid" c:type="GPid"/>
+        </parameter>
+        <parameter name="status" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Status information about the child process, see waitpid(2) for more information about this field</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data passed to g_child_watch_add()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="CompareDataFunc" c:type="GCompareDataFunc">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="CompareFunc" c:type="GCompareFunc">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="Completion" c:type="GCompletion">
+      <field name="items" writable="1">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="func" writable="1">
+        <type name="CompletionFunc" c:type="GCompletionFunc"/>
+      </field>
+      <field name="prefix" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="cache" writable="1">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="strncmp_func" writable="1">
+        <type name="CompletionStrncmpFunc" c:type="GCompletionStrncmpFunc"/>
+      </field>
+      <method name="add_items" c:identifier="g_completion_add_items">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="items" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear_items" c:identifier="g_completion_clear_items">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="complete"
+              c:identifier="g_completion_complete"
+              introspectable="0">
+        <return-value>
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="prefix" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="new_prefix" transfer-ownership="none">
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="complete_utf8" c:identifier="g_completion_complete_utf8">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="prefix" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="new_prefix" transfer-ownership="none">
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="g_completion_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="remove_items" c:identifier="g_completion_remove_items">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="items" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_compare"
+              c:identifier="g_completion_set_compare"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="strncmp_func" transfer-ownership="none">
+            <type name="CompletionStrncmpFunc"
+                  c:type="GCompletionStrncmpFunc"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="CompletionFunc" c:type="GCompletionFunc">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="CompletionStrncmpFunc" c:type="GCompletionStrncmpFunc">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="s1" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="s2" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="Cond" c:type="GCond" disguised="1">
+    </record>
+    <enumeration name="ConvertError"
+                 c:type="GConvertError"
+                 glib:error-quark="g_convert_error_quark">
+      <doc xml:whitespace="preserve">Error codes returned by character set conversion routines.</doc>
+      <member name="no_conversion"
+              value="0"
+              c:identifier="G_CONVERT_ERROR_NO_CONVERSION"/>
+      <member name="illegal_sequence"
+              value="1"
+              c:identifier="G_CONVERT_ERROR_ILLEGAL_SEQUENCE"/>
+      <member name="failed" value="2" c:identifier="G_CONVERT_ERROR_FAILED"/>
+      <member name="partial_input"
+              value="3"
+              c:identifier="G_CONVERT_ERROR_PARTIAL_INPUT"/>
+      <member name="bad_uri" value="4" c:identifier="G_CONVERT_ERROR_BAD_URI"/>
+      <member name="not_absolute_path"
+              value="5"
+              c:identifier="G_CONVERT_ERROR_NOT_ABSOLUTE_PATH"/>
+    </enumeration>
+    <callback name="CopyFunc"
+              c:type="GCopyFunc"
+              version="2.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">A function of this signature is used to copy the node data 
+when doing a deep-copy of a tree.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">A pointer to the copy</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="src" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A pointer to the data which should be copied</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Additional data</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="DATALIST_FLAGS_MASK" value="3">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="DATE_BAD_DAY" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="DATE_BAD_JULIAN" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="DATE_BAD_YEAR" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="DIR_SEPARATOR_S" value="\">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <record name="Data" c:type="GData" disguised="1">
+    </record>
+    <callback name="DataForeachFunc" c:type="GDataForeachFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_id" transfer-ownership="none">
+          <type name="Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="Date" c:type="GDate">
+      <field name="julian_days" writable="1" bits="32">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="julian" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="dmy" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="day" writable="1" bits="6">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="month" writable="1" bits="4">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="year" writable="1" bits="16">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <method name="add_days" c:identifier="g_date_add_days">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_days" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_months" c:identifier="g_date_add_months">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_months" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_years" c:identifier="g_date_add_years">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_years" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clamp" c:identifier="g_date_clamp">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_date" transfer-ownership="none">
+            <type name="Date" c:type="GDate*"/>
+          </parameter>
+          <parameter name="max_date" transfer-ownership="none">
+            <type name="Date" c:type="GDate*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear" c:identifier="g_date_clear">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_dates" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="compare" c:identifier="g_date_compare">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="rhs" transfer-ownership="none">
+            <type name="Date" c:type="GDate*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="days_between" c:identifier="g_date_days_between">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="date2" transfer-ownership="none">
+            <type name="Date" c:type="GDate*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="g_date_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_day" c:identifier="g_date_get_day">
+        <return-value transfer-ownership="none">
+          <type name="DateDay" c:type="GDateDay"/>
+        </return-value>
+      </method>
+      <method name="get_day_of_year" c:identifier="g_date_get_day_of_year">
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_iso8601_week_of_year"
+              c:identifier="g_date_get_iso8601_week_of_year">
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_julian" c:identifier="g_date_get_julian">
+        <return-value transfer-ownership="none">
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="get_monday_week_of_year"
+              c:identifier="g_date_get_monday_week_of_year">
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_month" c:identifier="g_date_get_month">
+        <return-value transfer-ownership="none">
+          <type name="DateMonth" c:type="GDateMonth"/>
+        </return-value>
+      </method>
+      <method name="get_sunday_week_of_year"
+              c:identifier="g_date_get_sunday_week_of_year">
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_weekday" c:identifier="g_date_get_weekday">
+        <return-value transfer-ownership="none">
+          <type name="DateWeekday" c:type="GDateWeekday"/>
+        </return-value>
+      </method>
+      <method name="get_year" c:identifier="g_date_get_year">
+        <return-value transfer-ownership="none">
+          <type name="DateYear" c:type="GDateYear"/>
+        </return-value>
+      </method>
+      <method name="is_first_of_month" c:identifier="g_date_is_first_of_month">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_last_of_month" c:identifier="g_date_is_last_of_month">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="order" c:identifier="g_date_order">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="date2" transfer-ownership="none">
+            <type name="Date" c:type="GDate*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_day" c:identifier="g_date_set_day">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="day" transfer-ownership="none">
+            <type name="DateDay" c:type="GDateDay"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_dmy" c:identifier="g_date_set_dmy">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="day" transfer-ownership="none">
+            <type name="DateDay" c:type="GDateDay"/>
+          </parameter>
+          <parameter name="month" transfer-ownership="none">
+            <type name="DateMonth" c:type="GDateMonth"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="DateYear" c:type="GDateYear"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_julian" c:identifier="g_date_set_julian">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="julian_date" transfer-ownership="none">
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_month" c:identifier="g_date_set_month">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="month" transfer-ownership="none">
+            <type name="DateMonth" c:type="GDateMonth"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_parse" c:identifier="g_date_set_parse">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_time" c:identifier="g_date_set_time">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="time_" transfer-ownership="none">
+            <type name="Time" c:type="GTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_time_t" c:identifier="g_date_set_time_t">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timet" transfer-ownership="none">
+            <type name="glong" c:type="time_t"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_time_val" c:identifier="g_date_set_time_val">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeval" transfer-ownership="none">
+            <type name="TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_year" c:identifier="g_date_set_year">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="year" transfer-ownership="none">
+            <type name="DateYear" c:type="GDateYear"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="subtract_days" c:identifier="g_date_subtract_days">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_days" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="subtract_months" c:identifier="g_date_subtract_months">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_months" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="subtract_years" c:identifier="g_date_subtract_years">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_years" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_struct_tm" c:identifier="g_date_to_struct_tm">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tm" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="valid" c:identifier="g_date_valid">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="DateDMY" c:type="GDateDMY">
+      <member name="day" value="0" c:identifier="G_DATE_DAY"/>
+      <member name="month" value="1" c:identifier="G_DATE_MONTH"/>
+      <member name="year" value="2" c:identifier="G_DATE_YEAR"/>
+    </enumeration>
+    <enumeration name="DateMonth" c:type="GDateMonth">
+      <member name="bad_month" value="0" c:identifier="G_DATE_BAD_MONTH"/>
+      <member name="january" value="1" c:identifier="G_DATE_JANUARY"/>
+      <member name="february" value="2" c:identifier="G_DATE_FEBRUARY"/>
+      <member name="march" value="3" c:identifier="G_DATE_MARCH"/>
+      <member name="april" value="4" c:identifier="G_DATE_APRIL"/>
+      <member name="may" value="5" c:identifier="G_DATE_MAY"/>
+      <member name="june" value="6" c:identifier="G_DATE_JUNE"/>
+      <member name="july" value="7" c:identifier="G_DATE_JULY"/>
+      <member name="august" value="8" c:identifier="G_DATE_AUGUST"/>
+      <member name="september" value="9" c:identifier="G_DATE_SEPTEMBER"/>
+      <member name="october" value="10" c:identifier="G_DATE_OCTOBER"/>
+      <member name="november" value="11" c:identifier="G_DATE_NOVEMBER"/>
+      <member name="december" value="12" c:identifier="G_DATE_DECEMBER"/>
+    </enumeration>
+    <record name="DateTime" c:type="GDateTime" disguised="1" version="2.26">
+      <doc xml:whitespace="preserve">&lt;structname&gt;GDateTime&lt;/structname&gt; is an opaque structure whose members
+cannot be accessed directly.</doc>
+      <method name="add" c:identifier="g_date_time_add" introspectable="0">
+        <return-value>
+          <type name="DateTime" c:type="GDateTime*"/>
+        </return-value>
+        <parameters>
+          <parameter name="timespan" transfer-ownership="none">
+            <type name="TimeSpan" c:type="GTimeSpan"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_days"
+              c:identifier="g_date_time_add_days"
+              introspectable="0">
+        <return-value>
+          <type name="DateTime" c:type="GDateTime*"/>
+        </return-value>
+        <parameters>
+          <parameter name="days" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_full"
+              c:identifier="g_date_time_add_full"
+              introspectable="0">
+        <return-value>
+          <type name="DateTime" c:type="GDateTime*"/>
+        </return-value>
+        <parameters>
+          <parameter name="years" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="months" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="days" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="hours" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="minutes" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="seconds" transfer-ownership="none">
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_hours"
+              c:identifier="g_date_time_add_hours"
+              introspectable="0">
+        <return-value>
+          <type name="DateTime" c:type="GDateTime*"/>
+        </return-value>
+        <parameters>
+          <parameter name="hours" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_minutes"
+              c:identifier="g_date_time_add_minutes"
+              introspectable="0">
+        <return-value>
+          <type name="DateTime" c:type="GDateTime*"/>
+        </return-value>
+        <parameters>
+          <parameter name="minutes" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_months"
+              c:identifier="g_date_time_add_months"
+              introspectable="0">
+        <return-value>
+          <type name="DateTime" c:type="GDateTime*"/>
+        </return-value>
+        <parameters>
+          <parameter name="months" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_seconds"
+              c:identifier="g_date_time_add_seconds"
+              introspectable="0">
+        <return-value>
+          <type name="DateTime" c:type="GDateTime*"/>
+        </return-value>
+        <parameters>
+          <parameter name="seconds" transfer-ownership="none">
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_weeks"
+              c:identifier="g_date_time_add_weeks"
+              introspectable="0">
+        <return-value>
+          <type name="DateTime" c:type="GDateTime*"/>
+        </return-value>
+        <parameters>
+          <parameter name="weeks" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_years"
+              c:identifier="g_date_time_add_years"
+              introspectable="0">
+        <return-value>
+          <type name="DateTime" c:type="GDateTime*"/>
+        </return-value>
+        <parameters>
+          <parameter name="years" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="difference" c:identifier="g_date_time_difference">
+        <return-value transfer-ownership="none">
+          <type name="TimeSpan" c:type="GTimeSpan"/>
+        </return-value>
+        <parameters>
+          <parameter name="begin" transfer-ownership="none">
+            <type name="DateTime" c:type="GDateTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="format" c:identifier="g_date_time_format">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_day_of_month"
+              c:identifier="g_date_time_get_day_of_month">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_day_of_week"
+              c:identifier="g_date_time_get_day_of_week">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_day_of_year"
+              c:identifier="g_date_time_get_day_of_year">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_hour" c:identifier="g_date_time_get_hour">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_microsecond"
+              c:identifier="g_date_time_get_microsecond">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_minute" c:identifier="g_date_time_get_minute">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_month" c:identifier="g_date_time_get_month">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_second" c:identifier="g_date_time_get_second">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_seconds" c:identifier="g_date_time_get_seconds">
+        <return-value transfer-ownership="none">
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_timezone_abbreviation"
+              c:identifier="g_date_time_get_timezone_abbreviation">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_utc_offset" c:identifier="g_date_time_get_utc_offset">
+        <return-value transfer-ownership="none">
+          <type name="TimeSpan" c:type="GTimeSpan"/>
+        </return-value>
+      </method>
+      <method name="get_week_of_year"
+              c:identifier="g_date_time_get_week_of_year">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_year" c:identifier="g_date_time_get_year">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_ymd" c:identifier="g_date_time_get_ymd">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="year" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="month" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="day" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_daylight_savings"
+              c:identifier="g_date_time_is_daylight_savings">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="ref" c:identifier="g_date_time_ref" introspectable="0">
+        <return-value>
+          <type name="DateTime" c:type="GDateTime*"/>
+        </return-value>
+      </method>
+      <method name="to_local"
+              c:identifier="g_date_time_to_local"
+              introspectable="0">
+        <return-value>
+          <type name="DateTime" c:type="GDateTime*"/>
+        </return-value>
+      </method>
+      <method name="to_timeval" c:identifier="g_date_time_to_timeval">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tv" transfer-ownership="none">
+            <type name="TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_timezone"
+              c:identifier="g_date_time_to_timezone"
+              introspectable="0">
+        <return-value>
+          <type name="DateTime" c:type="GDateTime*"/>
+        </return-value>
+        <parameters>
+          <parameter name="tz" transfer-ownership="none">
+            <type name="TimeZone" c:type="GTimeZone*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_unix" c:identifier="g_date_time_to_unix">
+        <return-value transfer-ownership="none">
+          <type name="gint64" c:type="gint64"/>
+        </return-value>
+      </method>
+      <method name="to_utc"
+              c:identifier="g_date_time_to_utc"
+              introspectable="0">
+        <return-value>
+          <type name="DateTime" c:type="GDateTime*"/>
+        </return-value>
+      </method>
+      <method name="unref" c:identifier="g_date_time_unref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="DateWeekday" c:type="GDateWeekday">
+      <member name="bad_weekday" value="0" c:identifier="G_DATE_BAD_WEEKDAY"/>
+      <member name="monday" value="1" c:identifier="G_DATE_MONDAY"/>
+      <member name="tuesday" value="2" c:identifier="G_DATE_TUESDAY"/>
+      <member name="wednesday" value="3" c:identifier="G_DATE_WEDNESDAY"/>
+      <member name="thursday" value="4" c:identifier="G_DATE_THURSDAY"/>
+      <member name="friday" value="5" c:identifier="G_DATE_FRIDAY"/>
+      <member name="saturday" value="6" c:identifier="G_DATE_SATURDAY"/>
+      <member name="sunday" value="7" c:identifier="G_DATE_SUNDAY"/>
+    </enumeration>
+    <record name="DebugKey" c:type="GDebugKey">
+      <field name="key" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <callback name="DestroyNotify" c:type="GDestroyNotify">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="Dir" c:type="GDir" disguised="1">
+      <method name="close" c:identifier="g_dir_close">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="read_name" c:identifier="g_dir_read_name">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="rewind" c:identifier="g_dir_rewind">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <union name="DoubleIEEE754" c:type="GDoubleIEEE754">
+      <field name="v_double" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <record name="mpn" c:type="mpn">
+        <field name="mantissa_low" writable="1" bits="32">
+          <type name="guint" c:type="guint"/>
+        </field>
+        <field name="mantissa_high" writable="1" bits="20">
+          <type name="guint" c:type="guint"/>
+        </field>
+        <field name="biased_exponent" writable="1" bits="11">
+          <type name="guint" c:type="guint"/>
+        </field>
+        <field name="sign" writable="1" bits="1">
+          <type name="guint" c:type="guint"/>
+        </field>
+      </record>
+    </union>
+    <constant name="E" value="2.718282">
+      <type name="gdouble" c:type="gdouble"/>
+    </constant>
+    <callback name="EqualFunc" c:type="GEqualFunc">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="Error" c:type="GError">
+      <field name="domain" writable="1">
+        <type name="Quark" c:type="GQuark"/>
+      </field>
+      <field name="code" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="message" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <method name="copy" c:identifier="g_error_copy" introspectable="0">
+        <return-value>
+          <type name="Error" c:type="GError*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="g_error_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="matches" c:identifier="g_error_matches">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="domain" transfer-ownership="none">
+            <type name="Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="code" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="ErrorType" c:type="GErrorType">
+      <member name="unknown" value="0" c:identifier="G_ERR_UNKNOWN"/>
+      <member name="unexp_eof" value="1" c:identifier="G_ERR_UNEXP_EOF"/>
+      <member name="unexp_eof_in_string"
+              value="2"
+              c:identifier="G_ERR_UNEXP_EOF_IN_STRING"/>
+      <member name="unexp_eof_in_comment"
+              value="3"
+              c:identifier="G_ERR_UNEXP_EOF_IN_COMMENT"/>
+      <member name="non_digit_in_const"
+              value="4"
+              c:identifier="G_ERR_NON_DIGIT_IN_CONST"/>
+      <member name="digit_radix" value="5" c:identifier="G_ERR_DIGIT_RADIX"/>
+      <member name="float_radix" value="6" c:identifier="G_ERR_FLOAT_RADIX"/>
+      <member name="float_malformed"
+              value="7"
+              c:identifier="G_ERR_FLOAT_MALFORMED"/>
+    </enumeration>
+    <enumeration name="FileError"
+                 c:type="GFileError"
+                 glib:error-quark="g_file_error_quark">
+      <member name="exist" value="0" c:identifier="G_FILE_ERROR_EXIST"/>
+      <member name="isdir" value="1" c:identifier="G_FILE_ERROR_ISDIR"/>
+      <member name="acces" value="2" c:identifier="G_FILE_ERROR_ACCES"/>
+      <member name="nametoolong"
+              value="3"
+              c:identifier="G_FILE_ERROR_NAMETOOLONG"/>
+      <member name="noent" value="4" c:identifier="G_FILE_ERROR_NOENT"/>
+      <member name="notdir" value="5" c:identifier="G_FILE_ERROR_NOTDIR"/>
+      <member name="nxio" value="6" c:identifier="G_FILE_ERROR_NXIO"/>
+      <member name="nodev" value="7" c:identifier="G_FILE_ERROR_NODEV"/>
+      <member name="rofs" value="8" c:identifier="G_FILE_ERROR_ROFS"/>
+      <member name="txtbsy" value="9" c:identifier="G_FILE_ERROR_TXTBSY"/>
+      <member name="fault" value="10" c:identifier="G_FILE_ERROR_FAULT"/>
+      <member name="loop" value="11" c:identifier="G_FILE_ERROR_LOOP"/>
+      <member name="nospc" value="12" c:identifier="G_FILE_ERROR_NOSPC"/>
+      <member name="nomem" value="13" c:identifier="G_FILE_ERROR_NOMEM"/>
+      <member name="mfile" value="14" c:identifier="G_FILE_ERROR_MFILE"/>
+      <member name="nfile" value="15" c:identifier="G_FILE_ERROR_NFILE"/>
+      <member name="badf" value="16" c:identifier="G_FILE_ERROR_BADF"/>
+      <member name="inval" value="17" c:identifier="G_FILE_ERROR_INVAL"/>
+      <member name="pipe" value="18" c:identifier="G_FILE_ERROR_PIPE"/>
+      <member name="again" value="19" c:identifier="G_FILE_ERROR_AGAIN"/>
+      <member name="intr" value="20" c:identifier="G_FILE_ERROR_INTR"/>
+      <member name="io" value="21" c:identifier="G_FILE_ERROR_IO"/>
+      <member name="perm" value="22" c:identifier="G_FILE_ERROR_PERM"/>
+      <member name="nosys" value="23" c:identifier="G_FILE_ERROR_NOSYS"/>
+      <member name="failed" value="24" c:identifier="G_FILE_ERROR_FAILED"/>
+    </enumeration>
+    <bitfield name="FileTest" c:type="GFileTest">
+      <member name="is_regular"
+              value="1"
+              c:identifier="G_FILE_TEST_IS_REGULAR"/>
+      <member name="is_symlink"
+              value="2"
+              c:identifier="G_FILE_TEST_IS_SYMLINK"/>
+      <member name="is_dir" value="4" c:identifier="G_FILE_TEST_IS_DIR"/>
+      <member name="is_executable"
+              value="8"
+              c:identifier="G_FILE_TEST_IS_EXECUTABLE"/>
+      <member name="exists" value="16" c:identifier="G_FILE_TEST_EXISTS"/>
+    </bitfield>
+    <union name="FloatIEEE754" c:type="GFloatIEEE754">
+      <field name="v_float" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <record name="mpn" c:type="mpn">
+        <field name="mantissa" writable="1" bits="23">
+          <type name="guint" c:type="guint"/>
+        </field>
+        <field name="biased_exponent" writable="1" bits="8">
+          <type name="guint" c:type="guint"/>
+        </field>
+        <field name="sign" writable="1" bits="1">
+          <type name="guint" c:type="guint"/>
+        </field>
+      </record>
+    </union>
+    <callback name="FreeFunc" c:type="GFreeFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="Func" c:type="GFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="GINT16_FORMAT" value="hi">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="GINT16_MODIFIER" value="h">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="GINT32_FORMAT" value="i">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="GINT32_MODIFIER" value="">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="GINT64_FORMAT" value="li">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="GINT64_MODIFIER" value="l">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="GINTPTR_FORMAT" value="li">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="GINTPTR_MODIFIER" value="l">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="GNUC_FUNCTION" value="">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="GNUC_PRETTY_FUNCTION" value="">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="GSIZE_FORMAT" value="lu">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="GSIZE_MODIFIER" value="l">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="GSSIZE_FORMAT" value="li">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="GUINT16_FORMAT" value="hu">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="GUINT32_FORMAT" value="u">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="GUINT64_FORMAT" value="lu">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="GUINTPTR_FORMAT" value="lu">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="HAVE_GINT64" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="HAVE_GNUC_VARARGS" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="HAVE_GNUC_VISIBILITY" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="HAVE_GROWING_STACK" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="HAVE_INLINE" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="HAVE_ISO_VARARGS" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="HAVE___INLINE" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="HAVE___INLINE__" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <callback name="HFunc" c:type="GHFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="key" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="HOOK_FLAG_USER_SHIFT" value="4">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <callback name="HRFunc" c:type="GHRFunc">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="key" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="HashFunc" c:type="GHashFunc">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="key" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="HashTable" c:type="GHashTable" disguised="1">
+    </record>
+    <record name="HashTableIter" c:type="GHashTableIter">
+      <field name="dummy1" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="dummy2" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="dummy3" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="dummy4" writable="1">
+        <type name="gint" c:type="int"/>
+      </field>
+      <field name="dummy5" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="dummy6" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <method name="get_hash_table"
+              c:identifier="g_hash_table_iter_get_hash_table"
+              introspectable="0">
+        <return-value>
+          <type name="GLib.HashTable" c:type="GHashTable*">
+            <type name="gpointer" c:type="gpointer"/>
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="init" c:identifier="g_hash_table_iter_init">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hash_table" transfer-ownership="none">
+            <type name="GLib.HashTable" c:type="GHashTable*">
+              <type name="gpointer" c:type="gpointer"/>
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="next" c:identifier="g_hash_table_iter_next">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove" c:identifier="g_hash_table_iter_remove">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="steal" c:identifier="g_hash_table_iter_steal">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="Hook" c:type="GHook">
+      <field name="data" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="next" writable="1">
+        <type name="Hook" c:type="GHook*"/>
+      </field>
+      <field name="prev" writable="1">
+        <type name="Hook" c:type="GHook*"/>
+      </field>
+      <field name="ref_count" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="hook_id" writable="1">
+        <type name="gulong" c:type="gulong"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="func" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="destroy" writable="1">
+        <type name="DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <method name="compare_ids" c:identifier="g_hook_compare_ids">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="sibling" transfer-ownership="none">
+            <type name="Hook" c:type="GHook*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="HookCheckFunc" c:type="GHookCheckFunc">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="HookCheckMarshaller" c:type="GHookCheckMarshaller">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="hook" transfer-ownership="none">
+          <type name="Hook" c:type="GHook*"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="HookCompareFunc" c:type="GHookCompareFunc">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="new_hook" transfer-ownership="none">
+          <type name="Hook" c:type="GHook*"/>
+        </parameter>
+        <parameter name="sibling" transfer-ownership="none">
+          <type name="Hook" c:type="GHook*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="HookFinalizeFunc" c:type="GHookFinalizeFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="hook_list" transfer-ownership="none">
+          <type name="HookList" c:type="GHookList*"/>
+        </parameter>
+        <parameter name="hook" transfer-ownership="none">
+          <type name="Hook" c:type="GHook*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="HookFindFunc" c:type="GHookFindFunc">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="hook" transfer-ownership="none">
+          <type name="Hook" c:type="GHook*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="HookFlagMask" c:type="GHookFlagMask">
+      <member name="active" value="1" c:identifier="G_HOOK_FLAG_ACTIVE"/>
+      <member name="in_call" value="2" c:identifier="G_HOOK_FLAG_IN_CALL"/>
+      <member name="mask" value="15" c:identifier="G_HOOK_FLAG_MASK"/>
+    </bitfield>
+    <callback name="HookFunc" c:type="GHookFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="HookList" c:type="GHookList">
+      <field name="seq_id" writable="1">
+        <type name="gulong" c:type="gulong"/>
+      </field>
+      <field name="hook_size" writable="1" bits="16">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="is_setup" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="hooks" writable="1">
+        <type name="Hook" c:type="GHook*"/>
+      </field>
+      <field name="dummy3" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="finalize_hook" writable="1">
+        <type name="HookFinalizeFunc" c:type="GHookFinalizeFunc"/>
+      </field>
+      <field name="dummy" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+      <method name="clear" c:identifier="g_hook_list_clear">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="init" c:identifier="g_hook_list_init">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hook_size" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="invoke" c:identifier="g_hook_list_invoke">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="may_recurse" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="invoke_check" c:identifier="g_hook_list_invoke_check">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="may_recurse" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="marshal"
+              c:identifier="g_hook_list_marshal"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="may_recurse" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="marshaller" transfer-ownership="none" closure="2">
+            <type name="HookMarshaller" c:type="GHookMarshaller"/>
+          </parameter>
+          <parameter name="marshal_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="marshal_check"
+              c:identifier="g_hook_list_marshal_check"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="may_recurse" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="marshaller" transfer-ownership="none" closure="2">
+            <type name="HookCheckMarshaller" c:type="GHookCheckMarshaller"/>
+          </parameter>
+          <parameter name="marshal_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="HookMarshaller" c:type="GHookMarshaller">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="hook" transfer-ownership="none">
+          <type name="Hook" c:type="GHook*"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="IConv" c:type="GIConv" disguised="1">
+    </record>
+    <constant name="IEEE754_DOUBLE_BIAS" value="1023">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="IEEE754_FLOAT_BIAS" value="127">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="IOChannel" c:type="GIOChannel">
+      <field name="ref_count" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="funcs" writable="1">
+        <type name="IOFuncs" c:type="GIOFuncs*"/>
+      </field>
+      <field name="encoding" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="read_cd" writable="1">
+        <type name="IConv" c:type="GIConv"/>
+      </field>
+      <field name="write_cd" writable="1">
+        <type name="IConv" c:type="GIConv"/>
+      </field>
+      <field name="line_term" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="line_term_len" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="buf_size" writable="1">
+        <type name="gulong" c:type="gsize"/>
+      </field>
+      <field name="read_buf" writable="1">
+        <type name="String" c:type="GString*"/>
+      </field>
+      <field name="encoded_read_buf" writable="1">
+        <type name="String" c:type="GString*"/>
+      </field>
+      <field name="write_buf" writable="1">
+        <type name="String" c:type="GString*"/>
+      </field>
+      <field name="partial_write_buf" writable="1">
+        <array zero-terminated="0" c:type="gchar" fixed-size="6">
+          <type name="gchar" c:type="gchar"/>
+        </array>
+      </field>
+      <field name="use_buffer" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="do_encode" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="close_on_unref" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="is_readable" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="is_writeable" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="is_seekable" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="reserved1" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="reserved2" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <method name="close" c:identifier="g_io_channel_close">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="flush" c:identifier="g_io_channel_flush" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="IOStatus" c:type="GIOStatus"/>
+        </return-value>
+      </method>
+      <method name="get_buffer_condition"
+              c:identifier="g_io_channel_get_buffer_condition">
+        <return-value transfer-ownership="none">
+          <type name="IOCondition" c:type="GIOCondition"/>
+        </return-value>
+      </method>
+      <method name="get_buffer_size"
+              c:identifier="g_io_channel_get_buffer_size">
+        <return-value transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </return-value>
+      </method>
+      <method name="get_buffered" c:identifier="g_io_channel_get_buffered">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_close_on_unref"
+              c:identifier="g_io_channel_get_close_on_unref">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_encoding" c:identifier="g_io_channel_get_encoding">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_flags" c:identifier="g_io_channel_get_flags">
+        <return-value transfer-ownership="none">
+          <type name="IOFlags" c:type="GIOFlags"/>
+        </return-value>
+      </method>
+      <method name="get_line_term" c:identifier="g_io_channel_get_line_term">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init" c:identifier="g_io_channel_init">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="read" c:identifier="g_io_channel_read">
+        <return-value transfer-ownership="none">
+          <type name="IOError" c:type="GIOError"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="bytes_read" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_chars"
+              c:identifier="g_io_channel_read_chars"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="IOStatus" c:type="GIOStatus"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="bytes_read" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_line"
+              c:identifier="g_io_channel_read_line"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="IOStatus" c:type="GIOStatus"/>
+        </return-value>
+        <parameters>
+          <parameter name="str_return" transfer-ownership="none">
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+          <parameter name="terminator_pos" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_line_string"
+              c:identifier="g_io_channel_read_line_string"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="IOStatus" c:type="GIOStatus"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="String" c:type="GString*"/>
+          </parameter>
+          <parameter name="terminator_pos" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_to_end"
+              c:identifier="g_io_channel_read_to_end"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="IOStatus" c:type="GIOStatus"/>
+        </return-value>
+        <parameters>
+          <parameter name="str_return" transfer-ownership="none">
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_unichar"
+              c:identifier="g_io_channel_read_unichar"
+              introspectable="0"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="IOStatus" c:type="GIOStatus"/>
+        </return-value>
+        <parameters>
+          <parameter name="thechar" transfer-ownership="none">
+            <type name="gunichar" c:type="gunichar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref" c:identifier="g_io_channel_ref" introspectable="0">
+        <return-value>
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </return-value>
+      </method>
+      <method name="seek" c:identifier="g_io_channel_seek">
+        <return-value transfer-ownership="none">
+          <type name="IOError" c:type="GIOError"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="SeekType" c:type="GSeekType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="seek_position"
+              c:identifier="g_io_channel_seek_position"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="IOStatus" c:type="GIOStatus"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="SeekType" c:type="GSeekType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_buffer_size"
+              c:identifier="g_io_channel_set_buffer_size">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_buffered" c:identifier="g_io_channel_set_buffered">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffered" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_close_on_unref"
+              c:identifier="g_io_channel_set_close_on_unref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="do_close" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_encoding"
+              c:identifier="g_io_channel_set_encoding"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="IOStatus" c:type="GIOStatus"/>
+        </return-value>
+        <parameters>
+          <parameter name="encoding" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_flags"
+              c:identifier="g_io_channel_set_flags"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="IOStatus" c:type="GIOStatus"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="IOFlags" c:type="GIOFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_line_term" c:identifier="g_io_channel_set_line_term">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="line_term" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="shutdown" c:identifier="g_io_channel_shutdown" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="IOStatus" c:type="GIOStatus"/>
+        </return-value>
+        <parameters>
+          <parameter name="flush" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unix_get_fd" c:identifier="g_io_channel_unix_get_fd">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="unref" c:identifier="g_io_channel_unref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="write" c:identifier="g_io_channel_write">
+        <return-value transfer-ownership="none">
+          <type name="IOError" c:type="GIOError"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="bytes_written" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="write_chars"
+              c:identifier="g_io_channel_write_chars"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="IOStatus" c:type="GIOStatus"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+          <parameter name="bytes_written" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="write_unichar"
+              c:identifier="g_io_channel_write_unichar"
+              introspectable="0"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="IOStatus" c:type="GIOStatus"/>
+        </return-value>
+        <parameters>
+          <parameter name="thechar" transfer-ownership="none">
+            <type name="gunichar" c:type="gunichar"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="IOChannelError"
+                 c:type="GIOChannelError"
+                 glib:error-quark="g_io_channel_error_quark">
+      <member name="fbig" value="0" c:identifier="G_IO_CHANNEL_ERROR_FBIG"/>
+      <member name="inval" value="1" c:identifier="G_IO_CHANNEL_ERROR_INVAL"/>
+      <member name="io" value="2" c:identifier="G_IO_CHANNEL_ERROR_IO"/>
+      <member name="isdir" value="3" c:identifier="G_IO_CHANNEL_ERROR_ISDIR"/>
+      <member name="nospc" value="4" c:identifier="G_IO_CHANNEL_ERROR_NOSPC"/>
+      <member name="nxio" value="5" c:identifier="G_IO_CHANNEL_ERROR_NXIO"/>
+      <member name="overflow"
+              value="6"
+              c:identifier="G_IO_CHANNEL_ERROR_OVERFLOW"/>
+      <member name="pipe" value="7" c:identifier="G_IO_CHANNEL_ERROR_PIPE"/>
+      <member name="failed"
+              value="8"
+              c:identifier="G_IO_CHANNEL_ERROR_FAILED"/>
+    </enumeration>
+    <enumeration name="IOCondition" c:type="GIOCondition">
+      <member name="in" value="1" c:identifier="G_IO_IN"/>
+      <member name="out" value="4" c:identifier="G_IO_OUT"/>
+      <member name="pri" value="2" c:identifier="G_IO_PRI"/>
+      <member name="err" value="8" c:identifier="G_IO_ERR"/>
+      <member name="hup" value="16" c:identifier="G_IO_HUP"/>
+      <member name="nval" value="32" c:identifier="G_IO_NVAL"/>
+    </enumeration>
+    <enumeration name="IOError" c:type="GIOError">
+      <member name="none" value="0" c:identifier="G_IO_ERROR_NONE"/>
+      <member name="again" value="1" c:identifier="G_IO_ERROR_AGAIN"/>
+      <member name="inval" value="2" c:identifier="G_IO_ERROR_INVAL"/>
+      <member name="unknown" value="3" c:identifier="G_IO_ERROR_UNKNOWN"/>
+    </enumeration>
+    <bitfield name="IOFlags" c:type="GIOFlags">
+      <member name="append" value="1" c:identifier="G_IO_FLAG_APPEND"/>
+      <member name="nonblock" value="2" c:identifier="G_IO_FLAG_NONBLOCK"/>
+      <member name="is_readable"
+              value="4"
+              c:identifier="G_IO_FLAG_IS_READABLE"/>
+      <member name="is_writeable"
+              value="8"
+              c:identifier="G_IO_FLAG_IS_WRITEABLE"/>
+      <member name="is_seekable"
+              value="16"
+              c:identifier="G_IO_FLAG_IS_SEEKABLE"/>
+      <member name="mask" value="31" c:identifier="G_IO_FLAG_MASK"/>
+      <member name="get_mask" value="31" c:identifier="G_IO_FLAG_GET_MASK"/>
+      <member name="set_mask" value="3" c:identifier="G_IO_FLAG_SET_MASK"/>
+    </bitfield>
+    <callback name="IOFunc" c:type="GIOFunc">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="source" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+        <parameter name="condition" transfer-ownership="none">
+          <type name="IOCondition" c:type="GIOCondition"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none" closure="2">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="IOFuncs" c:type="GIOFuncs">
+      <field name="io_read">
+        <callback name="io_read" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="IOStatus" c:type="GIOStatus"/>
+          </return-value>
+          <parameters>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="IOChannel" c:type="GIOChannel*"/>
+            </parameter>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="count" transfer-ownership="none">
+              <type name="gulong" c:type="gsize"/>
+            </parameter>
+            <parameter name="bytes_read" transfer-ownership="none">
+              <type name="gulong" c:type="gsize*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="io_write">
+        <callback name="io_write" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="IOStatus" c:type="GIOStatus"/>
+          </return-value>
+          <parameters>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="IOChannel" c:type="GIOChannel*"/>
+            </parameter>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="count" transfer-ownership="none">
+              <type name="gulong" c:type="gsize"/>
+            </parameter>
+            <parameter name="bytes_written" transfer-ownership="none">
+              <type name="gulong" c:type="gsize*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="io_seek">
+        <callback name="io_seek" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="IOStatus" c:type="GIOStatus"/>
+          </return-value>
+          <parameters>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="IOChannel" c:type="GIOChannel*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <type name="gint64" c:type="gint64"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <type name="SeekType" c:type="GSeekType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="io_close">
+        <callback name="io_close" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="IOStatus" c:type="GIOStatus"/>
+          </return-value>
+          <parameters>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="IOChannel" c:type="GIOChannel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="io_create_watch" introspectable="0">
+        <callback name="io_create_watch" introspectable="0">
+          <return-value>
+            <type name="Source" c:type="GSource*"/>
+          </return-value>
+          <parameters>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="IOChannel" c:type="GIOChannel*"/>
+            </parameter>
+            <parameter name="condition" transfer-ownership="none">
+              <type name="IOCondition" c:type="GIOCondition"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="io_free">
+        <callback name="io_free">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="IOChannel" c:type="GIOChannel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="io_set_flags">
+        <callback name="io_set_flags" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="IOStatus" c:type="GIOStatus"/>
+          </return-value>
+          <parameters>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="IOChannel" c:type="GIOChannel*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="IOFlags" c:type="GIOFlags"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="io_get_flags">
+        <callback name="io_get_flags">
+          <return-value transfer-ownership="none">
+            <type name="IOFlags" c:type="GIOFlags"/>
+          </return-value>
+          <parameters>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="IOChannel" c:type="GIOChannel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="IOStatus" c:type="GIOStatus">
+      <member name="error" value="0" c:identifier="G_IO_STATUS_ERROR"/>
+      <member name="normal" value="1" c:identifier="G_IO_STATUS_NORMAL"/>
+      <member name="eof" value="2" c:identifier="G_IO_STATUS_EOF"/>
+      <member name="again" value="3" c:identifier="G_IO_STATUS_AGAIN"/>
+    </enumeration>
+    <constant name="KEY_FILE_DESKTOP_GROUP" value="Desktop Entry">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_CATEGORIES" value="Categories">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_COMMENT" value="Comment">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_EXEC" value="Exec">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_GENERIC_NAME" value="GenericName">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_HIDDEN" value="Hidden">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_ICON" value="Icon">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_MIME_TYPE" value="MimeType">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_NAME" value="Name">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_NOT_SHOW_IN" value="NotShowIn">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_NO_DISPLAY" value="NoDisplay">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_ONLY_SHOW_IN" value="OnlyShowIn">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_PATH" value="Path">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_STARTUP_NOTIFY" value="StartupNotify">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_STARTUP_WM_CLASS"
+              value="StartupWMClass">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_TERMINAL" value="Terminal">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_TRY_EXEC" value="TryExec">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_TYPE" value="Type">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_URL" value="URL">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_VERSION" value="Version">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_TYPE_APPLICATION" value="Application">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_TYPE_DIRECTORY" value="Directory">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_TYPE_LINK" value="Link">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <record name="KeyFile" c:type="GKeyFile" disguised="1">
+      <method name="free" c:identifier="g_key_file_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_boolean"
+              c:identifier="g_key_file_get_boolean"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean_list"
+              c:identifier="g_key_file_get_boolean_list"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_comment"
+              c:identifier="g_key_file_get_comment"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double"
+              c:identifier="g_key_file_get_double"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double_list"
+              c:identifier="g_key_file_get_double_list"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gdouble" c:type="gdouble*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_groups"
+              c:identifier="g_key_file_get_groups"
+              introspectable="0">
+        <return-value>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int64" c:identifier="g_key_file_get_int64" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gint64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_integer"
+              c:identifier="g_key_file_get_integer"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_integer_list"
+              c:identifier="g_key_file_get_integer_list"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_keys"
+              c:identifier="g_key_file_get_keys"
+              introspectable="0"
+              throws="1">
+        <return-value>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_locale_string"
+              c:identifier="g_key_file_get_locale_string"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="locale" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_locale_string_list"
+              c:identifier="g_key_file_get_locale_string_list"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <array length="3" c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="locale" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_start_group" c:identifier="g_key_file_get_start_group">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_string"
+              c:identifier="g_key_file_get_string"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string_list"
+              c:identifier="g_key_file_get_string_list"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <array length="2" c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint64"
+              c:identifier="g_key_file_get_uint64"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="guint64" c:type="guint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value" c:identifier="g_key_file_get_value" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_group" c:identifier="g_key_file_has_group">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_key" c:identifier="g_key_file_has_key" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_from_data"
+              c:identifier="g_key_file_load_from_data"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="KeyFileFlags" c:type="GKeyFileFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_from_data_dirs"
+              c:identifier="g_key_file_load_from_data_dirs"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="full_path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="KeyFileFlags" c:type="GKeyFileFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_from_dirs"
+              c:identifier="g_key_file_load_from_dirs"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="search_dirs" transfer-ownership="none">
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="full_path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="KeyFileFlags" c:type="GKeyFileFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_from_file"
+              c:identifier="g_key_file_load_from_file"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="KeyFileFlags" c:type="GKeyFileFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_comment"
+              c:identifier="g_key_file_remove_comment"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_group"
+              c:identifier="g_key_file_remove_group"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_key"
+              c:identifier="g_key_file_remove_key"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_boolean" c:identifier="g_key_file_set_boolean">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_boolean_list"
+              c:identifier="g_key_file_set_boolean_list">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="list" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_comment"
+              c:identifier="g_key_file_set_comment"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="comment" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_double" c:identifier="g_key_file_set_double">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_double_list" c:identifier="g_key_file_set_double_list">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="list" transfer-ownership="none">
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_int64" c:identifier="g_key_file_set_int64">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_integer" c:identifier="g_key_file_set_integer">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_integer_list"
+              c:identifier="g_key_file_set_integer_list">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="list" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_list_separator"
+              c:identifier="g_key_file_set_list_separator">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="separator" transfer-ownership="none">
+            <type name="gchar" c:type="gchar"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_locale_string"
+              c:identifier="g_key_file_set_locale_string">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="locale" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_locale_string_list"
+              c:identifier="g_key_file_set_locale_string_list">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="locale" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="list" transfer-ownership="none">
+            <array length="4" c:type="gchar*">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="length"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_string" c:identifier="g_key_file_set_string">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_string_list" c:identifier="g_key_file_set_string_list">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="list" transfer-ownership="none">
+            <array length="3" c:type="gchar*">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="length"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_uint64" c:identifier="g_key_file_set_uint64">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value" c:identifier="g_key_file_set_value">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_data" c:identifier="g_key_file_to_data" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="KeyFileError"
+                 c:type="GKeyFileError"
+                 glib:error-quark="g_key_file_error_quark">
+      <member name="unknown_encoding"
+              value="0"
+              c:identifier="G_KEY_FILE_ERROR_UNKNOWN_ENCODING"/>
+      <member name="parse" value="1" c:identifier="G_KEY_FILE_ERROR_PARSE"/>
+      <member name="not_found"
+              value="2"
+              c:identifier="G_KEY_FILE_ERROR_NOT_FOUND"/>
+      <member name="key_not_found"
+              value="3"
+              c:identifier="G_KEY_FILE_ERROR_KEY_NOT_FOUND"/>
+      <member name="group_not_found"
+              value="4"
+              c:identifier="G_KEY_FILE_ERROR_GROUP_NOT_FOUND"/>
+      <member name="invalid_value"
+              value="5"
+              c:identifier="G_KEY_FILE_ERROR_INVALID_VALUE"/>
+    </enumeration>
+    <bitfield name="KeyFileFlags" c:type="GKeyFileFlags">
+      <member name="none" value="0" c:identifier="G_KEY_FILE_NONE"/>
+      <member name="keep_comments"
+              value="1"
+              c:identifier="G_KEY_FILE_KEEP_COMMENTS"/>
+      <member name="keep_translations"
+              value="2"
+              c:identifier="G_KEY_FILE_KEEP_TRANSLATIONS"/>
+    </bitfield>
+    <constant name="LITTLE_ENDIAN" value="1234">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="LN10" value="2.302585">
+      <type name="gdouble" c:type="gdouble"/>
+    </constant>
+    <constant name="LN2" value="0.693147">
+      <type name="gdouble" c:type="gdouble"/>
+    </constant>
+    <constant name="LOG_2_BASE_10" value="0.301030">
+      <type name="gdouble" c:type="gdouble"/>
+    </constant>
+    <constant name="LOG_FATAL_MASK" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="LOG_LEVEL_USER_SHIFT" value="8">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="List" c:type="GList">
+      <field name="data" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="next" writable="1">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="prev" writable="1">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+    </record>
+    <callback name="LogFunc" c:type="GLogFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="log_domain" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="log_level" transfer-ownership="none">
+          <type name="LogLevelFlags" c:type="GLogLevelFlags"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="LogLevelFlags" c:type="GLogLevelFlags">
+      <member name="flag_recursion"
+              value="1"
+              c:identifier="G_LOG_FLAG_RECURSION"/>
+      <member name="flag_fatal" value="2" c:identifier="G_LOG_FLAG_FATAL"/>
+      <member name="level_error" value="4" c:identifier="G_LOG_LEVEL_ERROR"/>
+      <member name="level_critical"
+              value="8"
+              c:identifier="G_LOG_LEVEL_CRITICAL"/>
+      <member name="level_warning"
+              value="16"
+              c:identifier="G_LOG_LEVEL_WARNING"/>
+      <member name="level_message"
+              value="32"
+              c:identifier="G_LOG_LEVEL_MESSAGE"/>
+      <member name="level_info" value="64" c:identifier="G_LOG_LEVEL_INFO"/>
+      <member name="level_debug" value="128" c:identifier="G_LOG_LEVEL_DEBUG"/>
+      <member name="level_mask" value="-4" c:identifier="G_LOG_LEVEL_MASK"/>
+    </bitfield>
+    <constant name="MAJOR_VERSION" value="2">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MICRO_VERSION" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MINOR_VERSION" value="27">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MODULE_SUFFIX" value="so">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="MUTEX_DEBUG_MAGIC" value="-119436585">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="MainContext" c:type="GMainContext" disguised="1">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;GMainContext&lt;/structname&gt; struct is an opaque data
+type representing a set of sources to be handled in a main loop.</doc>
+      <method name="acquire" c:identifier="g_main_context_acquire">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="add_poll" c:identifier="g_main_context_add_poll">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GPollFD*"/>
+          </parameter>
+          <parameter name="priority" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="check" c:identifier="g_main_context_check">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="max_priority" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="fds" transfer-ownership="none">
+            <type name="PollFD" c:type="GPollFD*"/>
+          </parameter>
+          <parameter name="n_fds" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dispatch" c:identifier="g_main_context_dispatch">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="find_source_by_funcs_user_data"
+              c:identifier="g_main_context_find_source_by_funcs_user_data"
+              introspectable="0">
+        <return-value>
+          <type name="Source" c:type="GSource*"/>
+        </return-value>
+        <parameters>
+          <parameter name="funcs" transfer-ownership="none">
+            <type name="SourceFuncs" c:type="GSourceFuncs*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_source_by_id"
+              c:identifier="g_main_context_find_source_by_id"
+              introspectable="0">
+        <return-value>
+          <type name="Source" c:type="GSource*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_id" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_source_by_user_data"
+              c:identifier="g_main_context_find_source_by_user_data"
+              introspectable="0">
+        <return-value>
+          <type name="Source" c:type="GSource*"/>
+        </return-value>
+        <parameters>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_poll_func"
+              c:identifier="g_main_context_get_poll_func"
+              introspectable="0">
+        <return-value>
+          <type name="PollFunc" c:type="GPollFunc"/>
+        </return-value>
+      </method>
+      <method name="is_owner" c:identifier="g_main_context_is_owner">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="iteration" c:identifier="g_main_context_iteration">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="may_block" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pending" c:identifier="g_main_context_pending">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="pop_thread_default"
+              c:identifier="g_main_context_pop_thread_default">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="prepare" c:identifier="g_main_context_prepare">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="priority" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push_thread_default"
+              c:identifier="g_main_context_push_thread_default">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="query" c:identifier="g_main_context_query">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="max_priority" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="timeout_" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="fds" transfer-ownership="none">
+            <type name="PollFD" c:type="GPollFD*"/>
+          </parameter>
+          <parameter name="n_fds" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref" c:identifier="g_main_context_ref" introspectable="0">
+        <return-value>
+          <type name="MainContext" c:type="GMainContext*"/>
+        </return-value>
+      </method>
+      <method name="release" c:identifier="g_main_context_release">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="remove_poll" c:identifier="g_main_context_remove_poll">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_poll_func"
+              c:identifier="g_main_context_set_poll_func"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none">
+            <type name="PollFunc" c:type="GPollFunc"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unref" c:identifier="g_main_context_unref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="wait" c:identifier="g_main_context_wait">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cond" transfer-ownership="none">
+            <type name="Cond" c:type="GCond*"/>
+          </parameter>
+          <parameter name="mutex" transfer-ownership="none">
+            <type name="Mutex" c:type="GMutex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wakeup" c:identifier="g_main_context_wakeup">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="MainLoop" c:type="GMainLoop" disguised="1">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;GMainLoop&lt;/structname&gt; struct is an opaque data type
+representing the main event loop of a GLib or GTK+ application.</doc>
+      <method name="get_context"
+              c:identifier="g_main_loop_get_context"
+              introspectable="0">
+        <return-value>
+          <type name="MainContext" c:type="GMainContext*"/>
+        </return-value>
+      </method>
+      <method name="is_running" c:identifier="g_main_loop_is_running">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="quit" c:identifier="g_main_loop_quit">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="ref" c:identifier="g_main_loop_ref" introspectable="0">
+        <return-value>
+          <type name="MainLoop" c:type="GMainLoop*"/>
+        </return-value>
+      </method>
+      <method name="run" c:identifier="g_main_loop_run">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unref" c:identifier="g_main_loop_unref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="MappedFile" c:type="GMappedFile" disguised="1">
+      <method name="free" c:identifier="g_mapped_file_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_contents" c:identifier="g_mapped_file_get_contents">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_length" c:identifier="g_mapped_file_get_length">
+        <return-value transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </return-value>
+      </method>
+      <method name="ref" c:identifier="g_mapped_file_ref" introspectable="0">
+        <return-value>
+          <type name="MappedFile" c:type="GMappedFile*"/>
+        </return-value>
+      </method>
+      <method name="unref" c:identifier="g_mapped_file_unref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <bitfield name="MarkupCollectType" c:type="GMarkupCollectType">
+      <member name="invalid"
+              value="0"
+              c:identifier="G_MARKUP_COLLECT_INVALID"/>
+      <member name="string" value="1" c:identifier="G_MARKUP_COLLECT_STRING"/>
+      <member name="strdup" value="2" c:identifier="G_MARKUP_COLLECT_STRDUP"/>
+      <member name="boolean"
+              value="3"
+              c:identifier="G_MARKUP_COLLECT_BOOLEAN"/>
+      <member name="tristate"
+              value="4"
+              c:identifier="G_MARKUP_COLLECT_TRISTATE"/>
+      <member name="optional"
+              value="65536"
+              c:identifier="G_MARKUP_COLLECT_OPTIONAL"/>
+    </bitfield>
+    <enumeration name="MarkupError"
+                 c:type="GMarkupError"
+                 glib:error-quark="g_markup_error_quark">
+      <member name="bad_utf8"
+              value="0"
+              c:identifier="G_MARKUP_ERROR_BAD_UTF8"/>
+      <member name="empty" value="1" c:identifier="G_MARKUP_ERROR_EMPTY"/>
+      <member name="parse" value="2" c:identifier="G_MARKUP_ERROR_PARSE"/>
+      <member name="unknown_element"
+              value="3"
+              c:identifier="G_MARKUP_ERROR_UNKNOWN_ELEMENT"/>
+      <member name="unknown_attribute"
+              value="4"
+              c:identifier="G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE"/>
+      <member name="invalid_content"
+              value="5"
+              c:identifier="G_MARKUP_ERROR_INVALID_CONTENT"/>
+      <member name="missing_attribute"
+              value="6"
+              c:identifier="G_MARKUP_ERROR_MISSING_ATTRIBUTE"/>
+    </enumeration>
+    <record name="MarkupParseContext"
+            c:type="GMarkupParseContext"
+            disguised="1">
+      <method name="end_parse"
+              c:identifier="g_markup_parse_context_end_parse"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="g_markup_parse_context_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_element"
+              c:identifier="g_markup_parse_context_get_element">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_element_stack"
+              c:identifier="g_markup_parse_context_get_element_stack">
+        <return-value transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_position"
+              c:identifier="g_markup_parse_context_get_position">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="line_number" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="char_number" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_user_data"
+              c:identifier="g_markup_parse_context_get_user_data"
+              introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="parse"
+              c:identifier="g_markup_parse_context_parse"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="text_len" transfer-ownership="none">
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pop"
+              c:identifier="g_markup_parse_context_pop"
+              introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="push" c:identifier="g_markup_parse_context_push">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parser" transfer-ownership="none">
+            <type name="MarkupParser" c:type="GMarkupParser*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <bitfield name="MarkupParseFlags" c:type="GMarkupParseFlags">
+      <member name="do_not_use_this_unsupported_flag"
+              value="1"
+              c:identifier="G_MARKUP_DO_NOT_USE_THIS_UNSUPPORTED_FLAG"/>
+      <member name="treat_cdata_as_text"
+              value="2"
+              c:identifier="G_MARKUP_TREAT_CDATA_AS_TEXT"/>
+      <member name="prefix_error_position"
+              value="4"
+              c:identifier="G_MARKUP_PREFIX_ERROR_POSITION"/>
+    </bitfield>
+    <record name="MarkupParser" c:type="GMarkupParser">
+      <field name="start_element">
+        <callback name="start_element" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="MarkupParseContext" c:type="GMarkupParseContext*"/>
+            </parameter>
+            <parameter name="element_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="attribute_names" transfer-ownership="none">
+              <type name="utf8" c:type="gchar**"/>
+            </parameter>
+            <parameter name="attribute_values" transfer-ownership="none">
+              <type name="utf8" c:type="gchar**"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="end_element">
+        <callback name="end_element" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="MarkupParseContext" c:type="GMarkupParseContext*"/>
+            </parameter>
+            <parameter name="element_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="2">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="text">
+        <callback name="text" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="MarkupParseContext" c:type="GMarkupParseContext*"/>
+            </parameter>
+            <parameter name="text" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="text_len" transfer-ownership="none">
+              <type name="gulong" c:type="gsize"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="3">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="passthrough">
+        <callback name="passthrough" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="MarkupParseContext" c:type="GMarkupParseContext*"/>
+            </parameter>
+            <parameter name="passthrough_text" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="text_len" transfer-ownership="none">
+              <type name="gulong" c:type="gsize"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="3">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="error">
+        <callback name="error">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="MarkupParseContext" c:type="GMarkupParseContext*"/>
+            </parameter>
+            <parameter name="error" transfer-ownership="none">
+              <type name="Error" c:type="GError*"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="2">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="MatchInfo" c:type="GMatchInfo" disguised="1">
+      <method name="expand_references"
+              c:identifier="g_match_info_expand_references"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="string_to_expand" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fetch" c:identifier="g_match_info_fetch">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="match_num" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fetch_all"
+              c:identifier="g_match_info_fetch_all"
+              introspectable="0">
+        <return-value>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="fetch_named" c:identifier="g_match_info_fetch_named">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fetch_named_pos"
+              c:identifier="g_match_info_fetch_named_pos">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fetch_pos" c:identifier="g_match_info_fetch_pos">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="match_num" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="g_match_info_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_match_count"
+              c:identifier="g_match_info_get_match_count">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_regex"
+              c:identifier="g_match_info_get_regex"
+              introspectable="0">
+        <return-value>
+          <type name="Regex" c:type="GRegex*"/>
+        </return-value>
+      </method>
+      <method name="get_string" c:identifier="g_match_info_get_string">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="is_partial_match"
+              c:identifier="g_match_info_is_partial_match">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="matches" c:identifier="g_match_info_matches">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="next" c:identifier="g_match_info_next" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="MemChunk" c:type="GMemChunk" disguised="1">
+      <method name="alloc" c:identifier="g_mem_chunk_alloc" introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="alloc0"
+              c:identifier="g_mem_chunk_alloc0"
+              introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="clean" c:identifier="g_mem_chunk_clean">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="destroy" c:identifier="g_mem_chunk_destroy">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="g_mem_chunk_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mem" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="print" c:identifier="g_mem_chunk_print">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="reset" c:identifier="g_mem_chunk_reset">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="MemVTable" c:type="GMemVTable">
+      <doc xml:whitespace="preserve">A set of functions used to perform memory allocation. The same #GMemVTable must
+be used for all allocations in the same program; a call to g_mem_set_vtable(),
+if it exists, should be prior to any use of GLib.</doc>
+      <field name="malloc" introspectable="0">
+        <callback name="malloc" introspectable="0">
+          <return-value>
+            <type name="gpointer" c:type="gpointer"/>
+          </return-value>
+          <parameters>
+            <parameter name="n_bytes" transfer-ownership="none">
+              <type name="gulong" c:type="gsize"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="realloc" introspectable="0">
+        <callback name="realloc" introspectable="0">
+          <return-value>
+            <type name="gpointer" c:type="gpointer"/>
+          </return-value>
+          <parameters>
+            <parameter name="mem" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+            <parameter name="n_bytes" transfer-ownership="none">
+              <type name="gulong" c:type="gsize"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="free">
+        <callback name="free">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mem" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="calloc" introspectable="0">
+        <callback name="calloc" introspectable="0">
+          <return-value>
+            <type name="gpointer" c:type="gpointer"/>
+          </return-value>
+          <parameters>
+            <parameter name="n_blocks" transfer-ownership="none">
+              <type name="gulong" c:type="gsize"/>
+            </parameter>
+            <parameter name="n_block_bytes" transfer-ownership="none">
+              <type name="gulong" c:type="gsize"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="try_malloc" introspectable="0">
+        <callback name="try_malloc" introspectable="0">
+          <return-value>
+            <type name="gpointer" c:type="gpointer"/>
+          </return-value>
+          <parameters>
+            <parameter name="n_bytes" transfer-ownership="none">
+              <type name="gulong" c:type="gsize"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="try_realloc" introspectable="0">
+        <callback name="try_realloc" introspectable="0">
+          <return-value>
+            <type name="gpointer" c:type="gpointer"/>
+          </return-value>
+          <parameters>
+            <parameter name="mem" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+            <parameter name="n_bytes" transfer-ownership="none">
+              <type name="gulong" c:type="gsize"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="Mutex" c:type="GMutex" disguised="1">
+    </record>
+    <record name="Node" c:type="GNode">
+      <field name="data" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="next" writable="1">
+        <type name="Node" c:type="GNode*"/>
+      </field>
+      <field name="prev" writable="1">
+        <type name="Node" c:type="GNode*"/>
+      </field>
+      <field name="parent" writable="1">
+        <type name="Node" c:type="GNode*"/>
+      </field>
+      <field name="children" writable="1">
+        <type name="Node" c:type="GNode*"/>
+      </field>
+      <method name="child_index" c:identifier="g_node_child_index">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_position" c:identifier="g_node_child_position">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Node" c:type="GNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="children_foreach"
+              c:identifier="g_node_children_foreach"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="TraverseFlags" c:type="GTraverseFlags"/>
+          </parameter>
+          <parameter name="func" transfer-ownership="none" closure="2">
+            <type name="NodeForeachFunc" c:type="GNodeForeachFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="g_node_copy" introspectable="0">
+        <return-value>
+          <type name="Node" c:type="GNode*"/>
+        </return-value>
+      </method>
+      <method name="copy_deep"
+              c:identifier="g_node_copy_deep"
+              introspectable="0">
+        <return-value>
+          <type name="Node" c:type="GNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="copy_func" transfer-ownership="none" closure="1">
+            <type name="CopyFunc" c:type="GCopyFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="depth" c:identifier="g_node_depth">
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="destroy" c:identifier="g_node_destroy">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="find" c:identifier="g_node_find" introspectable="0">
+        <return-value>
+          <type name="Node" c:type="GNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="order" transfer-ownership="none">
+            <type name="TraverseType" c:type="GTraverseType"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="TraverseFlags" c:type="GTraverseFlags"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_child"
+              c:identifier="g_node_find_child"
+              introspectable="0">
+        <return-value>
+          <type name="Node" c:type="GNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="TraverseFlags" c:type="GTraverseFlags"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="first_sibling"
+              c:identifier="g_node_first_sibling"
+              introspectable="0">
+        <return-value>
+          <type name="Node" c:type="GNode*"/>
+        </return-value>
+      </method>
+      <method name="get_root"
+              c:identifier="g_node_get_root"
+              introspectable="0">
+        <return-value>
+          <type name="Node" c:type="GNode*"/>
+        </return-value>
+      </method>
+      <method name="insert" c:identifier="g_node_insert" introspectable="0">
+        <return-value>
+          <type name="Node" c:type="GNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <type name="Node" c:type="GNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_after"
+              c:identifier="g_node_insert_after"
+              introspectable="0">
+        <return-value>
+          <type name="Node" c:type="GNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="sibling" transfer-ownership="none">
+            <type name="Node" c:type="GNode*"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <type name="Node" c:type="GNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_before"
+              c:identifier="g_node_insert_before"
+              introspectable="0">
+        <return-value>
+          <type name="Node" c:type="GNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="sibling" transfer-ownership="none">
+            <type name="Node" c:type="GNode*"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <type name="Node" c:type="GNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_ancestor" c:identifier="g_node_is_ancestor">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="descendant" transfer-ownership="none">
+            <type name="Node" c:type="GNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="last_child"
+              c:identifier="g_node_last_child"
+              introspectable="0">
+        <return-value>
+          <type name="Node" c:type="GNode*"/>
+        </return-value>
+      </method>
+      <method name="last_sibling"
+              c:identifier="g_node_last_sibling"
+              introspectable="0">
+        <return-value>
+          <type name="Node" c:type="GNode*"/>
+        </return-value>
+      </method>
+      <method name="max_height" c:identifier="g_node_max_height">
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="n_children" c:identifier="g_node_n_children">
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="n_nodes" c:identifier="g_node_n_nodes">
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="TraverseFlags" c:type="GTraverseFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="nth_child"
+              c:identifier="g_node_nth_child"
+              introspectable="0">
+        <return-value>
+          <type name="Node" c:type="GNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend" c:identifier="g_node_prepend" introspectable="0">
+        <return-value>
+          <type name="Node" c:type="GNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="Node" c:type="GNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reverse_children" c:identifier="g_node_reverse_children">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="traverse"
+              c:identifier="g_node_traverse"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="order" transfer-ownership="none">
+            <type name="TraverseType" c:type="GTraverseType"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="TraverseFlags" c:type="GTraverseFlags"/>
+          </parameter>
+          <parameter name="max_depth" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="func" transfer-ownership="none" closure="4">
+            <type name="NodeTraverseFunc" c:type="GNodeTraverseFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unlink" c:identifier="g_node_unlink">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <callback name="NodeForeachFunc" c:type="GNodeForeachFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="node" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="NodeTraverseFunc" c:type="GNodeTraverseFunc">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="node" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="NormalizeMode" c:type="GNormalizeMode">
+      <member name="default" value="0" c:identifier="G_NORMALIZE_DEFAULT"/>
+      <member name="nfd" value="0" c:identifier="G_NORMALIZE_NFD"/>
+      <member name="default_compose"
+              value="1"
+              c:identifier="G_NORMALIZE_DEFAULT_COMPOSE"/>
+      <member name="nfc" value="1" c:identifier="G_NORMALIZE_NFC"/>
+      <member name="all" value="2" c:identifier="G_NORMALIZE_ALL"/>
+      <member name="nfkd" value="2" c:identifier="G_NORMALIZE_NFKD"/>
+      <member name="all_compose"
+              value="3"
+              c:identifier="G_NORMALIZE_ALL_COMPOSE"/>
+      <member name="nfkc" value="3" c:identifier="G_NORMALIZE_NFKC"/>
+    </enumeration>
+    <constant name="OPTION_REMAINING" value="">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <record name="Once" c:type="GOnce">
+      <field name="status" writable="1">
+        <type name="OnceStatus" c:type="GOnceStatus"/>
+      </field>
+      <field name="retval" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <method name="impl" c:identifier="g_once_impl" introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none">
+            <type name="ThreadFunc" c:type="GThreadFunc"/>
+          </parameter>
+          <parameter name="arg" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="OnceStatus" c:type="GOnceStatus">
+      <member name="notcalled"
+              value="0"
+              c:identifier="G_ONCE_STATUS_NOTCALLED"/>
+      <member name="progress" value="1" c:identifier="G_ONCE_STATUS_PROGRESS"/>
+      <member name="ready" value="2" c:identifier="G_ONCE_STATUS_READY"/>
+    </enumeration>
+    <enumeration name="OptionArg" c:type="GOptionArg">
+      <doc xml:whitespace="preserve">The #GOptionArg enum values determine which type of extra argument the
+options expect to find. If an option expects an extra argument, it
+can be specified in several ways; with a short option:
+&lt;option&gt;-x arg&lt;/option&gt;, with a long option: &lt;option&gt;--name arg&lt;/option&gt;</doc>
+      <member name="none" value="0" c:identifier="G_OPTION_ARG_NONE"/>
+      <member name="string" value="1" c:identifier="G_OPTION_ARG_STRING"/>
+      <member name="int" value="2" c:identifier="G_OPTION_ARG_INT"/>
+      <member name="callback" value="3" c:identifier="G_OPTION_ARG_CALLBACK"/>
+      <member name="filename" value="4" c:identifier="G_OPTION_ARG_FILENAME"/>
+      <member name="string_array"
+              value="5"
+              c:identifier="G_OPTION_ARG_STRING_ARRAY"/>
+      <member name="filename_array"
+              value="6"
+              c:identifier="G_OPTION_ARG_FILENAME_ARRAY"/>
+      <member name="double" value="7" c:identifier="G_OPTION_ARG_DOUBLE"/>
+      <member name="int64" value="8" c:identifier="G_OPTION_ARG_INT64"/>
+    </enumeration>
+    <callback name="OptionArgFunc" c:type="GOptionArgFunc" throws="1">
+      <doc xml:whitespace="preserve">The type of function to be passed as callback for %G_OPTION_ARG_CALLBACK
+options.
+occurred, in which case @error should be set with g_set_error()</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the option was successfully parsed, %FALSE if an error</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="option_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name of the option being parsed. This will be either a single dash followed by a single letter (for a short name) or two dashes followed by a long option name.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The value to be parsed.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">User data added to the #GOptionGroup containing the option when it was created with g_option_group_new()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="OptionContext" c:type="GOptionContext" disguised="1">
+      <doc xml:whitespace="preserve">A &lt;structname&gt;GOptionContext&lt;/structname&gt; struct defines which options
+are accepted by the commandline option parser. The struct has only private 
+fields and should not be directly accessed.</doc>
+      <method name="add_group" c:identifier="g_option_context_add_group">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="OptionGroup" c:type="GOptionGroup*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_main_entries"
+              c:identifier="g_option_context_add_main_entries">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entries" transfer-ownership="none">
+            <type name="OptionEntry" c:type="GOptionEntry*"/>
+          </parameter>
+          <parameter name="translation_domain" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="g_option_context_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_description"
+              c:identifier="g_option_context_get_description">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_help" c:identifier="g_option_context_get_help">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="main_help" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="group" transfer-ownership="none">
+            <type name="OptionGroup" c:type="GOptionGroup*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_help_enabled"
+              c:identifier="g_option_context_get_help_enabled">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_ignore_unknown_options"
+              c:identifier="g_option_context_get_ignore_unknown_options">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_main_group"
+              c:identifier="g_option_context_get_main_group"
+              introspectable="0">
+        <return-value>
+          <type name="OptionGroup" c:type="GOptionGroup*"/>
+        </return-value>
+      </method>
+      <method name="get_summary" c:identifier="g_option_context_get_summary">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="parse" c:identifier="g_option_context_parse" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="argc"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="argv"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <array length="0" c:type="gchar***">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_description"
+              c:identifier="g_option_context_set_description">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="description" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_help_enabled"
+              c:identifier="g_option_context_set_help_enabled">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="help_enabled" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_ignore_unknown_options"
+              c:identifier="g_option_context_set_ignore_unknown_options">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ignore_unknown" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_main_group"
+              c:identifier="g_option_context_set_main_group">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="OptionGroup" c:type="GOptionGroup*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_summary" c:identifier="g_option_context_set_summary">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="summary" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_translate_func"
+              c:identifier="g_option_context_set_translate_func">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <type name="TranslateFunc" c:type="GTranslateFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy_notify"
+                     transfer-ownership="none"
+                     scope="async">
+            <type name="DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_translation_domain"
+              c:identifier="g_option_context_set_translation_domain">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="domain" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="OptionEntry" c:type="GOptionEntry">
+      <doc xml:whitespace="preserve">A &lt;structname&gt;GOptionEntry&lt;/structname&gt; defines a single option.
+To have an effect, they must be added to a #GOptionGroup with
+g_option_context_add_main_entries() or g_option_group_add_entries().</doc>
+      <field name="long_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="short_name" writable="1">
+        <type name="gchar" c:type="gchar"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="arg" writable="1">
+        <type name="OptionArg" c:type="GOptionArg"/>
+      </field>
+      <field name="arg_data" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="arg_description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </record>
+    <enumeration name="OptionError"
+                 c:type="GOptionError"
+                 glib:error-quark="g_option_error_quark">
+      <doc xml:whitespace="preserve">Error codes returned by option parsing.</doc>
+      <member name="unknown_option"
+              value="0"
+              c:identifier="G_OPTION_ERROR_UNKNOWN_OPTION"/>
+      <member name="bad_value"
+              value="1"
+              c:identifier="G_OPTION_ERROR_BAD_VALUE"/>
+      <member name="failed" value="2" c:identifier="G_OPTION_ERROR_FAILED"/>
+    </enumeration>
+    <callback name="OptionErrorFunc" c:type="GOptionErrorFunc" throws="1">
+      <doc xml:whitespace="preserve">The type of function to be used as callback when a parse error occurs.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The active #GOptionContext</doc>
+          <type name="OptionContext" c:type="GOptionContext*"/>
+        </parameter>
+        <parameter name="group" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The group to which the function belongs</doc>
+          <type name="OptionGroup" c:type="GOptionGroup*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">User data added to the #GOptionGroup containing the option when it was created with g_option_group_new()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="OptionFlags" c:type="GOptionFlags">
+      <doc xml:whitespace="preserve">Flags which modify individual options.</doc>
+      <member name="hidden" value="1" c:identifier="G_OPTION_FLAG_HIDDEN"/>
+      <member name="in_main" value="2" c:identifier="G_OPTION_FLAG_IN_MAIN"/>
+      <member name="reverse" value="4" c:identifier="G_OPTION_FLAG_REVERSE"/>
+      <member name="no_arg" value="8" c:identifier="G_OPTION_FLAG_NO_ARG"/>
+      <member name="filename"
+              value="16"
+              c:identifier="G_OPTION_FLAG_FILENAME"/>
+      <member name="optional_arg"
+              value="32"
+              c:identifier="G_OPTION_FLAG_OPTIONAL_ARG"/>
+      <member name="noalias" value="64" c:identifier="G_OPTION_FLAG_NOALIAS"/>
+    </bitfield>
+    <record name="OptionGroup" c:type="GOptionGroup" disguised="1">
+      <doc xml:whitespace="preserve">A &lt;structname&gt;GOptionGroup&lt;/structname&gt; struct defines the options in a single
+group. The struct has only private fields and should not be directly accessed.
+All options in a group share the same translation function. Libraries which
+need to parse commandline options are expected to provide a function for
+getting a &lt;structname&gt;GOptionGroup&lt;/structname&gt; holding their options, which
+the application can then add to its #GOptionContext.</doc>
+      <method name="add_entries" c:identifier="g_option_group_add_entries">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entries" transfer-ownership="none">
+            <type name="OptionEntry" c:type="GOptionEntry*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="g_option_group_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_error_hook"
+              c:identifier="g_option_group_set_error_hook"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="error_func" transfer-ownership="none">
+            <type name="OptionErrorFunc" c:type="GOptionErrorFunc"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_parse_hooks"
+              c:identifier="g_option_group_set_parse_hooks"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pre_parse_func" transfer-ownership="none">
+            <type name="OptionParseFunc" c:type="GOptionParseFunc"/>
+          </parameter>
+          <parameter name="post_parse_func" transfer-ownership="none">
+            <type name="OptionParseFunc" c:type="GOptionParseFunc"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_translate_func"
+              c:identifier="g_option_group_set_translate_func">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <type name="TranslateFunc" c:type="GTranslateFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy_notify"
+                     transfer-ownership="none"
+                     scope="async">
+            <type name="DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_translation_domain"
+              c:identifier="g_option_group_set_translation_domain">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="domain" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="OptionParseFunc" c:type="GOptionParseFunc" throws="1">
+      <doc xml:whitespace="preserve">The type of function that can be called before and after parsing. 
+occurred, in which case @error should be set with g_set_error()</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the function completed successfully, %FALSE if an error</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The active #GOptionContext</doc>
+          <type name="OptionContext" c:type="GOptionContext*"/>
+        </parameter>
+        <parameter name="group" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The group to which the function belongs</doc>
+          <type name="OptionGroup" c:type="GOptionGroup*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">User data added to the #GOptionGroup containing the option when it was created with g_option_group_new()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="PDP_ENDIAN" value="3412">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PI" value="3.141593">
+      <type name="gdouble" c:type="gdouble"/>
+    </constant>
+    <constant name="PI_2" value="1.570796">
+      <type name="gdouble" c:type="gdouble"/>
+    </constant>
+    <constant name="PI_4" value="0.785398">
+      <type name="gdouble" c:type="gdouble"/>
+    </constant>
+    <constant name="POLLFD_FORMAT" value="%#I64x">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRIORITY_DEFAULT" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PRIORITY_DEFAULT_IDLE" value="200">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PRIORITY_HIGH" value="-100">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PRIORITY_HIGH_IDLE" value="100">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PRIORITY_LOW" value="300">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="PatternSpec" c:type="GPatternSpec" disguised="1">
+      <method name="equal" c:identifier="g_pattern_spec_equal">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec2" transfer-ownership="none">
+            <type name="PatternSpec" c:type="GPatternSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="g_pattern_spec_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="PollFD" c:type="GPollFD">
+      <field name="fd" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="events" writable="1">
+        <type name="gushort" c:type="gushort"/>
+      </field>
+      <field name="revents" writable="1">
+        <type name="gushort" c:type="gushort"/>
+      </field>
+    </record>
+    <callback name="PollFunc" c:type="GPollFunc">
+      <doc xml:whitespace="preserve">Specifies the type of function passed to g_main_context_set_poll_func().
+The semantics of the function should match those of the poll() system call.
+reported, or -1 if an error occurred.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the number of #GPollFD elements which have events or errors</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufds" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an array of #GPollFD elements</doc>
+          <type name="PollFD" c:type="GPollFD*"/>
+        </parameter>
+        <parameter name="nfsd" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of elements in @ufds</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="timeout_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the maximum time to wait for an event of the file descriptors. A negative value indicates an infinite timeout.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PrintFunc" c:type="GPrintFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="Private" c:type="GPrivate" disguised="1">
+    </record>
+    <record name="PtrArray" c:type="GPtrArray">
+      <field name="pdata" writable="1">
+        <type name="gpointer" c:type="gpointer*"/>
+      </field>
+      <field name="len" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="Queue" c:type="GQueue">
+      <field name="head" writable="1">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="tail" writable="1">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="length" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <method name="clear" c:identifier="g_queue_clear">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="copy" c:identifier="g_queue_copy" introspectable="0">
+        <return-value>
+          <type name="Queue" c:type="GQueue*"/>
+        </return-value>
+      </method>
+      <method name="delete_link" c:identifier="g_queue_delete_link">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="link_" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find" c:identifier="g_queue_find" introspectable="0">
+        <return-value>
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_custom"
+              c:identifier="g_queue_find_custom"
+              introspectable="0">
+        <return-value>
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+          <parameter name="func" transfer-ownership="none">
+            <type name="CompareFunc" c:type="GCompareFunc"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach" c:identifier="g_queue_foreach" introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" closure="1">
+            <type name="Func" c:type="GFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="g_queue_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_length" c:identifier="g_queue_get_length">
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="index" c:identifier="g_queue_index">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init" c:identifier="g_queue_init">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="insert_after" c:identifier="g_queue_insert_after">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sibling" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_before" c:identifier="g_queue_insert_before">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sibling" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_sorted"
+              c:identifier="g_queue_insert_sorted"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="func" transfer-ownership="none" closure="2">
+            <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_empty" c:identifier="g_queue_is_empty">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="link_index" c:identifier="g_queue_link_index">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="link_" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_head"
+              c:identifier="g_queue_peek_head"
+              introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="peek_head_link"
+              c:identifier="g_queue_peek_head_link"
+              introspectable="0">
+        <return-value>
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="peek_nth"
+              c:identifier="g_queue_peek_nth"
+              introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="n" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_nth_link"
+              c:identifier="g_queue_peek_nth_link"
+              introspectable="0">
+        <return-value>
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="n" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_tail"
+              c:identifier="g_queue_peek_tail"
+              introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="peek_tail_link"
+              c:identifier="g_queue_peek_tail_link"
+              introspectable="0">
+        <return-value>
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="pop_head"
+              c:identifier="g_queue_pop_head"
+              introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="pop_head_link"
+              c:identifier="g_queue_pop_head_link"
+              introspectable="0">
+        <return-value>
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="pop_nth" c:identifier="g_queue_pop_nth" introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="n" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pop_nth_link"
+              c:identifier="g_queue_pop_nth_link"
+              introspectable="0">
+        <return-value>
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="n" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pop_tail"
+              c:identifier="g_queue_pop_tail"
+              introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="pop_tail_link"
+              c:identifier="g_queue_pop_tail_link"
+              introspectable="0">
+        <return-value>
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="push_head" c:identifier="g_queue_push_head">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push_head_link" c:identifier="g_queue_push_head_link">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="link_" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push_nth" c:identifier="g_queue_push_nth">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="n" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push_nth_link" c:identifier="g_queue_push_nth_link">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="link_" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push_tail" c:identifier="g_queue_push_tail">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push_tail_link" c:identifier="g_queue_push_tail_link">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="link_" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove" c:identifier="g_queue_remove">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_all" c:identifier="g_queue_remove_all">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reverse" c:identifier="g_queue_reverse">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="sort" c:identifier="g_queue_sort" introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="compare_func" transfer-ownership="none" closure="1">
+            <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unlink" c:identifier="g_queue_unlink">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="link_" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="Rand" c:type="GRand" disguised="1">
+      <method name="copy" c:identifier="g_rand_copy" introspectable="0">
+        <return-value>
+          <type name="Rand" c:type="GRand*"/>
+        </return-value>
+      </method>
+      <method name="double" c:identifier="g_rand_double">
+        <return-value transfer-ownership="none">
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="double_range" c:identifier="g_rand_double_range">
+        <return-value transfer-ownership="none">
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="begin" transfer-ownership="none">
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="g_rand_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="int" c:identifier="g_rand_int">
+        <return-value transfer-ownership="none">
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="int_range" c:identifier="g_rand_int_range">
+        <return-value transfer-ownership="none">
+          <type name="gint32" c:type="gint32"/>
+        </return-value>
+        <parameters>
+          <parameter name="begin" transfer-ownership="none">
+            <type name="gint32" c:type="gint32"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <type name="gint32" c:type="gint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_seed" c:identifier="g_rand_set_seed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="seed" transfer-ownership="none">
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_seed_array" c:identifier="g_rand_set_seed_array">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="seed" transfer-ownership="none">
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="seed_length" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="Regex" c:type="GRegex" disguised="1" version="2.14">
+      <doc xml:whitespace="preserve">A GRegex is the "compiled" form of a regular expression pattern. This
+structure is opaque and its fields cannot be accessed directly.</doc>
+      <method name="get_capture_count"
+              c:identifier="g_regex_get_capture_count">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_compile_flags"
+              c:identifier="g_regex_get_compile_flags">
+        <return-value transfer-ownership="none">
+          <type name="RegexCompileFlags" c:type="GRegexCompileFlags"/>
+        </return-value>
+      </method>
+      <method name="get_match_flags" c:identifier="g_regex_get_match_flags">
+        <return-value transfer-ownership="none">
+          <type name="RegexMatchFlags" c:type="GRegexMatchFlags"/>
+        </return-value>
+      </method>
+      <method name="get_max_backref" c:identifier="g_regex_get_max_backref">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_pattern" c:identifier="g_regex_get_pattern">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_string_number"
+              c:identifier="g_regex_get_string_number">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="match" c:identifier="g_regex_match">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="match_options" transfer-ownership="none">
+            <type name="RegexMatchFlags" c:type="GRegexMatchFlags"/>
+          </parameter>
+          <parameter name="match_info" transfer-ownership="none">
+            <type name="MatchInfo" c:type="GMatchInfo**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="match_all" c:identifier="g_regex_match_all">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="match_options" transfer-ownership="none">
+            <type name="RegexMatchFlags" c:type="GRegexMatchFlags"/>
+          </parameter>
+          <parameter name="match_info" transfer-ownership="none">
+            <type name="MatchInfo" c:type="GMatchInfo**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="match_all_full"
+              c:identifier="g_regex_match_all_full"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="string_len" transfer-ownership="none">
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+          <parameter name="start_position" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="match_options" transfer-ownership="none">
+            <type name="RegexMatchFlags" c:type="GRegexMatchFlags"/>
+          </parameter>
+          <parameter name="match_info" transfer-ownership="none">
+            <type name="MatchInfo" c:type="GMatchInfo**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="match_full" c:identifier="g_regex_match_full" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="string_len" transfer-ownership="none">
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+          <parameter name="start_position" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="match_options" transfer-ownership="none">
+            <type name="RegexMatchFlags" c:type="GRegexMatchFlags"/>
+          </parameter>
+          <parameter name="match_info" transfer-ownership="none">
+            <type name="MatchInfo" c:type="GMatchInfo**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref" c:identifier="g_regex_ref" introspectable="0">
+        <return-value>
+          <type name="Regex" c:type="GRegex*"/>
+        </return-value>
+      </method>
+      <method name="replace" c:identifier="g_regex_replace" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="string_len" transfer-ownership="none">
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+          <parameter name="start_position" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="replacement" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="match_options" transfer-ownership="none">
+            <type name="RegexMatchFlags" c:type="GRegexMatchFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace_eval"
+              c:identifier="g_regex_replace_eval"
+              introspectable="0"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="string_len" transfer-ownership="none">
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+          <parameter name="start_position" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="match_options" transfer-ownership="none">
+            <type name="RegexMatchFlags" c:type="GRegexMatchFlags"/>
+          </parameter>
+          <parameter name="eval" transfer-ownership="none" closure="5">
+            <type name="RegexEvalCallback" c:type="GRegexEvalCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace_literal"
+              c:identifier="g_regex_replace_literal"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="string_len" transfer-ownership="none">
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+          <parameter name="start_position" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="replacement" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="match_options" transfer-ownership="none">
+            <type name="RegexMatchFlags" c:type="GRegexMatchFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="split" c:identifier="g_regex_split" introspectable="0">
+        <return-value>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="match_options" transfer-ownership="none">
+            <type name="RegexMatchFlags" c:type="GRegexMatchFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="split_full"
+              c:identifier="g_regex_split_full"
+              introspectable="0"
+              throws="1">
+        <return-value>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="string_len" transfer-ownership="none">
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+          <parameter name="start_position" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="match_options" transfer-ownership="none">
+            <type name="RegexMatchFlags" c:type="GRegexMatchFlags"/>
+          </parameter>
+          <parameter name="max_tokens" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unref" c:identifier="g_regex_unref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <bitfield name="RegexCompileFlags"
+              version="2.14"
+              c:type="GRegexCompileFlags">
+      <doc xml:whitespace="preserve">Flags specifying compile-time options.</doc>
+      <member name="caseless" value="1" c:identifier="G_REGEX_CASELESS"/>
+      <member name="multiline" value="2" c:identifier="G_REGEX_MULTILINE"/>
+      <member name="dotall" value="4" c:identifier="G_REGEX_DOTALL"/>
+      <member name="extended" value="8" c:identifier="G_REGEX_EXTENDED"/>
+      <member name="anchored" value="16" c:identifier="G_REGEX_ANCHORED"/>
+      <member name="dollar_endonly"
+              value="32"
+              c:identifier="G_REGEX_DOLLAR_ENDONLY"/>
+      <member name="ungreedy" value="512" c:identifier="G_REGEX_UNGREEDY"/>
+      <member name="raw" value="2048" c:identifier="G_REGEX_RAW"/>
+      <member name="no_auto_capture"
+              value="4096"
+              c:identifier="G_REGEX_NO_AUTO_CAPTURE"/>
+      <member name="optimize" value="8192" c:identifier="G_REGEX_OPTIMIZE"/>
+      <member name="dupnames" value="524288" c:identifier="G_REGEX_DUPNAMES"/>
+      <member name="newline_cr"
+              value="1048576"
+              c:identifier="G_REGEX_NEWLINE_CR"/>
+      <member name="newline_lf"
+              value="2097152"
+              c:identifier="G_REGEX_NEWLINE_LF"/>
+      <member name="newline_crlf"
+              value="3145728"
+              c:identifier="G_REGEX_NEWLINE_CRLF"/>
+    </bitfield>
+    <enumeration name="RegexError"
+                 version="2.14"
+                 c:type="GRegexError"
+                 glib:error-quark="g_regex_error_quark">
+      <doc xml:whitespace="preserve">Error codes returned by regular expressions functions.</doc>
+      <member name="compile" value="0" c:identifier="G_REGEX_ERROR_COMPILE"/>
+      <member name="optimize" value="1" c:identifier="G_REGEX_ERROR_OPTIMIZE"/>
+      <member name="replace" value="2" c:identifier="G_REGEX_ERROR_REPLACE"/>
+      <member name="match" value="3" c:identifier="G_REGEX_ERROR_MATCH"/>
+      <member name="internal" value="4" c:identifier="G_REGEX_ERROR_INTERNAL"/>
+      <member name="stray_backslash"
+              value="101"
+              c:identifier="G_REGEX_ERROR_STRAY_BACKSLASH"/>
+      <member name="missing_control_char"
+              value="102"
+              c:identifier="G_REGEX_ERROR_MISSING_CONTROL_CHAR"/>
+      <member name="unrecognized_escape"
+              value="103"
+              c:identifier="G_REGEX_ERROR_UNRECOGNIZED_ESCAPE"/>
+      <member name="quantifiers_out_of_order"
+              value="104"
+              c:identifier="G_REGEX_ERROR_QUANTIFIERS_OUT_OF_ORDER"/>
+      <member name="quantifier_too_big"
+              value="105"
+              c:identifier="G_REGEX_ERROR_QUANTIFIER_TOO_BIG"/>
+      <member name="unterminated_character_class"
+              value="106"
+              c:identifier="G_REGEX_ERROR_UNTERMINATED_CHARACTER_CLASS"/>
+      <member name="invalid_escape_in_character_class"
+              value="107"
+              c:identifier="G_REGEX_ERROR_INVALID_ESCAPE_IN_CHARACTER_CLASS"/>
+      <member name="range_out_of_order"
+              value="108"
+              c:identifier="G_REGEX_ERROR_RANGE_OUT_OF_ORDER"/>
+      <member name="nothing_to_repeat"
+              value="109"
+              c:identifier="G_REGEX_ERROR_NOTHING_TO_REPEAT"/>
+      <member name="unrecognized_character"
+              value="112"
+              c:identifier="G_REGEX_ERROR_UNRECOGNIZED_CHARACTER"/>
+      <member name="posix_named_class_outside_class"
+              value="113"
+              c:identifier="G_REGEX_ERROR_POSIX_NAMED_CLASS_OUTSIDE_CLASS"/>
+      <member name="unmatched_parenthesis"
+              value="114"
+              c:identifier="G_REGEX_ERROR_UNMATCHED_PARENTHESIS"/>
+      <member name="inexistent_subpattern_reference"
+              value="115"
+              c:identifier="G_REGEX_ERROR_INEXISTENT_SUBPATTERN_REFERENCE"/>
+      <member name="unterminated_comment"
+              value="118"
+              c:identifier="G_REGEX_ERROR_UNTERMINATED_COMMENT"/>
+      <member name="expression_too_large"
+              value="120"
+              c:identifier="G_REGEX_ERROR_EXPRESSION_TOO_LARGE"/>
+      <member name="memory_error"
+              value="121"
+              c:identifier="G_REGEX_ERROR_MEMORY_ERROR"/>
+      <member name="variable_length_lookbehind"
+              value="125"
+              c:identifier="G_REGEX_ERROR_VARIABLE_LENGTH_LOOKBEHIND"/>
+      <member name="malformed_condition"
+              value="126"
+              c:identifier="G_REGEX_ERROR_MALFORMED_CONDITION"/>
+      <member name="too_many_conditional_branches"
+              value="127"
+              c:identifier="G_REGEX_ERROR_TOO_MANY_CONDITIONAL_BRANCHES"/>
+      <member name="assertion_expected"
+              value="128"
+              c:identifier="G_REGEX_ERROR_ASSERTION_EXPECTED"/>
+      <member name="unknown_posix_class_name"
+              value="130"
+              c:identifier="G_REGEX_ERROR_UNKNOWN_POSIX_CLASS_NAME"/>
+      <member name="posix_collating_elements_not_supported"
+              value="131"
+              c:identifier="G_REGEX_ERROR_POSIX_COLLATING_ELEMENTS_NOT_SUPPORTED"/>
+      <member name="hex_code_too_large"
+              value="134"
+              c:identifier="G_REGEX_ERROR_HEX_CODE_TOO_LARGE"/>
+      <member name="invalid_condition"
+              value="135"
+              c:identifier="G_REGEX_ERROR_INVALID_CONDITION"/>
+      <member name="single_byte_match_in_lookbehind"
+              value="136"
+              c:identifier="G_REGEX_ERROR_SINGLE_BYTE_MATCH_IN_LOOKBEHIND"/>
+      <member name="infinite_loop"
+              value="140"
+              c:identifier="G_REGEX_ERROR_INFINITE_LOOP"/>
+      <member name="missing_subpattern_name_terminator"
+              value="142"
+              c:identifier="G_REGEX_ERROR_MISSING_SUBPATTERN_NAME_TERMINATOR"/>
+      <member name="duplicate_subpattern_name"
+              value="143"
+              c:identifier="G_REGEX_ERROR_DUPLICATE_SUBPATTERN_NAME"/>
+      <member name="malformed_property"
+              value="146"
+              c:identifier="G_REGEX_ERROR_MALFORMED_PROPERTY"/>
+      <member name="unknown_property"
+              value="147"
+              c:identifier="G_REGEX_ERROR_UNKNOWN_PROPERTY"/>
+      <member name="subpattern_name_too_long"
+              value="148"
+              c:identifier="G_REGEX_ERROR_SUBPATTERN_NAME_TOO_LONG"/>
+      <member name="too_many_subpatterns"
+              value="149"
+              c:identifier="G_REGEX_ERROR_TOO_MANY_SUBPATTERNS"/>
+      <member name="invalid_octal_value"
+              value="151"
+              c:identifier="G_REGEX_ERROR_INVALID_OCTAL_VALUE"/>
+      <member name="too_many_branches_in_define"
+              value="154"
+              c:identifier="G_REGEX_ERROR_TOO_MANY_BRANCHES_IN_DEFINE"/>
+      <member name="define_repetion"
+              value="155"
+              c:identifier="G_REGEX_ERROR_DEFINE_REPETION"/>
+      <member name="inconsistent_newline_options"
+              value="156"
+              c:identifier="G_REGEX_ERROR_INCONSISTENT_NEWLINE_OPTIONS"/>
+      <member name="missing_back_reference"
+              value="157"
+              c:identifier="G_REGEX_ERROR_MISSING_BACK_REFERENCE"/>
+    </enumeration>
+    <callback name="RegexEvalCallback"
+              c:type="GRegexEvalCallback"
+              version="2.14">
+      <doc xml:whitespace="preserve">Specifies the type of the function passed to g_regex_replace_eval().
+It is called for each occurance of the pattern in the string passed
+to g_regex_replace_eval(), and it should append the replacement to</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%FALSE to continue the replacement process, %TRUE to stop it</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="match_info" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GMatchInfo generated by the match. Use g_match_info_get_regex() and g_match_info_get_string() if you need the #GRegex or the matched string.</doc>
+          <type name="MatchInfo" c:type="GMatchInfo*"/>
+        </parameter>
+        <parameter name="result" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GString containing the new string</doc>
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">user data passed to g_regex_replace_eval()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="RegexMatchFlags" version="2.14" c:type="GRegexMatchFlags">
+      <doc xml:whitespace="preserve">Flags specifying match-time options.</doc>
+      <member name="anchored"
+              value="16"
+              c:identifier="G_REGEX_MATCH_ANCHORED"/>
+      <member name="notbol" value="128" c:identifier="G_REGEX_MATCH_NOTBOL"/>
+      <member name="noteol" value="256" c:identifier="G_REGEX_MATCH_NOTEOL"/>
+      <member name="notempty"
+              value="1024"
+              c:identifier="G_REGEX_MATCH_NOTEMPTY"/>
+      <member name="partial"
+              value="32768"
+              c:identifier="G_REGEX_MATCH_PARTIAL"/>
+      <member name="newline_cr"
+              value="1048576"
+              c:identifier="G_REGEX_MATCH_NEWLINE_CR"/>
+      <member name="newline_lf"
+              value="2097152"
+              c:identifier="G_REGEX_MATCH_NEWLINE_LF"/>
+      <member name="newline_crlf"
+              value="3145728"
+              c:identifier="G_REGEX_MATCH_NEWLINE_CRLF"/>
+      <member name="newline_any"
+              value="4194304"
+              c:identifier="G_REGEX_MATCH_NEWLINE_ANY"/>
+    </bitfield>
+    <record name="Relation" c:type="GRelation" disguised="1">
+      <method name="count" c:identifier="g_relation_count">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+          <parameter name="field" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete" c:identifier="g_relation_delete">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+          <parameter name="field" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="destroy" c:identifier="g_relation_destroy">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="exists"
+              c:identifier="g_relation_exists"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="index" c:identifier="g_relation_index" introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="hash_func" transfer-ownership="none">
+            <type name="HashFunc" c:type="GHashFunc"/>
+          </parameter>
+          <parameter name="key_equal_func" transfer-ownership="none">
+            <type name="EqualFunc" c:type="GEqualFunc"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert"
+              c:identifier="g_relation_insert"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="print" c:identifier="g_relation_print">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="select"
+              c:identifier="g_relation_select"
+              introspectable="0">
+        <return-value>
+          <type name="Tuples" c:type="GTuples*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+          <parameter name="field" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <constant name="SEARCHPATH_SEPARATOR_S" value=";">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="SIZEOF_LONG" value="8">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="SIZEOF_SIZE_T" value="8">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="SIZEOF_VOID_P" value="8">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="SList" c:type="GSList">
+      <field name="data" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="next" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+    </record>
+    <constant name="SQRT2" value="1.414214">
+      <type name="gdouble" c:type="gdouble"/>
+    </constant>
+    <constant name="STR_DELIMITERS" value="_-|&gt; &lt;.">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="SYSDEF_AF_INET" value="2">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="SYSDEF_AF_INET6" value="10">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="SYSDEF_AF_UNIX" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="SYSDEF_MSG_DONTROUTE" value="4">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="SYSDEF_MSG_OOB" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="SYSDEF_MSG_PEEK" value="2">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="Scanner" c:type="GScanner">
+      <field name="user_data" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="max_parse_errors" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="parse_errors" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="input_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="qdata" writable="1">
+        <type name="Data" c:type="GData*"/>
+      </field>
+      <field name="config" writable="1">
+        <type name="ScannerConfig" c:type="GScannerConfig*"/>
+      </field>
+      <field name="token" writable="1">
+        <type name="TokenType" c:type="GTokenType"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="TokenValue" c:type="GTokenValue"/>
+      </field>
+      <field name="line" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="position" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="next_token" writable="1">
+        <type name="TokenType" c:type="GTokenType"/>
+      </field>
+      <field name="next_value" writable="1">
+        <type name="TokenValue" c:type="GTokenValue"/>
+      </field>
+      <field name="next_line" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="next_position" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="symbol_table" writable="1">
+        <type name="GLib.HashTable" c:type="GHashTable*">
+          <type name="gpointer" c:type="gpointer"/>
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="input_fd" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="text" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="text_end" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="buffer" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="scope_id" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="msg_handler" writable="1">
+        <type name="ScannerMsgFunc" c:type="GScannerMsgFunc"/>
+      </field>
+      <method name="cur_line" c:identifier="g_scanner_cur_line">
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="cur_position" c:identifier="g_scanner_cur_position">
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="cur_token" c:identifier="g_scanner_cur_token">
+        <return-value transfer-ownership="none">
+          <type name="TokenType" c:type="GTokenType"/>
+        </return-value>
+      </method>
+      <method name="cur_value"
+              c:identifier="g_scanner_cur_value"
+              introspectable="0">
+        <return-value>
+          <type name="TokenValue" c:type="GTokenValue"/>
+        </return-value>
+      </method>
+      <method name="destroy" c:identifier="g_scanner_destroy">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="eof" c:identifier="g_scanner_eof">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="error" c:identifier="g_scanner_error" introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_next_token" c:identifier="g_scanner_get_next_token">
+        <return-value transfer-ownership="none">
+          <type name="TokenType" c:type="GTokenType"/>
+        </return-value>
+      </method>
+      <method name="input_file" c:identifier="g_scanner_input_file">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="input_fd" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="input_text" c:identifier="g_scanner_input_text">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="text_len" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_symbol"
+              c:identifier="g_scanner_lookup_symbol"
+              introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="symbol" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_next_token" c:identifier="g_scanner_peek_next_token">
+        <return-value transfer-ownership="none">
+          <type name="TokenType" c:type="GTokenType"/>
+        </return-value>
+      </method>
+      <method name="scope_add_symbol"
+              c:identifier="g_scanner_scope_add_symbol">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scope_id" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="symbol" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scope_foreach_symbol"
+              c:identifier="g_scanner_scope_foreach_symbol"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scope_id" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="func" transfer-ownership="none" closure="2">
+            <type name="HFunc" c:type="GHFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scope_lookup_symbol"
+              c:identifier="g_scanner_scope_lookup_symbol"
+              introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="scope_id" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="symbol" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scope_remove_symbol"
+              c:identifier="g_scanner_scope_remove_symbol">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scope_id" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="symbol" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_scope" c:identifier="g_scanner_set_scope">
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="scope_id" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sync_file_offset"
+              c:identifier="g_scanner_sync_file_offset">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unexp_token" c:identifier="g_scanner_unexp_token">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="expected_token" transfer-ownership="none">
+            <type name="TokenType" c:type="GTokenType"/>
+          </parameter>
+          <parameter name="identifier_spec" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="symbol_spec" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="symbol_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="message" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="is_error" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="warn" c:identifier="g_scanner_warn" introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="ScannerConfig" c:type="GScannerConfig">
+      <field name="cset_skip_characters" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="cset_identifier_first" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="cset_identifier_nth" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="cpair_comment_single" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="case_sensitive" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="skip_comment_multi" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="skip_comment_single" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="scan_comment_multi" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="scan_identifier" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="scan_identifier_1char" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="scan_identifier_NULL" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="scan_symbols" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="scan_binary" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="scan_octal" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="scan_float" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="scan_hex" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="scan_hex_dollar" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="scan_string_sq" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="scan_string_dq" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="numbers_2_int" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="int_2_float" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="identifier_2_string" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="char_2_token" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="symbol_2_token" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="scope_0_fallback" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="store_int64" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="padding_dummy" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <callback name="ScannerMsgFunc" c:type="GScannerMsgFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="scanner" transfer-ownership="none">
+          <type name="Scanner" c:type="GScanner*"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="error" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="SeekType" c:type="GSeekType">
+      <member name="cur" value="0" c:identifier="G_SEEK_CUR"/>
+      <member name="set" value="1" c:identifier="G_SEEK_SET"/>
+      <member name="end" value="2" c:identifier="G_SEEK_END"/>
+    </enumeration>
+    <record name="Sequence" c:type="GSequence" disguised="1">
+      <method name="append"
+              c:identifier="g_sequence_append"
+              introspectable="0">
+        <return-value>
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach"
+              c:identifier="g_sequence_foreach"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" closure="1">
+            <type name="Func" c:type="GFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="g_sequence_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_begin_iter"
+              c:identifier="g_sequence_get_begin_iter"
+              introspectable="0">
+        <return-value>
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </return-value>
+      </method>
+      <method name="get_end_iter"
+              c:identifier="g_sequence_get_end_iter"
+              introspectable="0">
+        <return-value>
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </return-value>
+      </method>
+      <method name="get_iter_at_pos"
+              c:identifier="g_sequence_get_iter_at_pos"
+              introspectable="0">
+        <return-value>
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pos" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_length" c:identifier="g_sequence_get_length">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="insert_sorted"
+              c:identifier="g_sequence_insert_sorted"
+              introspectable="0">
+        <return-value>
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="cmp_func" transfer-ownership="none" closure="2">
+            <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+          </parameter>
+          <parameter name="cmp_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_sorted_iter"
+              c:identifier="g_sequence_insert_sorted_iter"
+              introspectable="0">
+        <return-value>
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="iter_cmp" transfer-ownership="none" closure="2">
+            <type name="SequenceIterCompareFunc"
+                  c:type="GSequenceIterCompareFunc"/>
+          </parameter>
+          <parameter name="cmp_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend"
+              c:identifier="g_sequence_prepend"
+              introspectable="0">
+        <return-value>
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="search"
+              c:identifier="g_sequence_search"
+              introspectable="0">
+        <return-value>
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="cmp_func" transfer-ownership="none" closure="2">
+            <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+          </parameter>
+          <parameter name="cmp_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="search_iter"
+              c:identifier="g_sequence_search_iter"
+              introspectable="0">
+        <return-value>
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="iter_cmp" transfer-ownership="none" closure="2">
+            <type name="SequenceIterCompareFunc"
+                  c:type="GSequenceIterCompareFunc"/>
+          </parameter>
+          <parameter name="cmp_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sort" c:identifier="g_sequence_sort" introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cmp_func" transfer-ownership="none" closure="1">
+            <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+          </parameter>
+          <parameter name="cmp_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sort_iter"
+              c:identifier="g_sequence_sort_iter"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cmp_func" transfer-ownership="none" closure="1">
+            <type name="SequenceIterCompareFunc"
+                  c:type="GSequenceIterCompareFunc"/>
+          </parameter>
+          <parameter name="cmp_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="SequenceIter" c:type="GSequenceIter" disguised="1">
+      <method name="compare" c:identifier="g_sequence_iter_compare">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="b" transfer-ownership="none">
+            <type name="SequenceIter" c:type="GSequenceIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_position" c:identifier="g_sequence_iter_get_position">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_sequence"
+              c:identifier="g_sequence_iter_get_sequence"
+              introspectable="0">
+        <return-value>
+          <type name="Sequence" c:type="GSequence*"/>
+        </return-value>
+      </method>
+      <method name="is_begin" c:identifier="g_sequence_iter_is_begin">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_end" c:identifier="g_sequence_iter_is_end">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="move"
+              c:identifier="g_sequence_iter_move"
+              introspectable="0">
+        <return-value>
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="delta" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="next"
+              c:identifier="g_sequence_iter_next"
+              introspectable="0">
+        <return-value>
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </return-value>
+      </method>
+      <method name="prev"
+              c:identifier="g_sequence_iter_prev"
+              introspectable="0">
+        <return-value>
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </return-value>
+      </method>
+    </record>
+    <callback name="SequenceIterCompareFunc" c:type="GSequenceIterCompareFunc">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="ShellError"
+                 c:type="GShellError"
+                 glib:error-quark="g_shell_error_quark">
+      <member name="bad_quoting"
+              value="0"
+              c:identifier="G_SHELL_ERROR_BAD_QUOTING"/>
+      <member name="empty_string"
+              value="1"
+              c:identifier="G_SHELL_ERROR_EMPTY_STRING"/>
+      <member name="failed" value="2" c:identifier="G_SHELL_ERROR_FAILED"/>
+    </enumeration>
+    <enumeration name="SliceConfig" c:type="GSliceConfig">
+      <member name="always_malloc"
+              value="1"
+              c:identifier="G_SLICE_CONFIG_ALWAYS_MALLOC"/>
+      <member name="bypass_magazines"
+              value="2"
+              c:identifier="G_SLICE_CONFIG_BYPASS_MAGAZINES"/>
+      <member name="working_set_msecs"
+              value="3"
+              c:identifier="G_SLICE_CONFIG_WORKING_SET_MSECS"/>
+      <member name="color_increment"
+              value="4"
+              c:identifier="G_SLICE_CONFIG_COLOR_INCREMENT"/>
+      <member name="chunk_sizes"
+              value="5"
+              c:identifier="G_SLICE_CONFIG_CHUNK_SIZES"/>
+      <member name="contention_counter"
+              value="6"
+              c:identifier="G_SLICE_CONFIG_CONTENTION_COUNTER"/>
+    </enumeration>
+    <record name="Source" c:type="GSource">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;GSource&lt;/structname&gt; struct is an opaque data type
+representing an event source.</doc>
+      <field name="callback_data" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="callback_funcs" writable="1">
+        <type name="SourceCallbackFuncs" c:type="GSourceCallbackFuncs*"/>
+      </field>
+      <field name="source_funcs" writable="1">
+        <type name="SourceFuncs" c:type="GSourceFuncs*"/>
+      </field>
+      <field name="ref_count" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="context" writable="1">
+        <type name="MainContext" c:type="GMainContext*"/>
+      </field>
+      <field name="priority" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="source_id" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="poll_fds" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="prev" writable="1">
+        <type name="Source" c:type="GSource*"/>
+      </field>
+      <field name="next" writable="1">
+        <type name="Source" c:type="GSource*"/>
+      </field>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="char*"/>
+      </field>
+      <field name="reserved2" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <method name="add_poll" c:identifier="g_source_add_poll">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="attach" c:identifier="g_source_attach">
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="context" transfer-ownership="none">
+            <type name="MainContext" c:type="GMainContext*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="destroy" c:identifier="g_source_destroy">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_can_recurse" c:identifier="g_source_get_can_recurse">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_context"
+              c:identifier="g_source_get_context"
+              introspectable="0">
+        <return-value>
+          <type name="MainContext" c:type="GMainContext*"/>
+        </return-value>
+      </method>
+      <method name="get_current_time" c:identifier="g_source_get_current_time">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeval" transfer-ownership="none">
+            <type name="TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_id" c:identifier="g_source_get_id">
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_name" c:identifier="g_source_get_name">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_priority" c:identifier="g_source_get_priority">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="is_destroyed" c:identifier="g_source_is_destroyed">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="ref" c:identifier="g_source_ref" introspectable="0">
+        <return-value>
+          <type name="Source" c:type="GSource*"/>
+        </return-value>
+      </method>
+      <method name="remove_poll" c:identifier="g_source_remove_poll">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_callback" c:identifier="g_source_set_callback">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <type name="SourceFunc" c:type="GSourceFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="async">
+            <type name="DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_callback_indirect"
+              c:identifier="g_source_set_callback_indirect">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="callback_funcs" transfer-ownership="none">
+            <type name="SourceCallbackFuncs" c:type="GSourceCallbackFuncs*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_can_recurse" c:identifier="g_source_set_can_recurse">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="can_recurse" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_funcs" c:identifier="g_source_set_funcs">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="funcs" transfer-ownership="none">
+            <type name="SourceFuncs" c:type="GSourceFuncs*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_name" c:identifier="g_source_set_name">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_priority" c:identifier="g_source_set_priority">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="priority" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unref" c:identifier="g_source_unref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="SourceCallbackFuncs" c:type="GSourceCallbackFuncs">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;GSourceCallbackFuncs&lt;/structname&gt; struct contains
+functions for managing callback objects.</doc>
+      <field name="ref">
+        <callback name="ref">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cb_data" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unref">
+        <callback name="unref">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cb_data" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get" introspectable="0">
+        <callback name="get" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cb_data" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+            <parameter name="source" transfer-ownership="none">
+              <type name="Source" c:type="GSource*"/>
+            </parameter>
+            <parameter name="func" transfer-ownership="none" closure="3">
+              <type name="SourceFunc" c:type="GSourceFunc*"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <callback name="SourceDummyMarshal" c:type="GSourceDummyMarshal">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <callback name="SourceFunc" c:type="GSourceFunc">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none" closure="0">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="SourceFuncs" c:type="GSourceFuncs">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;GSourceFuncs&lt;/structname&gt; struct contains a table of
+functions used to handle event sources in a generic manner.
+For idle sources, the prepare and check functions always return %TRUE
+to indicate that the source is always ready to be processed. The prepare
+function also returns a timeout value of 0 to ensure that the poll() call
+doesn't block (since that would be time wasted which could have been spent
+running the idle function).
+For timeout sources, the prepare and check functions both return %TRUE
+if the timeout interval has expired. The prepare function also returns
+a timeout value to ensure that the poll() call doesn't block too long
+and miss the next timeout.
+For file descriptor sources, the prepare function typically returns %FALSE,
+since it must wait until poll() has been called before it knows whether
+any events need to be processed. It sets the returned timeout to -1 to
+indicate that it doesn't mind how long the poll() call blocks. In the
+check function, it tests the results of the poll() call to see if the
+required condition has been met, and returns %TRUE if so.</doc>
+      <field name="prepare">
+        <callback name="prepare">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="source" transfer-ownership="none">
+              <type name="Source" c:type="GSource*"/>
+            </parameter>
+            <parameter name="timeout_" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="check">
+        <callback name="check">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="source" transfer-ownership="none">
+              <type name="Source" c:type="GSource*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="dispatch" introspectable="0">
+        <callback name="dispatch" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="source" transfer-ownership="none">
+              <type name="Source" c:type="GSource*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none" closure="2">
+              <type name="SourceFunc" c:type="GSourceFunc"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="2">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="finalize">
+        <callback name="finalize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="source" transfer-ownership="none">
+              <type name="Source" c:type="GSource*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="closure_callback" writable="1">
+        <type name="SourceFunc" c:type="GSourceFunc"/>
+      </field>
+      <field name="closure_marshal" writable="1">
+        <type name="SourceDummyMarshal" c:type="GSourceDummyMarshal"/>
+      </field>
+    </record>
+    <callback name="SpawnChildSetupFunc" c:type="GSpawnChildSetupFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="user_data" transfer-ownership="none" closure="0">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="SpawnError"
+                 c:type="GSpawnError"
+                 glib:error-quark="g_spawn_error_quark">
+      <member name="fork" value="0" c:identifier="G_SPAWN_ERROR_FORK"/>
+      <member name="read" value="1" c:identifier="G_SPAWN_ERROR_READ"/>
+      <member name="chdir" value="2" c:identifier="G_SPAWN_ERROR_CHDIR"/>
+      <member name="acces" value="3" c:identifier="G_SPAWN_ERROR_ACCES"/>
+      <member name="perm" value="4" c:identifier="G_SPAWN_ERROR_PERM"/>
+      <member name="2big" value="5" c:identifier="G_SPAWN_ERROR_2BIG"/>
+      <member name="noexec" value="6" c:identifier="G_SPAWN_ERROR_NOEXEC"/>
+      <member name="nametoolong"
+              value="7"
+              c:identifier="G_SPAWN_ERROR_NAMETOOLONG"/>
+      <member name="noent" value="8" c:identifier="G_SPAWN_ERROR_NOENT"/>
+      <member name="nomem" value="9" c:identifier="G_SPAWN_ERROR_NOMEM"/>
+      <member name="notdir" value="10" c:identifier="G_SPAWN_ERROR_NOTDIR"/>
+      <member name="loop" value="11" c:identifier="G_SPAWN_ERROR_LOOP"/>
+      <member name="txtbusy" value="12" c:identifier="G_SPAWN_ERROR_TXTBUSY"/>
+      <member name="io" value="13" c:identifier="G_SPAWN_ERROR_IO"/>
+      <member name="nfile" value="14" c:identifier="G_SPAWN_ERROR_NFILE"/>
+      <member name="mfile" value="15" c:identifier="G_SPAWN_ERROR_MFILE"/>
+      <member name="inval" value="16" c:identifier="G_SPAWN_ERROR_INVAL"/>
+      <member name="isdir" value="17" c:identifier="G_SPAWN_ERROR_ISDIR"/>
+      <member name="libbad" value="18" c:identifier="G_SPAWN_ERROR_LIBBAD"/>
+      <member name="failed" value="19" c:identifier="G_SPAWN_ERROR_FAILED"/>
+    </enumeration>
+    <bitfield name="SpawnFlags" c:type="GSpawnFlags">
+      <member name="leave_descriptors_open"
+              value="1"
+              c:identifier="G_SPAWN_LEAVE_DESCRIPTORS_OPEN"/>
+      <member name="do_not_reap_child"
+              value="2"
+              c:identifier="G_SPAWN_DO_NOT_REAP_CHILD"/>
+      <member name="search_path" value="4" c:identifier="G_SPAWN_SEARCH_PATH"/>
+      <member name="stdout_to_dev_null"
+              value="8"
+              c:identifier="G_SPAWN_STDOUT_TO_DEV_NULL"/>
+      <member name="stderr_to_dev_null"
+              value="16"
+              c:identifier="G_SPAWN_STDERR_TO_DEV_NULL"/>
+      <member name="child_inherits_stdin"
+              value="32"
+              c:identifier="G_SPAWN_CHILD_INHERITS_STDIN"/>
+      <member name="file_and_argv_zero"
+              value="64"
+              c:identifier="G_SPAWN_FILE_AND_ARGV_ZERO"/>
+    </bitfield>
+    <record name="StatBuf" c:type="GStatBuf" disguised="1">
+    </record>
+    <record name="StaticMutex" c:type="GStaticMutex">
+      <field name="runtime_mutex" writable="1">
+        <type name="gpointer" c:type="gpointer*"/>
+      </field>
+      <union name="static_mutex" c:type="static_mutex">
+        <field name="pad" writable="1">
+          <array zero-terminated="0" c:type="gchar" fixed-size="40">
+            <type name="gchar" c:type="char"/>
+          </array>
+        </field>
+        <field name="dummy_double" writable="1">
+          <type name="gdouble" c:type="double"/>
+        </field>
+        <field name="dummy_pointer" writable="1">
+          <type name="gpointer" c:type="void*"/>
+        </field>
+        <field name="dummy_long" writable="1">
+          <type name="glong" c:type="long"/>
+        </field>
+      </union>
+      <method name="free" c:identifier="g_static_mutex_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="init" c:identifier="g_static_mutex_init">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="StaticPrivate" c:type="GStaticPrivate">
+      <field name="index" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <method name="free" c:identifier="g_static_private_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get"
+              c:identifier="g_static_private_get"
+              introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="init" c:identifier="g_static_private_init">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set" c:identifier="g_static_private_set">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="async">
+            <type name="DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="StaticRWLock" c:type="GStaticRWLock">
+      <field name="mutex" writable="1">
+        <type name="StaticMutex" c:type="GStaticMutex"/>
+      </field>
+      <field name="read_cond" writable="1">
+        <type name="Cond" c:type="GCond*"/>
+      </field>
+      <field name="write_cond" writable="1">
+        <type name="Cond" c:type="GCond*"/>
+      </field>
+      <field name="read_counter" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="have_writer" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="want_to_read" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="want_to_write" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <method name="free" c:identifier="g_static_rw_lock_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="init" c:identifier="g_static_rw_lock_init">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="reader_lock" c:identifier="g_static_rw_lock_reader_lock">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="reader_trylock"
+              c:identifier="g_static_rw_lock_reader_trylock">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="reader_unlock"
+              c:identifier="g_static_rw_lock_reader_unlock">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="writer_lock" c:identifier="g_static_rw_lock_writer_lock">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="writer_trylock"
+              c:identifier="g_static_rw_lock_writer_trylock">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="writer_unlock"
+              c:identifier="g_static_rw_lock_writer_unlock">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="StaticRecMutex" c:type="GStaticRecMutex">
+      <field name="mutex" writable="1">
+        <type name="StaticMutex" c:type="GStaticMutex"/>
+      </field>
+      <field name="depth" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="owner" writable="1">
+        <type name="SystemThread" c:type="GSystemThread"/>
+      </field>
+      <method name="free" c:identifier="g_static_rec_mutex_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="init" c:identifier="g_static_rec_mutex_init">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="lock" c:identifier="g_static_rec_mutex_lock">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="lock_full" c:identifier="g_static_rec_mutex_lock_full">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="depth" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="trylock" c:identifier="g_static_rec_mutex_trylock">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="unlock" c:identifier="g_static_rec_mutex_unlock">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unlock_full" c:identifier="g_static_rec_mutex_unlock_full">
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="String" c:type="GString">
+      <field name="str" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="len" writable="1">
+        <type name="gulong" c:type="gsize"/>
+      </field>
+      <field name="allocated_len" writable="1">
+        <type name="gulong" c:type="gsize"/>
+      </field>
+      <method name="append" c:identifier="g_string_append" introspectable="0">
+        <return-value>
+          <type name="String" c:type="GString*"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_c"
+              c:identifier="g_string_append_c"
+              introspectable="0">
+        <return-value>
+          <type name="String" c:type="GString*"/>
+        </return-value>
+        <parameters>
+          <parameter name="c" transfer-ownership="none">
+            <type name="gchar" c:type="gchar"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_len"
+              c:identifier="g_string_append_len"
+              introspectable="0">
+        <return-value>
+          <type name="String" c:type="GString*"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_printf"
+              c:identifier="g_string_append_printf"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_unichar"
+              c:identifier="g_string_append_unichar"
+              introspectable="0">
+        <return-value>
+          <type name="String" c:type="GString*"/>
+        </return-value>
+        <parameters>
+          <parameter name="wc" transfer-ownership="none">
+            <type name="gunichar" c:type="gunichar"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_uri_escaped"
+              c:identifier="g_string_append_uri_escaped"
+              introspectable="0">
+        <return-value>
+          <type name="String" c:type="GString*"/>
+        </return-value>
+        <parameters>
+          <parameter name="unescaped" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="reserved_chars_allowed" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="allow_utf8" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_vprintf"
+              c:identifier="g_string_append_vprintf"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="args" transfer-ownership="none">
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ascii_down"
+              c:identifier="g_string_ascii_down"
+              introspectable="0">
+        <return-value>
+          <type name="String" c:type="GString*"/>
+        </return-value>
+      </method>
+      <method name="ascii_up"
+              c:identifier="g_string_ascii_up"
+              introspectable="0">
+        <return-value>
+          <type name="String" c:type="GString*"/>
+        </return-value>
+      </method>
+      <method name="assign" c:identifier="g_string_assign" introspectable="0">
+        <return-value>
+          <type name="String" c:type="GString*"/>
+        </return-value>
+        <parameters>
+          <parameter name="rval" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="down" c:identifier="g_string_down" introspectable="0">
+        <return-value>
+          <type name="String" c:type="GString*"/>
+        </return-value>
+      </method>
+      <method name="equal" c:identifier="g_string_equal">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="v2" transfer-ownership="none">
+            <type name="String" c:type="GString*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="erase" c:identifier="g_string_erase" introspectable="0">
+        <return-value>
+          <type name="String" c:type="GString*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pos" transfer-ownership="none">
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="g_string_free">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="free_segment" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="hash" c:identifier="g_string_hash">
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="insert" c:identifier="g_string_insert" introspectable="0">
+        <return-value>
+          <type name="String" c:type="GString*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pos" transfer-ownership="none">
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+          <parameter name="val" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_c"
+              c:identifier="g_string_insert_c"
+              introspectable="0">
+        <return-value>
+          <type name="String" c:type="GString*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pos" transfer-ownership="none">
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+          <parameter name="c" transfer-ownership="none">
+            <type name="gchar" c:type="gchar"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_len"
+              c:identifier="g_string_insert_len"
+              introspectable="0">
+        <return-value>
+          <type name="String" c:type="GString*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pos" transfer-ownership="none">
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+          <parameter name="val" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_unichar"
+              c:identifier="g_string_insert_unichar"
+              introspectable="0">
+        <return-value>
+          <type name="String" c:type="GString*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pos" transfer-ownership="none">
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+          <parameter name="wc" transfer-ownership="none">
+            <type name="gunichar" c:type="gunichar"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="overwrite"
+              c:identifier="g_string_overwrite"
+              introspectable="0">
+        <return-value>
+          <type name="String" c:type="GString*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pos" transfer-ownership="none">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="val" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="overwrite_len"
+              c:identifier="g_string_overwrite_len"
+              introspectable="0">
+        <return-value>
+          <type name="String" c:type="GString*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pos" transfer-ownership="none">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="val" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend"
+              c:identifier="g_string_prepend"
+              introspectable="0">
+        <return-value>
+          <type name="String" c:type="GString*"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend_c"
+              c:identifier="g_string_prepend_c"
+              introspectable="0">
+        <return-value>
+          <type name="String" c:type="GString*"/>
+        </return-value>
+        <parameters>
+          <parameter name="c" transfer-ownership="none">
+            <type name="gchar" c:type="gchar"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend_len"
+              c:identifier="g_string_prepend_len"
+              introspectable="0">
+        <return-value>
+          <type name="String" c:type="GString*"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend_unichar"
+              c:identifier="g_string_prepend_unichar"
+              introspectable="0">
+        <return-value>
+          <type name="String" c:type="GString*"/>
+        </return-value>
+        <parameters>
+          <parameter name="wc" transfer-ownership="none">
+            <type name="gunichar" c:type="gunichar"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="printf" c:identifier="g_string_printf" introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_size"
+              c:identifier="g_string_set_size"
+              introspectable="0">
+        <return-value>
+          <type name="String" c:type="GString*"/>
+        </return-value>
+        <parameters>
+          <parameter name="len" transfer-ownership="none">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="truncate"
+              c:identifier="g_string_truncate"
+              introspectable="0">
+        <return-value>
+          <type name="String" c:type="GString*"/>
+        </return-value>
+        <parameters>
+          <parameter name="len" transfer-ownership="none">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="up" c:identifier="g_string_up" introspectable="0">
+        <return-value>
+          <type name="String" c:type="GString*"/>
+        </return-value>
+      </method>
+      <method name="vprintf"
+              c:identifier="g_string_vprintf"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="args" transfer-ownership="none">
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="StringChunk" c:type="GStringChunk" disguised="1">
+      <method name="clear" c:identifier="g_string_chunk_clear">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="g_string_chunk_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="insert" c:identifier="g_string_chunk_insert">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_const" c:identifier="g_string_chunk_insert_const">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_len" c:identifier="g_string_chunk_insert_len">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <union name="SystemThread" c:type="GSystemThread">
+      <field name="data" writable="1">
+        <array zero-terminated="0" c:type="gchar" fixed-size="8">
+          <type name="gchar" c:type="char"/>
+        </array>
+      </field>
+      <field name="dummy_double" writable="1">
+        <type name="gdouble" c:type="double"/>
+      </field>
+      <field name="dummy_pointer" writable="1">
+        <type name="gpointer" c:type="void*"/>
+      </field>
+      <field name="dummy_long" writable="1">
+        <type name="glong" c:type="long"/>
+      </field>
+    </union>
+    <record name="TestCase" c:type="GTestCase" disguised="1">
+    </record>
+    <record name="TestConfig" c:type="GTestConfig">
+      <field name="test_initialized" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="test_quick" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="test_perf" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="test_verbose" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="test_quiet" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+    </record>
+    <callback name="TestDataFunc" c:type="GTestDataFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="user_data" transfer-ownership="none" closure="0">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="TestFixtureFunc" c:type="GTestFixtureFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="fixture" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="TestFunc" c:type="GTestFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <record name="TestLogBuffer" c:type="GTestLogBuffer">
+      <field name="data" writable="1">
+        <type name="String" c:type="GString*"/>
+      </field>
+      <field name="msgs" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <method name="free" c:identifier="g_test_log_buffer_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="pop"
+              c:identifier="g_test_log_buffer_pop"
+              introspectable="0">
+        <return-value>
+          <type name="TestLogMsg" c:type="GTestLogMsg*"/>
+        </return-value>
+      </method>
+      <method name="push" c:identifier="g_test_log_buffer_push">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_bytes" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="bytes" transfer-ownership="none">
+            <type name="guint8" c:type="guint8*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="TestLogFatalFunc"
+              c:type="GTestLogFatalFunc"
+              version="2.22">
+      <doc xml:whitespace="preserve">Specifies the prototype of fatal log handler functions.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the program should abort, %FALSE otherwise</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="log_domain" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the log domain of the message</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="log_level" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the log level of the message (including the fatal and recursion flags)</doc>
+          <type name="LogLevelFlags" c:type="GLogLevelFlags"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the message to process</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <doc xml:whitespace="preserve">user data, set in g_test_log_set_fatal_handler()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="TestLogMsg" c:type="GTestLogMsg">
+      <field name="log_type" writable="1">
+        <type name="TestLogType" c:type="GTestLogType"/>
+      </field>
+      <field name="n_strings" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="strings" writable="1">
+        <type name="utf8" c:type="gchar**"/>
+      </field>
+      <field name="n_nums" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="nums" writable="1">
+        <type name="glong" c:type="long*"/>
+      </field>
+      <method name="free" c:identifier="g_test_log_msg_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="TestLogType" c:type="GTestLogType">
+      <member name="none" value="0" c:identifier="G_TEST_LOG_NONE"/>
+      <member name="error" value="1" c:identifier="G_TEST_LOG_ERROR"/>
+      <member name="start_binary"
+              value="2"
+              c:identifier="G_TEST_LOG_START_BINARY"/>
+      <member name="list_case" value="3" c:identifier="G_TEST_LOG_LIST_CASE"/>
+      <member name="skip_case" value="4" c:identifier="G_TEST_LOG_SKIP_CASE"/>
+      <member name="start_case"
+              value="5"
+              c:identifier="G_TEST_LOG_START_CASE"/>
+      <member name="stop_case" value="6" c:identifier="G_TEST_LOG_STOP_CASE"/>
+      <member name="min_result"
+              value="7"
+              c:identifier="G_TEST_LOG_MIN_RESULT"/>
+      <member name="max_result"
+              value="8"
+              c:identifier="G_TEST_LOG_MAX_RESULT"/>
+      <member name="message" value="9" c:identifier="G_TEST_LOG_MESSAGE"/>
+    </enumeration>
+    <record name="TestSuite" c:type="GTestSuite" disguised="1">
+      <method name="add" c:identifier="g_test_suite_add">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="test_case" transfer-ownership="none">
+            <type name="TestCase" c:type="GTestCase*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_suite" c:identifier="g_test_suite_add_suite">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="nestedsuite" transfer-ownership="none">
+            <type name="TestSuite" c:type="GTestSuite*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <bitfield name="TestTrapFlags" c:type="GTestTrapFlags">
+      <member name="silence_stdout"
+              value="128"
+              c:identifier="G_TEST_TRAP_SILENCE_STDOUT"/>
+      <member name="silence_stderr"
+              value="256"
+              c:identifier="G_TEST_TRAP_SILENCE_STDERR"/>
+      <member name="inherit_stdin"
+              value="512"
+              c:identifier="G_TEST_TRAP_INHERIT_STDIN"/>
+    </bitfield>
+    <record name="Thread" c:type="GThread">
+      <field name="func" introspectable="0" writable="1">
+        <type name="ThreadFunc" c:type="GThreadFunc"/>
+      </field>
+      <field name="data" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="joinable" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="priority" writable="1">
+        <type name="ThreadPriority" c:type="GThreadPriority"/>
+      </field>
+      <method name="join" c:identifier="g_thread_join" introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="set_priority" c:identifier="g_thread_set_priority">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="priority" transfer-ownership="none">
+            <type name="ThreadPriority" c:type="GThreadPriority"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="ThreadError"
+                 c:type="GThreadError"
+                 glib:error-quark="g_thread_error_quark">
+      <member name="thread_error_again"
+              value="0"
+              c:identifier="G_THREAD_ERROR_AGAIN"/>
+    </enumeration>
+    <callback name="ThreadFunc" c:type="GThreadFunc" introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="ThreadFunctions" c:type="GThreadFunctions">
+      <field name="mutex_new" introspectable="0">
+        <callback name="mutex_new" introspectable="0">
+          <return-value>
+            <type name="Mutex" c:type="GMutex*"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="mutex_lock">
+        <callback name="mutex_lock">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mutex" transfer-ownership="none">
+              <type name="Mutex" c:type="GMutex*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="mutex_trylock">
+        <callback name="mutex_trylock">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="mutex" transfer-ownership="none">
+              <type name="Mutex" c:type="GMutex*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="mutex_unlock">
+        <callback name="mutex_unlock">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mutex" transfer-ownership="none">
+              <type name="Mutex" c:type="GMutex*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="mutex_free">
+        <callback name="mutex_free">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mutex" transfer-ownership="none">
+              <type name="Mutex" c:type="GMutex*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cond_new" introspectable="0">
+        <callback name="cond_new" introspectable="0">
+          <return-value>
+            <type name="Cond" c:type="GCond*"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="cond_signal">
+        <callback name="cond_signal">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cond" transfer-ownership="none">
+              <type name="Cond" c:type="GCond*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cond_broadcast">
+        <callback name="cond_broadcast">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cond" transfer-ownership="none">
+              <type name="Cond" c:type="GCond*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cond_wait">
+        <callback name="cond_wait">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cond" transfer-ownership="none">
+              <type name="Cond" c:type="GCond*"/>
+            </parameter>
+            <parameter name="mutex" transfer-ownership="none">
+              <type name="Mutex" c:type="GMutex*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cond_timed_wait">
+        <callback name="cond_timed_wait">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="cond" transfer-ownership="none">
+              <type name="Cond" c:type="GCond*"/>
+            </parameter>
+            <parameter name="mutex" transfer-ownership="none">
+              <type name="Mutex" c:type="GMutex*"/>
+            </parameter>
+            <parameter name="end_time" transfer-ownership="none">
+              <type name="TimeVal" c:type="GTimeVal*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cond_free">
+        <callback name="cond_free">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cond" transfer-ownership="none">
+              <type name="Cond" c:type="GCond*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="private_new" introspectable="0">
+        <callback name="private_new" introspectable="0">
+          <return-value>
+            <type name="Private" c:type="GPrivate*"/>
+          </return-value>
+          <parameters>
+            <parameter name="destructor"
+                       transfer-ownership="none"
+                       scope="async">
+              <type name="DestroyNotify" c:type="GDestroyNotify"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="private_get" introspectable="0">
+        <callback name="private_get" introspectable="0">
+          <return-value>
+            <type name="gpointer" c:type="gpointer"/>
+          </return-value>
+          <parameters>
+            <parameter name="private_key" transfer-ownership="none">
+              <type name="Private" c:type="GPrivate*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="private_set">
+        <callback name="private_set">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="private_key" transfer-ownership="none">
+              <type name="Private" c:type="GPrivate*"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="thread_create" introspectable="0">
+        <callback name="thread_create" introspectable="0" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="func" transfer-ownership="none" closure="1">
+              <type name="ThreadFunc" c:type="GThreadFunc"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+            <parameter name="stack_size" transfer-ownership="none">
+              <type name="gulong" c:type="gulong"/>
+            </parameter>
+            <parameter name="joinable" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="bound" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="priority" transfer-ownership="none">
+              <type name="ThreadPriority" c:type="GThreadPriority"/>
+            </parameter>
+            <parameter name="thread" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="thread_yield">
+        <callback name="thread_yield">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="thread_join">
+        <callback name="thread_join">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="thread" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="thread_exit">
+        <callback name="thread_exit">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="thread_set_priority">
+        <callback name="thread_set_priority">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="thread" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+            <parameter name="priority" transfer-ownership="none">
+              <type name="ThreadPriority" c:type="GThreadPriority"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="thread_self">
+        <callback name="thread_self">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="thread" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="thread_equal">
+        <callback name="thread_equal">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="thread1" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+            <parameter name="thread2" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="ThreadPool" c:type="GThreadPool">
+      <field name="func" writable="1">
+        <type name="Func" c:type="GFunc"/>
+      </field>
+      <field name="user_data" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="exclusive" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <method name="free" c:identifier="g_thread_pool_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="immediate" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="wait_" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_max_threads"
+              c:identifier="g_thread_pool_get_max_threads">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_num_threads"
+              c:identifier="g_thread_pool_get_num_threads">
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="push" c:identifier="g_thread_pool_push" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_max_threads"
+              c:identifier="g_thread_pool_set_max_threads"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="max_threads" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sort_function"
+              c:identifier="g_thread_pool_set_sort_function"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" closure="1">
+            <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unprocessed" c:identifier="g_thread_pool_unprocessed">
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="ThreadPriority" c:type="GThreadPriority">
+      <member name="low" value="0" c:identifier="G_THREAD_PRIORITY_LOW"/>
+      <member name="normal" value="1" c:identifier="G_THREAD_PRIORITY_NORMAL"/>
+      <member name="high" value="2" c:identifier="G_THREAD_PRIORITY_HIGH"/>
+      <member name="urgent" value="3" c:identifier="G_THREAD_PRIORITY_URGENT"/>
+    </enumeration>
+    <enumeration name="TimeType" c:type="GTimeType">
+      <doc xml:whitespace="preserve">Disambiguates a given time in two ways.
+First, specifies if the given time is in universal or local time.
+Second, if the time is in local time, specifies if it is local
+standard time or local daylight time.  This is important for the case
+where the same local time occurs twice (during daylight savings time
+transitions, for example).</doc>
+      <member name="standard" value="0" c:identifier="G_TIME_TYPE_STANDARD"/>
+      <member name="daylight" value="1" c:identifier="G_TIME_TYPE_DAYLIGHT"/>
+      <member name="universal" value="2" c:identifier="G_TIME_TYPE_UNIVERSAL"/>
+    </enumeration>
+    <record name="TimeVal" c:type="GTimeVal">
+      <field name="tv_sec" writable="1">
+        <type name="glong" c:type="glong"/>
+      </field>
+      <field name="tv_usec" writable="1">
+        <type name="glong" c:type="glong"/>
+      </field>
+      <method name="add" c:identifier="g_time_val_add">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="microseconds" transfer-ownership="none">
+            <type name="glong" c:type="glong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_iso8601" c:identifier="g_time_val_to_iso8601">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="TimeZone" c:type="GTimeZone" disguised="1">
+      <method name="adjust_time" c:identifier="g_time_zone_adjust_time">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="TimeType" c:type="GTimeType"/>
+          </parameter>
+          <parameter name="time" transfer-ownership="none">
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_interval" c:identifier="g_time_zone_find_interval">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="TimeType" c:type="GTimeType"/>
+          </parameter>
+          <parameter name="time" transfer-ownership="none">
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_abbreviation"
+              c:identifier="g_time_zone_get_abbreviation">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="interval" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_offset" c:identifier="g_time_zone_get_offset">
+        <return-value transfer-ownership="none">
+          <type name="gint32" c:type="gint32"/>
+        </return-value>
+        <parameters>
+          <parameter name="interval" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_dst" c:identifier="g_time_zone_is_dst">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="interval" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref" c:identifier="g_time_zone_ref" introspectable="0">
+        <return-value>
+          <type name="TimeZone" c:type="GTimeZone*"/>
+        </return-value>
+      </method>
+      <method name="unref" c:identifier="g_time_zone_unref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="Timer" c:type="GTimer" disguised="1">
+      <method name="continue" c:identifier="g_timer_continue">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="destroy" c:identifier="g_timer_destroy">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="elapsed" c:identifier="g_timer_elapsed">
+        <return-value transfer-ownership="none">
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="microseconds" transfer-ownership="none">
+            <type name="gulong" c:type="gulong*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reset" c:identifier="g_timer_reset">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="start" c:identifier="g_timer_start">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="stop" c:identifier="g_timer_stop">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="TokenType" c:type="GTokenType">
+      <member name="eof" value="0" c:identifier="G_TOKEN_EOF"/>
+      <member name="left_paren" value="0" c:identifier="G_TOKEN_LEFT_PAREN"/>
+      <member name="right_paren" value="0" c:identifier="G_TOKEN_RIGHT_PAREN"/>
+      <member name="left_curly" value="0" c:identifier="G_TOKEN_LEFT_CURLY"/>
+      <member name="right_curly" value="0" c:identifier="G_TOKEN_RIGHT_CURLY"/>
+      <member name="left_brace" value="0" c:identifier="G_TOKEN_LEFT_BRACE"/>
+      <member name="right_brace" value="0" c:identifier="G_TOKEN_RIGHT_BRACE"/>
+      <member name="equal_sign" value="0" c:identifier="G_TOKEN_EQUAL_SIGN"/>
+      <member name="comma" value="0" c:identifier="G_TOKEN_COMMA"/>
+      <member name="none" value="256" c:identifier="G_TOKEN_NONE"/>
+      <member name="error" value="257" c:identifier="G_TOKEN_ERROR"/>
+      <member name="char" value="258" c:identifier="G_TOKEN_CHAR"/>
+      <member name="binary" value="259" c:identifier="G_TOKEN_BINARY"/>
+      <member name="octal" value="260" c:identifier="G_TOKEN_OCTAL"/>
+      <member name="int" value="261" c:identifier="G_TOKEN_INT"/>
+      <member name="hex" value="262" c:identifier="G_TOKEN_HEX"/>
+      <member name="float" value="263" c:identifier="G_TOKEN_FLOAT"/>
+      <member name="string" value="264" c:identifier="G_TOKEN_STRING"/>
+      <member name="symbol" value="265" c:identifier="G_TOKEN_SYMBOL"/>
+      <member name="identifier" value="266" c:identifier="G_TOKEN_IDENTIFIER"/>
+      <member name="identifier_null"
+              value="267"
+              c:identifier="G_TOKEN_IDENTIFIER_NULL"/>
+      <member name="comment_single"
+              value="268"
+              c:identifier="G_TOKEN_COMMENT_SINGLE"/>
+      <member name="comment_multi"
+              value="269"
+              c:identifier="G_TOKEN_COMMENT_MULTI"/>
+      <member name="last" value="270" c:identifier="G_TOKEN_LAST"/>
+    </enumeration>
+    <union name="TokenValue" c:type="GTokenValue">
+      <field name="v_symbol" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="v_identifier" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="v_binary" writable="1">
+        <type name="gulong" c:type="gulong"/>
+      </field>
+      <field name="v_octal" writable="1">
+        <type name="gulong" c:type="gulong"/>
+      </field>
+      <field name="v_int" writable="1">
+        <type name="gulong" c:type="gulong"/>
+      </field>
+      <field name="v_int64" writable="1">
+        <type name="guint64" c:type="guint64"/>
+      </field>
+      <field name="v_float" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="v_hex" writable="1">
+        <type name="gulong" c:type="gulong"/>
+      </field>
+      <field name="v_string" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="v_comment" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="v_char" writable="1">
+        <type name="guint8" c:type="guchar"/>
+      </field>
+      <field name="v_error" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </union>
+    <callback name="TranslateFunc" c:type="GTranslateFunc">
+      <doc xml:whitespace="preserve">The type of functions which are used to translate user-visible
+strings, for &lt;option&gt;--help&lt;/option&gt; output.
+The returned string is owned by GLib and must not be freed.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a translation of the string for the current locale.</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the untranslated string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data specified when installing the function, e.g. in g_option_group_set_translate_func()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="TrashStack" c:type="GTrashStack">
+      <field name="next" writable="1">
+        <type name="TrashStack" c:type="GTrashStack*"/>
+      </field>
+    </record>
+    <bitfield name="TraverseFlags" c:type="GTraverseFlags">
+      <member name="leaves" value="1" c:identifier="G_TRAVERSE_LEAVES"/>
+      <member name="non_leaves"
+              value="2"
+              c:identifier="G_TRAVERSE_NON_LEAVES"/>
+      <member name="all" value="3" c:identifier="G_TRAVERSE_ALL"/>
+      <member name="mask" value="3" c:identifier="G_TRAVERSE_MASK"/>
+      <member name="leafs" value="1" c:identifier="G_TRAVERSE_LEAFS"/>
+      <member name="non_leafs" value="2" c:identifier="G_TRAVERSE_NON_LEAFS"/>
+    </bitfield>
+    <callback name="TraverseFunc" c:type="GTraverseFunc">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="key" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="TraverseType" c:type="GTraverseType">
+      <member name="in_order" value="0" c:identifier="G_IN_ORDER"/>
+      <member name="pre_order" value="1" c:identifier="G_PRE_ORDER"/>
+      <member name="post_order" value="2" c:identifier="G_POST_ORDER"/>
+      <member name="level_order" value="3" c:identifier="G_LEVEL_ORDER"/>
+    </enumeration>
+    <record name="Tree" c:type="GTree" disguised="1">
+      <method name="destroy" c:identifier="g_tree_destroy">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="foreach" c:identifier="g_tree_foreach" introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" closure="1">
+            <type name="TraverseFunc" c:type="GTraverseFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="height" c:identifier="g_tree_height">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="insert" c:identifier="g_tree_insert">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup" c:identifier="g_tree_lookup" introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_extended" c:identifier="g_tree_lookup_extended">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="lookup_key" transfer-ownership="none">
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+          <parameter name="orig_key" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="nnodes" c:identifier="g_tree_nnodes">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="ref" c:identifier="g_tree_ref" introspectable="0">
+        <return-value>
+          <type name="Tree" c:type="GTree*"/>
+        </return-value>
+      </method>
+      <method name="remove" c:identifier="g_tree_remove">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace" c:identifier="g_tree_replace">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="search" c:identifier="g_tree_search" introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="search_func" transfer-ownership="none" closure="1">
+            <type name="CompareFunc" c:type="GCompareFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="steal" c:identifier="g_tree_steal">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="traverse"
+              c:identifier="g_tree_traverse"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="traverse_func"
+                     transfer-ownership="none"
+                     closure="2">
+            <type name="TraverseFunc" c:type="GTraverseFunc"/>
+          </parameter>
+          <parameter name="traverse_type" transfer-ownership="none">
+            <type name="TraverseType" c:type="GTraverseType"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unref" c:identifier="g_tree_unref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="Tuples" c:type="GTuples">
+      <field name="len" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <method name="destroy" c:identifier="g_tuples_destroy">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="index" c:identifier="g_tuples_index" introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="field" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <constant name="URI_RESERVED_CHARS_GENERIC_DELIMITERS" value=":/?#[]@">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS"
+              value="!$&amp;&apos;()*+,;=">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="USEC_PER_SEC" value="1000000">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="UnicodeBreakType" c:type="GUnicodeBreakType">
+      <member name="mandatory"
+              value="0"
+              c:identifier="G_UNICODE_BREAK_MANDATORY"/>
+      <member name="carriage_return"
+              value="1"
+              c:identifier="G_UNICODE_BREAK_CARRIAGE_RETURN"/>
+      <member name="line_feed"
+              value="2"
+              c:identifier="G_UNICODE_BREAK_LINE_FEED"/>
+      <member name="combining_mark"
+              value="3"
+              c:identifier="G_UNICODE_BREAK_COMBINING_MARK"/>
+      <member name="surrogate"
+              value="4"
+              c:identifier="G_UNICODE_BREAK_SURROGATE"/>
+      <member name="zero_width_space"
+              value="5"
+              c:identifier="G_UNICODE_BREAK_ZERO_WIDTH_SPACE"/>
+      <member name="inseparable"
+              value="6"
+              c:identifier="G_UNICODE_BREAK_INSEPARABLE"/>
+      <member name="non_breaking_glue"
+              value="7"
+              c:identifier="G_UNICODE_BREAK_NON_BREAKING_GLUE"/>
+      <member name="contingent"
+              value="8"
+              c:identifier="G_UNICODE_BREAK_CONTINGENT"/>
+      <member name="space" value="9" c:identifier="G_UNICODE_BREAK_SPACE"/>
+      <member name="after" value="10" c:identifier="G_UNICODE_BREAK_AFTER"/>
+      <member name="before" value="11" c:identifier="G_UNICODE_BREAK_BEFORE"/>
+      <member name="before_and_after"
+              value="12"
+              c:identifier="G_UNICODE_BREAK_BEFORE_AND_AFTER"/>
+      <member name="hyphen" value="13" c:identifier="G_UNICODE_BREAK_HYPHEN"/>
+      <member name="non_starter"
+              value="14"
+              c:identifier="G_UNICODE_BREAK_NON_STARTER"/>
+      <member name="open_punctuation"
+              value="15"
+              c:identifier="G_UNICODE_BREAK_OPEN_PUNCTUATION"/>
+      <member name="close_punctuation"
+              value="16"
+              c:identifier="G_UNICODE_BREAK_CLOSE_PUNCTUATION"/>
+      <member name="quotation"
+              value="17"
+              c:identifier="G_UNICODE_BREAK_QUOTATION"/>
+      <member name="exclamation"
+              value="18"
+              c:identifier="G_UNICODE_BREAK_EXCLAMATION"/>
+      <member name="ideographic"
+              value="19"
+              c:identifier="G_UNICODE_BREAK_IDEOGRAPHIC"/>
+      <member name="numeric"
+              value="20"
+              c:identifier="G_UNICODE_BREAK_NUMERIC"/>
+      <member name="infix_separator"
+              value="21"
+              c:identifier="G_UNICODE_BREAK_INFIX_SEPARATOR"/>
+      <member name="symbol" value="22" c:identifier="G_UNICODE_BREAK_SYMBOL"/>
+      <member name="alphabetic"
+              value="23"
+              c:identifier="G_UNICODE_BREAK_ALPHABETIC"/>
+      <member name="prefix" value="24" c:identifier="G_UNICODE_BREAK_PREFIX"/>
+      <member name="postfix"
+              value="25"
+              c:identifier="G_UNICODE_BREAK_POSTFIX"/>
+      <member name="complex_context"
+              value="26"
+              c:identifier="G_UNICODE_BREAK_COMPLEX_CONTEXT"/>
+      <member name="ambiguous"
+              value="27"
+              c:identifier="G_UNICODE_BREAK_AMBIGUOUS"/>
+      <member name="unknown"
+              value="28"
+              c:identifier="G_UNICODE_BREAK_UNKNOWN"/>
+      <member name="next_line"
+              value="29"
+              c:identifier="G_UNICODE_BREAK_NEXT_LINE"/>
+      <member name="word_joiner"
+              value="30"
+              c:identifier="G_UNICODE_BREAK_WORD_JOINER"/>
+      <member name="hangul_l_jamo"
+              value="31"
+              c:identifier="G_UNICODE_BREAK_HANGUL_L_JAMO"/>
+      <member name="hangul_v_jamo"
+              value="32"
+              c:identifier="G_UNICODE_BREAK_HANGUL_V_JAMO"/>
+      <member name="hangul_t_jamo"
+              value="33"
+              c:identifier="G_UNICODE_BREAK_HANGUL_T_JAMO"/>
+      <member name="hangul_lv_syllable"
+              value="34"
+              c:identifier="G_UNICODE_BREAK_HANGUL_LV_SYLLABLE"/>
+      <member name="hangul_lvt_syllable"
+              value="35"
+              c:identifier="G_UNICODE_BREAK_HANGUL_LVT_SYLLABLE"/>
+    </enumeration>
+    <enumeration name="UnicodeScript" c:type="GUnicodeScript">
+      <member name="invalid_code"
+              value="-1"
+              c:identifier="G_UNICODE_SCRIPT_INVALID_CODE"/>
+      <member name="common" value="0" c:identifier="G_UNICODE_SCRIPT_COMMON"/>
+      <member name="inherited"
+              value="1"
+              c:identifier="G_UNICODE_SCRIPT_INHERITED"/>
+      <member name="arabic" value="2" c:identifier="G_UNICODE_SCRIPT_ARABIC"/>
+      <member name="armenian"
+              value="3"
+              c:identifier="G_UNICODE_SCRIPT_ARMENIAN"/>
+      <member name="bengali"
+              value="4"
+              c:identifier="G_UNICODE_SCRIPT_BENGALI"/>
+      <member name="bopomofo"
+              value="5"
+              c:identifier="G_UNICODE_SCRIPT_BOPOMOFO"/>
+      <member name="cherokee"
+              value="6"
+              c:identifier="G_UNICODE_SCRIPT_CHEROKEE"/>
+      <member name="coptic" value="7" c:identifier="G_UNICODE_SCRIPT_COPTIC"/>
+      <member name="cyrillic"
+              value="8"
+              c:identifier="G_UNICODE_SCRIPT_CYRILLIC"/>
+      <member name="deseret"
+              value="9"
+              c:identifier="G_UNICODE_SCRIPT_DESERET"/>
+      <member name="devanagari"
+              value="10"
+              c:identifier="G_UNICODE_SCRIPT_DEVANAGARI"/>
+      <member name="ethiopic"
+              value="11"
+              c:identifier="G_UNICODE_SCRIPT_ETHIOPIC"/>
+      <member name="georgian"
+              value="12"
+              c:identifier="G_UNICODE_SCRIPT_GEORGIAN"/>
+      <member name="gothic" value="13" c:identifier="G_UNICODE_SCRIPT_GOTHIC"/>
+      <member name="greek" value="14" c:identifier="G_UNICODE_SCRIPT_GREEK"/>
+      <member name="gujarati"
+              value="15"
+              c:identifier="G_UNICODE_SCRIPT_GUJARATI"/>
+      <member name="gurmukhi"
+              value="16"
+              c:identifier="G_UNICODE_SCRIPT_GURMUKHI"/>
+      <member name="han" value="17" c:identifier="G_UNICODE_SCRIPT_HAN"/>
+      <member name="hangul" value="18" c:identifier="G_UNICODE_SCRIPT_HANGUL"/>
+      <member name="hebrew" value="19" c:identifier="G_UNICODE_SCRIPT_HEBREW"/>
+      <member name="hiragana"
+              value="20"
+              c:identifier="G_UNICODE_SCRIPT_HIRAGANA"/>
+      <member name="kannada"
+              value="21"
+              c:identifier="G_UNICODE_SCRIPT_KANNADA"/>
+      <member name="katakana"
+              value="22"
+              c:identifier="G_UNICODE_SCRIPT_KATAKANA"/>
+      <member name="khmer" value="23" c:identifier="G_UNICODE_SCRIPT_KHMER"/>
+      <member name="lao" value="24" c:identifier="G_UNICODE_SCRIPT_LAO"/>
+      <member name="latin" value="25" c:identifier="G_UNICODE_SCRIPT_LATIN"/>
+      <member name="malayalam"
+              value="26"
+              c:identifier="G_UNICODE_SCRIPT_MALAYALAM"/>
+      <member name="mongolian"
+              value="27"
+              c:identifier="G_UNICODE_SCRIPT_MONGOLIAN"/>
+      <member name="myanmar"
+              value="28"
+              c:identifier="G_UNICODE_SCRIPT_MYANMAR"/>
+      <member name="ogham" value="29" c:identifier="G_UNICODE_SCRIPT_OGHAM"/>
+      <member name="old_italic"
+              value="30"
+              c:identifier="G_UNICODE_SCRIPT_OLD_ITALIC"/>
+      <member name="oriya" value="31" c:identifier="G_UNICODE_SCRIPT_ORIYA"/>
+      <member name="runic" value="32" c:identifier="G_UNICODE_SCRIPT_RUNIC"/>
+      <member name="sinhala"
+              value="33"
+              c:identifier="G_UNICODE_SCRIPT_SINHALA"/>
+      <member name="syriac" value="34" c:identifier="G_UNICODE_SCRIPT_SYRIAC"/>
+      <member name="tamil" value="35" c:identifier="G_UNICODE_SCRIPT_TAMIL"/>
+      <member name="telugu" value="36" c:identifier="G_UNICODE_SCRIPT_TELUGU"/>
+      <member name="thaana" value="37" c:identifier="G_UNICODE_SCRIPT_THAANA"/>
+      <member name="thai" value="38" c:identifier="G_UNICODE_SCRIPT_THAI"/>
+      <member name="tibetan"
+              value="39"
+              c:identifier="G_UNICODE_SCRIPT_TIBETAN"/>
+      <member name="canadian_aboriginal"
+              value="40"
+              c:identifier="G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL"/>
+      <member name="yi" value="41" c:identifier="G_UNICODE_SCRIPT_YI"/>
+      <member name="tagalog"
+              value="42"
+              c:identifier="G_UNICODE_SCRIPT_TAGALOG"/>
+      <member name="hanunoo"
+              value="43"
+              c:identifier="G_UNICODE_SCRIPT_HANUNOO"/>
+      <member name="buhid" value="44" c:identifier="G_UNICODE_SCRIPT_BUHID"/>
+      <member name="tagbanwa"
+              value="45"
+              c:identifier="G_UNICODE_SCRIPT_TAGBANWA"/>
+      <member name="braille"
+              value="46"
+              c:identifier="G_UNICODE_SCRIPT_BRAILLE"/>
+      <member name="cypriot"
+              value="47"
+              c:identifier="G_UNICODE_SCRIPT_CYPRIOT"/>
+      <member name="limbu" value="48" c:identifier="G_UNICODE_SCRIPT_LIMBU"/>
+      <member name="osmanya"
+              value="49"
+              c:identifier="G_UNICODE_SCRIPT_OSMANYA"/>
+      <member name="shavian"
+              value="50"
+              c:identifier="G_UNICODE_SCRIPT_SHAVIAN"/>
+      <member name="linear_b"
+              value="51"
+              c:identifier="G_UNICODE_SCRIPT_LINEAR_B"/>
+      <member name="tai_le" value="52" c:identifier="G_UNICODE_SCRIPT_TAI_LE"/>
+      <member name="ugaritic"
+              value="53"
+              c:identifier="G_UNICODE_SCRIPT_UGARITIC"/>
+      <member name="new_tai_lue"
+              value="54"
+              c:identifier="G_UNICODE_SCRIPT_NEW_TAI_LUE"/>
+      <member name="buginese"
+              value="55"
+              c:identifier="G_UNICODE_SCRIPT_BUGINESE"/>
+      <member name="glagolitic"
+              value="56"
+              c:identifier="G_UNICODE_SCRIPT_GLAGOLITIC"/>
+      <member name="tifinagh"
+              value="57"
+              c:identifier="G_UNICODE_SCRIPT_TIFINAGH"/>
+      <member name="syloti_nagri"
+              value="58"
+              c:identifier="G_UNICODE_SCRIPT_SYLOTI_NAGRI"/>
+      <member name="old_persian"
+              value="59"
+              c:identifier="G_UNICODE_SCRIPT_OLD_PERSIAN"/>
+      <member name="kharoshthi"
+              value="60"
+              c:identifier="G_UNICODE_SCRIPT_KHAROSHTHI"/>
+      <member name="unknown"
+              value="61"
+              c:identifier="G_UNICODE_SCRIPT_UNKNOWN"/>
+      <member name="balinese"
+              value="62"
+              c:identifier="G_UNICODE_SCRIPT_BALINESE"/>
+      <member name="cuneiform"
+              value="63"
+              c:identifier="G_UNICODE_SCRIPT_CUNEIFORM"/>
+      <member name="phoenician"
+              value="64"
+              c:identifier="G_UNICODE_SCRIPT_PHOENICIAN"/>
+      <member name="phags_pa"
+              value="65"
+              c:identifier="G_UNICODE_SCRIPT_PHAGS_PA"/>
+      <member name="nko" value="66" c:identifier="G_UNICODE_SCRIPT_NKO"/>
+      <member name="kayah_li"
+              value="67"
+              c:identifier="G_UNICODE_SCRIPT_KAYAH_LI"/>
+      <member name="lepcha" value="68" c:identifier="G_UNICODE_SCRIPT_LEPCHA"/>
+      <member name="rejang" value="69" c:identifier="G_UNICODE_SCRIPT_REJANG"/>
+      <member name="sundanese"
+              value="70"
+              c:identifier="G_UNICODE_SCRIPT_SUNDANESE"/>
+      <member name="saurashtra"
+              value="71"
+              c:identifier="G_UNICODE_SCRIPT_SAURASHTRA"/>
+      <member name="cham" value="72" c:identifier="G_UNICODE_SCRIPT_CHAM"/>
+      <member name="ol_chiki"
+              value="73"
+              c:identifier="G_UNICODE_SCRIPT_OL_CHIKI"/>
+      <member name="vai" value="74" c:identifier="G_UNICODE_SCRIPT_VAI"/>
+      <member name="carian" value="75" c:identifier="G_UNICODE_SCRIPT_CARIAN"/>
+      <member name="lycian" value="76" c:identifier="G_UNICODE_SCRIPT_LYCIAN"/>
+      <member name="lydian" value="77" c:identifier="G_UNICODE_SCRIPT_LYDIAN"/>
+      <member name="avestan"
+              value="78"
+              c:identifier="G_UNICODE_SCRIPT_AVESTAN"/>
+      <member name="bamum" value="79" c:identifier="G_UNICODE_SCRIPT_BAMUM"/>
+      <member name="egyptian_hieroglyphs"
+              value="80"
+              c:identifier="G_UNICODE_SCRIPT_EGYPTIAN_HIEROGLYPHS"/>
+      <member name="imperial_aramaic"
+              value="81"
+              c:identifier="G_UNICODE_SCRIPT_IMPERIAL_ARAMAIC"/>
+      <member name="inscriptional_pahlavi"
+              value="82"
+              c:identifier="G_UNICODE_SCRIPT_INSCRIPTIONAL_PAHLAVI"/>
+      <member name="inscriptional_parthian"
+              value="83"
+              c:identifier="G_UNICODE_SCRIPT_INSCRIPTIONAL_PARTHIAN"/>
+      <member name="javanese"
+              value="84"
+              c:identifier="G_UNICODE_SCRIPT_JAVANESE"/>
+      <member name="kaithi" value="85" c:identifier="G_UNICODE_SCRIPT_KAITHI"/>
+      <member name="lisu" value="86" c:identifier="G_UNICODE_SCRIPT_LISU"/>
+      <member name="meetei_mayek"
+              value="87"
+              c:identifier="G_UNICODE_SCRIPT_MEETEI_MAYEK"/>
+      <member name="old_south_arabian"
+              value="88"
+              c:identifier="G_UNICODE_SCRIPT_OLD_SOUTH_ARABIAN"/>
+      <member name="old_turkish"
+              value="89"
+              c:identifier="G_UNICODE_SCRIPT_OLD_TURKISH"/>
+      <member name="samaritan"
+              value="90"
+              c:identifier="G_UNICODE_SCRIPT_SAMARITAN"/>
+      <member name="tai_tham"
+              value="91"
+              c:identifier="G_UNICODE_SCRIPT_TAI_THAM"/>
+      <member name="tai_viet"
+              value="92"
+              c:identifier="G_UNICODE_SCRIPT_TAI_VIET"/>
+    </enumeration>
+    <enumeration name="UnicodeType" c:type="GUnicodeType">
+      <member name="control" value="0" c:identifier="G_UNICODE_CONTROL"/>
+      <member name="format" value="1" c:identifier="G_UNICODE_FORMAT"/>
+      <member name="unassigned" value="2" c:identifier="G_UNICODE_UNASSIGNED"/>
+      <member name="private_use"
+              value="3"
+              c:identifier="G_UNICODE_PRIVATE_USE"/>
+      <member name="surrogate" value="4" c:identifier="G_UNICODE_SURROGATE"/>
+      <member name="lowercase_letter"
+              value="5"
+              c:identifier="G_UNICODE_LOWERCASE_LETTER"/>
+      <member name="modifier_letter"
+              value="6"
+              c:identifier="G_UNICODE_MODIFIER_LETTER"/>
+      <member name="other_letter"
+              value="7"
+              c:identifier="G_UNICODE_OTHER_LETTER"/>
+      <member name="titlecase_letter"
+              value="8"
+              c:identifier="G_UNICODE_TITLECASE_LETTER"/>
+      <member name="uppercase_letter"
+              value="9"
+              c:identifier="G_UNICODE_UPPERCASE_LETTER"/>
+      <member name="combining_mark"
+              value="10"
+              c:identifier="G_UNICODE_COMBINING_MARK"/>
+      <member name="enclosing_mark"
+              value="11"
+              c:identifier="G_UNICODE_ENCLOSING_MARK"/>
+      <member name="non_spacing_mark"
+              value="12"
+              c:identifier="G_UNICODE_NON_SPACING_MARK"/>
+      <member name="decimal_number"
+              value="13"
+              c:identifier="G_UNICODE_DECIMAL_NUMBER"/>
+      <member name="letter_number"
+              value="14"
+              c:identifier="G_UNICODE_LETTER_NUMBER"/>
+      <member name="other_number"
+              value="15"
+              c:identifier="G_UNICODE_OTHER_NUMBER"/>
+      <member name="connect_punctuation"
+              value="16"
+              c:identifier="G_UNICODE_CONNECT_PUNCTUATION"/>
+      <member name="dash_punctuation"
+              value="17"
+              c:identifier="G_UNICODE_DASH_PUNCTUATION"/>
+      <member name="close_punctuation"
+              value="18"
+              c:identifier="G_UNICODE_CLOSE_PUNCTUATION"/>
+      <member name="final_punctuation"
+              value="19"
+              c:identifier="G_UNICODE_FINAL_PUNCTUATION"/>
+      <member name="initial_punctuation"
+              value="20"
+              c:identifier="G_UNICODE_INITIAL_PUNCTUATION"/>
+      <member name="other_punctuation"
+              value="21"
+              c:identifier="G_UNICODE_OTHER_PUNCTUATION"/>
+      <member name="open_punctuation"
+              value="22"
+              c:identifier="G_UNICODE_OPEN_PUNCTUATION"/>
+      <member name="currency_symbol"
+              value="23"
+              c:identifier="G_UNICODE_CURRENCY_SYMBOL"/>
+      <member name="modifier_symbol"
+              value="24"
+              c:identifier="G_UNICODE_MODIFIER_SYMBOL"/>
+      <member name="math_symbol"
+              value="25"
+              c:identifier="G_UNICODE_MATH_SYMBOL"/>
+      <member name="other_symbol"
+              value="26"
+              c:identifier="G_UNICODE_OTHER_SYMBOL"/>
+      <member name="line_separator"
+              value="27"
+              c:identifier="G_UNICODE_LINE_SEPARATOR"/>
+      <member name="paragraph_separator"
+              value="28"
+              c:identifier="G_UNICODE_PARAGRAPH_SEPARATOR"/>
+      <member name="space_separator"
+              value="29"
+              c:identifier="G_UNICODE_SPACE_SEPARATOR"/>
+    </enumeration>
+    <enumeration name="UserDirectory" version="2.14" c:type="GUserDirectory">
+      <doc xml:whitespace="preserve">These are logical ids for special directories which are defined
+depending on the platform used. You should use g_get_user_special_dir()
+to retrieve the full path associated to the logical id.
+The #GUserDirectory enumeration can be extended at later date. Not
+every platform has a directory for every logical id in this
+enumeration.</doc>
+      <member name="directory_desktop"
+              value="0"
+              c:identifier="G_USER_DIRECTORY_DESKTOP"/>
+      <member name="directory_documents"
+              value="1"
+              c:identifier="G_USER_DIRECTORY_DOCUMENTS"/>
+      <member name="directory_download"
+              value="2"
+              c:identifier="G_USER_DIRECTORY_DOWNLOAD"/>
+      <member name="directory_music"
+              value="3"
+              c:identifier="G_USER_DIRECTORY_MUSIC"/>
+      <member name="directory_pictures"
+              value="4"
+              c:identifier="G_USER_DIRECTORY_PICTURES"/>
+      <member name="directory_public_share"
+              value="5"
+              c:identifier="G_USER_DIRECTORY_PUBLIC_SHARE"/>
+      <member name="directory_templates"
+              value="6"
+              c:identifier="G_USER_DIRECTORY_TEMPLATES"/>
+      <member name="directory_videos"
+              value="7"
+              c:identifier="G_USER_DIRECTORY_VIDEOS"/>
+      <member name="n_directories"
+              value="8"
+              c:identifier="G_USER_N_DIRECTORIES"/>
+    </enumeration>
+    <constant name="VA_COPY_AS_ARRAY" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="Variant"
+            c:type="GVariant"
+            foreign="1"
+            glib:type-name="GVariant"
+            glib:get-type="g_variant_get_gtype"
+            c:symbol-prefix="variant">
+      <constructor name="new" c:identifier="g_variant_new" introspectable="0">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format_string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_array" c:identifier="g_variant_new_array">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_type" transfer-ownership="none">
+            <type name="VariantType" c:type="GVariantType*"/>
+          </parameter>
+          <parameter name="children" transfer-ownership="none">
+            <type name="Variant" c:type="GVariant**"/>
+          </parameter>
+          <parameter name="n_children" transfer-ownership="none">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_boolean" c:identifier="g_variant_new_boolean">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="boolean" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_byte" c:identifier="g_variant_new_byte">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="byte" transfer-ownership="none">
+            <type name="guint8" c:type="guchar"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_bytestring"
+                   c:identifier="g_variant_new_bytestring">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_bytestring_array"
+                   c:identifier="g_variant_new_bytestring_array">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="strv" transfer-ownership="none">
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_double" c:identifier="g_variant_new_double">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="floating" transfer-ownership="none">
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_data" c:identifier="g_variant_new_from_data">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="VariantType" c:type="GVariantType*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="trusted" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="async">
+            <type name="DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_handle" c:identifier="g_variant_new_handle">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="handle" transfer-ownership="none">
+            <type name="gint32" c:type="gint32"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_int16" c:identifier="g_variant_new_int16">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="int16" transfer-ownership="none">
+            <type name="gint16" c:type="gint16"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_int32" c:identifier="g_variant_new_int32">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="int32" transfer-ownership="none">
+            <type name="gint32" c:type="gint32"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_int64" c:identifier="g_variant_new_int64">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="int64" transfer-ownership="none">
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_maybe" c:identifier="g_variant_new_maybe">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_type" transfer-ownership="none">
+            <type name="VariantType" c:type="GVariantType*"/>
+          </parameter>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_object_path"
+                   c:identifier="g_variant_new_object_path">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="object_path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_parsed"
+                   c:identifier="g_variant_new_parsed"
+                   introspectable="0">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_parsed_va"
+                   c:identifier="g_variant_new_parsed_va"
+                   introspectable="0">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="app" transfer-ownership="none">
+            <type name="va_list" c:type="va_list*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_signature" c:identifier="g_variant_new_signature">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="signature" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_string" c:identifier="g_variant_new_string">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_strv" c:identifier="g_variant_new_strv">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="strv" transfer-ownership="none">
+            <array length="1" c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_uint16" c:identifier="g_variant_new_uint16">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uint16" transfer-ownership="none">
+            <type name="guint16" c:type="guint16"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_uint32" c:identifier="g_variant_new_uint32">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uint32" transfer-ownership="none">
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_uint64" c:identifier="g_variant_new_uint64">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uint64" transfer-ownership="none">
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_va"
+                   c:identifier="g_variant_new_va"
+                   introspectable="0">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format_string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="endptr" transfer-ownership="none">
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="app" transfer-ownership="none">
+            <type name="va_list" c:type="va_list*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="byteswap" c:identifier="g_variant_byteswap">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+      </method>
+      <method name="classify" c:identifier="g_variant_classify">
+        <return-value transfer-ownership="none">
+          <type name="VariantClass" c:type="GVariantClass"/>
+        </return-value>
+      </method>
+      <method name="dup_bytestring" c:identifier="g_variant_dup_bytestring">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup_bytestring_array"
+              c:identifier="g_variant_dup_bytestring_array"
+              introspectable="0">
+        <return-value>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup_string" c:identifier="g_variant_dup_string">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup_strv"
+              c:identifier="g_variant_dup_strv"
+              introspectable="0">
+        <return-value>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get" c:identifier="g_variant_get" introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format_string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean" c:identifier="g_variant_get_boolean">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_byte" c:identifier="g_variant_get_byte">
+        <return-value transfer-ownership="none">
+          <type name="guint8" c:type="guchar"/>
+        </return-value>
+      </method>
+      <method name="get_bytestring" c:identifier="g_variant_get_bytestring">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_bytestring_array"
+              c:identifier="g_variant_get_bytestring_array"
+              introspectable="0">
+        <return-value>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child"
+              c:identifier="g_variant_get_child"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="format_string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child_value" c:identifier="g_variant_get_child_value">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_data"
+              c:identifier="g_variant_get_data"
+              introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </return-value>
+      </method>
+      <method name="get_double" c:identifier="g_variant_get_double">
+        <return-value transfer-ownership="none">
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_fixed_array"
+              c:identifier="g_variant_get_fixed_array"
+              introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_elements" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+          <parameter name="element_size" transfer-ownership="none">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_handle" c:identifier="g_variant_get_handle">
+        <return-value transfer-ownership="none">
+          <type name="gint32" c:type="gint32"/>
+        </return-value>
+      </method>
+      <method name="get_int16" c:identifier="g_variant_get_int16">
+        <return-value transfer-ownership="none">
+          <type name="gint16" c:type="gint16"/>
+        </return-value>
+      </method>
+      <method name="get_int32" c:identifier="g_variant_get_int32">
+        <return-value transfer-ownership="none">
+          <type name="gint32" c:type="gint32"/>
+        </return-value>
+      </method>
+      <method name="get_int64" c:identifier="g_variant_get_int64">
+        <return-value transfer-ownership="none">
+          <type name="gint64" c:type="gint64"/>
+        </return-value>
+      </method>
+      <method name="get_maybe" c:identifier="g_variant_get_maybe">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+      </method>
+      <method name="get_normal_form" c:identifier="g_variant_get_normal_form">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+      </method>
+      <method name="get_size" c:identifier="g_variant_get_size">
+        <return-value transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </return-value>
+      </method>
+      <method name="get_string" c:identifier="g_variant_get_string">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="length"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_strv" c:identifier="g_variant_get_strv">
+        <return-value transfer-ownership="container">
+          <array length="0" c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="length"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_type_string" c:identifier="g_variant_get_type_string">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_uint16" c:identifier="g_variant_get_uint16">
+        <return-value transfer-ownership="none">
+          <type name="guint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <method name="get_uint32" c:identifier="g_variant_get_uint32">
+        <return-value transfer-ownership="none">
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="get_uint64" c:identifier="g_variant_get_uint64">
+        <return-value transfer-ownership="none">
+          <type name="guint64" c:type="guint64"/>
+        </return-value>
+      </method>
+      <method name="get_va" c:identifier="g_variant_get_va" introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format_string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="endptr" transfer-ownership="none">
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="app" transfer-ownership="none">
+            <type name="va_list" c:type="va_list*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_variant" c:identifier="g_variant_get_variant">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+      </method>
+      <method name="is_container" c:identifier="g_variant_is_container">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_floating" c:identifier="g_variant_is_floating">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_normal_form" c:identifier="g_variant_is_normal_form">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_of_type" c:identifier="g_variant_is_of_type">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="VariantType" c:type="GVariantType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_new"
+              c:identifier="g_variant_iter_new"
+              introspectable="0">
+        <return-value>
+          <type name="VariantIter" c:type="GVariantIter*"/>
+        </return-value>
+      </method>
+      <method name="n_children" c:identifier="g_variant_n_children">
+        <return-value transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </return-value>
+      </method>
+      <method name="new_dict_entry" c:identifier="g_variant_new_dict_entry">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="new_variant" c:identifier="g_variant_new_variant">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+      </method>
+      <method name="print" c:identifier="g_variant_print">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type_annotate" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="print_string"
+              c:identifier="g_variant_print_string"
+              introspectable="0">
+        <return-value>
+          <type name="String" c:type="GString*"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <type name="String" c:type="GString*"/>
+          </parameter>
+          <parameter name="type_annotate" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref" c:identifier="g_variant_ref">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+      </method>
+      <method name="ref_sink" c:identifier="g_variant_ref_sink">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+      </method>
+      <method name="store" c:identifier="g_variant_store">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unref" c:identifier="g_variant_unref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="VariantBuilder" c:type="GVariantBuilder">
+      <field name="x" writable="1">
+        <array zero-terminated="0" c:type="gulong" fixed-size="16">
+          <type name="gulong" c:type="gsize"/>
+        </array>
+      </field>
+      <method name="add"
+              c:identifier="g_variant_builder_add"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format_string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_parsed"
+              c:identifier="g_variant_builder_add_parsed"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_value" c:identifier="g_variant_builder_add_value">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear" c:identifier="g_variant_builder_clear">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="close" c:identifier="g_variant_builder_close">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="end" c:identifier="g_variant_builder_end">
+        <return-value transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+      </method>
+      <method name="init" c:identifier="g_variant_builder_init">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="VariantType" c:type="GVariantType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="open" c:identifier="g_variant_builder_open">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="VariantType" c:type="GVariantType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref"
+              c:identifier="g_variant_builder_ref"
+              introspectable="0">
+        <return-value>
+          <type name="VariantBuilder" c:type="GVariantBuilder*"/>
+        </return-value>
+      </method>
+      <method name="unref" c:identifier="g_variant_builder_unref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="VariantClass" c:type="GVariantClass">
+      <member name="boolean" value="0" c:identifier="G_VARIANT_CLASS_BOOLEAN"/>
+      <member name="byte" value="0" c:identifier="G_VARIANT_CLASS_BYTE"/>
+      <member name="int16" value="0" c:identifier="G_VARIANT_CLASS_INT16"/>
+      <member name="uint16" value="0" c:identifier="G_VARIANT_CLASS_UINT16"/>
+      <member name="int32" value="0" c:identifier="G_VARIANT_CLASS_INT32"/>
+      <member name="uint32" value="0" c:identifier="G_VARIANT_CLASS_UINT32"/>
+      <member name="int64" value="0" c:identifier="G_VARIANT_CLASS_INT64"/>
+      <member name="uint64" value="0" c:identifier="G_VARIANT_CLASS_UINT64"/>
+      <member name="handle" value="0" c:identifier="G_VARIANT_CLASS_HANDLE"/>
+      <member name="double" value="0" c:identifier="G_VARIANT_CLASS_DOUBLE"/>
+      <member name="string" value="0" c:identifier="G_VARIANT_CLASS_STRING"/>
+      <member name="object_path"
+              value="0"
+              c:identifier="G_VARIANT_CLASS_OBJECT_PATH"/>
+      <member name="signature"
+              value="0"
+              c:identifier="G_VARIANT_CLASS_SIGNATURE"/>
+      <member name="variant" value="0" c:identifier="G_VARIANT_CLASS_VARIANT"/>
+      <member name="maybe" value="0" c:identifier="G_VARIANT_CLASS_MAYBE"/>
+      <member name="array" value="0" c:identifier="G_VARIANT_CLASS_ARRAY"/>
+      <member name="tuple" value="0" c:identifier="G_VARIANT_CLASS_TUPLE"/>
+      <member name="dict_entry"
+              value="0"
+              c:identifier="G_VARIANT_CLASS_DICT_ENTRY"/>
+    </enumeration>
+    <record name="VariantIter" c:type="GVariantIter">
+      <field name="x" writable="1">
+        <array zero-terminated="0" c:type="gulong" fixed-size="16">
+          <type name="gulong" c:type="gsize"/>
+        </array>
+      </field>
+      <method name="copy"
+              c:identifier="g_variant_iter_copy"
+              introspectable="0">
+        <return-value>
+          <type name="VariantIter" c:type="GVariantIter*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="g_variant_iter_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="init" c:identifier="g_variant_iter_init">
+        <return-value transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="loop"
+              c:identifier="g_variant_iter_loop"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format_string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="n_children" c:identifier="g_variant_iter_n_children">
+        <return-value transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </return-value>
+      </method>
+      <method name="next"
+              c:identifier="g_variant_iter_next"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format_string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="next_value" c:identifier="g_variant_iter_next_value">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="GVariant*"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="VariantParseError" c:type="GVariantParseError">
+      <member name="variant_parse_error_failed"
+              value="0"
+              c:identifier="G_VARIANT_PARSE_ERROR_FAILED"/>
+    </enumeration>
+    <record name="VariantType" c:type="GVariantType" disguised="1">
+      <doc xml:whitespace="preserve">A type in the GVariant type system.
+Two types may not be compared by value; use g_variant_type_equal() or
+g_variant_type_is_subtype().  May be copied using
+g_variant_type_copy() and freed using g_variant_type_free().</doc>
+      <method name="copy"
+              c:identifier="g_variant_type_copy"
+              introspectable="0">
+        <return-value>
+          <type name="VariantType" c:type="GVariantType*"/>
+        </return-value>
+      </method>
+      <method name="dup_string" c:identifier="g_variant_type_dup_string">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="element" c:identifier="g_variant_type_element">
+        <return-value transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </return-value>
+      </method>
+      <method name="first" c:identifier="g_variant_type_first">
+        <return-value transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="g_variant_type_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_string_length"
+              c:identifier="g_variant_type_get_string_length">
+        <return-value transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </return-value>
+      </method>
+      <method name="is_array" c:identifier="g_variant_type_is_array">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_basic" c:identifier="g_variant_type_is_basic">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_container" c:identifier="g_variant_type_is_container">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_definite" c:identifier="g_variant_type_is_definite">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_dict_entry" c:identifier="g_variant_type_is_dict_entry">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_maybe" c:identifier="g_variant_type_is_maybe">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_subtype_of" c:identifier="g_variant_type_is_subtype_of">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="supertype" transfer-ownership="none">
+            <type name="VariantType" c:type="GVariantType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_tuple" c:identifier="g_variant_type_is_tuple">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_variant" c:identifier="g_variant_type_is_variant">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="key" c:identifier="g_variant_type_key">
+        <return-value transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </return-value>
+      </method>
+      <method name="n_items" c:identifier="g_variant_type_n_items">
+        <return-value transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </return-value>
+      </method>
+      <method name="new_array"
+              c:identifier="g_variant_type_new_array"
+              introspectable="0">
+        <return-value>
+          <type name="VariantType" c:type="GVariantType*"/>
+        </return-value>
+      </method>
+      <method name="new_dict_entry"
+              c:identifier="g_variant_type_new_dict_entry"
+              introspectable="0">
+        <return-value>
+          <type name="VariantType" c:type="GVariantType*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="VariantType" c:type="GVariantType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="new_maybe"
+              c:identifier="g_variant_type_new_maybe"
+              introspectable="0">
+        <return-value>
+          <type name="VariantType" c:type="GVariantType*"/>
+        </return-value>
+      </method>
+      <method name="next" c:identifier="g_variant_type_next">
+        <return-value transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </return-value>
+      </method>
+      <method name="peek_string" c:identifier="g_variant_type_peek_string">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="value" c:identifier="g_variant_type_value">
+        <return-value transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </return-value>
+      </method>
+    </record>
+    <callback name="VoidFunc" c:type="GVoidFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <constant name="WIN32_MSG_HANDLE" value="19981206">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="access" c:identifier="g_access">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="allocator_new"
+              c:identifier="g_allocator_new"
+              introspectable="0">
+      <return-value>
+        <type name="Allocator" c:type="GAllocator*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="n_preallocs" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_append_vals"
+              c:identifier="g_array_append_vals"
+              introspectable="0">
+      <return-value>
+        <array name="GLib.Array" c:type="GArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.Array" c:type="GArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_free" c:identifier="g_array_free">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.Array" c:type="GArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="free_segment" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_get_element_size"
+              c:identifier="g_array_get_element_size">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.Array" c:type="GArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_insert_vals"
+              c:identifier="g_array_insert_vals"
+              introspectable="0">
+      <return-value>
+        <array name="GLib.Array" c:type="GArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.Array" c:type="GArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_new" c:identifier="g_array_new" introspectable="0">
+      <return-value>
+        <array name="GLib.Array" c:type="GArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="zero_terminated" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="clear_" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="element_size" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_prepend_vals"
+              c:identifier="g_array_prepend_vals"
+              introspectable="0">
+      <return-value>
+        <array name="GLib.Array" c:type="GArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.Array" c:type="GArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_ref" c:identifier="g_array_ref" introspectable="0">
+      <return-value>
+        <array name="GLib.Array" c:type="GArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.Array" c:type="GArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_remove_index"
+              c:identifier="g_array_remove_index"
+              introspectable="0">
+      <return-value>
+        <array name="GLib.Array" c:type="GArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.Array" c:type="GArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_remove_index_fast"
+              c:identifier="g_array_remove_index_fast"
+              introspectable="0">
+      <return-value>
+        <array name="GLib.Array" c:type="GArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.Array" c:type="GArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_remove_range"
+              c:identifier="g_array_remove_range"
+              introspectable="0">
+      <return-value>
+        <array name="GLib.Array" c:type="GArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.Array" c:type="GArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_set_size"
+              c:identifier="g_array_set_size"
+              introspectable="0">
+      <return-value>
+        <array name="GLib.Array" c:type="GArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.Array" c:type="GArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_sized_new"
+              c:identifier="g_array_sized_new"
+              introspectable="0">
+      <return-value>
+        <array name="GLib.Array" c:type="GArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="zero_terminated" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="clear_" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="element_size" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="reserved_size" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_sort" c:identifier="g_array_sort" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.Array" c:type="GArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="compare_func" transfer-ownership="none">
+          <type name="CompareFunc" c:type="GCompareFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_sort_with_data"
+              c:identifier="g_array_sort_with_data"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.Array" c:type="GArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="compare_func" transfer-ownership="none" closure="2">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_unref" c:identifier="g_array_unref">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.Array" c:type="GArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ascii_digit_value" c:identifier="g_ascii_digit_value">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gchar" c:type="gchar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ascii_dtostr" c:identifier="g_ascii_dtostr">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="buf_len" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="d" transfer-ownership="none">
+          <type name="gdouble" c:type="gdouble"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ascii_formatd" c:identifier="g_ascii_formatd">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="buf_len" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="d" transfer-ownership="none">
+          <type name="gdouble" c:type="gdouble"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ascii_strcasecmp" c:identifier="g_ascii_strcasecmp">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="s1" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="s2" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ascii_strdown" c:identifier="g_ascii_strdown">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ascii_strncasecmp" c:identifier="g_ascii_strncasecmp">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="s1" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="s2" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ascii_strtod" c:identifier="g_ascii_strtod">
+      <return-value transfer-ownership="none">
+        <type name="gdouble" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="nptr" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="endptr" transfer-ownership="none">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ascii_strtoll" c:identifier="g_ascii_strtoll">
+      <return-value transfer-ownership="none">
+        <type name="gint64" c:type="gint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="nptr" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="endptr" transfer-ownership="none">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="base" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ascii_strtoull" c:identifier="g_ascii_strtoull">
+      <return-value transfer-ownership="none">
+        <type name="guint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="nptr" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="endptr" transfer-ownership="none">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="base" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ascii_strup" c:identifier="g_ascii_strup">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ascii_tolower" c:identifier="g_ascii_tolower">
+      <return-value transfer-ownership="none">
+        <type name="gchar" c:type="gchar"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gchar" c:type="gchar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ascii_toupper" c:identifier="g_ascii_toupper">
+      <return-value transfer-ownership="none">
+        <type name="gchar" c:type="gchar"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gchar" c:type="gchar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ascii_xdigit_value" c:identifier="g_ascii_xdigit_value">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gchar" c:type="gchar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="assert_warning" c:identifier="g_assert_warning">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="log_domain" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="file" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="line" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="pretty_function" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="expression" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="assertion_message" c:identifier="g_assertion_message">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="domain" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="file" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="line" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="assertion_message_cmpnum"
+              c:identifier="g_assertion_message_cmpnum"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="domain" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="file" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="line" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="expr" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="arg1" transfer-ownership="none">
+          <type name="long double" c:type="long double"/>
+        </parameter>
+        <parameter name="cmp" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="arg2" transfer-ownership="none">
+          <type name="long double" c:type="long double"/>
+        </parameter>
+        <parameter name="numtype" transfer-ownership="none">
+          <type name="gchar" c:type="char"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="assertion_message_cmpstr"
+              c:identifier="g_assertion_message_cmpstr">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="domain" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="file" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="line" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="expr" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="arg1" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="cmp" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="arg2" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="assertion_message_error"
+              c:identifier="g_assertion_message_error">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="domain" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="file" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="line" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="expr" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="error" transfer-ownership="none">
+          <type name="Error" c:type="GError*"/>
+        </parameter>
+        <parameter name="error_domain" transfer-ownership="none">
+          <type name="Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="error_code" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="assertion_message_expr"
+              c:identifier="g_assertion_message_expr">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="domain" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="file" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="line" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="expr" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_queue_new"
+              c:identifier="g_async_queue_new"
+              introspectable="0">
+      <return-value>
+        <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+      </return-value>
+    </function>
+    <function name="async_queue_new_full"
+              c:identifier="g_async_queue_new_full"
+              introspectable="0">
+      <return-value>
+        <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="item_free_func"
+                   transfer-ownership="none"
+                   scope="async">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="atexit" c:identifier="g_atexit" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="func" transfer-ownership="none">
+          <type name="VoidFunc" c:type="GVoidFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="atomic_int_add" c:identifier="g_atomic_int_add">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="atomic" transfer-ownership="none">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="val" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="atomic_int_compare_and_exchange"
+              c:identifier="g_atomic_int_compare_and_exchange">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="atomic" transfer-ownership="none">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="oldval" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="newval" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="atomic_int_exchange_and_add"
+              c:identifier="g_atomic_int_exchange_and_add">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="atomic" transfer-ownership="none">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="val" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="atomic_int_get" c:identifier="g_atomic_int_get">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="atomic" transfer-ownership="none">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="atomic_int_set" c:identifier="g_atomic_int_set">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="atomic" transfer-ownership="none">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="newval" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="atomic_pointer_compare_and_exchange"
+              c:identifier="g_atomic_pointer_compare_and_exchange">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="atomic" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer*"/>
+        </parameter>
+        <parameter name="oldval" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="newval" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="atomic_pointer_get"
+              c:identifier="g_atomic_pointer_get"
+              introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="atomic" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="atomic_pointer_set" c:identifier="g_atomic_pointer_set">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="atomic" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer*"/>
+        </parameter>
+        <parameter name="newval" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="base64_decode" c:identifier="g_base64_decode">
+      <return-value transfer-ownership="none">
+        <type name="guint8" c:type="guchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="text" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="out_len" transfer-ownership="none">
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="base64_decode_inplace"
+              c:identifier="g_base64_decode_inplace">
+      <return-value transfer-ownership="none">
+        <type name="guint8" c:type="guchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="text" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="out_len" transfer-ownership="none">
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="base64_decode_step" c:identifier="g_base64_decode_step">
+      <return-value transfer-ownership="none">
+        <type name="gulong" c:type="gsize"/>
+      </return-value>
+      <parameters>
+        <parameter name="in" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+        <parameter name="out" transfer-ownership="none">
+          <type name="guint8" c:type="guchar*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="save" transfer-ownership="none">
+          <type name="guint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="base64_encode" c:identifier="g_base64_encode">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="guint8" c:type="guchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="base64_encode_close" c:identifier="g_base64_encode_close">
+      <return-value transfer-ownership="none">
+        <type name="gulong" c:type="gsize"/>
+      </return-value>
+      <parameters>
+        <parameter name="break_lines" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="out" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="save" transfer-ownership="none">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="base64_encode_step" c:identifier="g_base64_encode_step">
+      <return-value transfer-ownership="none">
+        <type name="gulong" c:type="gsize"/>
+      </return-value>
+      <parameters>
+        <parameter name="in" transfer-ownership="none">
+          <type name="guint8" c:type="guchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+        <parameter name="break_lines" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="out" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="save" transfer-ownership="none">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="basename" c:identifier="g_basename">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="file_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bit_lock" c:identifier="g_bit_lock">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="address" transfer-ownership="none">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="lock_bit" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bit_nth_lsf" c:identifier="g_bit_nth_lsf">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="mask" transfer-ownership="none">
+          <type name="gulong" c:type="gulong"/>
+        </parameter>
+        <parameter name="nth_bit" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bit_nth_msf" c:identifier="g_bit_nth_msf">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="mask" transfer-ownership="none">
+          <type name="gulong" c:type="gulong"/>
+        </parameter>
+        <parameter name="nth_bit" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bit_storage" c:identifier="g_bit_storage">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="number" transfer-ownership="none">
+          <type name="gulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bit_trylock" c:identifier="g_bit_trylock">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="address" transfer-ownership="none">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="lock_bit" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bit_unlock" c:identifier="g_bit_unlock">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="address" transfer-ownership="none">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="lock_bit" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="blow_chunks" c:identifier="g_blow_chunks">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="bookmark_file_error_quark"
+              c:identifier="g_bookmark_file_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="bookmark_file_new"
+              c:identifier="g_bookmark_file_new"
+              introspectable="0">
+      <return-value>
+        <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+      </return-value>
+    </function>
+    <function name="build_filename"
+              c:identifier="g_build_filename"
+              introspectable="0">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="first_element" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="build_filenamev" c:identifier="g_build_filenamev">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="args" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Return value:</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="build_path" c:identifier="g_build_path" introspectable="0">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="separator" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="first_element" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="build_pathv" c:identifier="g_build_pathv">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="separator" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="args" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Return value:</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_array_append"
+              c:identifier="g_byte_array_append"
+              introspectable="0">
+      <return-value>
+        <array name="GLib.ByteArray" c:type="GByteArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.ByteArray" c:type="GByteArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="guint8" c:type="guint8*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_array_free" c:identifier="g_byte_array_free">
+      <return-value transfer-ownership="none">
+        <type name="guint8" c:type="guint8*"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.ByteArray" c:type="GByteArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="free_segment" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_array_new"
+              c:identifier="g_byte_array_new"
+              introspectable="0">
+      <return-value>
+        <array name="GLib.ByteArray" c:type="GByteArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </return-value>
+    </function>
+    <function name="byte_array_prepend"
+              c:identifier="g_byte_array_prepend"
+              introspectable="0">
+      <return-value>
+        <array name="GLib.ByteArray" c:type="GByteArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.ByteArray" c:type="GByteArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="guint8" c:type="guint8*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_array_ref"
+              c:identifier="g_byte_array_ref"
+              introspectable="0">
+      <return-value>
+        <array name="GLib.ByteArray" c:type="GByteArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.ByteArray" c:type="GByteArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_array_remove_index"
+              c:identifier="g_byte_array_remove_index"
+              introspectable="0">
+      <return-value>
+        <array name="GLib.ByteArray" c:type="GByteArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.ByteArray" c:type="GByteArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_array_remove_index_fast"
+              c:identifier="g_byte_array_remove_index_fast"
+              introspectable="0">
+      <return-value>
+        <array name="GLib.ByteArray" c:type="GByteArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.ByteArray" c:type="GByteArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_array_remove_range"
+              c:identifier="g_byte_array_remove_range"
+              introspectable="0">
+      <return-value>
+        <array name="GLib.ByteArray" c:type="GByteArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.ByteArray" c:type="GByteArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_array_set_size"
+              c:identifier="g_byte_array_set_size"
+              introspectable="0">
+      <return-value>
+        <array name="GLib.ByteArray" c:type="GByteArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.ByteArray" c:type="GByteArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_array_sized_new"
+              c:identifier="g_byte_array_sized_new"
+              introspectable="0">
+      <return-value>
+        <array name="GLib.ByteArray" c:type="GByteArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="reserved_size" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_array_sort"
+              c:identifier="g_byte_array_sort"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.ByteArray" c:type="GByteArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="compare_func" transfer-ownership="none">
+          <type name="CompareFunc" c:type="GCompareFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_array_sort_with_data"
+              c:identifier="g_byte_array_sort_with_data"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.ByteArray" c:type="GByteArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="compare_func" transfer-ownership="none" closure="2">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_array_unref" c:identifier="g_byte_array_unref">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.ByteArray" c:type="GByteArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cache_new" c:identifier="g_cache_new" introspectable="0">
+      <return-value>
+        <type name="Cache" c:type="GCache*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value_new_func" transfer-ownership="none">
+          <type name="CacheNewFunc" c:type="GCacheNewFunc"/>
+        </parameter>
+        <parameter name="value_destroy_func" transfer-ownership="none">
+          <type name="CacheDestroyFunc" c:type="GCacheDestroyFunc"/>
+        </parameter>
+        <parameter name="key_dup_func" transfer-ownership="none">
+          <type name="CacheDupFunc" c:type="GCacheDupFunc"/>
+        </parameter>
+        <parameter name="key_destroy_func" transfer-ownership="none">
+          <type name="CacheDestroyFunc" c:type="GCacheDestroyFunc"/>
+        </parameter>
+        <parameter name="hash_key_func" transfer-ownership="none">
+          <type name="HashFunc" c:type="GHashFunc"/>
+        </parameter>
+        <parameter name="hash_value_func" transfer-ownership="none">
+          <type name="HashFunc" c:type="GHashFunc"/>
+        </parameter>
+        <parameter name="key_equal_func" transfer-ownership="none">
+          <type name="EqualFunc" c:type="GEqualFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="chdir" c:identifier="g_chdir">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="path" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="check_version" c:identifier="glib_check_version">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="required_major" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="required_minor" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="required_micro" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="checksum_new"
+              c:identifier="g_checksum_new"
+              introspectable="0">
+      <return-value>
+        <type name="Checksum" c:type="GChecksum*"/>
+      </return-value>
+      <parameters>
+        <parameter name="checksum_type" transfer-ownership="none">
+          <type name="ChecksumType" c:type="GChecksumType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="checksum_type_get_length"
+              c:identifier="g_checksum_type_get_length">
+      <return-value transfer-ownership="none">
+        <type name="glong" c:type="gssize"/>
+      </return-value>
+      <parameters>
+        <parameter name="checksum_type" transfer-ownership="none">
+          <type name="ChecksumType" c:type="GChecksumType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_watch_add"
+              c:identifier="g_child_watch_add"
+              shadowed-by="child_watch_add_full"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="pid" transfer-ownership="none">
+          <type name="Pid" c:type="GPid"/>
+        </parameter>
+        <parameter name="function" transfer-ownership="none" closure="2">
+          <type name="ChildWatchFunc" c:type="GChildWatchFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_watch_add_full"
+              c:identifier="g_child_watch_add_full"
+              shadows="child_watch_add">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="pid" transfer-ownership="none">
+          <type name="Pid" c:type="GPid"/>
+        </parameter>
+        <parameter name="function"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="3"
+                   destroy="4">
+          <type name="ChildWatchFunc" c:type="GChildWatchFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="async">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_watch_source_new"
+              c:identifier="g_child_watch_source_new"
+              introspectable="0">
+      <return-value>
+        <type name="Source" c:type="GSource*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pid" transfer-ownership="none">
+          <type name="Pid" c:type="GPid"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clear_error" c:identifier="g_clear_error" throws="1">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="completion_new"
+              c:identifier="g_completion_new"
+              introspectable="0">
+      <return-value>
+        <type name="Completion" c:type="GCompletion*"/>
+      </return-value>
+      <parameters>
+        <parameter name="func" transfer-ownership="none">
+          <type name="CompletionFunc" c:type="GCompletionFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="compute_checksum_for_data"
+              c:identifier="g_compute_checksum_for_data">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="checksum_type" transfer-ownership="none">
+          <type name="ChecksumType" c:type="GChecksumType"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="guint8" c:type="guchar*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="compute_checksum_for_string"
+              c:identifier="g_compute_checksum_for_string">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="checksum_type" transfer-ownership="none">
+          <type name="ChecksumType" c:type="GChecksumType"/>
+        </parameter>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="convert" c:identifier="g_convert" throws="1">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+        <parameter name="to_codeset" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="from_codeset" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="bytes_read"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+        <parameter name="bytes_written"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="convert_error_quark" c:identifier="g_convert_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="convert_with_fallback"
+              c:identifier="g_convert_with_fallback"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+        <parameter name="to_codeset" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="from_codeset" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="fallback" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="bytes_read" transfer-ownership="none">
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+        <parameter name="bytes_written" transfer-ownership="none">
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="convert_with_iconv"
+              c:identifier="g_convert_with_iconv"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+        <parameter name="converter" transfer-ownership="none">
+          <type name="IConv" c:type="GIConv"/>
+        </parameter>
+        <parameter name="bytes_read" transfer-ownership="none">
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+        <parameter name="bytes_written" transfer-ownership="none">
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="datalist_clear" c:identifier="g_datalist_clear">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="datalist" transfer-ownership="none">
+          <type name="Data" c:type="GData**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="datalist_foreach"
+              c:identifier="g_datalist_foreach"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="datalist" transfer-ownership="none">
+          <type name="Data" c:type="GData**"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" closure="2">
+          <type name="DataForeachFunc" c:type="GDataForeachFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="datalist_get_flags" c:identifier="g_datalist_get_flags">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="datalist" transfer-ownership="none">
+          <type name="Data" c:type="GData**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="datalist_id_get_data"
+              c:identifier="g_datalist_id_get_data"
+              introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="datalist" transfer-ownership="none">
+          <type name="Data" c:type="GData**"/>
+        </parameter>
+        <parameter name="key_id" transfer-ownership="none">
+          <type name="Quark" c:type="GQuark"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="datalist_id_remove_no_notify"
+              c:identifier="g_datalist_id_remove_no_notify"
+              introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="datalist" transfer-ownership="none">
+          <type name="Data" c:type="GData**"/>
+        </parameter>
+        <parameter name="key_id" transfer-ownership="none">
+          <type name="Quark" c:type="GQuark"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="datalist_id_set_data_full"
+              c:identifier="g_datalist_id_set_data_full">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="datalist" transfer-ownership="none">
+          <type name="Data" c:type="GData**"/>
+        </parameter>
+        <parameter name="key_id" transfer-ownership="none">
+          <type name="Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy_func" transfer-ownership="none" scope="async">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="datalist_init" c:identifier="g_datalist_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="datalist" transfer-ownership="none">
+          <type name="Data" c:type="GData**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="datalist_set_flags" c:identifier="g_datalist_set_flags">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="datalist" transfer-ownership="none">
+          <type name="Data" c:type="GData**"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="datalist_unset_flags"
+              c:identifier="g_datalist_unset_flags">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="datalist" transfer-ownership="none">
+          <type name="Data" c:type="GData**"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dataset_destroy" c:identifier="g_dataset_destroy">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dataset_location" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dataset_foreach"
+              c:identifier="g_dataset_foreach"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dataset_location" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" closure="2">
+          <type name="DataForeachFunc" c:type="GDataForeachFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dataset_id_get_data"
+              c:identifier="g_dataset_id_get_data"
+              introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="dataset_location" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="key_id" transfer-ownership="none">
+          <type name="Quark" c:type="GQuark"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dataset_id_remove_no_notify"
+              c:identifier="g_dataset_id_remove_no_notify"
+              introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="dataset_location" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="key_id" transfer-ownership="none">
+          <type name="Quark" c:type="GQuark"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dataset_id_set_data_full"
+              c:identifier="g_dataset_id_set_data_full">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dataset_location" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="key_id" transfer-ownership="none">
+          <type name="Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy_func" transfer-ownership="none" scope="async">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_get_days_in_month"
+              c:identifier="g_date_get_days_in_month">
+      <return-value transfer-ownership="none">
+        <type name="guint8" c:type="guint8"/>
+      </return-value>
+      <parameters>
+        <parameter name="month" transfer-ownership="none">
+          <type name="DateMonth" c:type="GDateMonth"/>
+        </parameter>
+        <parameter name="year" transfer-ownership="none">
+          <type name="DateYear" c:type="GDateYear"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_get_monday_weeks_in_year"
+              c:identifier="g_date_get_monday_weeks_in_year">
+      <return-value transfer-ownership="none">
+        <type name="guint8" c:type="guint8"/>
+      </return-value>
+      <parameters>
+        <parameter name="year" transfer-ownership="none">
+          <type name="DateYear" c:type="GDateYear"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_get_sunday_weeks_in_year"
+              c:identifier="g_date_get_sunday_weeks_in_year">
+      <return-value transfer-ownership="none">
+        <type name="guint8" c:type="guint8"/>
+      </return-value>
+      <parameters>
+        <parameter name="year" transfer-ownership="none">
+          <type name="DateYear" c:type="GDateYear"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_is_leap_year" c:identifier="g_date_is_leap_year">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="year" transfer-ownership="none">
+          <type name="DateYear" c:type="GDateYear"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_new" c:identifier="g_date_new" introspectable="0">
+      <return-value>
+        <type name="Date" c:type="GDate*"/>
+      </return-value>
+    </function>
+    <function name="date_new_dmy"
+              c:identifier="g_date_new_dmy"
+              introspectable="0">
+      <return-value>
+        <type name="Date" c:type="GDate*"/>
+      </return-value>
+      <parameters>
+        <parameter name="day" transfer-ownership="none">
+          <type name="DateDay" c:type="GDateDay"/>
+        </parameter>
+        <parameter name="month" transfer-ownership="none">
+          <type name="DateMonth" c:type="GDateMonth"/>
+        </parameter>
+        <parameter name="year" transfer-ownership="none">
+          <type name="DateYear" c:type="GDateYear"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_new_julian"
+              c:identifier="g_date_new_julian"
+              introspectable="0">
+      <return-value>
+        <type name="Date" c:type="GDate*"/>
+      </return-value>
+      <parameters>
+        <parameter name="julian_day" transfer-ownership="none">
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_strftime" c:identifier="g_date_strftime">
+      <return-value transfer-ownership="none">
+        <type name="gulong" c:type="gsize"/>
+      </return-value>
+      <parameters>
+        <parameter name="s" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="slen" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_time_compare" c:identifier="g_date_time_compare">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="dt1" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="dt2" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_time_equal" c:identifier="g_date_time_equal">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dt1" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="dt2" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_time_hash" c:identifier="g_date_time_hash">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="datetime" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_time_new"
+              c:identifier="g_date_time_new"
+              introspectable="0">
+      <return-value>
+        <type name="DateTime" c:type="GDateTime*"/>
+      </return-value>
+      <parameters>
+        <parameter name="tz" transfer-ownership="none">
+          <type name="TimeZone" c:type="GTimeZone*"/>
+        </parameter>
+        <parameter name="year" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="month" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="day" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="hour" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="minute" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="seconds" transfer-ownership="none">
+          <type name="gdouble" c:type="gdouble"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_time_new_from_timeval_local"
+              c:identifier="g_date_time_new_from_timeval_local"
+              introspectable="0">
+      <return-value>
+        <type name="DateTime" c:type="GDateTime*"/>
+      </return-value>
+      <parameters>
+        <parameter name="tv" transfer-ownership="none">
+          <type name="TimeVal" c:type="GTimeVal*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_time_new_from_timeval_utc"
+              c:identifier="g_date_time_new_from_timeval_utc"
+              introspectable="0">
+      <return-value>
+        <type name="DateTime" c:type="GDateTime*"/>
+      </return-value>
+      <parameters>
+        <parameter name="tv" transfer-ownership="none">
+          <type name="TimeVal" c:type="GTimeVal*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_time_new_from_unix_local"
+              c:identifier="g_date_time_new_from_unix_local"
+              introspectable="0">
+      <return-value>
+        <type name="DateTime" c:type="GDateTime*"/>
+      </return-value>
+      <parameters>
+        <parameter name="t" transfer-ownership="none">
+          <type name="gint64" c:type="gint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_time_new_from_unix_utc"
+              c:identifier="g_date_time_new_from_unix_utc"
+              introspectable="0">
+      <return-value>
+        <type name="DateTime" c:type="GDateTime*"/>
+      </return-value>
+      <parameters>
+        <parameter name="t" transfer-ownership="none">
+          <type name="gint64" c:type="gint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_time_new_local"
+              c:identifier="g_date_time_new_local"
+              introspectable="0">
+      <return-value>
+        <type name="DateTime" c:type="GDateTime*"/>
+      </return-value>
+      <parameters>
+        <parameter name="year" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="month" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="day" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="hour" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="minute" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="seconds" transfer-ownership="none">
+          <type name="gdouble" c:type="gdouble"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_time_new_now"
+              c:identifier="g_date_time_new_now"
+              introspectable="0">
+      <return-value>
+        <type name="DateTime" c:type="GDateTime*"/>
+      </return-value>
+      <parameters>
+        <parameter name="tz" transfer-ownership="none">
+          <type name="TimeZone" c:type="GTimeZone*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_time_new_now_local"
+              c:identifier="g_date_time_new_now_local"
+              introspectable="0">
+      <return-value>
+        <type name="DateTime" c:type="GDateTime*"/>
+      </return-value>
+    </function>
+    <function name="date_time_new_now_utc"
+              c:identifier="g_date_time_new_now_utc"
+              introspectable="0">
+      <return-value>
+        <type name="DateTime" c:type="GDateTime*"/>
+      </return-value>
+    </function>
+    <function name="date_time_new_utc"
+              c:identifier="g_date_time_new_utc"
+              introspectable="0">
+      <return-value>
+        <type name="DateTime" c:type="GDateTime*"/>
+      </return-value>
+      <parameters>
+        <parameter name="year" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="month" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="day" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="hour" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="minute" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="seconds" transfer-ownership="none">
+          <type name="gdouble" c:type="gdouble"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_valid_day" c:identifier="g_date_valid_day">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="day" transfer-ownership="none">
+          <type name="DateDay" c:type="GDateDay"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_valid_dmy" c:identifier="g_date_valid_dmy">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="day" transfer-ownership="none">
+          <type name="DateDay" c:type="GDateDay"/>
+        </parameter>
+        <parameter name="month" transfer-ownership="none">
+          <type name="DateMonth" c:type="GDateMonth"/>
+        </parameter>
+        <parameter name="year" transfer-ownership="none">
+          <type name="DateYear" c:type="GDateYear"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_valid_julian" c:identifier="g_date_valid_julian">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="julian_date" transfer-ownership="none">
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_valid_month" c:identifier="g_date_valid_month">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="month" transfer-ownership="none">
+          <type name="DateMonth" c:type="GDateMonth"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_valid_weekday" c:identifier="g_date_valid_weekday">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="weekday" transfer-ownership="none">
+          <type name="DateWeekday" c:type="GDateWeekday"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_valid_year" c:identifier="g_date_valid_year">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="year" transfer-ownership="none">
+          <type name="DateYear" c:type="GDateYear"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dcgettext" c:identifier="g_dcgettext">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="domain" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="msgid" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="category" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dgettext" c:identifier="g_dgettext">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="domain" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="msgid" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dir_open"
+              c:identifier="g_dir_open"
+              introspectable="0"
+              throws="1">
+      <return-value>
+        <type name="Dir" c:type="GDir*"/>
+      </return-value>
+      <parameters>
+        <parameter name="path" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="direct_equal" c:identifier="g_direct_equal">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="v1" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="direct_hash" c:identifier="g_direct_hash">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dngettext" c:identifier="g_dngettext">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="domain" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="msgid" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="msgid_plural" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="gulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="double_equal" c:identifier="g_double_equal">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="v1" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="double_hash" c:identifier="g_double_hash">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dpgettext" c:identifier="g_dpgettext">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="domain" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="msgctxtid" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="msgidoffset" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dpgettext2" c:identifier="g_dpgettext2">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="domain" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="context" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="msgid" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dummy_decl" c:identifier="glib_dummy_decl">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="error_new" c:identifier="g_error_new" introspectable="0">
+      <return-value>
+        <type name="Error" c:type="GError*"/>
+      </return-value>
+      <parameters>
+        <parameter name="domain" transfer-ownership="none">
+          <type name="Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="code" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="error_new_literal"
+              c:identifier="g_error_new_literal"
+              introspectable="0">
+      <return-value>
+        <type name="Error" c:type="GError*"/>
+      </return-value>
+      <parameters>
+        <parameter name="domain" transfer-ownership="none">
+          <type name="Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="code" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="error_new_valist"
+              c:identifier="g_error_new_valist"
+              introspectable="0">
+      <return-value>
+        <type name="Error" c:type="GError*"/>
+      </return-value>
+      <parameters>
+        <parameter name="domain" transfer-ownership="none">
+          <type name="Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="code" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="args" transfer-ownership="none">
+          <type name="va_list" c:type="va_list"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="file_error_from_errno"
+              c:identifier="g_file_error_from_errno">
+      <return-value transfer-ownership="none">
+        <type name="FileError" c:type="GFileError"/>
+      </return-value>
+      <parameters>
+        <parameter name="err_no" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="file_error_quark" c:identifier="g_file_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="file_get_contents"
+              c:identifier="g_file_get_contents"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="contents"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="length"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="file_open_tmp" c:identifier="g_file_open_tmp" throws="1">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="tmpl" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="name_used"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="file_read_link" c:identifier="g_file_read_link" throws="1">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="file_set_contents"
+              c:identifier="g_file_set_contents"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="contents" transfer-ownership="none">
+          <array length="2" c:type="gchar*">
+            <type name="guint8"/>
+          </array>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="file_test" c:identifier="g_file_test">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="test" transfer-ownership="none">
+          <type name="FileTest" c:type="GFileTest"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="filename_display_basename"
+              c:identifier="g_filename_display_basename">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="filename_display_name"
+              c:identifier="g_filename_display_name">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="filename_from_uri"
+              c:identifier="g_filename_from_uri"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="hostname" transfer-ownership="none">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="filename_from_utf8"
+              c:identifier="g_filename_from_utf8"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="utf8string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+        <parameter name="bytes_read" transfer-ownership="none">
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+        <parameter name="bytes_written" transfer-ownership="none">
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="filename_to_uri"
+              c:identifier="g_filename_to_uri"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="hostname" transfer-ownership="none" allow-none="1">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="filename_to_utf8"
+              c:identifier="g_filename_to_utf8"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="opsysstring" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+        <parameter name="bytes_read" transfer-ownership="none">
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+        <parameter name="bytes_written" transfer-ownership="none">
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="find_program_in_path"
+              c:identifier="g_find_program_in_path">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="program" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_size_for_display"
+              c:identifier="g_format_size_for_display">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="gint64" c:type="goffset"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fprintf" c:identifier="g_fprintf" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="file" transfer-ownership="none">
+          <type name="gpointer" c:type="FILE*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="free" c:identifier="g_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mem" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_application_name"
+              c:identifier="g_get_application_name">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="get_charset" c:identifier="g_get_charset">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="charset" transfer-ownership="none">
+          <type name="utf8" c:type="char**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_current_dir" c:identifier="g_get_current_dir">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="get_current_time" c:identifier="g_get_current_time">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="result" transfer-ownership="none">
+          <type name="TimeVal" c:type="GTimeVal*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_filename_charsets"
+              c:identifier="g_get_filename_charsets">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="charsets" transfer-ownership="none">
+          <type name="utf8" c:type="gchar***"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_home_dir" c:identifier="g_get_home_dir">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="get_host_name" c:identifier="g_get_host_name">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="get_language_names" c:identifier="g_get_language_names">
+      <return-value transfer-ownership="none">
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+    </function>
+    <function name="get_prgname" c:identifier="g_get_prgname">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="get_real_name" c:identifier="g_get_real_name">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="get_system_config_dirs"
+              c:identifier="g_get_system_config_dirs">
+      <return-value transfer-ownership="none">
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+    </function>
+    <function name="get_system_data_dirs"
+              c:identifier="g_get_system_data_dirs">
+      <return-value transfer-ownership="none">
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+    </function>
+    <function name="get_tmp_dir" c:identifier="g_get_tmp_dir">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="get_user_cache_dir" c:identifier="g_get_user_cache_dir">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="get_user_config_dir" c:identifier="g_get_user_config_dir">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="get_user_data_dir" c:identifier="g_get_user_data_dir">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="get_user_name" c:identifier="g_get_user_name">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="get_user_special_dir"
+              c:identifier="g_get_user_special_dir">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="directory" transfer-ownership="none">
+          <type name="UserDirectory" c:type="GUserDirectory"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="getenv" c:identifier="g_getenv">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="variable" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_destroy" c:identifier="g_hash_table_destroy">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="GLib.HashTable" c:type="GHashTable*">
+            <type name="gpointer" c:type="gpointer"/>
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_find"
+              c:identifier="g_hash_table_find"
+              introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="GLib.HashTable" c:type="GHashTable*">
+            <type name="gpointer" c:type="gpointer"/>
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="predicate" transfer-ownership="none" closure="2">
+          <type name="HRFunc" c:type="GHRFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_foreach"
+              c:identifier="g_hash_table_foreach"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="GLib.HashTable" c:type="GHashTable*">
+            <type name="gpointer" c:type="gpointer"/>
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" closure="2">
+          <type name="HFunc" c:type="GHFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_foreach_remove"
+              c:identifier="g_hash_table_foreach_remove"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="GLib.HashTable" c:type="GHashTable*">
+            <type name="gpointer" c:type="gpointer"/>
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" closure="2">
+          <type name="HRFunc" c:type="GHRFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_foreach_steal"
+              c:identifier="g_hash_table_foreach_steal"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="GLib.HashTable" c:type="GHashTable*">
+            <type name="gpointer" c:type="gpointer"/>
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" closure="2">
+          <type name="HRFunc" c:type="GHRFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_get_keys"
+              c:identifier="g_hash_table_get_keys"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="GLib.HashTable" c:type="GHashTable*">
+            <type name="gpointer" c:type="gpointer"/>
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_get_values"
+              c:identifier="g_hash_table_get_values"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="GLib.HashTable" c:type="GHashTable*">
+            <type name="gpointer" c:type="gpointer"/>
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_insert" c:identifier="g_hash_table_insert">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="GLib.HashTable" c:type="GHashTable*">
+            <type name="gpointer" c:type="gpointer"/>
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_lookup"
+              c:identifier="g_hash_table_lookup"
+              introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="GLib.HashTable" c:type="GHashTable*">
+            <type name="gpointer" c:type="gpointer"/>
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_lookup_extended"
+              c:identifier="g_hash_table_lookup_extended">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="GLib.HashTable" c:type="GHashTable*">
+            <type name="gpointer" c:type="gpointer"/>
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="lookup_key" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="orig_key" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_new"
+              c:identifier="g_hash_table_new"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.HashTable" c:type="GHashTable*">
+          <type name="gpointer" c:type="gpointer"/>
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="hash_func" transfer-ownership="none">
+          <type name="HashFunc" c:type="GHashFunc"/>
+        </parameter>
+        <parameter name="key_equal_func" transfer-ownership="none">
+          <type name="EqualFunc" c:type="GEqualFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_new_full"
+              c:identifier="g_hash_table_new_full"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.HashTable" c:type="GHashTable*">
+          <type name="gpointer" c:type="gpointer"/>
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="hash_func" transfer-ownership="none">
+          <type name="HashFunc" c:type="GHashFunc"/>
+        </parameter>
+        <parameter name="key_equal_func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   destroy="3">
+          <type name="EqualFunc" c:type="GEqualFunc"/>
+        </parameter>
+        <parameter name="key_destroy_func"
+                   transfer-ownership="none"
+                   scope="async">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+        <parameter name="value_destroy_func"
+                   transfer-ownership="none"
+                   scope="async">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_ref"
+              c:identifier="g_hash_table_ref"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.HashTable" c:type="GHashTable*">
+          <type name="gpointer" c:type="gpointer"/>
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="GLib.HashTable" c:type="GHashTable*">
+            <type name="gpointer" c:type="gpointer"/>
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_remove" c:identifier="g_hash_table_remove">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="GLib.HashTable" c:type="GHashTable*">
+            <type name="gpointer" c:type="gpointer"/>
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_remove_all"
+              c:identifier="g_hash_table_remove_all">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="GLib.HashTable" c:type="GHashTable*">
+            <type name="gpointer" c:type="gpointer"/>
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_replace" c:identifier="g_hash_table_replace">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="GLib.HashTable" c:type="GHashTable*">
+            <type name="gpointer" c:type="gpointer"/>
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_size" c:identifier="g_hash_table_size">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="GLib.HashTable" c:type="GHashTable*">
+            <type name="gpointer" c:type="gpointer"/>
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_steal" c:identifier="g_hash_table_steal">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="GLib.HashTable" c:type="GHashTable*">
+            <type name="gpointer" c:type="gpointer"/>
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_steal_all"
+              c:identifier="g_hash_table_steal_all">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="GLib.HashTable" c:type="GHashTable*">
+            <type name="gpointer" c:type="gpointer"/>
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_unref" c:identifier="g_hash_table_unref">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="GLib.HashTable" c:type="GHashTable*">
+            <type name="gpointer" c:type="gpointer"/>
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_alloc" c:identifier="g_hook_alloc" introspectable="0">
+      <return-value>
+        <type name="Hook" c:type="GHook*"/>
+      </return-value>
+      <parameters>
+        <parameter name="hook_list" transfer-ownership="none">
+          <type name="HookList" c:type="GHookList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_destroy" c:identifier="g_hook_destroy">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="hook_list" transfer-ownership="none">
+          <type name="HookList" c:type="GHookList*"/>
+        </parameter>
+        <parameter name="hook_id" transfer-ownership="none">
+          <type name="gulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_destroy_link" c:identifier="g_hook_destroy_link">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="hook_list" transfer-ownership="none">
+          <type name="HookList" c:type="GHookList*"/>
+        </parameter>
+        <parameter name="hook" transfer-ownership="none">
+          <type name="Hook" c:type="GHook*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_find" c:identifier="g_hook_find" introspectable="0">
+      <return-value>
+        <type name="Hook" c:type="GHook*"/>
+      </return-value>
+      <parameters>
+        <parameter name="hook_list" transfer-ownership="none">
+          <type name="HookList" c:type="GHookList*"/>
+        </parameter>
+        <parameter name="need_valids" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" closure="3">
+          <type name="HookFindFunc" c:type="GHookFindFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_find_data"
+              c:identifier="g_hook_find_data"
+              introspectable="0">
+      <return-value>
+        <type name="Hook" c:type="GHook*"/>
+      </return-value>
+      <parameters>
+        <parameter name="hook_list" transfer-ownership="none">
+          <type name="HookList" c:type="GHookList*"/>
+        </parameter>
+        <parameter name="need_valids" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_find_func"
+              c:identifier="g_hook_find_func"
+              introspectable="0">
+      <return-value>
+        <type name="Hook" c:type="GHook*"/>
+      </return-value>
+      <parameters>
+        <parameter name="hook_list" transfer-ownership="none">
+          <type name="HookList" c:type="GHookList*"/>
+        </parameter>
+        <parameter name="need_valids" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_find_func_data"
+              c:identifier="g_hook_find_func_data"
+              introspectable="0">
+      <return-value>
+        <type name="Hook" c:type="GHook*"/>
+      </return-value>
+      <parameters>
+        <parameter name="hook_list" transfer-ownership="none">
+          <type name="HookList" c:type="GHookList*"/>
+        </parameter>
+        <parameter name="need_valids" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_first_valid"
+              c:identifier="g_hook_first_valid"
+              introspectable="0">
+      <return-value>
+        <type name="Hook" c:type="GHook*"/>
+      </return-value>
+      <parameters>
+        <parameter name="hook_list" transfer-ownership="none">
+          <type name="HookList" c:type="GHookList*"/>
+        </parameter>
+        <parameter name="may_be_in_call" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_free" c:identifier="g_hook_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="hook_list" transfer-ownership="none">
+          <type name="HookList" c:type="GHookList*"/>
+        </parameter>
+        <parameter name="hook" transfer-ownership="none">
+          <type name="Hook" c:type="GHook*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_get" c:identifier="g_hook_get" introspectable="0">
+      <return-value>
+        <type name="Hook" c:type="GHook*"/>
+      </return-value>
+      <parameters>
+        <parameter name="hook_list" transfer-ownership="none">
+          <type name="HookList" c:type="GHookList*"/>
+        </parameter>
+        <parameter name="hook_id" transfer-ownership="none">
+          <type name="gulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_insert_before" c:identifier="g_hook_insert_before">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="hook_list" transfer-ownership="none">
+          <type name="HookList" c:type="GHookList*"/>
+        </parameter>
+        <parameter name="sibling" transfer-ownership="none">
+          <type name="Hook" c:type="GHook*"/>
+        </parameter>
+        <parameter name="hook" transfer-ownership="none">
+          <type name="Hook" c:type="GHook*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_insert_sorted"
+              c:identifier="g_hook_insert_sorted"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="hook_list" transfer-ownership="none">
+          <type name="HookList" c:type="GHookList*"/>
+        </parameter>
+        <parameter name="hook" transfer-ownership="none">
+          <type name="Hook" c:type="GHook*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <type name="HookCompareFunc" c:type="GHookCompareFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_next_valid"
+              c:identifier="g_hook_next_valid"
+              introspectable="0">
+      <return-value>
+        <type name="Hook" c:type="GHook*"/>
+      </return-value>
+      <parameters>
+        <parameter name="hook_list" transfer-ownership="none">
+          <type name="HookList" c:type="GHookList*"/>
+        </parameter>
+        <parameter name="hook" transfer-ownership="none">
+          <type name="Hook" c:type="GHook*"/>
+        </parameter>
+        <parameter name="may_be_in_call" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_prepend" c:identifier="g_hook_prepend">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="hook_list" transfer-ownership="none">
+          <type name="HookList" c:type="GHookList*"/>
+        </parameter>
+        <parameter name="hook" transfer-ownership="none">
+          <type name="Hook" c:type="GHook*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_ref" c:identifier="g_hook_ref" introspectable="0">
+      <return-value>
+        <type name="Hook" c:type="GHook*"/>
+      </return-value>
+      <parameters>
+        <parameter name="hook_list" transfer-ownership="none">
+          <type name="HookList" c:type="GHookList*"/>
+        </parameter>
+        <parameter name="hook" transfer-ownership="none">
+          <type name="Hook" c:type="GHook*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_unref" c:identifier="g_hook_unref">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="hook_list" transfer-ownership="none">
+          <type name="HookList" c:type="GHookList*"/>
+        </parameter>
+        <parameter name="hook" transfer-ownership="none">
+          <type name="Hook" c:type="GHook*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hostname_is_ascii_encoded"
+              c:identifier="g_hostname_is_ascii_encoded">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="hostname" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hostname_is_ip_address"
+              c:identifier="g_hostname_is_ip_address">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="hostname" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hostname_is_non_ascii"
+              c:identifier="g_hostname_is_non_ascii">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="hostname" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hostname_to_ascii" c:identifier="g_hostname_to_ascii">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="hostname" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hostname_to_unicode" c:identifier="g_hostname_to_unicode">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="hostname" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="iconv" c:identifier="g_iconv">
+      <return-value transfer-ownership="none">
+        <type name="gulong" c:type="gsize"/>
+      </return-value>
+      <parameters>
+        <parameter name="converter" transfer-ownership="none">
+          <type name="IConv" c:type="GIConv"/>
+        </parameter>
+        <parameter name="inbuf" transfer-ownership="none">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="inbytes_left" transfer-ownership="none">
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+        <parameter name="outbuf" transfer-ownership="none">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="outbytes_left" transfer-ownership="none">
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="iconv_close" c:identifier="g_iconv_close">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="converter" transfer-ownership="none">
+          <type name="IConv" c:type="GIConv"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="iconv_open" c:identifier="g_iconv_open" introspectable="0">
+      <return-value>
+        <type name="IConv" c:type="GIConv"/>
+      </return-value>
+      <parameters>
+        <parameter name="to_codeset" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="from_codeset" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="idle_add"
+              c:identifier="g_idle_add"
+              shadowed-by="idle_add_full"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="function" transfer-ownership="none" closure="1">
+          <type name="SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="idle_add_full"
+              c:identifier="g_idle_add_full"
+              shadows="idle_add">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="function"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="async">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="idle_remove_by_data" c:identifier="g_idle_remove_by_data">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="idle_source_new"
+              c:identifier="g_idle_source_new"
+              introspectable="0">
+      <return-value>
+        <type name="Source" c:type="GSource*"/>
+      </return-value>
+    </function>
+    <function name="int64_equal" c:identifier="g_int64_equal">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="v1" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="int64_hash" c:identifier="g_int64_hash">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="int_equal" c:identifier="g_int_equal">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="v1" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="int_hash" c:identifier="g_int_hash">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="intern_static_string"
+              c:identifier="g_intern_static_string">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="intern_string" c:identifier="g_intern_string">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_add_watch"
+              c:identifier="g_io_add_watch"
+              shadowed-by="io_add_watch_full"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+        <parameter name="condition" transfer-ownership="none">
+          <type name="IOCondition" c:type="GIOCondition"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" closure="3">
+          <type name="IOFunc" c:type="GIOFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_add_watch_full"
+              c:identifier="g_io_add_watch_full"
+              shadows="io_add_watch">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+        <parameter name="priority" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="condition" transfer-ownership="none">
+          <type name="IOCondition" c:type="GIOCondition"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="4"
+                   destroy="5">
+          <type name="IOFunc" c:type="GIOFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="async">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_error_from_errno"
+              c:identifier="g_io_channel_error_from_errno">
+      <return-value transfer-ownership="none">
+        <type name="IOChannelError" c:type="GIOChannelError"/>
+      </return-value>
+      <parameters>
+        <parameter name="en" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_error_quark"
+              c:identifier="g_io_channel_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="io_channel_new_file"
+              c:identifier="g_io_channel_new_file"
+              introspectable="0"
+              throws="1">
+      <return-value>
+        <type name="IOChannel" c:type="GIOChannel*"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_unix_new"
+              c:identifier="g_io_channel_unix_new"
+              introspectable="0">
+      <return-value>
+        <type name="IOChannel" c:type="GIOChannel*"/>
+      </return-value>
+      <parameters>
+        <parameter name="fd" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_create_watch"
+              c:identifier="g_io_create_watch"
+              introspectable="0">
+      <return-value>
+        <type name="Source" c:type="GSource*"/>
+      </return-value>
+      <parameters>
+        <parameter name="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+        <parameter name="condition" transfer-ownership="none">
+          <type name="IOCondition" c:type="GIOCondition"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_file_error_quark"
+              c:identifier="g_key_file_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="key_file_new"
+              c:identifier="g_key_file_new"
+              introspectable="0">
+      <return-value>
+        <type name="KeyFile" c:type="GKeyFile*"/>
+      </return-value>
+    </function>
+    <function name="list_alloc" c:identifier="g_list_alloc" introspectable="0">
+      <return-value>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+    </function>
+    <function name="list_append"
+              c:identifier="g_list_append"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_concat"
+              c:identifier="g_list_concat"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list1" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="list2" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_copy" c:identifier="g_list_copy" introspectable="0">
+      <return-value>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_delete_link"
+              c:identifier="g_list_delete_link"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="link_" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_find" c:identifier="g_list_find" introspectable="0">
+      <return-value>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_find_custom"
+              c:identifier="g_list_find_custom"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <type name="CompareFunc" c:type="GCompareFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_first" c:identifier="g_list_first" introspectable="0">
+      <return-value>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_foreach"
+              c:identifier="g_list_foreach"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" closure="2">
+          <type name="Func" c:type="GFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_free" c:identifier="g_list_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_free_1" c:identifier="g_list_free_1">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_index" c:identifier="g_list_index">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_insert"
+              c:identifier="g_list_insert"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="position" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_insert_before"
+              c:identifier="g_list_insert_before"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="sibling" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_insert_sorted"
+              c:identifier="g_list_insert_sorted"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <type name="CompareFunc" c:type="GCompareFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_insert_sorted_with_data"
+              c:identifier="g_list_insert_sorted_with_data"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" closure="3">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_last" c:identifier="g_list_last" introspectable="0">
+      <return-value>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_length" c:identifier="g_list_length">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_nth" c:identifier="g_list_nth" introspectable="0">
+      <return-value>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_nth_data"
+              c:identifier="g_list_nth_data"
+              introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_nth_prev"
+              c:identifier="g_list_nth_prev"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_pop_allocator" c:identifier="g_list_pop_allocator">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="list_position" c:identifier="g_list_position">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="llink" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_prepend"
+              c:identifier="g_list_prepend"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_push_allocator" c:identifier="g_list_push_allocator">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="allocator" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_remove"
+              c:identifier="g_list_remove"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_remove_all"
+              c:identifier="g_list_remove_all"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_remove_link"
+              c:identifier="g_list_remove_link"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="llink" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_reverse"
+              c:identifier="g_list_reverse"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_sort" c:identifier="g_list_sort" introspectable="0">
+      <return-value>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="compare_func" transfer-ownership="none">
+          <type name="CompareFunc" c:type="GCompareFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_sort_with_data"
+              c:identifier="g_list_sort_with_data"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="compare_func" transfer-ownership="none" closure="2">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="listenv" c:identifier="g_listenv" introspectable="0">
+      <return-value>
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+    </function>
+    <function name="locale_from_utf8"
+              c:identifier="g_locale_from_utf8"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="utf8string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+        <parameter name="bytes_read" transfer-ownership="none">
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+        <parameter name="bytes_written" transfer-ownership="none">
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="locale_to_utf8" c:identifier="g_locale_to_utf8" throws="1">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="opsysstring" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+        <parameter name="bytes_read" transfer-ownership="none">
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+        <parameter name="bytes_written" transfer-ownership="none">
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="log" c:identifier="g_log" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="log_domain" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="log_level" transfer-ownership="none">
+          <type name="LogLevelFlags" c:type="GLogLevelFlags"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="log_default_handler" c:identifier="g_log_default_handler">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="log_domain" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="log_level" transfer-ownership="none">
+          <type name="LogLevelFlags" c:type="GLogLevelFlags"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="unused_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="log_remove_handler" c:identifier="g_log_remove_handler">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="log_domain" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="handler_id" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="log_set_always_fatal"
+              c:identifier="g_log_set_always_fatal">
+      <return-value transfer-ownership="none">
+        <type name="LogLevelFlags" c:type="GLogLevelFlags"/>
+      </return-value>
+      <parameters>
+        <parameter name="fatal_mask" transfer-ownership="none">
+          <type name="LogLevelFlags" c:type="GLogLevelFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="log_set_default_handler"
+              c:identifier="g_log_set_default_handler"
+              introspectable="0">
+      <return-value>
+        <type name="LogFunc" c:type="GLogFunc"/>
+      </return-value>
+      <parameters>
+        <parameter name="log_func" transfer-ownership="none" closure="1">
+          <type name="LogFunc" c:type="GLogFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="log_set_fatal_mask" c:identifier="g_log_set_fatal_mask">
+      <return-value transfer-ownership="none">
+        <type name="LogLevelFlags" c:type="GLogLevelFlags"/>
+      </return-value>
+      <parameters>
+        <parameter name="log_domain" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="fatal_mask" transfer-ownership="none">
+          <type name="LogLevelFlags" c:type="GLogLevelFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="log_set_handler"
+              c:identifier="g_log_set_handler"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="log_domain" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="log_levels" transfer-ownership="none">
+          <type name="LogLevelFlags" c:type="GLogLevelFlags"/>
+        </parameter>
+        <parameter name="log_func" transfer-ownership="none" closure="3">
+          <type name="LogFunc" c:type="GLogFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="logv" c:identifier="g_logv" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="log_domain" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="log_level" transfer-ownership="none">
+          <type name="LogLevelFlags" c:type="GLogLevelFlags"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="args" transfer-ownership="none">
+          <type name="va_list" c:type="va_list"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_context_default"
+              c:identifier="g_main_context_default"
+              introspectable="0">
+      <return-value>
+        <type name="MainContext" c:type="GMainContext*"/>
+      </return-value>
+    </function>
+    <function name="main_context_get_thread_default"
+              c:identifier="g_main_context_get_thread_default"
+              introspectable="0">
+      <return-value>
+        <type name="MainContext" c:type="GMainContext*"/>
+      </return-value>
+    </function>
+    <function name="main_context_new"
+              c:identifier="g_main_context_new"
+              introspectable="0">
+      <return-value>
+        <type name="MainContext" c:type="GMainContext*"/>
+      </return-value>
+    </function>
+    <function name="main_current_source"
+              c:identifier="g_main_current_source"
+              introspectable="0">
+      <return-value>
+        <type name="Source" c:type="GSource*"/>
+      </return-value>
+    </function>
+    <function name="main_depth" c:identifier="g_main_depth">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+    </function>
+    <function name="main_loop_new"
+              c:identifier="g_main_loop_new"
+              introspectable="0">
+      <return-value>
+        <type name="MainLoop" c:type="GMainLoop*"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none" allow-none="1">
+          <type name="MainContext" c:type="GMainContext*"/>
+        </parameter>
+        <parameter name="is_running" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="malloc" c:identifier="g_malloc" introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_bytes" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="malloc0" c:identifier="g_malloc0" introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_bytes" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="malloc0_n" c:identifier="g_malloc0_n" introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_blocks" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+        <parameter name="n_block_bytes" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="malloc_n" c:identifier="g_malloc_n" introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_blocks" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+        <parameter name="n_block_bytes" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mapped_file_new"
+              c:identifier="g_mapped_file_new"
+              introspectable="0"
+              throws="1">
+      <return-value>
+        <type name="MappedFile" c:type="GMappedFile*"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="writable" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="markup_collect_attributes"
+              c:identifier="g_markup_collect_attributes"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="element_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="attribute_names" transfer-ownership="none">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="attribute_values" transfer-ownership="none">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="error" transfer-ownership="none">
+          <type name="Error" c:type="GError**"/>
+        </parameter>
+        <parameter name="first_type" transfer-ownership="none">
+          <type name="MarkupCollectType" c:type="GMarkupCollectType"/>
+        </parameter>
+        <parameter name="first_attr" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="markup_error_quark" c:identifier="g_markup_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="markup_escape_text" c:identifier="g_markup_escape_text">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="text" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="markup_parse_context_new"
+              c:identifier="g_markup_parse_context_new"
+              introspectable="0">
+      <return-value>
+        <type name="MarkupParseContext" c:type="GMarkupParseContext*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parser" transfer-ownership="none">
+          <type name="MarkupParser" c:type="GMarkupParser*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="MarkupParseFlags" c:type="GMarkupParseFlags"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="user_data_dnotify"
+                   transfer-ownership="none"
+                   scope="async">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="markup_printf_escaped"
+              c:identifier="g_markup_printf_escaped"
+              introspectable="0">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="markup_vprintf_escaped"
+              c:identifier="g_markup_vprintf_escaped"
+              introspectable="0">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="args" transfer-ownership="none">
+          <type name="va_list" c:type="va_list"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mem_chunk_info" c:identifier="g_mem_chunk_info">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="mem_chunk_new"
+              c:identifier="g_mem_chunk_new"
+              introspectable="0">
+      <return-value>
+        <type name="MemChunk" c:type="GMemChunk*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="atom_size" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="area_size" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mem_is_system_malloc"
+              c:identifier="g_mem_is_system_malloc">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="mem_profile" c:identifier="g_mem_profile">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="mem_set_vtable" c:identifier="g_mem_set_vtable">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="vtable" transfer-ownership="none">
+          <type name="MemVTable" c:type="GMemVTable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="memdup" c:identifier="g_memdup" introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="mem" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="byte_size" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mkdir_with_parents" c:identifier="g_mkdir_with_parents">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="pathname" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mkstemp" c:identifier="g_mkstemp">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="tmpl" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mkstemp_full" c:identifier="g_mkstemp_full">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="tmpl" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="node_new" c:identifier="g_node_new" introspectable="0">
+      <return-value>
+        <type name="Node" c:type="GNode*"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="node_pop_allocator" c:identifier="g_node_pop_allocator">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="node_push_allocator" c:identifier="g_node_push_allocator">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dummy" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="nullify_pointer" c:identifier="g_nullify_pointer">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="nullify_location" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="on_error_query" c:identifier="g_on_error_query">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="prg_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="on_error_stack_trace"
+              c:identifier="g_on_error_stack_trace">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="prg_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="once_init_enter" c:identifier="g_once_init_enter">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value_location" transfer-ownership="none">
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="once_init_enter_impl"
+              c:identifier="g_once_init_enter_impl">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value_location" transfer-ownership="none">
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="once_init_leave" c:identifier="g_once_init_leave">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value_location" transfer-ownership="none">
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+        <parameter name="initialization_value" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="option_context_new"
+              c:identifier="g_option_context_new"
+              introspectable="0">
+      <return-value>
+        <type name="OptionContext" c:type="GOptionContext*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parameter_string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="option_error_quark" c:identifier="g_option_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="option_group_new"
+              c:identifier="g_option_group_new"
+              introspectable="0">
+      <return-value>
+        <type name="OptionGroup" c:type="GOptionGroup*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="description" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="help_description" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="async">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_debug_string" c:identifier="g_parse_debug_string">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="keys" transfer-ownership="none">
+          <type name="DebugKey" c:type="GDebugKey*"/>
+        </parameter>
+        <parameter name="nkeys" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_get_basename" c:identifier="g_path_get_basename">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="file_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_get_dirname" c:identifier="g_path_get_dirname">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="file_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_is_absolute" c:identifier="g_path_is_absolute">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="file_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_skip_root" c:identifier="g_path_skip_root">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="file_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pattern_match" c:identifier="g_pattern_match">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec" transfer-ownership="none">
+          <type name="PatternSpec" c:type="GPatternSpec*"/>
+        </parameter>
+        <parameter name="string_length" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="string_reversed" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pattern_match_simple"
+              c:identifier="g_pattern_match_simple">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pattern" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pattern_match_string"
+              c:identifier="g_pattern_match_string">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec" transfer-ownership="none">
+          <type name="PatternSpec" c:type="GPatternSpec*"/>
+        </parameter>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pattern_spec_new"
+              c:identifier="g_pattern_spec_new"
+              introspectable="0">
+      <return-value>
+        <type name="PatternSpec" c:type="GPatternSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pattern" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="poll" c:identifier="g_poll">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="fds" transfer-ownership="none">
+          <type name="PollFD" c:type="GPollFD*"/>
+        </parameter>
+        <parameter name="nfds" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="timeout" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="prefix_error"
+              c:identifier="g_prefix_error"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="err" transfer-ownership="none">
+          <type name="Error" c:type="GError**"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="print" c:identifier="g_print" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="printerr" c:identifier="g_printerr" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="printf" c:identifier="g_printf" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="printf_string_upper_bound"
+              c:identifier="g_printf_string_upper_bound"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gulong" c:type="gsize"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="args" transfer-ownership="none">
+          <type name="va_list" c:type="va_list"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="propagate_error" c:identifier="g_propagate_error">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="Error" c:type="GError**"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="Error" c:type="GError*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="propagate_prefixed_error"
+              c:identifier="g_propagate_prefixed_error"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="Error" c:type="GError**"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="Error" c:type="GError*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_add" c:identifier="g_ptr_array_add">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.PtrArray" c:type="GPtrArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_foreach"
+              c:identifier="g_ptr_array_foreach"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.PtrArray" c:type="GPtrArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" closure="2">
+          <type name="Func" c:type="GFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_free"
+              c:identifier="g_ptr_array_free"
+              introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.PtrArray" c:type="GPtrArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="free_seg" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_new"
+              c:identifier="g_ptr_array_new"
+              introspectable="0">
+      <return-value>
+        <array name="GLib.PtrArray" c:type="GPtrArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </return-value>
+    </function>
+    <function name="ptr_array_new_with_free_func"
+              c:identifier="g_ptr_array_new_with_free_func"
+              introspectable="0">
+      <return-value>
+        <array name="GLib.PtrArray" c:type="GPtrArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="element_free_func"
+                   transfer-ownership="none"
+                   scope="async">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_ref"
+              c:identifier="g_ptr_array_ref"
+              introspectable="0">
+      <return-value>
+        <array name="GLib.PtrArray" c:type="GPtrArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.PtrArray" c:type="GPtrArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_remove" c:identifier="g_ptr_array_remove">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.PtrArray" c:type="GPtrArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_remove_fast"
+              c:identifier="g_ptr_array_remove_fast">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.PtrArray" c:type="GPtrArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_remove_index"
+              c:identifier="g_ptr_array_remove_index"
+              introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.PtrArray" c:type="GPtrArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_remove_index_fast"
+              c:identifier="g_ptr_array_remove_index_fast"
+              introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.PtrArray" c:type="GPtrArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_remove_range"
+              c:identifier="g_ptr_array_remove_range">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.PtrArray" c:type="GPtrArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_set_free_func"
+              c:identifier="g_ptr_array_set_free_func">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.PtrArray" c:type="GPtrArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="element_free_func"
+                   transfer-ownership="none"
+                   scope="async">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_set_size" c:identifier="g_ptr_array_set_size">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.PtrArray" c:type="GPtrArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_sized_new"
+              c:identifier="g_ptr_array_sized_new"
+              introspectable="0">
+      <return-value>
+        <array name="GLib.PtrArray" c:type="GPtrArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="reserved_size" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_sort"
+              c:identifier="g_ptr_array_sort"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.PtrArray" c:type="GPtrArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="compare_func" transfer-ownership="none">
+          <type name="CompareFunc" c:type="GCompareFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_sort_with_data"
+              c:identifier="g_ptr_array_sort_with_data"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.PtrArray" c:type="GPtrArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="compare_func" transfer-ownership="none" closure="2">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_unref" c:identifier="g_ptr_array_unref">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <array name="GLib.PtrArray" c:type="GPtrArray*">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="qsort_with_data"
+              c:identifier="g_qsort_with_data"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pbase" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="total_elems" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+        <parameter name="compare_func" transfer-ownership="none" closure="4">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="quark_from_static_string"
+              c:identifier="g_quark_from_static_string">
+      <return-value transfer-ownership="none">
+        <type name="Quark" c:type="GQuark"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="quark_from_string" c:identifier="g_quark_from_string">
+      <return-value transfer-ownership="none">
+        <type name="Quark" c:type="GQuark"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="quark_to_string" c:identifier="g_quark_to_string">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="quark" transfer-ownership="none">
+          <type name="Quark" c:type="GQuark"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="quark_try_string" c:identifier="g_quark_try_string">
+      <return-value transfer-ownership="none">
+        <type name="Quark" c:type="GQuark"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_new" c:identifier="g_queue_new" introspectable="0">
+      <return-value>
+        <type name="Queue" c:type="GQueue*"/>
+      </return-value>
+    </function>
+    <function name="rand_new" c:identifier="g_rand_new" introspectable="0">
+      <return-value>
+        <type name="Rand" c:type="GRand*"/>
+      </return-value>
+    </function>
+    <function name="rand_new_with_seed"
+              c:identifier="g_rand_new_with_seed"
+              introspectable="0">
+      <return-value>
+        <type name="Rand" c:type="GRand*"/>
+      </return-value>
+      <parameters>
+        <parameter name="seed" transfer-ownership="none">
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rand_new_with_seed_array"
+              c:identifier="g_rand_new_with_seed_array"
+              introspectable="0">
+      <return-value>
+        <type name="Rand" c:type="GRand*"/>
+      </return-value>
+      <parameters>
+        <parameter name="seed" transfer-ownership="none">
+          <type name="guint32" c:type="guint32*"/>
+        </parameter>
+        <parameter name="seed_length" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="random_double" c:identifier="g_random_double">
+      <return-value transfer-ownership="none">
+        <type name="gdouble" c:type="gdouble"/>
+      </return-value>
+    </function>
+    <function name="random_double_range" c:identifier="g_random_double_range">
+      <return-value transfer-ownership="none">
+        <type name="gdouble" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="begin" transfer-ownership="none">
+          <type name="gdouble" c:type="gdouble"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="gdouble" c:type="gdouble"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="random_int" c:identifier="g_random_int">
+      <return-value transfer-ownership="none">
+        <type name="guint32" c:type="guint32"/>
+      </return-value>
+    </function>
+    <function name="random_int_range" c:identifier="g_random_int_range">
+      <return-value transfer-ownership="none">
+        <type name="gint32" c:type="gint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="begin" transfer-ownership="none">
+          <type name="gint32" c:type="gint32"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="gint32" c:type="gint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="random_set_seed" c:identifier="g_random_set_seed">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="seed" transfer-ownership="none">
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="realloc" c:identifier="g_realloc" introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="mem" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="n_bytes" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="realloc_n" c:identifier="g_realloc_n" introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="mem" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="n_blocks" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+        <parameter name="n_block_bytes" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="regex_check_replacement"
+              c:identifier="g_regex_check_replacement"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="replacement" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="has_references" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="regex_error_quark" c:identifier="g_regex_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="regex_escape_string" c:identifier="g_regex_escape_string">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="regex_match_simple" c:identifier="g_regex_match_simple">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pattern" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="compile_options" transfer-ownership="none">
+          <type name="RegexCompileFlags" c:type="GRegexCompileFlags"/>
+        </parameter>
+        <parameter name="match_options" transfer-ownership="none">
+          <type name="RegexMatchFlags" c:type="GRegexMatchFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="regex_new"
+              c:identifier="g_regex_new"
+              introspectable="0"
+              throws="1">
+      <return-value>
+        <type name="Regex" c:type="GRegex*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pattern" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="compile_options" transfer-ownership="none">
+          <type name="RegexCompileFlags" c:type="GRegexCompileFlags"/>
+        </parameter>
+        <parameter name="match_options" transfer-ownership="none">
+          <type name="RegexMatchFlags" c:type="GRegexMatchFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="regex_split_simple"
+              c:identifier="g_regex_split_simple"
+              introspectable="0">
+      <return-value>
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="pattern" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="compile_options" transfer-ownership="none">
+          <type name="RegexCompileFlags" c:type="GRegexCompileFlags"/>
+        </parameter>
+        <parameter name="match_options" transfer-ownership="none">
+          <type name="RegexMatchFlags" c:type="GRegexMatchFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="relation_new"
+              c:identifier="g_relation_new"
+              introspectable="0">
+      <return-value>
+        <type name="Relation" c:type="GRelation*"/>
+      </return-value>
+      <parameters>
+        <parameter name="fields" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="reload_user_special_dirs_cache"
+              c:identifier="g_reload_user_special_dirs_cache">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="return_if_fail_warning"
+              c:identifier="g_return_if_fail_warning">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="log_domain" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="pretty_function" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="expression" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rmdir" c:identifier="g_rmdir">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scanner_new"
+              c:identifier="g_scanner_new"
+              introspectable="0">
+      <return-value>
+        <type name="Scanner" c:type="GScanner*"/>
+      </return-value>
+      <parameters>
+        <parameter name="config_templ" transfer-ownership="none">
+          <type name="ScannerConfig" c:type="GScannerConfig*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_foreach_range"
+              c:identifier="g_sequence_foreach_range"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="begin" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" closure="3">
+          <type name="Func" c:type="GFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_get"
+              c:identifier="g_sequence_get"
+              introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_insert_before"
+              c:identifier="g_sequence_insert_before"
+              introspectable="0">
+      <return-value>
+        <type name="SequenceIter" c:type="GSequenceIter*"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_move" c:identifier="g_sequence_move">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="src" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_move_range" c:identifier="g_sequence_move_range">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+        <parameter name="begin" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_new"
+              c:identifier="g_sequence_new"
+              introspectable="0">
+      <return-value>
+        <type name="Sequence" c:type="GSequence*"/>
+      </return-value>
+      <parameters>
+        <parameter name="data_destroy" transfer-ownership="none" scope="async">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_range_get_midpoint"
+              c:identifier="g_sequence_range_get_midpoint"
+              introspectable="0">
+      <return-value>
+        <type name="SequenceIter" c:type="GSequenceIter*"/>
+      </return-value>
+      <parameters>
+        <parameter name="begin" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_remove" c:identifier="g_sequence_remove">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_remove_range"
+              c:identifier="g_sequence_remove_range">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="begin" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_set" c:identifier="g_sequence_set">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_sort_changed"
+              c:identifier="g_sequence_sort_changed"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+        <parameter name="cmp_func" transfer-ownership="none" closure="2">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="cmp_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_sort_changed_iter"
+              c:identifier="g_sequence_sort_changed_iter"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+        <parameter name="iter_cmp" transfer-ownership="none" closure="2">
+          <type name="SequenceIterCompareFunc"
+                c:type="GSequenceIterCompareFunc"/>
+        </parameter>
+        <parameter name="cmp_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_swap" c:identifier="g_sequence_swap">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_application_name"
+              c:identifier="g_set_application_name">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="application_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_error" c:identifier="g_set_error" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="err" transfer-ownership="none">
+          <type name="Error" c:type="GError**"/>
+        </parameter>
+        <parameter name="domain" transfer-ownership="none">
+          <type name="Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="code" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_error_literal" c:identifier="g_set_error_literal">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="err" transfer-ownership="none">
+          <type name="Error" c:type="GError**"/>
+        </parameter>
+        <parameter name="domain" transfer-ownership="none">
+          <type name="Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="code" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_prgname" c:identifier="g_set_prgname">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="prgname" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_print_handler"
+              c:identifier="g_set_print_handler"
+              introspectable="0">
+      <return-value>
+        <type name="PrintFunc" c:type="GPrintFunc"/>
+      </return-value>
+      <parameters>
+        <parameter name="func" transfer-ownership="none">
+          <type name="PrintFunc" c:type="GPrintFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_printerr_handler"
+              c:identifier="g_set_printerr_handler"
+              introspectable="0">
+      <return-value>
+        <type name="PrintFunc" c:type="GPrintFunc"/>
+      </return-value>
+      <parameters>
+        <parameter name="func" transfer-ownership="none">
+          <type name="PrintFunc" c:type="GPrintFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="setenv" c:identifier="g_setenv">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="variable" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="overwrite" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shell_error_quark" c:identifier="g_shell_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="shell_parse_argv"
+              c:identifier="g_shell_parse_argv"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="command_line" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="argcp"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="argvp"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <array c:type="gchar***">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shell_quote" c:identifier="g_shell_quote">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="unquoted_string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shell_unquote" c:identifier="g_shell_unquote" throws="1">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="quoted_string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slice_alloc"
+              c:identifier="g_slice_alloc"
+              introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="block_size" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slice_alloc0"
+              c:identifier="g_slice_alloc0"
+              introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="block_size" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slice_copy" c:identifier="g_slice_copy" introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="block_size" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+        <parameter name="mem_block" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slice_free1" c:identifier="g_slice_free1">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="block_size" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+        <parameter name="mem_block" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slice_free_chain_with_offset"
+              c:identifier="g_slice_free_chain_with_offset">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="block_size" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+        <parameter name="mem_chain" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="next_offset" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slice_get_config" c:identifier="g_slice_get_config">
+      <return-value transfer-ownership="none">
+        <type name="gint64" c:type="gint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="ckey" transfer-ownership="none">
+          <type name="SliceConfig" c:type="GSliceConfig"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slice_get_config_state"
+              c:identifier="g_slice_get_config_state">
+      <return-value transfer-ownership="none">
+        <type name="gint64" c:type="gint64*"/>
+      </return-value>
+      <parameters>
+        <parameter name="ckey" transfer-ownership="none">
+          <type name="SliceConfig" c:type="GSliceConfig"/>
+        </parameter>
+        <parameter name="address" transfer-ownership="none">
+          <type name="gint64" c:type="gint64"/>
+        </parameter>
+        <parameter name="n_values" transfer-ownership="none">
+          <type name="guint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slice_set_config" c:identifier="g_slice_set_config">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ckey" transfer-ownership="none">
+          <type name="SliceConfig" c:type="GSliceConfig"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="gint64" c:type="gint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_alloc"
+              c:identifier="g_slist_alloc"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+    </function>
+    <function name="slist_append"
+              c:identifier="g_slist_append"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_concat"
+              c:identifier="g_slist_concat"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list1" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="list2" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_copy" c:identifier="g_slist_copy" introspectable="0">
+      <return-value>
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_delete_link"
+              c:identifier="g_slist_delete_link"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="link_" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_find" c:identifier="g_slist_find" introspectable="0">
+      <return-value>
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_find_custom"
+              c:identifier="g_slist_find_custom"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <type name="CompareFunc" c:type="GCompareFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_foreach"
+              c:identifier="g_slist_foreach"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" closure="2">
+          <type name="Func" c:type="GFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_free" c:identifier="g_slist_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_free_1" c:identifier="g_slist_free_1">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_index" c:identifier="g_slist_index">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_insert"
+              c:identifier="g_slist_insert"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="position" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_insert_before"
+              c:identifier="g_slist_insert_before"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="slist" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="sibling" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_insert_sorted"
+              c:identifier="g_slist_insert_sorted"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <type name="CompareFunc" c:type="GCompareFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_insert_sorted_with_data"
+              c:identifier="g_slist_insert_sorted_with_data"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" closure="3">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_last" c:identifier="g_slist_last" introspectable="0">
+      <return-value>
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_length" c:identifier="g_slist_length">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_nth" c:identifier="g_slist_nth" introspectable="0">
+      <return-value>
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_nth_data"
+              c:identifier="g_slist_nth_data"
+              introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_pop_allocator" c:identifier="g_slist_pop_allocator">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="slist_position" c:identifier="g_slist_position">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="llink" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_prepend"
+              c:identifier="g_slist_prepend"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_push_allocator"
+              c:identifier="g_slist_push_allocator">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dummy" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_remove"
+              c:identifier="g_slist_remove"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_remove_all"
+              c:identifier="g_slist_remove_all"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_remove_link"
+              c:identifier="g_slist_remove_link"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="link_" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_reverse"
+              c:identifier="g_slist_reverse"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_sort" c:identifier="g_slist_sort" introspectable="0">
+      <return-value>
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="compare_func" transfer-ownership="none">
+          <type name="CompareFunc" c:type="GCompareFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_sort_with_data"
+              c:identifier="g_slist_sort_with_data"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="compare_func" transfer-ownership="none" closure="2">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="snprintf" c:identifier="g_snprintf" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="gulong" c:type="gulong"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_new" c:identifier="g_source_new" introspectable="0">
+      <return-value>
+        <type name="Source" c:type="GSource*"/>
+      </return-value>
+      <parameters>
+        <parameter name="source_funcs" transfer-ownership="none">
+          <type name="SourceFuncs" c:type="GSourceFuncs*"/>
+        </parameter>
+        <parameter name="struct_size" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_remove" c:identifier="g_source_remove">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_remove_by_funcs_user_data"
+              c:identifier="g_source_remove_by_funcs_user_data">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="funcs" transfer-ownership="none">
+          <type name="SourceFuncs" c:type="GSourceFuncs*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_remove_by_user_data"
+              c:identifier="g_source_remove_by_user_data">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_set_name_by_id"
+              c:identifier="g_source_set_name_by_id">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="spaced_primes_closest"
+              c:identifier="g_spaced_primes_closest">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="num" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="spawn_async" c:identifier="g_spawn_async" throws="1">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="working_directory"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="argv" transfer-ownership="none">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="envp" transfer-ownership="none" allow-none="1">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="SpawnFlags" c:type="GSpawnFlags"/>
+        </parameter>
+        <parameter name="child_setup"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   scope="async"
+                   closure="5">
+          <type name="SpawnChildSetupFunc" c:type="GSpawnChildSetupFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" allow-none="1">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="child_pid"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <type name="Pid" c:type="GPid*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="spawn_async_with_pipes"
+              c:identifier="g_spawn_async_with_pipes"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="working_directory"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="argv" transfer-ownership="none">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="envp" transfer-ownership="none" allow-none="1">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="SpawnFlags" c:type="GSpawnFlags"/>
+        </parameter>
+        <parameter name="child_setup"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   scope="async"
+                   closure="5">
+          <type name="SpawnChildSetupFunc" c:type="GSpawnChildSetupFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" allow-none="1">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="child_pid"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <type name="Pid" c:type="GPid*"/>
+        </parameter>
+        <parameter name="standard_input"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="standard_output"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="standard_error"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="spawn_close_pid" c:identifier="g_spawn_close_pid">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pid" transfer-ownership="none">
+          <type name="Pid" c:type="GPid"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="spawn_command_line_async"
+              c:identifier="g_spawn_command_line_async"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="command_line" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="spawn_command_line_sync"
+              c:identifier="g_spawn_command_line_sync"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="command_line" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="standard_output"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="standard_error"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="exit_status"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="spawn_error_quark" c:identifier="g_spawn_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="spawn_sync" c:identifier="g_spawn_sync" throws="1">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="working_directory"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="argv" transfer-ownership="none">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="envp" transfer-ownership="none" allow-none="1">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="SpawnFlags" c:type="GSpawnFlags"/>
+        </parameter>
+        <parameter name="child_setup"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   scope="call"
+                   closure="5">
+          <type name="SpawnChildSetupFunc" c:type="GSpawnChildSetupFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" allow-none="1">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="standard_output"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="standard_error"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="exit_status"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sprintf" c:identifier="g_sprintf" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="static_mutex_get_mutex_impl"
+              c:identifier="g_static_mutex_get_mutex_impl"
+              introspectable="0">
+      <return-value>
+        <type name="Mutex" c:type="GMutex*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mutex" transfer-ownership="none">
+          <type name="Mutex" c:type="GMutex**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="stpcpy" c:identifier="g_stpcpy">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="str_equal" c:identifier="g_str_equal">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="v1" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="str_has_prefix" c:identifier="g_str_has_prefix">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="prefix" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="str_has_suffix" c:identifier="g_str_has_suffix">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="suffix" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="str_hash" c:identifier="g_str_hash">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strcanon" c:identifier="g_strcanon">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="valid_chars" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="substitutor" transfer-ownership="none">
+          <type name="gchar" c:type="gchar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strcasecmp" c:identifier="g_strcasecmp">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="s1" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="s2" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strchomp" c:identifier="g_strchomp">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strchug" c:identifier="g_strchug">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strcmp0" c:identifier="g_strcmp0">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="str1" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="str2" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strcompress" c:identifier="g_strcompress">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="source" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strconcat" c:identifier="g_strconcat" introspectable="0">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string1" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strdelimit" c:identifier="g_strdelimit">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="delimiters" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="new_delimiter" transfer-ownership="none">
+          <type name="gchar" c:type="gchar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strdown" c:identifier="g_strdown">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strdup" c:identifier="g_strdup">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strdup_printf"
+              c:identifier="g_strdup_printf"
+              introspectable="0">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strdup_vprintf"
+              c:identifier="g_strdup_vprintf"
+              introspectable="0">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="args" transfer-ownership="none">
+          <type name="va_list" c:type="va_list"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strdupv" c:identifier="g_strdupv" introspectable="0">
+      <return-value>
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="str_array" transfer-ownership="none">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strerror" c:identifier="g_strerror">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="errnum" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strescape" c:identifier="g_strescape">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="source" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="exceptions" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strfreev" c:identifier="g_strfreev">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="str_array" transfer-ownership="none">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_chunk_new"
+              c:identifier="g_string_chunk_new"
+              introspectable="0">
+      <return-value>
+        <type name="StringChunk" c:type="GStringChunk*"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_new" c:identifier="g_string_new" introspectable="0">
+      <return-value>
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="init" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_new_len"
+              c:identifier="g_string_new_len"
+              introspectable="0">
+      <return-value>
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="init" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_sized_new"
+              c:identifier="g_string_sized_new"
+              introspectable="0">
+      <return-value>
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="dfl_size" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strip_context" c:identifier="g_strip_context">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="msgid" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="msgval" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strjoin" c:identifier="g_strjoin" introspectable="0">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="separator" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strjoinv" c:identifier="g_strjoinv">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="separator" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="str_array" transfer-ownership="none">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strlcat" c:identifier="g_strlcat">
+      <return-value transfer-ownership="none">
+        <type name="gulong" c:type="gsize"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="dest_size" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strlcpy" c:identifier="g_strlcpy">
+      <return-value transfer-ownership="none">
+        <type name="gulong" c:type="gsize"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="dest_size" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strncasecmp" c:identifier="g_strncasecmp">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="s1" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="s2" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strndup" c:identifier="g_strndup">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strnfill" c:identifier="g_strnfill">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="length" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+        <parameter name="fill_char" transfer-ownership="none">
+          <type name="gchar" c:type="gchar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strreverse" c:identifier="g_strreverse">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strrstr" c:identifier="g_strrstr">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="haystack" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="needle" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strrstr_len" c:identifier="g_strrstr_len">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="haystack" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="haystack_len" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+        <parameter name="needle" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strsignal" c:identifier="g_strsignal">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="signum" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strsplit" c:identifier="g_strsplit" introspectable="0">
+      <return-value>
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="delimiter" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="max_tokens" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strsplit_set"
+              c:identifier="g_strsplit_set"
+              introspectable="0">
+      <return-value>
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="delimiters" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="max_tokens" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strstr_len" c:identifier="g_strstr_len">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="haystack" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="haystack_len" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+        <parameter name="needle" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strtod" c:identifier="g_strtod">
+      <return-value transfer-ownership="none">
+        <type name="gdouble" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="nptr" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="endptr" transfer-ownership="none">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strup" c:identifier="g_strup">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strv_length" c:identifier="g_strv_length">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="str_array" transfer-ownership="none">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_add_data_func"
+              c:identifier="g_test_add_data_func"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="testpath" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="test_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="test_func" transfer-ownership="none">
+          <type name="TestDataFunc" c:type="GTestDataFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_add_func"
+              c:identifier="g_test_add_func"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="testpath" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="test_func" transfer-ownership="none">
+          <type name="TestFunc" c:type="GTestFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_add_vtable"
+              c:identifier="g_test_add_vtable"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="testpath" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="data_size" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+        <parameter name="test_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="data_setup" transfer-ownership="none">
+          <type name="TestFixtureFunc" c:type="GTestFixtureFunc"/>
+        </parameter>
+        <parameter name="data_test" transfer-ownership="none">
+          <type name="TestFixtureFunc" c:type="GTestFixtureFunc"/>
+        </parameter>
+        <parameter name="data_teardown" transfer-ownership="none">
+          <type name="TestFixtureFunc" c:type="GTestFixtureFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_bug" c:identifier="g_test_bug">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="bug_uri_snippet" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_bug_base" c:identifier="g_test_bug_base">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="uri_pattern" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_create_case"
+              c:identifier="g_test_create_case"
+              introspectable="0">
+      <return-value>
+        <type name="TestCase" c:type="GTestCase*"/>
+      </return-value>
+      <parameters>
+        <parameter name="test_name" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="data_size" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+        <parameter name="test_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="data_setup" transfer-ownership="none">
+          <type name="TestFixtureFunc" c:type="GTestFixtureFunc"/>
+        </parameter>
+        <parameter name="data_test" transfer-ownership="none">
+          <type name="TestFixtureFunc" c:type="GTestFixtureFunc"/>
+        </parameter>
+        <parameter name="data_teardown" transfer-ownership="none">
+          <type name="TestFixtureFunc" c:type="GTestFixtureFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_create_suite"
+              c:identifier="g_test_create_suite"
+              introspectable="0">
+      <return-value>
+        <type name="TestSuite" c:type="GTestSuite*"/>
+      </return-value>
+      <parameters>
+        <parameter name="suite_name" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_get_root"
+              c:identifier="g_test_get_root"
+              introspectable="0">
+      <return-value>
+        <type name="TestSuite" c:type="GTestSuite*"/>
+      </return-value>
+    </function>
+    <function name="test_init" c:identifier="g_test_init" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc" transfer-ownership="none">
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="argv" transfer-ownership="none">
+          <type name="utf8" c:type="char***"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_log_buffer_new"
+              c:identifier="g_test_log_buffer_new"
+              introspectable="0">
+      <return-value>
+        <type name="TestLogBuffer" c:type="GTestLogBuffer*"/>
+      </return-value>
+    </function>
+    <function name="test_log_set_fatal_handler"
+              c:identifier="g_test_log_set_fatal_handler"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="log_func" transfer-ownership="none" closure="1">
+          <type name="TestLogFatalFunc" c:type="GTestLogFatalFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_log_type_name" c:identifier="g_test_log_type_name">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="log_type" transfer-ownership="none">
+          <type name="TestLogType" c:type="GTestLogType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_maximized_result"
+              c:identifier="g_test_maximized_result"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="maximized_quantity" transfer-ownership="none">
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_message"
+              c:identifier="g_test_message"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_minimized_result"
+              c:identifier="g_test_minimized_result"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="minimized_quantity" transfer-ownership="none">
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_queue_destroy" c:identifier="g_test_queue_destroy">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="destroy_func" transfer-ownership="none" scope="async">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+        <parameter name="destroy_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_queue_free" c:identifier="g_test_queue_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="gfree_pointer" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_rand_double" c:identifier="g_test_rand_double">
+      <return-value transfer-ownership="none">
+        <type name="gdouble" c:type="double"/>
+      </return-value>
+    </function>
+    <function name="test_rand_double_range"
+              c:identifier="g_test_rand_double_range">
+      <return-value transfer-ownership="none">
+        <type name="gdouble" c:type="double"/>
+      </return-value>
+      <parameters>
+        <parameter name="range_start" transfer-ownership="none">
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+        <parameter name="range_end" transfer-ownership="none">
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_rand_int" c:identifier="g_test_rand_int">
+      <return-value transfer-ownership="none">
+        <type name="gint32" c:type="gint32"/>
+      </return-value>
+    </function>
+    <function name="test_rand_int_range" c:identifier="g_test_rand_int_range">
+      <return-value transfer-ownership="none">
+        <type name="gint32" c:type="gint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="begin" transfer-ownership="none">
+          <type name="gint32" c:type="gint32"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="gint32" c:type="gint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_run" c:identifier="g_test_run">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="int"/>
+      </return-value>
+    </function>
+    <function name="test_run_suite" c:identifier="g_test_run_suite">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="suite" transfer-ownership="none">
+          <type name="TestSuite" c:type="GTestSuite*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_timer_elapsed" c:identifier="g_test_timer_elapsed">
+      <return-value transfer-ownership="none">
+        <type name="gdouble" c:type="double"/>
+      </return-value>
+    </function>
+    <function name="test_timer_last" c:identifier="g_test_timer_last">
+      <return-value transfer-ownership="none">
+        <type name="gdouble" c:type="double"/>
+      </return-value>
+    </function>
+    <function name="test_timer_start" c:identifier="g_test_timer_start">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="test_trap_assertions"
+              c:identifier="g_test_trap_assertions">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="domain" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="file" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="line" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="assertion_flags" transfer-ownership="none">
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="pattern" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_trap_fork" c:identifier="g_test_trap_fork">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="usec_timeout" transfer-ownership="none">
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="test_trap_flags" transfer-ownership="none">
+          <type name="TestTrapFlags" c:type="GTestTrapFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_trap_has_passed"
+              c:identifier="g_test_trap_has_passed">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="test_trap_reached_timeout"
+              c:identifier="g_test_trap_reached_timeout">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="thread_create_full"
+              c:identifier="g_thread_create_full"
+              introspectable="0"
+              throws="1">
+      <return-value>
+        <type name="Thread" c:type="GThread*"/>
+      </return-value>
+      <parameters>
+        <parameter name="func" transfer-ownership="none" closure="1">
+          <type name="ThreadFunc" c:type="GThreadFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="stack_size" transfer-ownership="none">
+          <type name="gulong" c:type="gulong"/>
+        </parameter>
+        <parameter name="joinable" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="bound" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="priority" transfer-ownership="none">
+          <type name="ThreadPriority" c:type="GThreadPriority"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="thread_error_quark" c:identifier="g_thread_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="thread_exit" c:identifier="g_thread_exit">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="retval" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="thread_foreach"
+              c:identifier="g_thread_foreach"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="thread_func" transfer-ownership="none" closure="1">
+          <type name="Func" c:type="GFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="thread_get_initialized"
+              c:identifier="g_thread_get_initialized">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="thread_init" c:identifier="g_thread_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="vtable" transfer-ownership="none" allow-none="1">
+          <type name="ThreadFunctions" c:type="GThreadFunctions*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="thread_init_with_errorcheck_mutexes"
+              c:identifier="g_thread_init_with_errorcheck_mutexes">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="vtable" transfer-ownership="none">
+          <type name="ThreadFunctions" c:type="GThreadFunctions*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="thread_pool_get_max_idle_time"
+              c:identifier="g_thread_pool_get_max_idle_time">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+    </function>
+    <function name="thread_pool_get_max_unused_threads"
+              c:identifier="g_thread_pool_get_max_unused_threads">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+    </function>
+    <function name="thread_pool_get_num_unused_threads"
+              c:identifier="g_thread_pool_get_num_unused_threads">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+    </function>
+    <function name="thread_pool_new"
+              c:identifier="g_thread_pool_new"
+              introspectable="0"
+              throws="1">
+      <return-value>
+        <type name="ThreadPool" c:type="GThreadPool*"/>
+      </return-value>
+      <parameters>
+        <parameter name="func" transfer-ownership="none" closure="1">
+          <type name="Func" c:type="GFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="max_threads" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="exclusive" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="thread_pool_set_max_idle_time"
+              c:identifier="g_thread_pool_set_max_idle_time">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="interval" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="thread_pool_set_max_unused_threads"
+              c:identifier="g_thread_pool_set_max_unused_threads">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="max_threads" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="thread_pool_stop_unused_threads"
+              c:identifier="g_thread_pool_stop_unused_threads">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="thread_self"
+              c:identifier="g_thread_self"
+              introspectable="0">
+      <return-value>
+        <type name="Thread" c:type="GThread*"/>
+      </return-value>
+    </function>
+    <function name="time_val_from_iso8601"
+              c:identifier="g_time_val_from_iso8601">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="iso_date" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="TimeVal" c:type="GTimeVal*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="time_zone_new"
+              c:identifier="g_time_zone_new"
+              introspectable="0">
+      <return-value>
+        <type name="TimeZone" c:type="GTimeZone*"/>
+      </return-value>
+      <parameters>
+        <parameter name="identifier" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="time_zone_new_local"
+              c:identifier="g_time_zone_new_local"
+              introspectable="0">
+      <return-value>
+        <type name="TimeZone" c:type="GTimeZone*"/>
+      </return-value>
+    </function>
+    <function name="time_zone_new_utc"
+              c:identifier="g_time_zone_new_utc"
+              introspectable="0">
+      <return-value>
+        <type name="TimeZone" c:type="GTimeZone*"/>
+      </return-value>
+    </function>
+    <function name="timeout_add"
+              c:identifier="g_timeout_add"
+              shadowed-by="timeout_add_full"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="interval" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="function" transfer-ownership="none" closure="2">
+          <type name="SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="timeout_add_full"
+              c:identifier="g_timeout_add_full"
+              shadows="timeout_add">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="interval" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="function"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="3"
+                   destroy="4">
+          <type name="SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="async">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="timeout_add_seconds"
+              c:identifier="g_timeout_add_seconds"
+              shadowed-by="timeout_add_seconds_full"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="interval" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="function" transfer-ownership="none" closure="2">
+          <type name="SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="timeout_add_seconds_full"
+              c:identifier="g_timeout_add_seconds_full"
+              shadows="timeout_add_seconds">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="interval" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="function"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="3"
+                   destroy="4">
+          <type name="SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="async">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="timeout_source_new"
+              c:identifier="g_timeout_source_new"
+              introspectable="0">
+      <return-value>
+        <type name="Source" c:type="GSource*"/>
+      </return-value>
+      <parameters>
+        <parameter name="interval" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="timeout_source_new_seconds"
+              c:identifier="g_timeout_source_new_seconds"
+              introspectable="0">
+      <return-value>
+        <type name="Source" c:type="GSource*"/>
+      </return-value>
+      <parameters>
+        <parameter name="interval" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="timer_new" c:identifier="g_timer_new" introspectable="0">
+      <return-value>
+        <type name="Timer" c:type="GTimer*"/>
+      </return-value>
+    </function>
+    <function name="trash_stack_height" c:identifier="g_trash_stack_height">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="stack_p" transfer-ownership="none">
+          <type name="TrashStack" c:type="GTrashStack**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="trash_stack_peek"
+              c:identifier="g_trash_stack_peek"
+              introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="stack_p" transfer-ownership="none">
+          <type name="TrashStack" c:type="GTrashStack**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="trash_stack_pop"
+              c:identifier="g_trash_stack_pop"
+              introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="stack_p" transfer-ownership="none">
+          <type name="TrashStack" c:type="GTrashStack**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="trash_stack_push" c:identifier="g_trash_stack_push">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stack_p" transfer-ownership="none">
+          <type name="TrashStack" c:type="GTrashStack**"/>
+        </parameter>
+        <parameter name="data_p" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_new" c:identifier="g_tree_new" introspectable="0">
+      <return-value>
+        <type name="Tree" c:type="GTree*"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_compare_func" transfer-ownership="none">
+          <type name="CompareFunc" c:type="GCompareFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_new_full"
+              c:identifier="g_tree_new_full"
+              introspectable="0">
+      <return-value>
+        <type name="Tree" c:type="GTree*"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_compare_func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="1"
+                   destroy="3">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="key_compare_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="key_destroy_func"
+                   transfer-ownership="none"
+                   scope="async">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+        <parameter name="value_destroy_func"
+                   transfer-ownership="none"
+                   scope="async">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_new_with_data"
+              c:identifier="g_tree_new_with_data"
+              introspectable="0">
+      <return-value>
+        <type name="Tree" c:type="GTree*"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_compare_func"
+                   transfer-ownership="none"
+                   closure="1">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="key_compare_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="try_malloc" c:identifier="g_try_malloc" introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_bytes" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="try_malloc0"
+              c:identifier="g_try_malloc0"
+              introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_bytes" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="try_malloc0_n"
+              c:identifier="g_try_malloc0_n"
+              introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_blocks" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+        <parameter name="n_block_bytes" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="try_malloc_n"
+              c:identifier="g_try_malloc_n"
+              introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_blocks" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+        <parameter name="n_block_bytes" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="try_realloc"
+              c:identifier="g_try_realloc"
+              introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="mem" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="n_bytes" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="try_realloc_n"
+              c:identifier="g_try_realloc_n"
+              introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="mem" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="n_blocks" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+        <parameter name="n_block_bytes" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ucs4_to_utf16"
+              c:identifier="g_ucs4_to_utf16"
+              introspectable="0"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="guint16" c:type="gunichar2*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="glong"/>
+        </parameter>
+        <parameter name="items_read" transfer-ownership="none">
+          <type name="glong" c:type="glong*"/>
+        </parameter>
+        <parameter name="items_written" transfer-ownership="none">
+          <type name="glong" c:type="glong*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ucs4_to_utf8"
+              c:identifier="g_ucs4_to_utf8"
+              introspectable="0"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="glong"/>
+        </parameter>
+        <parameter name="items_read" transfer-ownership="none">
+          <type name="glong" c:type="glong*"/>
+        </parameter>
+        <parameter name="items_written" transfer-ownership="none">
+          <type name="glong" c:type="glong*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_break_type"
+              c:identifier="g_unichar_break_type"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="UnicodeBreakType" c:type="GUnicodeBreakType"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_combining_class"
+              c:identifier="g_unichar_combining_class"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="uc" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_digit_value"
+              c:identifier="g_unichar_digit_value"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_get_mirror_char"
+              c:identifier="g_unichar_get_mirror_char"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="ch" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+        <parameter name="mirrored_ch" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_get_script"
+              c:identifier="g_unichar_get_script"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="UnicodeScript" c:type="GUnicodeScript"/>
+      </return-value>
+      <parameters>
+        <parameter name="ch" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_isalnum"
+              c:identifier="g_unichar_isalnum"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_isalpha"
+              c:identifier="g_unichar_isalpha"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_iscntrl"
+              c:identifier="g_unichar_iscntrl"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_isdefined"
+              c:identifier="g_unichar_isdefined"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_isdigit"
+              c:identifier="g_unichar_isdigit"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_isgraph"
+              c:identifier="g_unichar_isgraph"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_islower"
+              c:identifier="g_unichar_islower"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_ismark"
+              c:identifier="g_unichar_ismark"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_isprint"
+              c:identifier="g_unichar_isprint"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_ispunct"
+              c:identifier="g_unichar_ispunct"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_isspace"
+              c:identifier="g_unichar_isspace"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_istitle"
+              c:identifier="g_unichar_istitle"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_isupper"
+              c:identifier="g_unichar_isupper"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_iswide"
+              c:identifier="g_unichar_iswide"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_iswide_cjk"
+              c:identifier="g_unichar_iswide_cjk"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_isxdigit"
+              c:identifier="g_unichar_isxdigit"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_iszerowidth"
+              c:identifier="g_unichar_iszerowidth"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_to_utf8"
+              c:identifier="g_unichar_to_utf8"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+        <parameter name="outbuf" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_tolower"
+              c:identifier="g_unichar_tolower"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gunichar" c:type="gunichar"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_totitle"
+              c:identifier="g_unichar_totitle"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gunichar" c:type="gunichar"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_toupper"
+              c:identifier="g_unichar_toupper"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gunichar" c:type="gunichar"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_type"
+              c:identifier="g_unichar_type"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="UnicodeType" c:type="GUnicodeType"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_validate"
+              c:identifier="g_unichar_validate"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="ch" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_xdigit_value"
+              c:identifier="g_unichar_xdigit_value"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unicode_canonical_decomposition"
+              c:identifier="g_unicode_canonical_decomposition"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gunichar" c:type="gunichar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="ch" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+        <parameter name="result_len" transfer-ownership="none">
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unicode_canonical_ordering"
+              c:identifier="g_unicode_canonical_ordering"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unlink" c:identifier="g_unlink">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unsetenv" c:identifier="g_unsetenv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="variable" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_escape_string" c:identifier="g_uri_escape_string">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="unescaped" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="reserved_chars_allowed" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="allow_utf8" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_list_extract_uris"
+              c:identifier="g_uri_list_extract_uris"
+              introspectable="0">
+      <return-value>
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="uri_list" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_parse_scheme" c:identifier="g_uri_parse_scheme">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_unescape_segment"
+              c:identifier="g_uri_unescape_segment">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="escaped_string" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="escaped_string_end" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="illegal_characters" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_unescape_string" c:identifier="g_uri_unescape_string">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="escaped_string" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="illegal_characters" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="usleep" c:identifier="g_usleep">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="microseconds" transfer-ownership="none">
+          <type name="gulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf16_to_ucs4"
+              c:identifier="g_utf16_to_ucs4"
+              introspectable="0"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="gunichar" c:type="gunichar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="guint16" c:type="gunichar2*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="glong"/>
+        </parameter>
+        <parameter name="items_read" transfer-ownership="none">
+          <type name="glong" c:type="glong*"/>
+        </parameter>
+        <parameter name="items_written" transfer-ownership="none">
+          <type name="glong" c:type="glong*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf16_to_utf8" c:identifier="g_utf16_to_utf8" throws="1">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="guint16" c:type="gunichar2*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="glong"/>
+        </parameter>
+        <parameter name="items_read" transfer-ownership="none">
+          <type name="glong" c:type="glong*"/>
+        </parameter>
+        <parameter name="items_written" transfer-ownership="none">
+          <type name="glong" c:type="glong*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_casefold" c:identifier="g_utf8_casefold">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_collate" c:identifier="g_utf8_collate">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="str1" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="str2" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_collate_key" c:identifier="g_utf8_collate_key">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_collate_key_for_filename"
+              c:identifier="g_utf8_collate_key_for_filename">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_find_next_char" c:identifier="g_utf8_find_next_char">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="p" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_find_prev_char" c:identifier="g_utf8_find_prev_char">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="p" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_get_char"
+              c:identifier="g_utf8_get_char"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gunichar" c:type="gunichar"/>
+      </return-value>
+      <parameters>
+        <parameter name="p" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_get_char_validated"
+              c:identifier="g_utf8_get_char_validated"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gunichar" c:type="gunichar"/>
+      </return-value>
+      <parameters>
+        <parameter name="p" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="max_len" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_normalize" c:identifier="g_utf8_normalize">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="NormalizeMode" c:type="GNormalizeMode"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_offset_to_pointer"
+              c:identifier="g_utf8_offset_to_pointer">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <type name="glong" c:type="glong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_pointer_to_offset"
+              c:identifier="g_utf8_pointer_to_offset">
+      <return-value transfer-ownership="none">
+        <type name="glong" c:type="glong"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="pos" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_prev_char" c:identifier="g_utf8_prev_char">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="p" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_strchr"
+              c:identifier="g_utf8_strchr"
+              introspectable="0">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="p" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_strdown" c:identifier="g_utf8_strdown">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_strlen" c:identifier="g_utf8_strlen">
+      <return-value transfer-ownership="none">
+        <type name="glong" c:type="glong"/>
+      </return-value>
+      <parameters>
+        <parameter name="p" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="max" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_strncpy" c:identifier="g_utf8_strncpy">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_strrchr"
+              c:identifier="g_utf8_strrchr"
+              introspectable="0">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="p" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+        <parameter name="c" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_strreverse" c:identifier="g_utf8_strreverse">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_strup" c:identifier="g_utf8_strup">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_to_ucs4"
+              c:identifier="g_utf8_to_ucs4"
+              introspectable="0"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="gunichar" c:type="gunichar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="glong"/>
+        </parameter>
+        <parameter name="items_read" transfer-ownership="none">
+          <type name="glong" c:type="glong*"/>
+        </parameter>
+        <parameter name="items_written" transfer-ownership="none">
+          <type name="glong" c:type="glong*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_to_ucs4_fast"
+              c:identifier="g_utf8_to_ucs4_fast"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gunichar" c:type="gunichar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="glong"/>
+        </parameter>
+        <parameter name="items_written" transfer-ownership="none">
+          <type name="glong" c:type="glong*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_to_utf16" c:identifier="g_utf8_to_utf16" throws="1">
+      <return-value transfer-ownership="none">
+        <type name="guint16" c:type="gunichar2*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="glong" c:type="glong"/>
+        </parameter>
+        <parameter name="items_read" transfer-ownership="none">
+          <type name="glong" c:type="glong*"/>
+        </parameter>
+        <parameter name="items_written" transfer-ownership="none">
+          <type name="glong" c:type="glong*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_validate" c:identifier="g_utf8_validate">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="max_len" transfer-ownership="none">
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_builder_new"
+              c:identifier="g_variant_builder_new"
+              introspectable="0">
+      <return-value>
+        <type name="VariantBuilder" c:type="GVariantBuilder*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_compare" c:identifier="g_variant_compare">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="one" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="two" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_equal" c:identifier="g_variant_equal">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="one" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="two" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_get_type" c:identifier="g_variant_get_type">
+      <return-value transfer-ownership="none">
+        <type name="VariantType" c:type="GVariantType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_hash" c:identifier="g_variant_hash">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_is_object_path"
+              c:identifier="g_variant_is_object_path">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_is_signature"
+              c:identifier="g_variant_is_signature">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_new_tuple" c:identifier="g_variant_new_tuple">
+      <return-value transfer-ownership="full">
+        <type name="Variant" c:type="GVariant*"/>
+      </return-value>
+      <parameters>
+        <parameter name="children" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant**"/>
+        </parameter>
+        <parameter name="n_children" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_parse" c:identifier="g_variant_parse" throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Variant" c:type="GVariant*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="limit" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="endptr" transfer-ownership="none">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_parser_get_error_quark"
+              c:identifier="g_variant_parser_get_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="variant_type_checked_"
+              c:identifier="g_variant_type_checked_">
+      <return-value transfer-ownership="none">
+        <type name="VariantType" c:type="GVariantType*"/>
+      </return-value>
+      <parameters>
+        <parameter transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_equal" c:identifier="g_variant_type_equal">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type1" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="type2" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_hash" c:identifier="g_variant_type_hash">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_new"
+              c:identifier="g_variant_type_new"
+              introspectable="0">
+      <return-value>
+        <type name="VariantType" c:type="GVariantType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type_string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_new_tuple"
+              c:identifier="g_variant_type_new_tuple"
+              introspectable="0">
+      <return-value>
+        <type name="VariantType" c:type="GVariantType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="items" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType**"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_string_is_valid"
+              c:identifier="g_variant_type_string_is_valid">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type_string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_string_scan"
+              c:identifier="g_variant_type_string_scan">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="limit" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="endptr" transfer-ownership="none">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vasprintf" c:identifier="g_vasprintf" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="args" transfer-ownership="none">
+          <type name="va_list" c:type="va_list"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vfprintf" c:identifier="g_vfprintf" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="file" transfer-ownership="none">
+          <type name="gpointer" c:type="FILE*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="args" transfer-ownership="none">
+          <type name="va_list" c:type="va_list"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vprintf" c:identifier="g_vprintf" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="args" transfer-ownership="none">
+          <type name="va_list" c:type="va_list"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vsnprintf" c:identifier="g_vsnprintf" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="gulong" c:type="gulong"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="args" transfer-ownership="none">
+          <type name="va_list" c:type="va_list"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vsprintf" c:identifier="g_vsprintf" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="args" transfer-ownership="none">
+          <type name="va_list" c:type="va_list"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="warn_message" c:identifier="g_warn_message">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="domain" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="file" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="line" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="warnexpr" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
index 367ba74d80bcb336316194b7e7c3553a7c59a5de..ce9bcc8313b1cb11ba70f325610cc39f3c09e5eb 100644 (file)
@@ -1,2 +1 @@
-Matthew Willis
-Slava Pestov
+Anton Gorenko
\ No newline at end of file
diff --git a/basis/glib/ffi/ffi.factor b/basis/glib/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..0fd972f
--- /dev/null
@@ -0,0 +1,40 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.destructors alien.libraries alien.syntax
+combinators gobject-introspection gobject-introspection.standard-types
+system ;
+IN: glib.ffi
+
+LIBRARY: glib
+
+<<
+"glib" {
+    { [ os winnt? ] [ "libglib-2.0-0.dll" cdecl add-library ] }
+    { [ os macosx? ] [ "/opt/local/lib/libglib-2.0.0.dylib" cdecl add-library ] }
+    { [ os unix? ] [ "libglib-2.0.so" cdecl add-library ] }
+} cond
+>>
+
+IMPLEMENT-STRUCTS: GPollFD GSource GSourceFuncs ;
+
+CONSTANT: G_MININT8   HEX: -80
+CONSTANT: G_MAXINT8   HEX:  7f
+CONSTANT: G_MAXUINT8  HEX:  ff
+CONSTANT: G_MININT16  HEX: -8000
+CONSTANT: G_MAXINT16  HEX:  7fff
+CONSTANT: G_MAXUINT16 HEX:  ffff
+CONSTANT: G_MININT32  HEX: -80000000
+CONSTANT: G_MAXINT32  HEX:  7fffffff
+CONSTANT: G_MAXUINT32 HEX:  ffffffff
+CONSTANT: G_MININT64  HEX: -8000000000000000
+CONSTANT: G_MAXINT64  HEX:  7fffffffffffffff
+CONSTANT: G_MAXUINT64 HEX:  ffffffffffffffff
+
+GIR: vocab:glib/GLib-2.0.gir
+
+DESTRUCTOR: g_source_unref
+DESTRUCTOR: g_free
+
+CALLBACK: gboolean GSourceFuncsPrepareFunc ( GSource* source, gint* timeout_ ) ;
+CALLBACK: gboolean GSourceFuncsCheckFunc ( GSource* source ) ;
+CALLBACK: gboolean GSourceFuncsDispatchFunc ( GSource* source, GSourceFunc callback, gpointer user_data ) ;
index 7447f24151e2d26bad9afe23970e202781d08820..46fa0359511f0246296bf386c6211668a05b6881 100644 (file)
@@ -1,36 +1,5 @@
-! Copyright (C) 2008 Matthew Willis.
-! Copyright (C) 2009 Slava Pestov.
-! See http://factorcode.org/license.txt for BSD license
-USING: alien alien.c-types alien.syntax alien.destructors
-combinators system alien.libraries ;
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: glib.ffi ;
 IN: glib
 
-<<
-
-{
-    { [ os winnt? ] [ "glib" "libglib-2.0-0.dll" cdecl add-library ] }
-    { [ os macosx? ] [ "glib" "/opt/local/lib/libglib-2.0.0.dylib" cdecl add-library ] }
-    { [ os unix? ] [ ] }
-} cond
-
-{
-    { [ os winnt? ] [ "gobject" "libgobject-2.0-0.dll" cdecl add-library ] }
-    { [ os macosx? ] [ "gobject" "/opt/local/lib/libgobject-2.0.0.dylib" cdecl add-library ] }
-    { [ os unix? ] [ ] }
-} cond
-
->>
-
-LIBRARY: glib
-
-TYPEDEF: void* gpointer
-TYPEDEF: int gint
-TYPEDEF: bool gboolean
-
-FUNCTION: void g_free ( gpointer mem ) ;
-
-LIBRARY: gobject
-
-FUNCTION: void g_object_unref ( gpointer object ) ;
-
-DESTRUCTOR: g_object_unref
index a4b5d805a4ee88c2c148d6b29ed96dd4bb6b29f9..4bb69453882b2b246f4ba8d92ecbd7bc1ab41036 100644 (file)
@@ -1 +1 @@
-Binding for GLib
+GLib binding
old mode 100644 (file)
new mode 100755 (executable)
diff --git a/basis/gmodule/GModule-2.0.gir b/basis/gmodule/GModule-2.0.gir
new file mode 100644 (file)
index 0000000..d19501a
--- /dev/null
@@ -0,0 +1,111 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <package name="gmodule-2.0"/>
+  <c:include name="gmodule.h"/>
+  <namespace name="GModule"
+             version="2.0"
+             shared-library="libgmodule-2.0.so.0"
+             c:identifier-prefixes="G"
+             c:symbol-prefixes="g">
+    <record name="Module" c:type="GModule" disguised="1">
+      <method name="close" c:identifier="g_module_close">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="make_resident" c:identifier="g_module_make_resident">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="name" c:identifier="g_module_name">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="symbol" c:identifier="g_module_symbol">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="symbol_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="symbol" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="ModuleCheckInit" c:type="GModuleCheckInit">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="module" transfer-ownership="none">
+          <type name="Module" c:type="GModule*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="ModuleFlags" c:type="GModuleFlags">
+      <member name="lazy" value="1" c:identifier="G_MODULE_BIND_LAZY"/>
+      <member name="local" value="2" c:identifier="G_MODULE_BIND_LOCAL"/>
+      <member name="mask" value="3" c:identifier="G_MODULE_BIND_MASK"/>
+    </bitfield>
+    <callback name="ModuleUnload" c:type="GModuleUnload">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="module" transfer-ownership="none">
+          <type name="Module" c:type="GModule*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="module_build_path" c:identifier="g_module_build_path">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="directory" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="module_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="module_error" c:identifier="g_module_error">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="module_open"
+              c:identifier="g_module_open"
+              introspectable="0">
+      <return-value>
+        <type name="Module" c:type="GModule*"/>
+      </return-value>
+      <parameters>
+        <parameter name="file_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ModuleFlags" c:type="GModuleFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="module_supported" c:identifier="g_module_supported">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+  </namespace>
+</repository>
diff --git a/basis/gmodule/authors.txt b/basis/gmodule/authors.txt
new file mode 100644 (file)
index 0000000..ce9bcc8
--- /dev/null
@@ -0,0 +1 @@
+Anton Gorenko
\ No newline at end of file
diff --git a/basis/gmodule/ffi/ffi.factor b/basis/gmodule/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..c90fce8
--- /dev/null
@@ -0,0 +1,21 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries alien.syntax combinators
+gobject-introspection kernel system vocabs.loader ;
+IN: gmodule.ffi
+
+<<
+"glib.ffi" require
+>>
+
+LIBRARY: gmodule
+
+<<
+"gmodule" {
+    { [ os winnt? ] [ "libgmodule-2.0-0.dll" cdecl add-library ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgmodule-2.0.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gmodule/GModule-2.0.gir
diff --git a/basis/gmodule/gmodule.factor b/basis/gmodule/gmodule.factor
new file mode 100644 (file)
index 0000000..88bae33
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gmodule.ffi ;
+IN: gmodule
+
diff --git a/basis/gmodule/summary.txt b/basis/gmodule/summary.txt
new file mode 100644 (file)
index 0000000..d543675
--- /dev/null
@@ -0,0 +1 @@
+GModule binding
diff --git a/basis/gmodule/tags.txt b/basis/gmodule/tags.txt
new file mode 100755 (executable)
index 0000000..bb863cf
--- /dev/null
@@ -0,0 +1 @@
+bindings
diff --git a/basis/gobject-introspection/authors.txt b/basis/gobject-introspection/authors.txt
new file mode 100644 (file)
index 0000000..ce9bcc8
--- /dev/null
@@ -0,0 +1 @@
+Anton Gorenko
\ No newline at end of file
diff --git a/basis/gobject-introspection/common/common.factor b/basis/gobject-introspection/common/common.factor
new file mode 100644 (file)
index 0000000..4a88268
--- /dev/null
@@ -0,0 +1,9 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: namespaces ;
+IN: gobject-introspection.common
+
+SYMBOL: current-namespace-name
+
+SYMBOL: implement-structs
+implement-structs [ V{ } ] initialize
diff --git a/basis/gobject-introspection/ffi/ffi.factor b/basis/gobject-introspection/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..ff0eb9a
--- /dev/null
@@ -0,0 +1,341 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors alien alien.c-types alien.parser arrays assocs
+classes.parser classes.struct combinators
+combinators.short-circuit definitions effects fry
+gobject-introspection.common gobject-introspection.types kernel
+math.parser namespaces parser quotations sequences
+
+gobject-introspection.standard-types
+prettyprint ascii gobject-introspection.repository locals
+compiler.units make splitting.monotonic
+
+sequences.generalizations words words.constant ;
+IN: gobject-introspection.ffi
+
+SYMBOL: constant-prefix
+
+: def-c-type ( c-type-name base-c-type -- )
+    swap (CREATE-C-TYPE) typedef ;
+
+: defer-c-type ( c-type-name -- c-type )
+    deferred-type swap (CREATE-C-TYPE) [ typedef ] keep ;
+!     create-in dup
+!     [ fake-definition ] [ undefined-def define ] bi ;
+
+:: defer-types ( types type-info-class -- )
+    types [
+        [ c-type>> defer-c-type ]
+        [ name>> qualified-name ] bi
+        type-info-class new swap register-type
+    ] each ;
+
+: def-alias-c-type ( base-c-type c-type-name -- c-type )
+    (CREATE-C-TYPE) [ typedef ] keep ;
+
+: alias-c-type-name ( alias -- c-type-name )
+    ! <workaround for alises w/o c:type (Atk)
+    [ c-type>> ] [ name>> ] bi or ;
+    ! workaround>
+    ! c-type>> ;
+
+:: def-alias ( alias -- )
+    alias type>> get-type-info
+    [ c-type>> alias alias-c-type-name def-alias-c-type ]
+    [ clone ] bi alias name>> qualified-name register-type ;
+
+: def-aliases ( aliases -- )
+    [ def-alias ] each ;
+
+GENERIC: type>c-type ( type -- c-type )
+
+M: atomic-type type>c-type get-type-info c-type>> ;
+M: enum-type type>c-type get-type-info c-type>> ;
+M: bitfield-type type>c-type get-type-info c-type>> ;
+M: record-type type>c-type get-type-info c-type>> <pointer> ;
+M: union-type type>c-type get-type-info c-type>> <pointer> ;
+M: boxed-type type>c-type get-type-info c-type>> <pointer> ;
+M: callback-type type>c-type get-type-info c-type>> ;
+M: class-type type>c-type get-type-info c-type>> <pointer> ;
+M: interface-type type>c-type get-type-info c-type>> <pointer> ;
+
+M: boxed-array-type type>c-type
+    name>> simple-type new swap >>name type>c-type ;
+
+M: c-array-type type>c-type
+    element-type>> type>c-type <pointer> ;
+
+M: fixed-size-array-type type>c-type
+    [ element-type>> type>c-type ] [ fixed-size>> ] bi 2array ;
+
+! <workaround for <type/> (in some signals and properties)
+PREDICATE: incorrect-type < simple-type name>> not ;
+M: incorrect-type type>c-type drop void* ;
+! workaround>
+
+GENERIC: parse-const-value ( str data-type -- value )
+
+M: atomic-type parse-const-value
+    name>> {
+        { "gint" [ string>number ] }
+        { "gdouble" [ string>number ] }
+    } case ;
+
+M: utf8-type parse-const-value drop ;
+
+: const-value ( const -- value )
+    [ value>> ] [ type>> ] bi parse-const-value ;
+
+: const-name ( const -- name )
+    name>> constant-prefix get swap "_" glue ;
+
+: def-const ( const -- )
+    [ const-name create-in dup reset-generic ]
+    [ const-value ] bi define-constant ;
+
+: def-consts ( consts -- )
+    [ def-const ] each ;
+
+: define-enum-member ( member -- )
+    [ c-identifier>> create-in dup reset-generic ]
+    [ value>> ] bi define-constant ;
+           
+: def-enum-type ( enum -- )
+    [ members>> [ define-enum-member ] each ]
+    [ c-type>> int def-c-type ] bi ;
+
+: def-bitfield-type ( bitfield -- )
+    def-enum-type ;
+
+GENERIC: parameter-type>c-type ( data-type -- c-type )
+
+M: data-type parameter-type>c-type type>c-type ;
+M: varargs-type parameter-type>c-type drop void* ;
+
+: parameter-c-type ( parameter -- c-type )
+    [ type>> parameter-type>c-type ] keep
+    direction>> "in" = [ <pointer> ] unless ;
+
+GENERIC: return-type>c-type ( data-type -- c-type )
+
+M: data-type return-type>c-type type>c-type ;
+M: none-type return-type>c-type drop void ;
+
+: return-c-type ( return -- c-type )
+    type>> return-type>c-type ;
+
+: parameter-name ( parameter -- name )
+    dup type>> varargs-type?
+    [ drop "varargs" ] [ name>> "!incorrect-name!" or ] if ;
+
+: error-parameter ( -- parameter )
+    parameter new
+        "error" >>name
+        "in" >>direction
+        "none" >>transfer-ownership
+        simple-type new "GLib.Error" >>name >>type ;
+
+: ?suffix-parameters-with-error ( callable -- parameters )
+    [ parameters>> ] [ throws?>> ] bi
+    [ error-parameter suffix ] when ;
+
+: parameter-names&types ( callable -- names types )
+    [ [ parameter-c-type ] map ] [ [ parameter-name ] map ] bi ;
+
+: def-function ( function --  )
+    {
+        [ return>> return-c-type ]
+        [ identifier>> ]
+        [ drop current-library get ]
+        [ ?suffix-parameters-with-error parameter-names&types ]
+    } cleave make-function define-inline ;
+
+: def-functions ( functions -- )
+    [ def-function ] each ;
+
+GENERIC: type>data-type ( type -- data-type )
+
+M: type type>data-type
+    [ simple-type new ] dip name>> >>name ;
+
+: word-started? ( word letter -- ? )
+    [ letter? ] [ LETTER? ] bi* and ; inline
+
+: camel-case>underscore-separated ( str -- str' )
+    [ word-started? not ] monotonic-split "_" join >lower ;
+
+: type>parameter-name ( type -- name )
+    name>> camel-case>underscore-separated ;
+
+: type>parameter ( type -- parameter )
+    [ parameter new ] dip {
+        [ type>parameter-name >>name ]
+        [ type>data-type >>type ]
+        [ drop "in" >>direction "none" >>transfer-ownership ]
+    } cleave ;
+
+:: def-method ( method type --  )
+    method {
+        [ return>> return-c-type ]
+        [ identifier>> ]
+        [ drop current-library get ]
+        [
+            ?suffix-parameters-with-error
+            type type>parameter prefix
+            parameter-names&types
+        ]
+    } cleave make-function define-inline ;
+
+: def-methods ( methods type -- )
+    [ def-method ] curry each ;
+
+: def-callback-type ( callback -- )
+    {
+        [ drop current-library get ]
+        [ return>> return-c-type ]
+        [ c-type>> ]
+        [ ?suffix-parameters-with-error parameter-names&types ]
+    } cleave make-callback-type define-inline ;
+
+GENERIC: field-type>c-type ( data-type -- c-type )
+
+M: simple-type field-type>c-type type>c-type ;
+M: inner-callback-type field-type>c-type drop void* ;
+M: array-type field-type>c-type type>c-type ;
+
+: field>struct-slot ( field -- slot )
+    [ name>> ]
+    [ dup bits>> [ drop uint ] [ type>> field-type>c-type ] if ]
+    [
+        [
+            [ drop ] ! [ writable?>> [ read-only , ] unless ]
+            [ bits>> [ bits: , , ] when* ] bi
+        ] V{ } make
+    ] tri <struct-slot-spec> ;
+
+: def-record-type ( record -- )
+    dup c-type>> implement-structs get-global member?
+    [
+        [ c-type>> create-class-in ]
+        [ fields>> [ field>struct-slot ] map ] bi
+        define-struct-class
+    ] [ c-type>> void def-c-type ] if ;
+
+: def-record ( record -- )
+    {
+        [ def-record-type ]
+        [ constructors>> def-functions ]
+        [ functions>> def-functions ]
+        [ [ methods>> ] keep def-methods ]
+    } cleave ;
+
+: def-union-type ( union -- )
+    c-type>> void def-c-type ;
+
+: def-union ( union -- )
+    {
+        [ def-union-type ]
+        [ constructors>> def-functions ]
+        [ functions>> def-functions ]
+        [ [ methods>> ] keep def-methods ]
+    } cleave ;
+
+: def-boxed-type ( boxed -- )
+    c-type>> void def-c-type ;
+
+: signal-name ( signal type -- name )
+    swap [ c-type>> ] [ name>> ] bi* ":" glue ;
+
+: user-data-parameter ( -- parameter )
+    parameter new
+        "user_data" >>name
+        "in" >>direction
+        "none" >>transfer-ownership
+        simple-type new "gpointer" >>name >>type ;
+
+:: def-signal ( signal type -- )
+    signal {
+        [ drop current-library get ]
+        [ return>> return-c-type ]
+        [ type signal-name ]
+        [
+            parameters>> type type>parameter prefix
+            user-data-parameter suffix parameter-names&types
+        ]
+    } cleave make-callback-type define-inline ;
+    
+: def-signals ( signals type -- )
+    [ def-signal ] curry each ;
+
+: def-class-type ( class -- )
+    c-type>> void def-c-type ;
+
+: def-class ( class -- )
+    {
+        [ def-class-type ]
+        [ constructors>> def-functions ]
+        [ functions>> def-functions ]
+        [ [ methods>> ] keep def-methods ]
+        [ [ signals>> ] keep def-signals ]
+    } cleave ;
+
+: def-interface-type ( interface -- )
+    c-type>> void def-c-type ;
+
+: def-interface ( class -- )
+    {
+        [ def-interface-type ]
+        [ functions>> def-functions ]
+        [ [ methods>> ] keep def-methods ]
+        [ [ signals>> ] keep def-signals ]
+    } cleave ;
+
+: defer-enums ( enums -- ) enum-info defer-types ;
+: defer-bitfields ( bitfields -- ) bitfield-info defer-types ;
+: defer-records ( records -- ) record-info defer-types ;
+: defer-unions ( unions -- ) union-info defer-types ;
+: defer-boxeds ( boxeds -- ) boxed-info defer-types ;
+: defer-callbacks ( callbacks -- ) callback-info defer-types ;
+: defer-interfaces ( interfaces -- ) interface-info defer-types ;
+: defer-classes ( class -- ) class-info defer-types ;
+
+: def-enums ( enums -- ) [ def-enum-type ] each ;
+: def-bitfields ( bitfields -- ) [ def-bitfield-type ] each ;
+: def-records ( records -- ) [ def-record ] each ;
+: def-unions ( unions -- ) [ def-union ] each ;
+: def-boxeds ( boxeds -- ) [ def-boxed-type ] each ;
+: def-callbacks ( callbacks -- ) [ def-callback-type ] each ;
+: def-interfaces ( interfaces -- ) [ def-interface ] each ;
+: def-classes ( classes -- ) [ def-class ] each ;
+
+: def-namespace ( namespace -- )
+    {
+        [ symbol-prefixes>> first >upper constant-prefix set ]
+        [ consts>> def-consts ]
+
+        [ enums>> defer-enums ]
+        [ bitfields>> defer-bitfields ]
+        [ records>> defer-records ]
+        [ unions>> defer-unions ]
+        [ boxeds>> defer-boxeds ]
+        [ callbacks>> defer-callbacks ]
+        [ interfaces>> defer-interfaces ]
+        [ classes>> defer-classes ]
+
+        [ aliases>> def-aliases ]
+
+        [ enums>> def-enums ]
+        [ bitfields>> def-bitfields ]
+        [ records>> def-records ]
+        [ unions>> def-unions ]
+        [ boxeds>> def-boxeds ]
+        [ callbacks>> def-callbacks ]
+        [ interfaces>> def-interfaces ]
+        [ classes>> def-classes ]
+
+        [ functions>> def-functions ]
+    } cleave ;
+
+: def-ffi-repository ( repository -- )
+    namespace>> def-namespace ;
+     
diff --git a/basis/gobject-introspection/gobject-introspection.factor b/basis/gobject-introspection/gobject-introspection.factor
new file mode 100755 (executable)
index 0000000..5104f75
--- /dev/null
@@ -0,0 +1,31 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors combinators gobject-introspection.common
+gobject-introspection.ffi gobject-introspection.loader
+gobject-introspection.types kernel lexer locals namespaces parser
+sequences xml ;
+IN: gobject-introspection
+
+<PRIVATE
+
+:: define-gir-vocab ( file-name -- )
+    file-name file>xml xml>repository
+    {
+        [ namespace>> name>> current-namespace-name set-global ]
+        [ def-ffi-repository ]
+    } cleave
+    V{ } clone implement-structs set-global ;
+
+PRIVATE>
+
+SYNTAX: GIR: scan define-gir-vocab ;
+
+SYNTAX: IMPLEMENT-STRUCTS:
+    ";" parse-tokens
+    implement-structs [ swap append! ] change-global ;
+
+SYNTAX: FOREIGN-ENUM-TYPE:
+    scan-token scan-object swap register-enum-type ;
+
+SYNTAX: FOREIGN-RECORD-TYPE:
+    scan-token scan-object swap register-record-type ;
diff --git a/basis/gobject-introspection/loader/loader.factor b/basis/gobject-introspection/loader/loader.factor
new file mode 100644 (file)
index 0000000..3bc139e
--- /dev/null
@@ -0,0 +1,214 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors combinators gobject-introspection.repository kernel
+literals math.parser sequences splitting xml.data xml.traversal ;
+IN: gobject-introspection.loader
+
+: xml>simple-type ( xml -- type )
+    [ simple-type new ] dip {
+        [ "name" attr >>name ]
+        [
+            "type" tags-named
+            [ xml>simple-type ] map f like >>element-types
+        ]
+    } cleave ;
+
+: xml>varargs-type ( xml -- type )
+    drop varargs-type new ;
+
+: xml>array-type ( xml -- type )
+    [ array-type new ] dip {
+        [ "name" attr >>name ]
+        [ "zero-terminated" attr "0" = not >>zero-terminated? ]
+        [ "length" attr string>number >>length ]
+        [ "fixed-size" attr string>number >>fixed-size ]
+        [ "type" tag-named xml>simple-type >>element-type ]
+    } cleave ;
+
+: xml>inner-callback-type ( xml -- type )
+    [ inner-callback-type new ] dip {
+        [ "name" attr >>name ]
+    } cleave ;
+
+: xml>type ( xml -- type )
+    dup name>> main>> {
+        { "type" [ xml>simple-type ] }
+        { "array"[ xml>array-type ] }
+        { "callback" [ xml>inner-callback-type ] }
+        { "varargs" [ xml>varargs-type ] }
+    } case ;
+
+CONSTANT: type-tags
+    $[ { "array" "type" "callback" "varargs" } [ <null-name> ] map ]
+
+: child-type-tag ( xml -- type-tag )
+    children-tags [
+        type-tags [ swap tag-named? ] with any?
+    ] find nip ;
+
+: xml>alias ( xml -- alias )
+    [ alias new ] dip {
+        [ "name" attr >>name ]
+        [ "type" attr >>c-type ]
+        [ child-type-tag xml>type >>type ]
+    } cleave ;
+
+: xml>const ( xml -- const )
+    [ const new ] dip {
+        [ "name" attr >>name ]
+        [ "value" attr >>value ]
+        [ child-type-tag xml>type >>type ]
+    } cleave ;
+    
+: load-type ( type xml -- type )
+    {
+        [ "name" attr >>name ]
+        [ [ "type" attr ] [ "type-name" attr ] bi or >>c-type ]
+        [ "get-type" attr >>get-type ]
+    } cleave ;
+
+: xml>member ( xml -- member )
+    [ enum-member new ] dip {
+        [ "name" attr >>name ]
+        [ "identifier" attr >>c-identifier ]
+        [ "value" attr string>number >>value ]
+    } cleave ;
+
+: xml>enum ( xml -- enum )
+    [ enum new ] dip {
+        [ load-type ]
+        [ "member" tags-named [ xml>member ] map >>members ]
+    } cleave ;
+
+: load-parameter ( param xml -- param )
+    [ child-type-tag xml>type >>type ]
+    [ "transfer-ownership" attr >>transfer-ownership ] bi ;
+
+: xml>parameter ( xml -- parameter )
+    [ parameter new ] dip {
+        [ "name" attr >>name ]
+        [ "direction" attr dup "in" ? >>direction ]
+        [ "allow-none" attr "1" = >>allow-none? ]
+        [ child-type-tag xml>type >>type ]
+        [ "transfer-ownership" attr >>transfer-ownership ]
+    } cleave ;
+
+: xml>return ( xml -- return )
+    [ return new ] dip {
+        [ child-type-tag xml>type >>type ]
+        [ "transfer-ownership" attr >>transfer-ownership ]
+    } cleave ;
+   
+: load-callable ( callable xml -- callable )
+    [ "return-value" tag-named xml>return >>return ]
+    [
+        "parameters" tag-named "parameter" tags-named
+        [ xml>parameter ] map >>parameters
+    ] bi ;
+
+: xml>function ( xml -- function )
+    [ function new ] dip {
+        [ "name" attr >>name ]
+        [ "identifier" attr >>identifier ]
+        [ load-callable ]
+        [ "throws" attr "1" = >>throws? ]
+    } cleave ;
+
+: load-functions ( xml tag-name -- functions )
+    tags-named [ xml>function ] map ;
+
+: xml>field ( xml -- field )
+    [ field new ] dip {
+        [ "name" attr >>name ]
+        [ "writable" attr "1" = >>writable? ]
+        [ "bits" attr string>number >>bits ]
+        [ child-type-tag xml>type >>type ]
+    } cleave ;
+
+: xml>record ( xml -- record )
+    [ record new ] dip {
+        [ load-type ]
+        [ "field" tags-named [ xml>field ] map >>fields ]
+        [ "constructor" load-functions >>constructors ]
+        [ "method" load-functions >>methods ]
+        [ "function" load-functions >>functions ]
+        [ "disguised" attr "1" = >>disguised? ]
+    } cleave ;
+
+: xml>union ( xml -- union )
+    [ union new ] dip {
+        [ load-type ]
+        [ "field" tags-named [ xml>field ] map >>fields ]
+        [ "constructor" load-functions >>constructors ]
+        [ "method" load-functions >>methods ]
+        [ "function" load-functions >>functions ]
+    } cleave ;
+
+: xml>callback ( xml -- callback )
+    [ callback new ] dip {
+        [ load-type ]
+        [ load-callable ]
+        [ "throws" attr "1" = >>throws? ]
+    } cleave ;
+
+: xml>signal ( xml -- signal )
+    [ signal new ] dip {
+        [ "name" attr >>name ]
+        [ load-callable ]
+    } cleave ;
+
+: xml>property ( xml -- property )
+    [ property new ] dip {
+        [ "name" attr >>name ]
+        [ "writable" attr "1" = >>writable? ]
+        [ "readable" attr "0" = not >>readable? ]
+        [ "construct" attr "1" = >>construct? ]
+        [ "construct-only" attr "1" = >>construct-only? ]
+        [ child-type-tag xml>type >>type ]
+    } cleave ;
+
+: xml>class ( xml -- class )
+    [ class new ] dip {
+        [ load-type ]
+        [ "abstract" attr "1" = >>abstract? ]
+        [ "parent" attr >>parent ]
+        [ "type-struct" attr >>type-struct ]
+        [ "constructor" load-functions >>constructors ]
+        [ "method" load-functions >>methods ]
+        [ "function" load-functions >>functions ]
+        [ "signal" tags-named [ xml>signal ] map >>signals ]
+    } cleave ;
+
+: xml>interface ( xml -- interface )
+    [ interface new ] dip {
+        [ load-type ]
+        [ "method" load-functions >>methods ]
+        [ "function" load-functions >>functions ]
+        [ "signal" tags-named [ xml>signal ] map >>signals ]
+    } cleave ;
+
+: xml>boxed ( xml -- boxed )
+    [ boxed new ] dip
+        load-type ;
+
+: xml>namespace ( xml -- namespace )
+    [ namespace new ] dip {
+        [ "name" attr >>name ]
+        [ "identifier-prefixes" attr "," split >>identifier-prefixes ]
+        [ "symbol-prefixes" attr "," split >>symbol-prefixes ]
+        [ "alias" tags-named [ xml>alias ] map >>aliases ]
+        [ "constant" tags-named [ xml>const ] map >>consts ]
+        [ "enumeration" tags-named [ xml>enum ] map >>enums ]
+        [ "bitfield" tags-named [ xml>enum ] map >>bitfields ]
+        [ "record" tags-named [ xml>record ] map >>records ]
+        [ "union" tags-named [ xml>union ] map >>unions ]
+        [ "boxed" tags-named [ xml>boxed ] map >>boxeds ]
+        [ "callback" tags-named [ xml>callback ] map >>callbacks ]
+        [ "class" tags-named [ xml>class ] map >>classes ]
+        [ "interface" tags-named [ xml>interface ] map >>interfaces ]
+        [ "function" load-functions >>functions ]
+    } cleave ;
+
+: xml>repository ( xml -- repository )
+    [ repository new ] dip
+    "namespace" tag-named xml>namespace >>namespace ;
diff --git a/basis/gobject-introspection/repository/repository.factor b/basis/gobject-introspection/repository/repository.factor
new file mode 100644 (file)
index 0000000..4344c99
--- /dev/null
@@ -0,0 +1,134 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: ;
+IN: gobject-introspection.repository
+
+TUPLE: repository
+    namespace ;
+
+TUPLE: namespace
+    name
+    identifier-prefixes
+    symbol-prefixes
+    aliases
+    consts
+    enums
+    bitfields
+    records
+    unions
+    boxeds
+    callbacks
+    classes
+    interfaces
+    functions ;
+
+TUPLE: data-type
+    name ;
+
+TUPLE: simple-type < data-type
+    element-types ;
+
+TUPLE: array-type < data-type
+    zero-terminated?
+    fixed-size
+    length
+    element-type ;
+
+TUPLE: inner-callback-type < data-type ;
+
+TUPLE: varargs-type < data-type ;
+
+TUPLE: alias
+    name
+    c-type
+    type ;
+
+TUPLE: const
+    name
+    value
+    type ;
+
+TUPLE: type
+    name
+    c-type
+    get-type ;
+
+TUPLE: enum-member
+    name
+    value
+    c-identifier ;
+
+TUPLE: enum < type
+    members ;
+
+TUPLE: record < type
+    fields
+    constructors
+    methods
+    functions
+    disguised? ;
+
+TUPLE: field
+    name
+    writable?
+    bits
+    type ;
+
+TUPLE: union < type
+    fields
+    constructors
+    methods
+    functions ;
+
+TUPLE: return
+    type
+    transfer-ownership ;
+
+TUPLE: parameter
+    name
+    type
+    direction
+    allow-none?
+    transfer-ownership ;
+
+TUPLE: function
+    name
+    identifier
+    return
+    parameters
+    throws? ;
+
+TUPLE: callback < type
+    return
+    parameters
+    throws? ;
+
+TUPLE: class < type
+    abstract?
+    parent
+    type-struct
+    constructors
+    methods
+    functions
+    signals ;
+
+TUPLE: interface < type
+    constructors
+    methods
+    functions
+    signals ;
+
+TUPLE: boxed < type ;
+
+TUPLE: signal
+    name
+    return
+    parameters ;
+
+TUPLE: property
+    name
+    readable?
+    writable?
+    construct?
+    construct-only?
+    type ;
diff --git a/basis/gobject-introspection/standard-types/standard-types.factor b/basis/gobject-introspection/standard-types/standard-types.factor
new file mode 100644 (file)
index 0000000..53f1d1f
--- /dev/null
@@ -0,0 +1,71 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors alien.c-types alien.syntax
+classes.struct gobject-introspection.types kernel parser ;
+IN: gobject-introspection.standard-types
+
+<<
+TYPEDEF: char gchar
+TYPEDEF: uchar guchar
+TYPEDEF: short gshort
+TYPEDEF: ushort gushort
+TYPEDEF: long glong
+TYPEDEF: ulong gulong
+TYPEDEF: int gint
+TYPEDEF: uint guint
+
+TYPEDEF: char gint8
+TYPEDEF: uchar guint8
+TYPEDEF: short gint16
+TYPEDEF: ushort guint16
+TYPEDEF: int gint32
+TYPEDEF: uint guint32
+TYPEDEF: longlong gint64
+TYPEDEF: ulonglong guint64
+
+TYPEDEF: float gfloat
+TYPEDEF: double gdouble
+
+TYPEDEF: gulong GType
+TYPEDEF: void* gpointer
+TYPEDEF: guint32 gunichar
+TYPEDEF: void* va_list
+
+int c-type clone
+    [ >c-bool ] >>unboxer-quot
+    [ c-bool> ] >>boxer-quot
+    object >>boxed-class
+"gboolean" create-in typedef
+
+STRUCT: longdouble { data char[10] } ;
+>>
+
+gchar "gchar" register-standard-type
+guchar "guchar" register-standard-type
+gshort "gshort" register-standard-type
+gushort "gushort" register-standard-type
+glong "glong" register-standard-type
+gulong "gulong" register-standard-type
+gint "gint" register-standard-type
+guint "guint" register-standard-type
+
+gint8 "gint8" register-standard-type
+guint8 "guint8" register-standard-type
+gint16 "gint16" register-standard-type
+guint16 "guint16" register-standard-type
+gint32 "gint32" register-standard-type
+guint32 "guint32" register-standard-type
+gint64 "gint64" register-standard-type
+guint64 "guint64" register-standard-type
+
+gfloat "gfloat" register-standard-type
+gdouble "gdouble" register-standard-type
+
+GType "GType" register-standard-type
+gpointer "gpointer" register-standard-type
+gunichar "gunichar" register-standard-type
+va_list "va_list" register-standard-type
+
+gboolean "gboolean" register-standard-type
+pointer: gchar "utf8" register-standard-type
+longdouble "long double" register-standard-type
diff --git a/basis/gobject-introspection/summary.txt b/basis/gobject-introspection/summary.txt
new file mode 100644 (file)
index 0000000..7be5ede
--- /dev/null
@@ -0,0 +1 @@
+GObjectIntrospection support
diff --git a/basis/gobject-introspection/types/types.factor b/basis/gobject-introspection/types/types.factor
new file mode 100644 (file)
index 0000000..f563b87
--- /dev/null
@@ -0,0 +1,112 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors alien.c-types assocs combinators.short-circuit
+gobject-introspection.common gobject-introspection.repository kernel
+locals namespaces parser sequences sets ;
+IN: gobject-introspection.types
+
+SYMBOL: type-infos
+type-infos [ H{ } ] initialize
+
+SYMBOL: standard-types
+standard-types [ V{ } ] initialize
+
+TUPLE: type-info c-type ;
+
+TUPLE: atomic-info < type-info ;
+TUPLE: enum-info < type-info ;
+TUPLE: bitfield-info < type-info ;
+TUPLE: record-info < type-info ;
+TUPLE: union-info < type-info ;
+TUPLE: boxed-info < type-info ;
+TUPLE: callback-info < type-info ;
+TUPLE: class-info < type-info ;
+TUPLE: interface-info < type-info ;
+
+DEFER: find-type-info
+
+PREDICATE: none-type < simple-type
+    name>> "none" = ;
+
+PREDICATE: atomic-type < simple-type
+    find-type-info atomic-info? ;
+
+PREDICATE: utf8-type < atomic-type
+    name>> "utf8" = ;
+
+PREDICATE: enum-type < simple-type
+    find-type-info enum-info? ;
+
+PREDICATE: bitfield-type < simple-type
+    find-type-info bitfield-info? ;
+
+PREDICATE: record-type < simple-type
+    find-type-info record-info? ;
+
+PREDICATE: union-type < simple-type
+    find-type-info union-info? ;
+
+PREDICATE: boxed-type < simple-type
+    find-type-info boxed-info? ;
+
+PREDICATE: callback-type < simple-type
+    find-type-info callback-info? ;
+
+PREDICATE: class-type < simple-type
+    find-type-info class-info? ;
+
+PREDICATE: interface-type < simple-type
+    find-type-info interface-info? ;
+
+PREDICATE: boxed-array-type < array-type name>> >boolean ;
+PREDICATE: c-array-type < array-type name>> not ;
+PREDICATE: fixed-size-array-type < c-array-type fixed-size>> >boolean ;
+
+: standard-type? ( data-type -- ? )
+    name>> standard-types get-global in? ;
+
+: qualified-name ( name -- qualified-name )
+    current-namespace-name get-global swap "." glue ;
+
+: qualified-type-name ( data-type -- name )
+    [ name>> ] keep {
+        [ name>> CHAR: . swap member? ]
+        [ none-type? ]
+        [ standard-type? ]
+    } 1|| [ qualified-name ] unless ;
+
+ERROR: unknown-type-error type ;
+
+: get-type-info ( data-type -- info )
+    qualified-type-name dup type-infos get-global at
+    [ ] [ unknown-type-error ] ?if ;
+
+: find-type-info ( data-type -- info/f )
+    qualified-type-name type-infos get-global at ;
+
+:: register-type ( c-type type-info name -- )
+    type-info c-type >>c-type name
+    type-infos get-global set-at ;
+
+: register-standard-type ( c-type name -- )
+    dup standard-types get-global adjoin
+    atomic-info new swap register-type ;
+
+: register-atomic-type ( c-type name -- )
+    atomic-info new swap register-type ;
+
+: register-enum-type ( c-type name -- )
+    enum-info new swap register-type ;
+
+: register-record-type ( c-type name -- )
+    record-info new swap register-type ;
+
+ERROR: deferred-type-error ;
+
+<<
+void* c-type clone
+    [ drop deferred-type-error ] >>unboxer-quot
+    [ drop deferred-type-error ] >>boxer-quot
+    object >>boxed-class
+"deferred-type" create-in typedef
+>>
diff --git a/basis/gobject/GObject-2.0.gir b/basis/gobject/GObject-2.0.gir
new file mode 100644 (file)
index 0000000..edfd414
--- /dev/null
@@ -0,0 +1,10021 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <package name="gobject-2.0"/>
+  <c:include name="glib-object.h"/>
+  <namespace name="GObject"
+             version="2.0"
+             shared-library="libgobject-2.0.so.0"
+             c:identifier-prefixes="G"
+             c:symbol-prefixes="g">
+    <alias name="SignalCMarshaller" c:type="GSignalCMarshaller">
+      <doc xml:whitespace="preserve">This is the signature of marshaller functions, required to marshall
+arrays of parameter values to signal emissions into C language callback
+invocations. It is merely an alias to #GClosureMarshal since the #GClosure
+mechanism takes over responsibility of actual function invocation for the
+signal system.</doc>
+      <type name="ClosureMarshal" c:type="GClosureMarshal"/>
+    </alias>
+    <alias name="Strv" c:type="GStrv">
+      <doc xml:whitespace="preserve">A C representable type name for #G_TYPE_STRV.</doc>
+      <type name="gpointer" c:type="gpointer"/>
+    </alias>
+    <alias name="Type" c:type="GType">
+      <doc xml:whitespace="preserve">A numerical value which represents the unique identifier of a registered
+type.</doc>
+      <type name="gulong" c:type="gsize"/>
+    </alias>
+    <glib:boxed glib:name="Array"
+                c:symbol-prefix="array"
+                glib:type-name="GArray"
+                glib:get-type="g_array_get_type">
+    </glib:boxed>
+    <callback name="BaseFinalizeFunc" c:type="GBaseFinalizeFunc">
+      <doc xml:whitespace="preserve">A callback function used by the type system to finalize those portions
+of a derived types class structure that were setup from the corresponding
+GBaseInitFunc() function. Class finalization basically works the inverse
+way in which class intialization is performed.
+See GClassInitFunc() for a discussion of the class intialization process.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GTypeClass structure to finalize.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="BaseInitFunc" c:type="GBaseInitFunc">
+      <doc xml:whitespace="preserve">A callback function used by the type system to do base initialization
+of the class structures of derived types. It is called as part of the
+initialization process of all derived classes and should reallocate
+or reset all dynamic class members copied over from the parent class.
+For example, class members (such as strings) that are not sufficiently
+handled by a plain memory copy of the parent class into the derived class
+have to be altered. See GClassInitFunc() for a discussion of the class
+intialization process.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GTypeClass structure to initialize.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="Binding"
+           c:symbol-prefix="binding"
+           c:type="GBinding"
+           version="2.26"
+           parent="Object"
+           glib:type-name="GBinding"
+           glib:get-type="g_binding_get_type">
+      <doc xml:whitespace="preserve">&lt;structname&gt;GBinding&lt;/structname&gt; is an opaque structure whose members
+cannot be accessed directly.</doc>
+      <method name="get_flags"
+              c:identifier="g_binding_get_flags"
+              version="2.26">
+        <doc xml:whitespace="preserve">Retrieves the flags passed when constructing the #GBinding</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GBindingFlags used by the #GBinding</doc>
+          <type name="BindingFlags" c:type="GBindingFlags"/>
+        </return-value>
+      </method>
+      <method name="get_source"
+              c:identifier="g_binding_get_source"
+              version="2.26">
+        <doc xml:whitespace="preserve">Retrieves the #GObject instance used as the source of the binding</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the source #GObject</doc>
+          <type name="Object" c:type="GObject*"/>
+        </return-value>
+      </method>
+      <method name="get_source_property"
+              c:identifier="g_binding_get_source_property"
+              version="2.26">
+        <doc xml:whitespace="preserve">Retrieves the name of the property of #GBinding:source used as the source
+of the binding</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the source property</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_target"
+              c:identifier="g_binding_get_target"
+              version="2.26">
+        <doc xml:whitespace="preserve">Retrieves the #GObject instance used as the target of the binding</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the target #GObject</doc>
+          <type name="Object" c:type="GObject*"/>
+        </return-value>
+      </method>
+      <method name="get_target_property"
+              c:identifier="g_binding_get_target_property"
+              version="2.26">
+        <doc xml:whitespace="preserve">Retrieves the name of the property of #GBinding:target used as the target
+of the binding</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the target property</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <property name="flags"
+                version="2.26"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Flags to be used to control the #GBinding</doc>
+        <type name="BindingFlags"/>
+      </property>
+      <property name="source"
+                version="2.26"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GObject that should be used as the source of the binding</doc>
+        <type name="Object"/>
+      </property>
+      <property name="source-property"
+                version="2.26"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The name of the property of #GBinding:source that should be used
+as the source of the binding</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="target"
+                version="2.26"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GObject that should be used as the target of the binding</doc>
+        <type name="Object"/>
+      </property>
+      <property name="target-property"
+                version="2.26"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The name of the property of #GBinding:target that should be used
+as the target of the binding</doc>
+        <type name="utf8"/>
+      </property>
+    </class>
+    <bitfield name="BindingFlags"
+              version="2.26"
+              glib:type-name="GBindingFlags"
+              glib:get-type="g_binding_flags_get_type"
+              c:type="GBindingFlags">
+      <doc xml:whitespace="preserve">Flags to be passed to g_object_bind_property() or
+g_object_bind_property_full().
+This enumeration can be extended at later date.</doc>
+      <member name="default"
+              value="0"
+              c:identifier="G_BINDING_DEFAULT"
+              glib:nick="default"/>
+      <member name="bidirectional"
+              value="1"
+              c:identifier="G_BINDING_BIDIRECTIONAL"
+              glib:nick="bidirectional"/>
+      <member name="sync_create"
+              value="2"
+              c:identifier="G_BINDING_SYNC_CREATE"
+              glib:nick="sync-create"/>
+      <member name="invert_boolean"
+              value="4"
+              c:identifier="G_BINDING_INVERT_BOOLEAN"
+              glib:nick="invert-boolean"/>
+    </bitfield>
+    <callback name="BindingTransformFunc"
+              c:type="GBindingTransformFunc"
+              version="2.26">
+      <doc xml:whitespace="preserve">A function to be called to transform the source property of @source
+from @source_value into the target property of @target
+using @target_value.
+otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the transformation was successful, and %FALSE</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="binding" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GBinding</doc>
+          <type name="Binding" c:type="GBinding*"/>
+        </parameter>
+        <parameter name="source_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value of the source property</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="target_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value of the target property</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <doc xml:whitespace="preserve">data passed to the transform function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="BoxedCopyFunc" c:type="GBoxedCopyFunc" introspectable="0">
+      <doc xml:whitespace="preserve">This function is provided by the user and should produce a copy of the passed
+in boxed structure.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">The newly created copy of the boxed structure.</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="boxed" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The boxed structure to be copied.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="BoxedFreeFunc" c:type="GBoxedFreeFunc">
+      <doc xml:whitespace="preserve">This function is provided by the user and should free the boxed
+structure passed.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="boxed" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The boxed structure to be freed.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <glib:boxed glib:name="ByteArray"
+                c:symbol-prefix="byte_array"
+                glib:type-name="GByteArray"
+                glib:get-type="g_byte_array_get_type">
+    </glib:boxed>
+    <record name="CClosure" c:type="GCClosure">
+      <doc xml:whitespace="preserve">A #GCClosure is a specialization of #GClosure for C function callbacks.</doc>
+      <field name="closure" writable="1">
+        <type name="Closure" c:type="GClosure"/>
+      </field>
+      <field name="callback" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </record>
+    <callback name="Callback" c:type="GCallback">
+      <doc xml:whitespace="preserve">The type used for callback functions in structure definitions and function 
+signatures. This doesn't mean that all callback functions must take no 
+parameters and return void. The required signature of a callback function 
+is determined by the context in which is used (e.g. the signal to which it 
+is connected). Use G_CALLBACK() to cast the callback function to a #GCallback.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <callback name="ClassFinalizeFunc" c:type="GClassFinalizeFunc">
+      <doc xml:whitespace="preserve">A callback function used by the type system to finalize a class.
+This function is rarely needed, as dynamically allocated class resources
+should be handled by GBaseInitFunc() and GBaseFinalizeFunc().
+Also, specification of a GClassFinalizeFunc() in the #GTypeInfo
+structure of a static type is invalid, because classes of static types
+will never be finalized (they are artificially kept alive when their
+reference count drops to zero).</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GTypeClass structure to finalize.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="class_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The @class_data member supplied via the #GTypeInfo structure.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ClassInitFunc" c:type="GClassInitFunc">
+      <doc xml:whitespace="preserve">A callback function used by the type system to initialize the class
+of a specific type. This function should initialize all static class
+members.
+The initialization process of a class involves:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+1 - Copying common members from the parent class over to the
+derived class structure.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+2 -  Zero initialization of the remaining members not copied
+over from the parent class.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+3 - Invocation of the GBaseInitFunc() initializers of all parent
+types and the class' type.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+4 - Invocation of the class' GClassInitFunc() initializer.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+Since derived classes are partially initialized through a memory copy
+of the parent class, the general rule is that GBaseInitFunc() and
+GBaseFinalizeFunc() should take care of necessary reinitialization
+and release of those class members that were introduced by the type
+that specified these GBaseInitFunc()/GBaseFinalizeFunc().
+GClassInitFunc() should only care about initializing static
+class members, while dynamic class members (such as allocated strings
+or reference counted resources) are better handled by a GBaseInitFunc()
+for this type, so proper initialization of the dynamic class members
+is performed for class initialization of derived types as well.
+An example may help to correspond the intend of the different class
+initializers:
+|[
+typedef struct {
+GObjectClass parent_class;
+gint         static_integer;
+gchar       *dynamic_string;
+} TypeAClass;
+static void
+type_a_base_class_init (TypeAClass *class)
+{
+class-&gt;dynamic_string = g_strdup ("some string");
+}
+static void
+type_a_base_class_finalize (TypeAClass *class)
+{
+g_free (class-&gt;dynamic_string);
+}
+static void
+type_a_class_init (TypeAClass *class)
+{
+class-&gt;static_integer = 42;
+}
+typedef struct {
+TypeAClass   parent_class;
+gfloat       static_float;
+GString     *dynamic_gstring;
+} TypeBClass;
+static void
+type_b_base_class_init (TypeBClass *class)
+{
+class-&gt;dynamic_gstring = g_string_new ("some other string");
+}
+static void
+type_b_base_class_finalize (TypeBClass *class)
+{
+g_string_free (class-&gt;dynamic_gstring);
+}
+static void
+type_b_class_init (TypeBClass *class)
+{
+class-&gt;static_float = 3.14159265358979323846;
+}
+]|
+Initialization of TypeBClass will first cause initialization of
+TypeAClass (derived classes reference their parent classes, see
+g_type_class_ref() on this).
+Initialization of TypeAClass roughly involves zero-initializing its fields,
+then calling its GBaseInitFunc() type_a_base_class_init() to allocate
+its dynamic members (dynamic_string), and finally calling its GClassInitFunc()
+type_a_class_init() to initialize its static members (static_integer).
+The first step in the initialization process of TypeBClass is then
+a plain memory copy of the contents of TypeAClass into TypeBClass and 
+zero-initialization of the remaining fields in TypeBClass.
+The dynamic members of TypeAClass within TypeBClass now need
+reinitialization which is performed by calling type_a_base_class_init()
+with an argument of TypeBClass.
+After that, the GBaseInitFunc() of TypeBClass, type_b_base_class_init()
+is called to allocate the dynamic members of TypeBClass (dynamic_gstring),
+and finally the GClassInitFunc() of TypeBClass, type_b_class_init(),
+is called to complete the initialization process with the static members
+(static_float).
+Corresponding finalization counter parts to the GBaseInitFunc() functions
+have to be provided to release allocated resources at class finalization
+time.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GTypeClass structure to initialize.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="class_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The @class_data member supplied via the #GTypeInfo structure.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="Closure"
+            c:type="GClosure"
+            glib:type-name="GClosure"
+            glib:get-type="g_closure_get_type"
+            c:symbol-prefix="closure">
+      <doc xml:whitespace="preserve">A #GClosure represents a callback supplied by the programmer.</doc>
+      <field name="ref_count" writable="1" bits="15">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="meta_marshal" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="n_guards" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="n_fnotifiers" writable="1" bits="2">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="n_inotifiers" writable="1" bits="8">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="in_inotify" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="floating" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="derivative_flag" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="in_marshal" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="is_invalid" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="marshal">
+        <callback name="marshal">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="closure" transfer-ownership="none">
+              <type name="Closure" c:type="GClosure*"/>
+            </parameter>
+            <parameter name="return_value" transfer-ownership="none">
+              <type name="Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="n_param_values" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="param_values" transfer-ownership="none">
+              <type name="Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="invocation_hint" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+            <parameter name="marshal_data" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="data" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="notifiers" writable="1">
+        <type name="ClosureNotifyData" c:type="GClosureNotifyData*"/>
+      </field>
+      <constructor name="new_object" c:identifier="g_closure_new_object">
+        <doc xml:whitespace="preserve">A variant of g_closure_new_simple() which stores @object in the
+when implementing new types of closures.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated #GClosure</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </return-value>
+        <parameters>
+          <parameter name="sizeof_closure" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of the structure to allocate, must be at least &lt;literal&gt;sizeof (GClosure)&lt;/literal&gt;</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject pointer to store in the @data field of the newly allocated #GClosure</doc>
+            <type name="Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_simple" c:identifier="g_closure_new_simple">
+        <doc xml:whitespace="preserve">Allocates a struct of the given size and initializes the initial
+part as a #GClosure. This function is mainly useful when
+implementing new types of closures.
+|[
+typedef struct _MyClosure MyClosure;
+struct _MyClosure
+{
+GClosure closure;
+// extra data goes here
+};
+static void
+my_closure_finalize (gpointer  notify_data,
+GClosure *closure)
+{
+MyClosure *my_closure = (MyClosure *)closure;
+// free extra data here
+}
+MyClosure *my_closure_new (gpointer data)
+{
+GClosure *closure;
+MyClosure *my_closure;
+closure = g_closure_new_simple (sizeof (MyClosure), data);
+my_closure = (MyClosure *) closure;
+// initialize extra data here
+g_closure_add_finalize_notifier (closure, notify_data,
+my_closure_finalize);
+return my_closure;
+}
+]|</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated #GClosure</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </return-value>
+        <parameters>
+          <parameter name="sizeof_closure" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of the structure to allocate, must be at least &lt;literal&gt;sizeof (GClosure)&lt;/literal&gt;</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to store in the @data field of the newly allocated #GClosure</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add_finalize_notifier"
+              c:identifier="g_closure_add_finalize_notifier"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Registers a finalization notifier which will be called when the
+reference count of @closure goes down to 0. Multiple finalization
+notifiers on a single closure are invoked in unspecified order. If
+a single call to g_closure_unref() results in the closure being
+both invalidated and finalized, then the invalidate notifiers will
+be run before the finalize notifiers.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="notify_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to @notify_func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify_func" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the callback function to register</doc>
+            <type name="ClosureNotify" c:type="GClosureNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_invalidate_notifier"
+              c:identifier="g_closure_add_invalidate_notifier"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Registers an invalidation notifier which will be called when the
+notifiers are invoked before finalization notifiers, in an
+unspecified order.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="notify_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to @notify_func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify_func" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the callback function to register</doc>
+            <type name="ClosureNotify" c:type="GClosureNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_marshal_guards"
+              c:identifier="g_closure_add_marshal_guards"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds a pair of notifiers which get invoked before and after the
+closure callback, respectively. This is typically used to protect
+the extra arguments for the duration of the callback. See
+g_object_watch_closure() for an example of marshal guards.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pre_marshal_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to @pre_marshal_notify</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="pre_marshal_notify"
+                     transfer-ownership="none"
+                     closure="2">
+            <doc xml:whitespace="preserve">a function to call before the closure callback</doc>
+            <type name="ClosureNotify" c:type="GClosureNotify"/>
+          </parameter>
+          <parameter name="post_marshal_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to @post_marshal_notify</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="post_marshal_notify" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a function to call after the closure callback</doc>
+            <type name="ClosureNotify" c:type="GClosureNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="invalidate" c:identifier="g_closure_invalidate">
+        <doc xml:whitespace="preserve">Sets a flag on the closure to indicate that its calling
+environment has become invalid, and thus causes any future
+invocations of g_closure_invoke() on this @closure to be
+ignored. Also, invalidation notifiers installed on the closure will
+be called at this point. Note that unless you are holding a
+reference to the closure yourself, the invalidation notifiers may
+unref the closure and cause it to be destroyed, so if you need to
+access the closure after calling g_closure_invalidate(), make sure
+that you've previously called g_closure_ref().
+Note that g_closure_invalidate() will also be called when the
+reference count of a closure drops to zero (unless it has already
+been invalidated before).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="invoke" c:identifier="g_closure_invoke">
+        <doc xml:whitespace="preserve">Invokes the closure, i.e. executes the callback represented by the @closure.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="return_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue to store the return value. May be %NULL if the callback of @closure doesn't return a value.</doc>
+            <type name="Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="n_param_values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of the @param_values array</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="param_values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of #GValue&lt;!-- --&gt;s holding the arguments on which to invoke the callback of @closure</doc>
+            <type name="Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="invocation_hint" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a context-dependent invocation hint</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref" c:identifier="g_closure_ref">
+        <doc xml:whitespace="preserve">Increments the reference count on a closure to force it staying
+alive while the caller holds a pointer to it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The @closure passed in, for convenience</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </return-value>
+      </method>
+      <method name="remove_finalize_notifier"
+              c:identifier="g_closure_remove_finalize_notifier"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Removes a finalization notifier.
+Notice that notifiers are automatically removed after they are run.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="notify_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data which was passed to g_closure_add_finalize_notifier() when registering @notify_func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify_func" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the callback function to remove</doc>
+            <type name="ClosureNotify" c:type="GClosureNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_invalidate_notifier"
+              c:identifier="g_closure_remove_invalidate_notifier"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Removes an invalidation notifier.
+Notice that notifiers are automatically removed after they are run.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="notify_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data which was passed to g_closure_add_invalidate_notifier() when registering @notify_func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify_func" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the callback function to remove</doc>
+            <type name="ClosureNotify" c:type="GClosureNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_marshal"
+              c:identifier="g_closure_set_marshal"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the marshaller of @closure. The &lt;literal&gt;marshal_data&lt;/literal&gt;
+of @marshal provides a way for a meta marshaller to provide additional
+information to the marshaller. (See g_closure_set_meta_marshal().) For
+GObject's C predefined marshallers (the g_cclosure_marshal_*()
+functions), what it provides is a callback function to use instead of</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="marshal" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GClosureMarshal function</doc>
+            <type name="ClosureMarshal" c:type="GClosureMarshal"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_meta_marshal"
+              c:identifier="g_closure_set_meta_marshal"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the meta marshaller of @closure.  A meta marshaller wraps
+fashion. The most common use of this facility is for C callbacks.
+The same marshallers (generated by &lt;link
+linkend="glib-genmarshal"&gt;glib-genmarshal&lt;/link&gt;) are used
+everywhere, but the way that we get the callback function
+differs. In most cases we want to use @closure-&gt;callback, but in
+other cases we want to use some different technique to retrieve the
+callback function.
+For example, class closures for signals (see
+g_signal_type_cclosure_new()) retrieve the callback function from a
+fixed offset in the class structure.  The meta marshaller retrieves
+the right callback and passes it to the marshaller as the</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="marshal_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">context-dependent data to pass to @meta_marshal</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="meta_marshal" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GClosureMarshal function</doc>
+            <type name="ClosureMarshal" c:type="GClosureMarshal"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sink" c:identifier="g_closure_sink">
+        <doc xml:whitespace="preserve">Takes over the initial ownership of a closure.  Each closure is
+initially created in a &lt;firstterm&gt;floating&lt;/firstterm&gt; state, which
+means that the initial reference count is not owned by any caller.
+g_closure_sink() checks to see if the object is still floating, and
+if so, unsets the floating state and decreases the reference
+count. If the closure is not floating, g_closure_sink() does
+nothing. The reason for the existance of the floating state is to
+prevent cumbersome code sequences like:
+|[
+closure = g_cclosure_new (cb_func, cb_data);
+g_source_set_closure (source, closure);
+g_closure_unref (closure); // XXX GObject doesn't really need this
+]|
+Because g_source_set_closure() (and similar functions) take ownership of the
+initial reference count, if it is unowned, we instead can write:
+|[
+g_source_set_closure (source, g_cclosure_new (cb_func, cb_data));
+]|
+Generally, this function is used together with g_closure_ref(). Ane example
+of storing a closure for later notification looks like:
+|[
+static GClosure *notify_closure = NULL;
+void
+foo_notify_set_closure (GClosure *closure)
+{
+if (notify_closure)
+g_closure_unref (notify_closure);
+notify_closure = closure;
+if (notify_closure)
+{
+g_closure_ref (notify_closure);
+g_closure_sink (notify_closure);
+}
+}
+]|
+Because g_closure_sink() may decrement the reference count of a closure
+(if it hasn't been called on @closure yet) just like g_closure_unref(),
+g_closure_ref() should be called prior to this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unref" c:identifier="g_closure_unref">
+        <doc xml:whitespace="preserve">Decrements the reference count of a closure after it was previously
+incremented by the same caller. If no other callers are using the
+closure, then the closure will be destroyed and freed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <callback name="ClosureMarshal" c:type="GClosureMarshal">
+      <doc xml:whitespace="preserve">The type used for marshaller functions.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GClosure to which the marshaller belongs</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue to store the return value. May be %NULL if the callback of @closure doesn't return a value.</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the length of the @param_values array</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an array of #GValue&lt;!-- --&gt;s holding the arguments on which to invoke the callback of @closure</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the invocation hint given as the last argument to g_closure_invoke()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">additional data specified when registering the marshaller, see g_closure_set_marshal() and g_closure_set_meta_marshal()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ClosureNotify" c:type="GClosureNotify">
+      <doc xml:whitespace="preserve">The type used for the various notification callbacks which can be registered
+on closures.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data specified when registering the notification callback</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GClosure on which the notification is emitted</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="ClosureNotifyData" c:type="GClosureNotifyData">
+      <field name="data" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="notify" writable="1">
+        <type name="ClosureNotify" c:type="GClosureNotify"/>
+      </field>
+    </record>
+    <bitfield name="ConnectFlags" c:type="GConnectFlags">
+      <doc xml:whitespace="preserve">The connection flags are used to specify the behaviour of a signal's 
+connection.</doc>
+      <member name="after" value="1" c:identifier="G_CONNECT_AFTER"/>
+      <member name="swapped" value="2" c:identifier="G_CONNECT_SWAPPED"/>
+    </bitfield>
+    <glib:boxed glib:name="Date"
+                c:symbol-prefix="date"
+                glib:type-name="GDate"
+                glib:get-type="g_date_get_type">
+    </glib:boxed>
+    <glib:boxed glib:name="DateTime"
+                c:symbol-prefix="date_time"
+                glib:type-name="GDateTime"
+                glib:get-type="g_date_time_get_type">
+    </glib:boxed>
+    <record name="EnumClass" c:type="GEnumClass">
+      <doc xml:whitespace="preserve">The class of an enumeration type holds information about its 
+possible values.</doc>
+      <field name="g_type_class" writable="1">
+        <type name="TypeClass" c:type="GTypeClass"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="n_values" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="values" writable="1">
+        <type name="EnumValue" c:type="GEnumValue*"/>
+      </field>
+    </record>
+    <record name="EnumValue" c:type="GEnumValue">
+      <doc xml:whitespace="preserve">A structure which contains a single enum value, its name, and its
+nickname.</doc>
+      <field name="value" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="value_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="value_nick" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </record>
+    <glib:boxed glib:name="Error"
+                c:symbol-prefix="error"
+                glib:type-name="GError"
+                glib:get-type="g_error_get_type">
+    </glib:boxed>
+    <record name="FlagsClass" c:type="GFlagsClass">
+      <doc xml:whitespace="preserve">The class of a flags type holds information about its 
+possible values.</doc>
+      <field name="g_type_class" writable="1">
+        <type name="TypeClass" c:type="GTypeClass"/>
+      </field>
+      <field name="mask" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="n_values" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="values" writable="1">
+        <type name="FlagsValue" c:type="GFlagsValue*"/>
+      </field>
+    </record>
+    <record name="FlagsValue" c:type="GFlagsValue">
+      <doc xml:whitespace="preserve">A structure which contains a single flags value, its name, and its
+nickname.</doc>
+      <field name="value" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="value_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="value_nick" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </record>
+    <glib:boxed glib:name="HashTable"
+                c:symbol-prefix="hash_table"
+                glib:type-name="GHashTable"
+                glib:get-type="g_hash_table_get_type">
+    </glib:boxed>
+    <glib:boxed glib:name="IOChannel"
+                c:symbol-prefix="io_channel"
+                glib:type-name="GIOChannel"
+                glib:get-type="g_io_channel_get_type">
+    </glib:boxed>
+    <bitfield name="IOCondition"
+              glib:type-name="GIOCondition"
+              glib:get-type="g_io_condition_get_type"
+              c:type="GIOCondition">
+      <member name="in" value="1" c:identifier="G_IO_IN" glib:nick="in"/>
+      <member name="out" value="4" c:identifier="G_IO_OUT" glib:nick="out"/>
+      <member name="pri" value="2" c:identifier="G_IO_PRI" glib:nick="pri"/>
+      <member name="err" value="8" c:identifier="G_IO_ERR" glib:nick="err"/>
+      <member name="hup" value="16" c:identifier="G_IO_HUP" glib:nick="hup"/>
+      <member name="nval"
+              value="32"
+              c:identifier="G_IO_NVAL"
+              glib:nick="nval"/>
+    </bitfield>
+    <class name="InitiallyUnowned"
+           c:symbol-prefix="object"
+           parent="Object"
+           abstract="1"
+           glib:type-name="GInitiallyUnowned"
+           glib:get-type="g_initially_unowned_get_type"
+           glib:type-struct="InitiallyUnownedClass">
+      <doc xml:whitespace="preserve">All the fields in the &lt;structname&gt;GInitiallyUnowned&lt;/structname&gt; structure 
+are private to the #GInitiallyUnowned implementation and should never be 
+accessed directly.</doc>
+      <function name="bind_property"
+                c:identifier="g_object_bind_property"
+                version="2.26">
+        <doc xml:whitespace="preserve">Creates a binding between @source_property on @source and @target_property
+on @target. Whenever the @source_property is changed the @target_property is
+updated using the same value. For instance:
+|[
+g_object_bind_property (action, "active", widget, "sensitive", 0);
+]|
+Will result in the "sensitive" property of the widget #GObject instance to be
+updated with the same value of the "active" property of the action #GObject
+instance.
+If @flags contains %G_BINDING_BIDIRECTIONAL then the binding will be mutual:
+if @target_property on @target changes then the @source_property on @source
+will be updated as well.
+The binding will automatically be removed when either the @source or the
+#GBinding instance.
+A #GObject can have multiple bindings.
+binding between the two #GObject instances. The binding is released
+whenever the #GBinding reference count reaches zero.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GBinding instance representing the</doc>
+          <type name="Binding" c:type="GBinding*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the source #GObject</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="source_property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the property on @source to bind</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the target #GObject</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="target_property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the property on @target to bind</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags to pass to #GBinding</doc>
+            <type name="BindingFlags" c:type="GBindingFlags"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="bind_property_full"
+                c:identifier="g_object_bind_property_full"
+                shadowed-by="bind_property_with_closures"
+                version="2.26">
+        <doc xml:whitespace="preserve">Complete version of g_object_bind_property().
+Creates a binding between @source_property on @source and @target_property
+on @target, allowing you to set the transformation functions to be used by
+the binding.
+If @flags contains %G_BINDING_BIDIRECTIONAL then the binding will be mutual:
+if @target_property on @target changes then the @source_property on @source
+will be updated as well. The @transform_from function is only used in case
+of bidirectional bindings, otherwise it will be ignored
+The binding will automatically be removed when either the @source or the
+#GBinding instance.
+A #GObject can have multiple bindings.
+&lt;note&gt;The same @user_data parameter will be used for both @transform_to
+and @transform_from transformation functions; the @notify function will
+be called once, when the binding is removed. If you need different data
+for each transformation function, please use
+g_object_bind_property_with_closures() instead.&lt;/note&gt;
+binding between the two #GObject instances. The binding is released
+whenever the #GBinding reference count reaches zero.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GBinding instance representing the</doc>
+          <type name="Binding" c:type="GBinding*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the source #GObject</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="source_property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the property on @source to bind</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the target #GObject</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="target_property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the property on @target to bind</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags to pass to #GBinding</doc>
+            <type name="BindingFlags" c:type="GBindingFlags"/>
+          </parameter>
+          <parameter name="transform_to"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="notified">
+            <doc xml:whitespace="preserve">the transformation function from the @source to the @target, or %NULL to use the default</doc>
+            <type name="BindingTransformFunc" c:type="GBindingTransformFunc"/>
+          </parameter>
+          <parameter name="transform_from"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="notified"
+                     closure="7"
+                     destroy="8">
+            <doc xml:whitespace="preserve">the transformation function from the @target to the @source, or %NULL to use the default</doc>
+            <type name="BindingTransformFunc" c:type="GBindingTransformFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">custom data to be passed to the transformation functions, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">function to be called when disposing the binding, to free the resources used by the transformation functions</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="bind_property_with_closures"
+                c:identifier="g_object_bind_property_with_closures"
+                shadows="bind_property_full"
+                version="2.26">
+        <doc xml:whitespace="preserve">Creates a binding between @source_property on @source and @target_property
+on @target, allowing you to set the transformation functions to be used by
+the binding.
+This function is the language bindings friendly version of
+g_object_bind_property_full(), using #GClosure&lt;!-- --&gt;s instead of
+function pointers.
+binding between the two #GObject instances. The binding is released
+whenever the #GBinding reference count reaches zero.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GBinding instance representing the</doc>
+          <type name="Binding" c:type="GBinding*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the source #GObject</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="source_property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the property on @source to bind</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the target #GObject</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="target_property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the property on @target to bind</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags to pass to #GBinding</doc>
+            <type name="BindingFlags" c:type="GBindingFlags"/>
+          </parameter>
+          <parameter name="transform_to" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GClosure wrapping the transformation function from the @source to the @target, or %NULL to use the default</doc>
+            <type name="Closure" c:type="GClosure*"/>
+          </parameter>
+          <parameter name="transform_from" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GClosure wrapping the transformation function from the @target to the @source, or %NULL to use the default</doc>
+            <type name="Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="compat_control" c:identifier="g_object_compat_control">
+        <return-value transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </return-value>
+        <parameters>
+          <parameter name="what" transfer-ownership="none">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="connect"
+                c:identifier="g_object_connect"
+                introspectable="0">
+        <doc xml:whitespace="preserve">A convenience function to connect multiple signals at once.
+The signal specs expected by this function have the form
+"modifier::signal_name", where modifier can be one of the following:
+&lt;variablelist&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;signal&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;
+equivalent to &lt;literal&gt;g_signal_connect_data (..., NULL, 0)&lt;/literal&gt;
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;object_signal&lt;/term&gt;
+&lt;term&gt;object-signal&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;
+equivalent to &lt;literal&gt;g_signal_connect_object (..., 0)&lt;/literal&gt;
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;swapped_signal&lt;/term&gt;
+&lt;term&gt;swapped-signal&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;
+equivalent to &lt;literal&gt;g_signal_connect_data (..., NULL, G_CONNECT_SWAPPED)&lt;/literal&gt;
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;swapped_object_signal&lt;/term&gt;
+&lt;term&gt;swapped-object-signal&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;
+equivalent to &lt;literal&gt;g_signal_connect_object (..., G_CONNECT_SWAPPED)&lt;/literal&gt;
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;signal_after&lt;/term&gt;
+&lt;term&gt;signal-after&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;
+equivalent to &lt;literal&gt;g_signal_connect_data (..., NULL, G_CONNECT_AFTER)&lt;/literal&gt;
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;object_signal_after&lt;/term&gt;
+&lt;term&gt;object-signal-after&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;
+equivalent to &lt;literal&gt;g_signal_connect_object (..., G_CONNECT_AFTER)&lt;/literal&gt;
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;swapped_signal_after&lt;/term&gt;
+&lt;term&gt;swapped-signal-after&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;
+equivalent to &lt;literal&gt;g_signal_connect_data (..., NULL, G_CONNECT_SWAPPED | G_CONNECT_AFTER)&lt;/literal&gt;
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;swapped_object_signal_after&lt;/term&gt;
+&lt;term&gt;swapped-object-signal-after&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;
+equivalent to &lt;literal&gt;g_signal_connect_object (..., G_CONNECT_SWAPPED | G_CONNECT_AFTER)&lt;/literal&gt;
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;/variablelist&gt;
+|[
+menu-&gt;toplevel = g_object_connect (g_object_new (GTK_TYPE_WINDOW,
+"type", GTK_WINDOW_POPUP,
+"child", menu,
+NULL),
+"signal::event", gtk_menu_window_event, menu,
+"signal::size_request", gtk_menu_window_size_request, menu,
+"signal::destroy", gtk_widget_destroyed, &amp;amp;menu-&amp;gt;toplevel,
+NULL);
+]|</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">@object</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="signal_spec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the spec for the first signal</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="disconnect"
+                c:identifier="g_object_disconnect"
+                introspectable="0">
+        <doc xml:whitespace="preserve">A convenience function to disconnect multiple signals at once.
+The signal specs expected by this function have the form
+"any_signal", which means to disconnect any signal with matching
+callback and data, or "any_signal::signal_name", which only
+disconnects the signal named "signal_name".</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="signal_spec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the spec for the first signal</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get" c:identifier="g_object_get" introspectable="0">
+        <doc xml:whitespace="preserve">Gets properties of an object.
+In general, a copy is made of the property contents and the caller
+is responsible for freeing the memory in the appropriate manner for
+the type, for instance by calling g_free() or g_object_unref().
+&lt;example&gt;
+&lt;title&gt;Using g_object_get(&lt;!-- --&gt;)&lt;/title&gt;
+An example of using g_object_get() to get the contents
+of three properties - one of type #G_TYPE_INT,
+one of type #G_TYPE_STRING, and one of type #G_TYPE_OBJECT:
+&lt;programlisting&gt;
+gint intval;
+gchar *strval;
+GObject *objval;
+g_object_get (my_object,
+"int-property", &amp;intval,
+"str-property", &amp;strval,
+"obj-property", &amp;objval,
+NULL);
+// Do something with intval, strval, objval
+g_free (strval);
+g_object_unref (objval);
+&lt;/programlisting&gt;
+&lt;/example&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the first property to get</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="interface_find_property"
+                c:identifier="g_object_interface_find_property"
+                version="2.4"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Find the #GParamSpec with the given name for an
+interface. Generally, the interface vtable passed in as @g_iface
+will be the default vtable from g_type_default_interface_ref(), or,
+if you know the interface has already been loaded,
+g_type_default_interface_peek().
+name @property_name, or %NULL if no such property exists.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the #GParamSpec for the property of the interface with the</doc>
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+        <parameters>
+          <parameter name="g_iface" transfer-ownership="none">
+            <doc xml:whitespace="preserve">any interface vtable for the interface, or the default vtable for the interface</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of a property to lookup.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="interface_install_property"
+                c:identifier="g_object_interface_install_property"
+                version="2.4">
+        <doc xml:whitespace="preserve">Add a property to an interface; this is only useful for interfaces
+that are added to GObject-derived types. Adding a property to an
+interface forces all objects classes with that interface to have a
+compatible property. The compatible property could be a newly
+created #GParamSpec, but normally
+g_object_class_override_property() will be used so that the object
+class only needs to provide an implementation and inherits the
+property description, default value, bounds, and so forth from the
+interface property.
+This function is meant to be called from the interface's default
+vtable initialization function (the @class_init member of
+#GTypeInfo.) It must not be called after after @class_init has
+been called for any object types implementing this interface.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="g_iface" transfer-ownership="none">
+            <doc xml:whitespace="preserve">any interface vtable for the interface, or the default vtable for the interface.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GParamSpec for the new property</doc>
+            <type name="ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="interface_list_properties"
+                c:identifier="g_object_interface_list_properties"
+                version="2.4"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Lists the properties of an interface.Generally, the interface
+vtable passed in as @g_iface will be the default vtable from
+g_type_default_interface_ref(), or, if you know the interface has
+already been loaded, g_type_default_interface_peek().
+structures. The paramspecs are owned by GLib, but the
+array should be freed with g_free() when you are done with
+it.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a pointer to an array of pointers to #GParamSpec</doc>
+          <type name="ParamSpec" c:type="GParamSpec**"/>
+        </return-value>
+        <parameters>
+          <parameter name="g_iface" transfer-ownership="none">
+            <doc xml:whitespace="preserve">any interface vtable for the interface, or the default vtable for the interface</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="n_properties_p" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store number of properties returned.</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="is_floating"
+                c:identifier="g_object_is_floating"
+                version="2.10">
+        <doc xml:whitespace="preserve">Checks wether @object has a &lt;link linkend="floating-ref"&gt;floating&lt;/link&gt;
+reference.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @object has a floating reference</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="new" c:identifier="g_object_new" introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new instance of a #GObject subtype and sets its properties.
+Construction parameters (see #G_PARAM_CONSTRUCT, #G_PARAM_CONSTRUCT_ONLY)
+which are not explicitly specified are set to their default values.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a new instance of @object_type</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="object_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type id of the #GObject subtype to instantiate</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="new_valist"
+                c:identifier="g_object_new_valist"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new instance of a #GObject subtype and sets its properties.
+Construction parameters (see #G_PARAM_CONSTRUCT, #G_PARAM_CONSTRUCT_ONLY)
+which are not explicitly specified are set to their default values.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a new instance of @object_type</doc>
+          <type name="Object" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="object_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type id of the #GObject subtype to instantiate</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="var_args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the first property, followed optionally by more name/value pairs, followed by %NULL</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="newv" c:identifier="g_object_newv" introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new instance of a #GObject subtype and sets its properties.
+Construction parameters (see #G_PARAM_CONSTRUCT, #G_PARAM_CONSTRUCT_ONLY)
+which are not explicitly specified are set to their default values.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a new instance of @object_type</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="object_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type id of the #GObject subtype to instantiate</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="n_parameters" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of the @parameters array</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="parameters" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of #GParameter</doc>
+            <type name="Parameter" c:type="GParameter*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="ref" c:identifier="g_object_ref" introspectable="0">
+        <doc xml:whitespace="preserve">Increases the reference count of @object.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the same @object</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="ref_sink"
+                c:identifier="g_object_ref_sink"
+                version="2.10"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Increase the reference count of @object, and possibly remove the
+&lt;link linkend="floating-ref"&gt;floating&lt;/link&gt; reference, if @object
+has a floating reference.
+In other words, if the object is floating, then this call "assumes
+ownership" of the floating reference, converting it to a normal
+reference by clearing the floating flag while leaving the reference
+count unchanged.  If the object is not floating, then this call
+adds a new normal reference increasing the reference count by one.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">@object</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="set" c:identifier="g_object_set" introspectable="0">
+        <doc xml:whitespace="preserve">Sets properties on an object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the first property to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="type_init" c:identifier="g_object_type_init">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </function>
+      <function name="unref" c:identifier="g_object_unref">
+        <doc xml:whitespace="preserve">Decreases the reference count of @object. When its reference count
+drops to 0, the object is finalized (i.e. its memory is freed).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <field name="g_type_instance" writable="1">
+        <type name="TypeInstance" c:type="GTypeInstance"/>
+      </field>
+      <field name="ref_count" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="qdata" writable="1">
+        <type name="GLib.Data" c:type="GData*"/>
+      </field>
+    </class>
+    <record name="InitiallyUnownedClass"
+            c:type="GInitiallyUnownedClass"
+            disguised="1"
+            glib:is-gtype-struct-for="InitiallyUnowned">
+      <doc xml:whitespace="preserve">The class structure for the &lt;structname&gt;GInitiallyUnowned&lt;/structname&gt; type.</doc>
+      <field name="g_type_class">
+        <type name="TypeClass" c:type="GTypeClass"/>
+      </field>
+      <field name="construct_properties">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="constructor" introspectable="0">
+        <callback name="constructor" introspectable="0">
+          <return-value>
+            <type name="Object" c:type="GObject*"/>
+          </return-value>
+          <parameters>
+            <parameter name="type" transfer-ownership="none">
+              <type name="GType" c:type="GType"/>
+            </parameter>
+            <parameter name="n_construct_properties" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="construct_properties" transfer-ownership="none">
+              <type name="ObjectConstructParam"
+                    c:type="GObjectConstructParam*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_property">
+        <callback name="set_property">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GObject*"/>
+            </parameter>
+            <parameter name="property_id" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_property">
+        <callback name="get_property">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GObject*"/>
+            </parameter>
+            <parameter name="property_id" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="dispose">
+        <callback name="dispose">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="finalize">
+        <callback name="finalize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="dispatch_properties_changed">
+        <callback name="dispatch_properties_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GObject*"/>
+            </parameter>
+            <parameter name="n_pspecs" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="pspecs" transfer-ownership="none">
+              <type name="ParamSpec" c:type="GParamSpec**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="notify">
+        <callback name="notify">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GObject*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="constructed">
+        <callback name="constructed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="flags">
+        <type name="gulong" c:type="gsize"/>
+      </field>
+      <field name="pdummy">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="6">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <callback name="InstanceInitFunc" c:type="GInstanceInitFunc">
+      <doc xml:whitespace="preserve">A callback function used by the type system to initialize a new
+instance of a type. This function initializes all instance members and
+allocates any resources required by it.
+Initialization of a derived instance involves calling all its parent
+types instance initializers, so the class member of the instance
+is altered during its initialization to always point to the class that
+belongs to the type the current initializer was introduced for.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The instance to initialize.</doc>
+          <type name="TypeInstance" c:type="GTypeInstance*"/>
+        </parameter>
+        <parameter name="g_class" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The class of the type the instance is created for.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="InterfaceFinalizeFunc" c:type="GInterfaceFinalizeFunc">
+      <doc xml:whitespace="preserve">A callback function used by the type system to finalize an interface.
+This function should destroy any internal data and release any resources
+allocated by the corresponding GInterfaceInitFunc() function.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_iface" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The interface structure to finalize.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="iface_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The @interface_data supplied via the #GInterfaceInfo structure.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="InterfaceInfo" c:type="GInterfaceInfo">
+      <doc xml:whitespace="preserve">A structure that provides information to the type system which is
+used specifically for managing interface types.</doc>
+      <field name="interface_init" writable="1">
+        <type name="InterfaceInitFunc" c:type="GInterfaceInitFunc"/>
+      </field>
+      <field name="interface_finalize" writable="1">
+        <type name="InterfaceFinalizeFunc" c:type="GInterfaceFinalizeFunc"/>
+      </field>
+      <field name="interface_data" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </record>
+    <callback name="InterfaceInitFunc" c:type="GInterfaceInitFunc">
+      <doc xml:whitespace="preserve">A callback function used by the type system to initialize a new
+interface.  This function should initialize all internal data and
+allocate any resources required by the interface.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_iface" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The interface structure to initialize.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="iface_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The @interface_data supplied via the #GInterfaceInfo structure.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="Object"
+           c:symbol-prefix="object"
+           parent="Object"
+           abstract="1"
+           glib:type-name="GObject"
+           glib:get-type="intern"
+           glib:type-struct="ObjectClass">
+      <doc xml:whitespace="preserve">All the fields in the &lt;structname&gt;GObject&lt;/structname&gt; structure are private 
+to the #GObject implementation and should never be accessed directly.</doc>
+      <virtual-method name="constructed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="dispatch_properties_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_pspecs" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="pspecs" transfer-ownership="none">
+            <type name="ParamSpec" c:type="GParamSpec**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="dispose">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="finalize">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_property">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_id" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="notify" invoker="notify">
+        <doc xml:whitespace="preserve">Emits a "notify" signal for the property @property_name on @object.
+When possible, eg. when signaling a property change from within the class
+that registered the property, you should use g_object_notify_by_pspec()
+instead.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_property">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_id" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_toggle_ref"
+              c:identifier="g_object_add_toggle_ref"
+              version="2.8"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Increases the reference count of the object by one and sets a
+callback to be called when all other references to the object are
+dropped, or when this is already the last reference to the object
+and another reference is established.
+This functionality is intended for binding @object to a proxy
+object managed by another memory manager. This is done with two
+g_object_add_toggle_ref() and a reverse reference to the proxy
+object which is either a strong reference or weak reference.
+The setup is that when there are no other references to @object,
+only a weak reference is held in the reverse direction from @object
+to the proxy object, but when there are other references held to
+when the reference from @object to the proxy object should be
+&lt;firstterm&gt;toggled&lt;/firstterm&gt; from strong to weak (@is_last_ref
+true) or weak to strong (@is_last_ref false).
+Since a (normal) reference must be held to the object before
+calling g_object_toggle_ref(), the initial state of the reverse
+link is always strong.
+Multiple toggle references may be added to the same gobject,
+however if there are multiple toggle references to an object, none
+of them will ever be notified until all but one are removed.  For
+this reason, you should only ever use a toggle reference if there
+is important state in the proxy object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="notify" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">a function to call when this reference is the last reference to the object, or is no longer the last reference.</doc>
+            <type name="ToggleNotify" c:type="GToggleNotify"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to @notify</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_weak_pointer" c:identifier="g_object_add_weak_pointer">
+        <doc xml:whitespace="preserve">Adds a weak reference from weak_pointer to @object to indicate that
+the pointer located at @weak_pointer_location is only valid during
+the lifetime of @object. When the @object is finalized,</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="weak_pointer_location"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">The memory address of a pointer.</doc>
+            <type name="gpointer" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="force_floating"
+              c:identifier="g_object_force_floating"
+              version="2.10">
+        <doc xml:whitespace="preserve">This function is intended for #GObject implementations to re-enforce a
+&lt;link linkend="floating-ref"&gt;floating&lt;/link&gt; object reference.
+Doing this is seldomly required, all
+#GInitiallyUnowned&lt;!-- --&gt;s are created with a floating reference which
+usually just needs to be sunken by calling g_object_ref_sink().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="freeze_notify" c:identifier="g_object_freeze_notify">
+        <doc xml:whitespace="preserve">Increases the freeze count on @object. If the freeze count is
+non-zero, the emission of "notify" signals on @object is
+stopped. The signals are queued until the freeze count is decreased
+to zero.
+This is necessary for accessors that modify multiple properties to prevent
+premature notification while the object is still being modified.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_data"
+              c:identifier="g_object_get_data"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets a named field from the objects table of associations (see g_object_set_data()).</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the data if found, or %NULL if no such data exists.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the key for that association</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_property" c:identifier="g_object_get_property">
+        <doc xml:whitespace="preserve">Gets a property of an object.
+In general, a copy is made of the property contents and the caller is
+responsible for freeing the memory by calling g_value_unset().
+Note that g_object_get_property() is really intended for language
+bindings, g_object_get() is much more convenient for C programming.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property to get</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the property value</doc>
+            <type name="Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_qdata"
+              c:identifier="g_object_get_qdata"
+              introspectable="0">
+        <doc xml:whitespace="preserve">This function gets back user data pointers stored via
+g_object_set_qdata().</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">The user data pointer set, or %NULL</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="quark" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GQuark, naming the user data pointer</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_valist"
+              c:identifier="g_object_get_valist"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets properties of an object.
+In general, a copy is made of the property contents and the caller
+is responsible for freeing the memory in the appropriate manner for
+the type, for instance by calling g_free() or g_object_unref().
+See g_object_get().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the first property to get</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="var_args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the first property, followed optionally by more name/return location pairs, followed by %NULL</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="notify" c:identifier="g_object_notify">
+        <doc xml:whitespace="preserve">Emits a "notify" signal for the property @property_name on @object.
+When possible, eg. when signaling a property change from within the class
+that registered the property, you should use g_object_notify_by_pspec()
+instead.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a property installed on the class of @object.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="notify_by_pspec"
+              c:identifier="g_object_notify_by_pspec"
+              version="2.26">
+        <doc xml:whitespace="preserve">Emits a "notify" signal for the property specified by @pspec on @object.
+This function omits the property name lookup, hence it is faster than
+g_object_notify().
+One way to avoid using g_object_notify() from within the
+class that registered the properties, and using g_object_notify_by_pspec()
+instead, is to store the GParamSpec used with
+g_object_class_install_property() inside a static array, e.g.:
+|[
+enum
+{
+PROP_0,
+PROP_FOO,
+PROP_LAST
+};
+static GParamSpec *properties[PROP_LAST];
+static void
+my_object_class_init (MyObjectClass *klass)
+{
+properties[PROP_FOO] = g_param_spec_int ("foo", "Foo", "The foo",
+0, 100,
+50,
+G_PARAM_READWRITE);
+g_object_class_install_property (gobject_class,
+PROP_FOO,
+properties[PROP_FOO]);
+}
+]|
+and then notify a change on the "foo" property with:
+|[
+g_object_notify_by_pspec (self, properties[PROP_FOO]);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GParamSpec of a property installed on the class of @object.</doc>
+            <type name="ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_toggle_ref"
+              c:identifier="g_object_remove_toggle_ref"
+              version="2.8"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Removes a reference added with g_object_add_toggle_ref(). The
+reference count of the object is decreased by one.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="notify" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">a function to call when this reference is the last reference to the object, or is no longer the last reference.</doc>
+            <type name="ToggleNotify" c:type="GToggleNotify"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to @notify</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_weak_pointer"
+              c:identifier="g_object_remove_weak_pointer">
+        <doc xml:whitespace="preserve">Removes a weak reference from @object that was previously added
+using g_object_add_weak_pointer(). The @weak_pointer_location has
+to match the one used with g_object_add_weak_pointer().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="weak_pointer_location"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">The memory address of a pointer.</doc>
+            <type name="gpointer" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="run_dispose" c:identifier="g_object_run_dispose">
+        <doc xml:whitespace="preserve">Releases all references to other objects. This can be used to break
+reference cycles.
+This functions should only be called from object system implementations.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_data" c:identifier="g_object_set_data">
+        <doc xml:whitespace="preserve">Each object carries around a table of associations from
+strings to pointers.  This function lets you set an association.
+If the object already had an association with that name,
+the old association will be destroyed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the key</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to associate with that key</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_data_full" c:identifier="g_object_set_data_full">
+        <doc xml:whitespace="preserve">Like g_object_set_data() except it adds notification
+for when the association is destroyed, either by setting it
+to a different value or when the object is destroyed.
+Note that the @destroy callback is not called if @data is %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the key</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to associate with that key</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">function to call when the association is destroyed</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_property" c:identifier="g_object_set_property">
+        <doc xml:whitespace="preserve">Sets a property on an object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value</doc>
+            <type name="Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_qdata" c:identifier="g_object_set_qdata">
+        <doc xml:whitespace="preserve">This sets an opaque, named pointer on an object.
+The name is specified through a #GQuark (retrived e.g. via
+g_quark_from_static_string()), and the pointer
+can be gotten back from the @object with g_object_get_qdata()
+until the @object is finalized.
+Setting a previously set user data pointer, overrides (frees)
+the old pointer set, using #NULL as pointer essentially
+removes the data stored.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="quark" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GQuark, naming the user data pointer</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An opaque user data pointer</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_qdata_full" c:identifier="g_object_set_qdata_full">
+        <doc xml:whitespace="preserve">This function works like g_object_set_qdata(), but in addition,
+a void (*destroy) (gpointer) function may be specified which is
+called with @data as argument when the @object is finalized, or
+the data is being overwritten by a call to g_object_set_qdata()
+with the same @quark.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="quark" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GQuark, naming the user data pointer</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An opaque user data pointer</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">Function to invoke with @data as argument, when @data needs to be freed</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_valist"
+              c:identifier="g_object_set_valist"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets properties on an object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the first property to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="var_args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value for the first property, followed optionally by more name/value pairs, followed by %NULL</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="steal_data"
+              c:identifier="g_object_steal_data"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Remove a specified datum from the object's data associations,
+without invoking the association's destroy handler.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the data if found, or %NULL if no such data exists.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the key</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="steal_qdata"
+              c:identifier="g_object_steal_qdata"
+              introspectable="0">
+        <doc xml:whitespace="preserve">This function gets back user data pointers stored via
+g_object_set_qdata() and removes the @data from object
+without invoking its destroy() function (if any was
+set).
+Usually, calling this function is only required to update
+user data pointers with a destroy notifier, for example:
+|[
+void
+object_add_to_user_list (GObject     *object,
+const gchar *new_string)
+{
+// the quark, naming the object data
+GQuark quark_string_list = g_quark_from_static_string ("my-string-list");
+// retrive the old string list
+GList *list = g_object_steal_qdata (object, quark_string_list);
+// prepend new string
+list = g_list_prepend (list, g_strdup (new_string));
+// this changed 'list', so we need to set it again
+g_object_set_qdata_full (object, quark_string_list, list, free_string_list);
+}
+static void
+free_string_list (gpointer data)
+{
+GList *node, *list = data;
+for (node = list; node; node = node-&gt;next)
+g_free (node-&gt;data);
+g_list_free (list);
+}
+]|
+Using g_object_get_qdata() in the above example, instead of
+g_object_steal_qdata() would have left the destroy function set,
+and thus the partial string list would have been freed upon
+g_object_set_qdata_full().</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">The user data pointer set, or %NULL</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="quark" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GQuark, naming the user data pointer</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="thaw_notify" c:identifier="g_object_thaw_notify">
+        <doc xml:whitespace="preserve">Reverts the effect of a previous call to
+g_object_freeze_notify(). The freeze count is decreased on @object
+and when it reaches zero, all queued "notify" signals are emitted.
+It is an error to call this function when the freeze count is zero.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="watch_closure" c:identifier="g_object_watch_closure">
+        <doc xml:whitespace="preserve">This function essentially limits the life time of the @closure to
+the life time of the object. That is, when the object is finalized,
+the @closure is invalidated by calling g_closure_invalidate() on
+it, in order to prevent invocations of the closure with a finalized
+(nonexisting) object. Also, g_object_ref() and g_object_unref() are
+added as marshal guards to the @closure, to ensure that an extra
+reference count is held on @object during invocation of the
+use this @object as closure data.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="closure" transfer-ownership="none">
+            <doc xml:whitespace="preserve">GClosure to watch</doc>
+            <type name="Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="weak_ref"
+              c:identifier="g_object_weak_ref"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds a weak reference callback to an object. Weak references are
+used for notification when an object is finalized. They are called
+"weak references" because they allow you to safely hold a pointer
+to an object without calling g_object_ref() (g_object_ref() adds a
+strong reference, that is, forces the object to stay alive).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="notify" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">callback to invoke before the object is freed</doc>
+            <type name="WeakNotify" c:type="GWeakNotify"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">extra data to pass to notify</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="weak_unref"
+              c:identifier="g_object_weak_unref"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Removes a weak reference callback to an object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="notify" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">callback to search for</doc>
+            <type name="WeakNotify" c:type="GWeakNotify"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to search for</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="g_type_instance" writable="1">
+        <type name="TypeInstance" c:type="GTypeInstance"/>
+      </field>
+      <field name="ref_count" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="qdata" writable="1">
+        <type name="GLib.Data" c:type="GData*"/>
+      </field>
+    </class>
+    <record name="ObjectClass"
+            c:type="GObjectClass"
+            glib:is-gtype-struct-for="Object">
+      <doc xml:whitespace="preserve">The class structure for the &lt;structname&gt;GObject&lt;/structname&gt; type.
+&lt;example&gt;
+&lt;title&gt;Implementing singletons using a constructor&lt;/title&gt;
+&lt;programlisting&gt;
+static MySingleton *the_singleton = NULL;
+static GObject*
+my_singleton_constructor (GType                  type,
+guint                  n_construct_params,
+GObjectConstructParam *construct_params)
+{
+GObject *object;
+if (!the_singleton)
+{
+object = G_OBJECT_CLASS (parent_class)-&gt;constructor (type,
+n_construct_params,
+construct_params);
+the_singleton = MY_SINGLETON (object);
+}
+else
+object = g_object_ref (G_OBJECT (the_singleton));
+return object;
+}
+&lt;/programlisting&gt;&lt;/example&gt;</doc>
+      <field name="g_type_class">
+        <type name="TypeClass" c:type="GTypeClass"/>
+      </field>
+      <field name="construct_properties">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="constructor" introspectable="0">
+        <callback name="constructor" introspectable="0">
+          <return-value>
+            <type name="Object" c:type="GObject*"/>
+          </return-value>
+          <parameters>
+            <parameter name="type" transfer-ownership="none">
+              <type name="GType" c:type="GType"/>
+            </parameter>
+            <parameter name="n_construct_properties" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="construct_properties" transfer-ownership="none">
+              <type name="ObjectConstructParam"
+                    c:type="GObjectConstructParam*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_property">
+        <callback name="set_property">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GObject*"/>
+            </parameter>
+            <parameter name="property_id" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_property">
+        <callback name="get_property">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GObject*"/>
+            </parameter>
+            <parameter name="property_id" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="dispose">
+        <callback name="dispose">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="finalize">
+        <callback name="finalize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="dispatch_properties_changed">
+        <callback name="dispatch_properties_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GObject*"/>
+            </parameter>
+            <parameter name="n_pspecs" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="pspecs" transfer-ownership="none">
+              <type name="ParamSpec" c:type="GParamSpec**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="notify">
+        <callback name="notify">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GObject*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="constructed">
+        <callback name="constructed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="flags">
+        <type name="gulong" c:type="gsize"/>
+      </field>
+      <field name="pdummy">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="6">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+      <method name="find_property"
+              c:identifier="g_object_class_find_property"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Looks up the #GParamSpec for a property of a class.
+doesn't have a property of that name</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the #GParamSpec for the property, or %NULL if the class</doc>
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property to look up</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="install_properties"
+              c:identifier="g_object_class_install_properties"
+              version="2.26">
+        <doc xml:whitespace="preserve">Installs new properties from an array of #GParamSpec&lt;!-- --&gt;s. This is
+usually done in the class initializer.
+The property id of each property is the index of each #GParamSpec in
+the @pspecs array.
+The property id of 0 is treated specially by #GObject and it should not
+be used to store a #GParamSpec.
+This function should be used if you plan to use a static array of
+#GParamSpec&lt;!-- --&gt;s and g_object_notify_pspec(). For instance, this
+class initialization:
+|[
+enum {
+PROP_0, PROP_FOO, PROP_BAR, N_PROPERTIES
+};
+static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, };
+static void
+my_object_class_init (MyObjectClass *klass)
+{
+GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+obj_properties[PROP_FOO] =
+g_param_spec_int ("foo", "Foo", "Foo",
+-1, G_MAXINT,
+0,
+G_PARAM_READWRITE);
+obj_properties[PROP_BAR] =
+g_param_spec_string ("bar", "Bar", "Bar",
+NULL,
+G_PARAM_READWRITE);
+gobject_class-&gt;set_property = my_object_set_property;
+gobject_class-&gt;get_property = my_object_get_property;
+g_object_class_install_properties (gobject_class,
+N_PROPERTIES,
+obj_properties);
+}
+]|
+allows calling g_object_notify_by_pspec() to notify of property changes:
+|[
+void
+my_object_set_foo (MyObject *self, gint foo)
+{
+if (self-&gt;foo != foo)
+{
+self-&gt;foo = foo;
+g_object_notify_by_pspec (G_OBJECT (self), obj_properties[PROP_FOO]);
+}
+}
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_pspecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of the #GParamSpec&lt;!-- --&gt;s array</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="pspecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GParamSpec&lt;!-- --&gt;s array defining the new properties</doc>
+            <array length="0" c:type="GParamSpec**">
+              <type name="ParamSpec"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="install_property"
+              c:identifier="g_object_class_install_property">
+        <doc xml:whitespace="preserve">Installs a new property. This is usually done in the class initializer.
+Note that it is possible to redefine a property in a derived class,
+by installing a property with the same name. This can be useful at times,
+e.g. to change the range of allowed values or the default value.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id for the new property</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GParamSpec for the new property</doc>
+            <type name="ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_properties"
+              c:identifier="g_object_class_list_properties">
+        <doc xml:whitespace="preserve">Get an array of #GParamSpec* for all properties of a class.
+#GParamSpec* which should be freed after use</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">an array of</doc>
+          <array length="0" c:type="GParamSpec**">
+            <type name="ParamSpec"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="n_properties"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the length of the returned array</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="override_property"
+              c:identifier="g_object_class_override_property"
+              version="2.4">
+        <doc xml:whitespace="preserve">Registers @property_id as referring to a property with the
+name @name in a parent class or in an interface implemented
+by @oclass. This allows this class to &lt;firstterm&gt;override&lt;/firstterm&gt;
+a property implementation in a parent class or to provide
+the implementation of a property from an interface.
+&lt;note&gt;
+Internally, overriding is implemented by creating a property of type
+#GParamSpecOverride; generally operations that query the properties of
+the object class, such as g_object_class_find_property() or
+g_object_class_list_properties() will return the overridden
+property. However, in one case, the @construct_properties argument of
+the @constructor virtual function, the #GParamSpecOverride is passed
+instead, so that the @param_id field of the #GParamSpec will be
+correct.  For virtually all uses, this makes no difference. If you
+need to get the overridden property, you can call
+g_param_spec_get_redirect_target().
+&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new property ID</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a property registered in a parent class or in an interface of this class.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="ObjectConstructParam" c:type="GObjectConstructParam">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;GObjectConstructParam&lt;/structname&gt; struct is an auxiliary 
+structure used to hand #GParamSpec/#GValue pairs to the @constructor of
+a #GObjectClass.</doc>
+      <field name="pspec" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="Value" c:type="GValue*"/>
+      </field>
+    </record>
+    <callback name="ObjectFinalizeFunc" c:type="GObjectFinalizeFunc">
+      <doc xml:whitespace="preserve">The type of the @finalize function of #GObjectClass.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GObject being finalized</doc>
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ObjectGetPropertyFunc" c:type="GObjectGetPropertyFunc">
+      <doc xml:whitespace="preserve">The type of the @get_property function of #GObjectClass.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObject</doc>
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="property_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the numeric id under which the property was registered with g_object_class_install_property().</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue to return the property value in</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="pspec" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GParamSpec describing the property</doc>
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ObjectSetPropertyFunc" c:type="GObjectSetPropertyFunc">
+      <doc xml:whitespace="preserve">The type of the @set_property function of #GObjectClass.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObject</doc>
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="property_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the numeric id under which the property was registered with g_object_class_install_property().</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new value for the property</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="pspec" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GParamSpec describing the property</doc>
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="PARAM_MASK" value="255">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PARAM_READWRITE" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PARAM_STATIC_STRINGS" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PARAM_USER_SHIFT" value="8">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <bitfield name="ParamFlags" c:type="GParamFlags">
+      <doc xml:whitespace="preserve">Through the #GParamFlags flag values, certain aspects of parameters
+can be configured.</doc>
+      <member name="readable" value="1" c:identifier="G_PARAM_READABLE"/>
+      <member name="writable" value="2" c:identifier="G_PARAM_WRITABLE"/>
+      <member name="construct" value="4" c:identifier="G_PARAM_CONSTRUCT"/>
+      <member name="construct_only"
+              value="8"
+              c:identifier="G_PARAM_CONSTRUCT_ONLY"/>
+      <member name="lax_validation"
+              value="16"
+              c:identifier="G_PARAM_LAX_VALIDATION"/>
+      <member name="static_name"
+              value="32"
+              c:identifier="G_PARAM_STATIC_NAME"/>
+      <member name="private" value="32" c:identifier="G_PARAM_PRIVATE"/>
+      <member name="static_nick"
+              value="64"
+              c:identifier="G_PARAM_STATIC_NICK"/>
+      <member name="static_blurb"
+              value="128"
+              c:identifier="G_PARAM_STATIC_BLURB"/>
+      <member name="deprecated"
+              value="-2147483648"
+              c:identifier="G_PARAM_DEPRECATED"/>
+    </bitfield>
+    <record name="ParamSpec" c:type="GParamSpec">
+      <doc xml:whitespace="preserve">All other fields of the &lt;structname&gt;GParamSpec&lt;/structname&gt; struct are private and
+should not be used directly.</doc>
+      <field name="g_type_instance" writable="1">
+        <type name="TypeInstance" c:type="GTypeInstance"/>
+      </field>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="ParamFlags" c:type="GParamFlags"/>
+      </field>
+      <field name="value_type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="owner_type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="_nick" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="_blurb" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="qdata" writable="1">
+        <type name="GLib.Data" c:type="GData*"/>
+      </field>
+      <field name="ref_count" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="param_id" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <method name="get_blurb" c:identifier="g_param_spec_get_blurb">
+        <doc xml:whitespace="preserve">Get the short description of a #GParamSpec.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the short description of @pspec.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_name" c:identifier="g_param_spec_get_name">
+        <doc xml:whitespace="preserve">Get the name of a #GParamSpec.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of @pspec.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_nick" c:identifier="g_param_spec_get_nick">
+        <doc xml:whitespace="preserve">Get the nickname of a #GParamSpec.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the nickname of @pspec.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_qdata"
+              c:identifier="g_param_spec_get_qdata"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets back user data pointers stored via g_param_spec_set_qdata().</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the user data pointer set, or %NULL</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="quark" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GQuark, naming the user data pointer</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_redirect_target"
+              c:identifier="g_param_spec_get_redirect_target"
+              version="2.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">If the paramspec redirects operations to another paramspec,
+returns that paramspec. Redirect is used typically for
+providing a new implementation of a property in a derived
+type while preserving all the properties from the parent
+type. Redirection is established by creating a property
+of type #GParamSpecOverride. See g_object_class_override_property()
+for an example of the use of this capability.
+be redirected, or %NULL if none.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">paramspec to which requests on this paramspec should</doc>
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+      </method>
+      <method name="ref" c:identifier="g_param_spec_ref" introspectable="0">
+        <doc xml:whitespace="preserve">Increments the reference count of @pspec.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the #GParamSpec that was passed into this function</doc>
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+      </method>
+      <method name="ref_sink"
+              c:identifier="g_param_spec_ref_sink"
+              version="2.10"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Convenience function to ref and sink a #GParamSpec.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the #GParamSpec that was passed into this function</doc>
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+      </method>
+      <method name="set_qdata" c:identifier="g_param_spec_set_qdata">
+        <doc xml:whitespace="preserve">Sets an opaque, named pointer on a #GParamSpec. The name is
+specified through a #GQuark (retrieved e.g. via
+g_quark_from_static_string()), and the pointer can be gotten back
+from the @pspec with g_param_spec_get_qdata().  Setting a
+previously set user data pointer, overrides (frees) the old pointer
+set, using %NULL as pointer essentially removes the data stored.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="quark" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GQuark, naming the user data pointer</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an opaque user data pointer</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_qdata_full" c:identifier="g_param_spec_set_qdata_full">
+        <doc xml:whitespace="preserve">This function works like g_param_spec_set_qdata(), but in addition,
+a &lt;literal&gt;void (*destroy) (gpointer)&lt;/literal&gt; function may be
+specified which is called with @data as argument when the @pspec is
+finalized, or the data is being overwritten by a call to
+g_param_spec_set_qdata() with the same @quark.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="quark" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GQuark, naming the user data pointer</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an opaque user data pointer</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">function to invoke with @data as argument, when @data needs to be freed</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sink" c:identifier="g_param_spec_sink">
+        <doc xml:whitespace="preserve">The initial reference count of a newly created #GParamSpec is 1,
+even though no one has explicitly called g_param_spec_ref() on it
+yet. So the initial reference count is flagged as "floating", until
+someone calls &lt;literal&gt;g_param_spec_ref (pspec); g_param_spec_sink
+(pspec);&lt;/literal&gt; in sequence on it, taking over the initial
+reference count (thus ending up with a @pspec that has a reference
+count of 1 still, but is not flagged "floating" anymore).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="steal_qdata"
+              c:identifier="g_param_spec_steal_qdata"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets back user data pointers stored via g_param_spec_set_qdata()
+and removes the @data from @pspec without invoking its destroy()
+function (if any was set).  Usually, calling this function is only
+required to update user data pointers with a destroy notifier.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the user data pointer set, or %NULL</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="quark" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GQuark, naming the user data pointer</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unref" c:identifier="g_param_spec_unref">
+        <doc xml:whitespace="preserve">Decrements the reference count of a @pspec.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="ParamSpecBoolean" c:type="GParamSpecBoolean">
+      <doc xml:whitespace="preserve">A #GParamSpec derived structure that contains the meta data for boolean properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+    </record>
+    <record name="ParamSpecBoxed" c:type="GParamSpecBoxed">
+      <doc xml:whitespace="preserve">A #GParamSpec derived structure that contains the meta data for boxed properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+    </record>
+    <record name="ParamSpecChar" c:type="GParamSpecChar">
+      <doc xml:whitespace="preserve">A #GParamSpec derived structure that contains the meta data for character properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="gint8" c:type="gint8"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="gint8" c:type="gint8"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="gint8" c:type="gint8"/>
+      </field>
+    </record>
+    <record name="ParamSpecClass" c:type="GParamSpecClass">
+      <doc xml:whitespace="preserve">The class structure for the &lt;structname&gt;GParamSpec&lt;/structname&gt; type.
+Normally, &lt;structname&gt;GParamSpec&lt;/structname&gt; classes are filled by
+g_param_type_register_static().</doc>
+      <field name="g_type_class" writable="1">
+        <type name="TypeClass" c:type="GTypeClass"/>
+      </field>
+      <field name="value_type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="finalize">
+        <callback name="finalize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="value_set_default">
+        <callback name="value_set_default">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="value_validate">
+        <callback name="value_validate">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="values_cmp">
+        <callback name="values_cmp">
+          <return-value transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+            <parameter name="value1" transfer-ownership="none">
+              <type name="Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="value2" transfer-ownership="none">
+              <type name="Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="dummy" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="ParamSpecDouble" c:type="GParamSpecDouble">
+      <doc xml:whitespace="preserve">A #GParamSpec derived structure that contains the meta data for double properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="epsilon" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+    </record>
+    <record name="ParamSpecEnum" c:type="GParamSpecEnum">
+      <doc xml:whitespace="preserve">A #GParamSpec derived structure that contains the meta data for enum 
+properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="enum_class" writable="1">
+        <type name="EnumClass" c:type="GEnumClass*"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+    </record>
+    <record name="ParamSpecFlags" c:type="GParamSpecFlags">
+      <doc xml:whitespace="preserve">A #GParamSpec derived structure that contains the meta data for flags
+properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="flags_class" writable="1">
+        <type name="FlagsClass" c:type="GFlagsClass*"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="ParamSpecFloat" c:type="GParamSpecFloat">
+      <doc xml:whitespace="preserve">A #GParamSpec derived structure that contains the meta data for float properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="epsilon" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+    </record>
+    <record name="ParamSpecGType" c:type="GParamSpecGType" version="2.10">
+      <doc xml:whitespace="preserve">A #GParamSpec derived structure that contains the meta data for #GType properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="is_a_type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+    </record>
+    <record name="ParamSpecInt" c:type="GParamSpecInt">
+      <doc xml:whitespace="preserve">A #GParamSpec derived structure that contains the meta data for integer properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+    </record>
+    <record name="ParamSpecInt64" c:type="GParamSpecInt64">
+      <doc xml:whitespace="preserve">A #GParamSpec derived structure that contains the meta data for 64bit integer properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="gint64" c:type="gint64"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="gint64" c:type="gint64"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="gint64" c:type="gint64"/>
+      </field>
+    </record>
+    <record name="ParamSpecLong" c:type="GParamSpecLong">
+      <doc xml:whitespace="preserve">A #GParamSpec derived structure that contains the meta data for long integer properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="glong" c:type="glong"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="glong" c:type="glong"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="glong" c:type="glong"/>
+      </field>
+    </record>
+    <record name="ParamSpecObject" c:type="GParamSpecObject">
+      <doc xml:whitespace="preserve">A #GParamSpec derived structure that contains the meta data for object properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+    </record>
+    <record name="ParamSpecOverride" c:type="GParamSpecOverride" version="2.4">
+      <doc xml:whitespace="preserve">This is a type of #GParamSpec type that simply redirects operations to
+another paramspec.  All operations other than getting or
+setting the value are redirected, including accessing the nick and
+blurb, validating a value, and so forth. See
+g_param_spec_get_redirect_target() for retrieving the overidden
+property. #GParamSpecOverride is used in implementing
+g_object_class_override_property(), and will not be directly useful
+unless you are implementing a new base type similar to GObject.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="overridden" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </field>
+    </record>
+    <record name="ParamSpecParam" c:type="GParamSpecParam">
+      <doc xml:whitespace="preserve">A #GParamSpec derived structure that contains the meta data for %G_TYPE_PARAM
+properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+    </record>
+    <record name="ParamSpecPointer" c:type="GParamSpecPointer">
+      <doc xml:whitespace="preserve">A #GParamSpec derived structure that contains the meta data for pointer properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+    </record>
+    <record name="ParamSpecPool" c:type="GParamSpecPool" disguised="1">
+      <doc xml:whitespace="preserve">A #GParamSpecPool maintains a collection of #GParamSpec&lt;!-- --&gt;s which can be
+quickly accessed by owner and name. The implementation of the #GObject property
+system uses such a pool to store the #GParamSpecs of the properties all object
+types.</doc>
+      <method name="insert" c:identifier="g_param_spec_pool_insert">
+        <doc xml:whitespace="preserve">Inserts a #GParamSpec in the pool.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GParamSpec to insert</doc>
+            <type name="ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+          <parameter name="owner_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GType identifying the owner of @pspec</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list"
+              c:identifier="g_param_spec_pool_list"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets an array of all #GParamSpec&lt;!-- --&gt;s owned by @owner_type in
+the pool.
+#GParamSpec&lt;!-- --&gt;s owned by @owner_type in the pool</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a newly allocated array containing pointers to all</doc>
+          <type name="ParamSpec" c:type="GParamSpec**"/>
+        </return-value>
+        <parameters>
+          <parameter name="owner_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the owner to look for</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="n_pspecs_p" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the length of the returned array</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_owned"
+              c:identifier="g_param_spec_pool_list_owned"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets an #GList of all #GParamSpec&lt;!-- --&gt;s owned by @owner_type in
+the pool.
+in the pool#GParamSpec&lt;!-- --&gt;s.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a #GList of all #GParamSpec&lt;!-- --&gt;s owned by @owner_type</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="owner_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the owner to look for</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup"
+              c:identifier="g_param_spec_pool_lookup"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Looks up a #GParamSpec in the pool.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">The found #GParamSpec, or %NULL if no matching #GParamSpec was found.</doc>
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+        <parameters>
+          <parameter name="param_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name to look for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="owner_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the owner to look for</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="walk_ancestors" transfer-ownership="none">
+            <doc xml:whitespace="preserve">If %TRUE, also try to find a #GParamSpec with @param_name owned by an ancestor of @owner_type.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove" c:identifier="g_param_spec_pool_remove">
+        <doc xml:whitespace="preserve">Removes a #GParamSpec from the pool.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GParamSpec to remove</doc>
+            <type name="ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="ParamSpecString" c:type="GParamSpecString">
+      <doc xml:whitespace="preserve">A #GParamSpec derived structure that contains the meta data for string
+properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="cset_first" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="cset_nth" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="substitutor" writable="1">
+        <type name="gchar" c:type="gchar"/>
+      </field>
+      <field name="null_fold_if_empty" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="ensure_non_null" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="ParamSpecTypeInfo" c:type="GParamSpecTypeInfo">
+      <doc xml:whitespace="preserve">This structure is used to provide the type system with the information
+required to initialize and destruct (finalize) a parameter's class and
+instances thereof.
+The initialized structure is passed to the g_param_type_register_static() 
+The type system will perform a deep copy of this structure, so its memory 
+does not need to be persistent across invocation of 
+g_param_type_register_static().</doc>
+      <field name="instance_size" writable="1">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="n_preallocs" writable="1">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="instance_init">
+        <callback name="instance_init">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="value_type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="finalize">
+        <callback name="finalize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="value_set_default">
+        <callback name="value_set_default">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="value_validate">
+        <callback name="value_validate">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="values_cmp">
+        <callback name="values_cmp">
+          <return-value transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+            <parameter name="value1" transfer-ownership="none">
+              <type name="Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="value2" transfer-ownership="none">
+              <type name="Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="ParamSpecUChar" c:type="GParamSpecUChar">
+      <doc xml:whitespace="preserve">A #GParamSpec derived structure that contains the meta data for unsigned character properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+    </record>
+    <record name="ParamSpecUInt" c:type="GParamSpecUInt">
+      <doc xml:whitespace="preserve">A #GParamSpec derived structure that contains the meta data for unsigned integer properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="ParamSpecUInt64" c:type="GParamSpecUInt64">
+      <doc xml:whitespace="preserve">A #GParamSpec derived structure that contains the meta data for unsigned 64bit integer properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="guint64" c:type="guint64"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="guint64" c:type="guint64"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="guint64" c:type="guint64"/>
+      </field>
+    </record>
+    <record name="ParamSpecULong" c:type="GParamSpecULong">
+      <doc xml:whitespace="preserve">A #GParamSpec derived structure that contains the meta data for unsigned long integer properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="gulong" c:type="gulong"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="gulong" c:type="gulong"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="gulong" c:type="gulong"/>
+      </field>
+    </record>
+    <record name="ParamSpecUnichar" c:type="GParamSpecUnichar">
+      <doc xml:whitespace="preserve">A #GParamSpec derived structure that contains the meta data for unichar (unsigned integer) properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="default_value" introspectable="0" writable="1">
+        <type name="gunichar" c:type="gunichar"/>
+      </field>
+    </record>
+    <record name="ParamSpecValueArray" c:type="GParamSpecValueArray">
+      <doc xml:whitespace="preserve">A #GParamSpec derived structure that contains the meta data for #GValueArray properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="element_spec" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </field>
+      <field name="fixed_n_elements" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="ParamSpecVariant" c:type="GParamSpecVariant" version="2.26">
+      <doc xml:whitespace="preserve">A #GParamSpec derived structure that contains the meta data for #GVariant properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="GLib.VariantType" c:type="GVariantType*"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="GLib.Variant" c:type="GVariant*"/>
+      </field>
+      <field name="padding" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="Parameter" c:type="GParameter">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;GParameter&lt;/structname&gt; struct is an auxiliary structure used
+to hand parameter name/value pairs to g_object_newv().</doc>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="Value" c:type="GValue"/>
+      </field>
+    </record>
+    <glib:boxed glib:name="PtrArray"
+                c:symbol-prefix="ptr_array"
+                glib:type-name="GPtrArray"
+                glib:get-type="g_ptr_array_get_type">
+    </glib:boxed>
+    <glib:boxed glib:name="Regex"
+                c:symbol-prefix="regex"
+                glib:type-name="GRegex"
+                glib:get-type="g_regex_get_type">
+    </glib:boxed>
+    <constant name="SIGNAL_FLAGS_MASK" value="127">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="SIGNAL_MATCH_MASK" value="63">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <callback name="SignalAccumulator" c:type="GSignalAccumulator">
+      <doc xml:whitespace="preserve">The signal accumulator is a special callback function that can be used
+to collect return values of the various callbacks that are called
+during a signal emission. The signal accumulator is specified at signal
+creation time, if it is left %NULL, no accumulation of callback return
+values is performed. The return value of signal emissions is then the
+value returned by the last callback.
+should be aborted. Returning %FALSE means to abort the
+current emission and %TRUE is returned for continuation.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The accumulator function returns whether the signal emission</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="ihint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Signal invocation hint, see #GSignalInvocationHint.</doc>
+          <type name="SignalInvocationHint" c:type="GSignalInvocationHint*"/>
+        </parameter>
+        <parameter name="return_accu" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Accumulator to collect callback return values in, this is the return value of the current signal emission.</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="handler_return" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GValue holding the return value of the signal handler.</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Callback data that was specified when creating the signal.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="SignalEmissionHook" c:type="GSignalEmissionHook">
+      <doc xml:whitespace="preserve">A simple function pointer to get invoked when the signal is emitted. This 
+allows you to tie a hook to the signal type, so that it will trap all 
+emissions of that signal, from any object.
+You may not attach these to signals created with the #G_SIGNAL_NO_HOOKS flag.
+hook is disconnected (and destroyed).</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">whether it wants to stay connected. If it returns %FALSE, the signal</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="ihint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Signal invocation hint, see #GSignalInvocationHint.</doc>
+          <type name="SignalInvocationHint" c:type="GSignalInvocationHint*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of parameters to the function, including the instance on which the signal was emitted.</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the instance on which the signal was emitted, followed by the parameters of the emission.</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data associated with the hook.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="SignalFlags" c:type="GSignalFlags">
+      <doc xml:whitespace="preserve">The signal flags are used to specify a signal's behaviour, the overall
+signal description outlines how especially the RUN flags control the
+stages of a signal emission.</doc>
+      <member name="run_first" value="1" c:identifier="G_SIGNAL_RUN_FIRST"/>
+      <member name="run_last" value="2" c:identifier="G_SIGNAL_RUN_LAST"/>
+      <member name="run_cleanup"
+              value="4"
+              c:identifier="G_SIGNAL_RUN_CLEANUP"/>
+      <member name="no_recurse" value="8" c:identifier="G_SIGNAL_NO_RECURSE"/>
+      <member name="detailed" value="16" c:identifier="G_SIGNAL_DETAILED"/>
+      <member name="action" value="32" c:identifier="G_SIGNAL_ACTION"/>
+      <member name="no_hooks" value="64" c:identifier="G_SIGNAL_NO_HOOKS"/>
+    </bitfield>
+    <record name="SignalInvocationHint" c:type="GSignalInvocationHint">
+      <doc xml:whitespace="preserve">The #GSignalInvocationHint structure is used to pass on additional information
+to callbacks during a signal emission.</doc>
+      <field name="signal_id" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="detail" writable="1">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </field>
+      <field name="run_type" writable="1">
+        <type name="SignalFlags" c:type="GSignalFlags"/>
+      </field>
+    </record>
+    <bitfield name="SignalMatchType" c:type="GSignalMatchType">
+      <doc xml:whitespace="preserve">The match types specify what g_signal_handlers_block_matched(),
+g_signal_handlers_unblock_matched() and g_signal_handlers_disconnect_matched()
+match signals by.</doc>
+      <member name="id" value="1" c:identifier="G_SIGNAL_MATCH_ID"/>
+      <member name="detail" value="2" c:identifier="G_SIGNAL_MATCH_DETAIL"/>
+      <member name="closure" value="4" c:identifier="G_SIGNAL_MATCH_CLOSURE"/>
+      <member name="func" value="8" c:identifier="G_SIGNAL_MATCH_FUNC"/>
+      <member name="data" value="16" c:identifier="G_SIGNAL_MATCH_DATA"/>
+      <member name="unblocked"
+              value="32"
+              c:identifier="G_SIGNAL_MATCH_UNBLOCKED"/>
+    </bitfield>
+    <record name="SignalQuery" c:type="GSignalQuery">
+      <doc xml:whitespace="preserve">A structure holding in-depth information for a specific signal. It is
+filled in by the g_signal_query() function.</doc>
+      <field name="signal_id" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="signal_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="itype" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="signal_flags" writable="1">
+        <type name="SignalFlags" c:type="GSignalFlags"/>
+      </field>
+      <field name="return_type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="n_params" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="param_types" writable="1">
+        <type name="GType" c:type="GType*"/>
+      </field>
+    </record>
+    <glib:boxed glib:name="String"
+                c:symbol-prefix="gstring"
+                glib:type-name="GString"
+                glib:get-type="g_gstring_get_type">
+    </glib:boxed>
+    <constant name="TYPE_FUNDAMENTAL_MAX" value="255">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="TYPE_FUNDAMENTAL_SHIFT" value="2">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="TYPE_RESERVED_BSE_FIRST" value="32">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="TYPE_RESERVED_BSE_LAST" value="48">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="TYPE_RESERVED_GLIB_FIRST" value="22">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="TYPE_RESERVED_GLIB_LAST" value="31">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="TYPE_RESERVED_USER_FIRST" value="49">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <callback name="ToggleNotify" c:type="GToggleNotify">
+      <doc xml:whitespace="preserve">A callback function used for notification when the state
+of a toggle reference changes. See g_object_add_toggle_ref().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Callback data passed to g_object_add_toggle_ref()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The object on which g_object_add_toggle_ref() was called.</doc>
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="is_last_ref" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the toggle reference is now the last reference to the object. %FALSE if the toggle reference was the last reference and there are now other references.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <union name="TypeCValue" c:type="GTypeCValue">
+      <doc xml:whitespace="preserve">A union holding one collected value.</doc>
+      <field name="v_int" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="v_long" writable="1">
+        <type name="glong" c:type="glong"/>
+      </field>
+      <field name="v_int64" writable="1">
+        <type name="gint64" c:type="gint64"/>
+      </field>
+      <field name="v_double" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="v_pointer" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </union>
+    <record name="TypeClass" c:type="GTypeClass">
+      <doc xml:whitespace="preserve">An opaque structure used as the base of all classes.</doc>
+      <field name="g_type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <method name="get_private"
+              c:identifier="g_type_class_get_private"
+              introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="private_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="TypeClassCacheFunc" c:type="GTypeClassCacheFunc">
+      <doc xml:whitespace="preserve">A callback function which is called when the reference count of a class 
+drops to zero. It may use g_type_class_ref() to prevent the class from
+being freed. You should not call g_type_class_unref() from a 
+#GTypeClassCacheFunc function to prevent infinite recursion, use 
+g_type_class_unref_uncached() instead.
+The functions have to check the class id passed in to figure 
+whether they actually want to cache the class of this type, since all
+classes are routed through the same #GTypeClassCacheFunc chain.
+called, %FALSE to continue.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE to stop further #GTypeClassCacheFunc&lt;!-- --&gt;s from being</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="cache_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data that was given to the g_type_add_class_cache_func() call</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="g_class" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GTypeClass structure which is unreferenced</doc>
+          <type name="TypeClass" c:type="GTypeClass*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="TypeDebugFlags" c:type="GTypeDebugFlags">
+      <doc xml:whitespace="preserve">The &lt;type&gt;GTypeDebugFlags&lt;/type&gt; enumeration values can be passed to
+g_type_init_with_debug_flags() to trigger debugging messages during runtime.
+Note that the messages can also be triggered by setting the
+&lt;envar&gt;GOBJECT_DEBUG&lt;/envar&gt; environment variable to a ':'-separated list of 
+"objects" and "signals".</doc>
+      <member name="none" value="0" c:identifier="G_TYPE_DEBUG_NONE"/>
+      <member name="objects" value="1" c:identifier="G_TYPE_DEBUG_OBJECTS"/>
+      <member name="signals" value="2" c:identifier="G_TYPE_DEBUG_SIGNALS"/>
+      <member name="mask" value="3" c:identifier="G_TYPE_DEBUG_MASK"/>
+    </bitfield>
+    <bitfield name="TypeFlags" c:type="GTypeFlags">
+      <doc xml:whitespace="preserve">Bit masks used to check or determine characteristics of a type.</doc>
+      <member name="abstract" value="16" c:identifier="G_TYPE_FLAG_ABSTRACT"/>
+      <member name="value_abstract"
+              value="32"
+              c:identifier="G_TYPE_FLAG_VALUE_ABSTRACT"/>
+    </bitfield>
+    <bitfield name="TypeFundamentalFlags" c:type="GTypeFundamentalFlags">
+      <doc xml:whitespace="preserve">Bit masks used to check or determine specific characteristics of a
+fundamental type.</doc>
+      <member name="classed" value="1" c:identifier="G_TYPE_FLAG_CLASSED"/>
+      <member name="instantiatable"
+              value="2"
+              c:identifier="G_TYPE_FLAG_INSTANTIATABLE"/>
+      <member name="derivable" value="4" c:identifier="G_TYPE_FLAG_DERIVABLE"/>
+      <member name="deep_derivable"
+              value="8"
+              c:identifier="G_TYPE_FLAG_DEEP_DERIVABLE"/>
+    </bitfield>
+    <record name="TypeFundamentalInfo" c:type="GTypeFundamentalInfo">
+      <doc xml:whitespace="preserve">A structure that provides information to the type system which is
+used specifically for managing fundamental types.</doc>
+      <field name="type_flags" writable="1">
+        <type name="TypeFundamentalFlags" c:type="GTypeFundamentalFlags"/>
+      </field>
+    </record>
+    <record name="TypeInfo" c:type="GTypeInfo">
+      <doc xml:whitespace="preserve">This structure is used to provide the type system with the information
+required to initialize and destruct (finalize) a type's class and
+its instances.
+The initialized structure is passed to the g_type_register_static() function
+(or is copied into the provided #GTypeInfo structure in the
+g_type_plugin_complete_type_info()). The type system will perform a deep
+copy of this structure, so its memory does not need to be persistent
+across invocation of g_type_register_static().</doc>
+      <field name="class_size" writable="1">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="base_init" writable="1">
+        <type name="BaseInitFunc" c:type="GBaseInitFunc"/>
+      </field>
+      <field name="base_finalize" writable="1">
+        <type name="BaseFinalizeFunc" c:type="GBaseFinalizeFunc"/>
+      </field>
+      <field name="class_init" writable="1">
+        <type name="ClassInitFunc" c:type="GClassInitFunc"/>
+      </field>
+      <field name="class_finalize" writable="1">
+        <type name="ClassFinalizeFunc" c:type="GClassFinalizeFunc"/>
+      </field>
+      <field name="class_data" writable="1">
+        <type name="gpointer" c:type="gconstpointer"/>
+      </field>
+      <field name="instance_size" writable="1">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="n_preallocs" writable="1">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="instance_init" writable="1">
+        <type name="InstanceInitFunc" c:type="GInstanceInitFunc"/>
+      </field>
+      <field name="value_table" writable="1">
+        <type name="TypeValueTable" c:type="GTypeValueTable*"/>
+      </field>
+    </record>
+    <record name="TypeInstance" c:type="GTypeInstance">
+      <doc xml:whitespace="preserve">An opaque structure used as the base of all type instances.</doc>
+      <field name="g_class" writable="1">
+        <type name="TypeClass" c:type="GTypeClass*"/>
+      </field>
+      <method name="get_private"
+              c:identifier="g_type_instance_get_private"
+              introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="private_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="TypeInterface" c:type="GTypeInterface">
+      <doc xml:whitespace="preserve">An opaque structure used as the base of all interface types.</doc>
+      <field name="g_type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="g_instance_type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+    </record>
+    <callback name="TypeInterfaceCheckFunc"
+              c:type="GTypeInterfaceCheckFunc"
+              version="2.4">
+      <doc xml:whitespace="preserve">A callback called after an interface vtable is initialized.
+See g_type_add_interface_check().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="check_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data passed to g_type_add_interface_check().</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="g_iface" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the interface that has been initialized</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="TypeModule"
+           c:symbol-prefix="type_module"
+           c:type="GTypeModule"
+           parent="Object"
+           abstract="1"
+           glib:type-name="GTypeModule"
+           glib:get-type="g_type_module_get_type"
+           glib:type-struct="TypeModuleClass">
+      <doc xml:whitespace="preserve">The members of the &lt;structname&gt;GTypeModule&lt;/structname&gt; structure should not 
+be accessed directly, except for the @name field.</doc>
+      <implements name="TypePlugin"/>
+      <virtual-method name="load">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="unload">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="add_interface" c:identifier="g_type_module_add_interface">
+        <doc xml:whitespace="preserve">Registers an additional interface for a type, whose interface lives
+in the given type plugin. If the interface was already registered
+for the type in this plugin, nothing will be done.
+As long as any instances of the type exist, the type plugin will
+not be unloaded.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="instance_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">type to which to add the interface.</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="interface_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">interface type to add</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="interface_info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">type information structure</doc>
+            <type name="InterfaceInfo" c:type="GInterfaceInfo*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="register_enum"
+              c:identifier="g_type_module_register_enum"
+              version="2.6">
+        <doc xml:whitespace="preserve">Looks up or registers an enumeration that is implemented with a particular
+type plugin. If a type with name @type_name was previously registered,
+the #GType identifier for the type is returned, otherwise the type
+is newly registered, and the resulting #GType identifier returned.
+As long as any instances of the type exist, the type plugin will
+not be unloaded.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new or existing type ID</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name for the type</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="const_static_values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of #GEnumValue structs for the possible enumeration values. The array is terminated by a struct with all members being 0.</doc>
+            <type name="EnumValue" c:type="GEnumValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="register_flags"
+              c:identifier="g_type_module_register_flags"
+              version="2.6">
+        <doc xml:whitespace="preserve">Looks up or registers a flags type that is implemented with a particular
+type plugin. If a type with name @type_name was previously registered,
+the #GType identifier for the type is returned, otherwise the type
+is newly registered, and the resulting #GType identifier returned.
+As long as any instances of the type exist, the type plugin will
+not be unloaded.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new or existing type ID</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name for the type</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="const_static_values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of #GFlagsValue structs for the possible flags values. The array is terminated by a struct with all members being 0.</doc>
+            <type name="FlagsValue" c:type="GFlagsValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="register_type" c:identifier="g_type_module_register_type">
+        <doc xml:whitespace="preserve">Looks up or registers a type that is implemented with a particular
+type plugin. If a type with name @type_name was previously registered,
+the #GType identifier for the type is returned, otherwise the type
+is newly registered, and the resulting #GType identifier returned.
+When reregistering a type (typically because a module is unloaded
+then reloaded, and reinitialized), @module and @parent_type must
+be the same as they were previously.
+As long as any instances of the type exist, the type plugin will
+not be unloaded.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new or existing type ID</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type for the parent class</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="type_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name for the type</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type_info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">type information structure</doc>
+            <type name="TypeInfo" c:type="GTypeInfo*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags field providing details about the type</doc>
+            <type name="TypeFlags" c:type="GTypeFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_name" c:identifier="g_type_module_set_name">
+        <doc xml:whitespace="preserve">Sets the name for a #GTypeModule</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a human-readable name to use in error messages.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unuse" c:identifier="g_type_module_unuse">
+        <doc xml:whitespace="preserve">Decreases the use count of a #GTypeModule by one. If the
+result is zero, the module will be unloaded. (However, the
+#GTypeModule will not be freed, and types associated with the
+#GTypeModule are not unregistered. Once a #GTypeModule is
+initialized, it must exist forever.)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="use" c:identifier="g_type_module_use">
+        <doc xml:whitespace="preserve">Increases the use count of a #GTypeModule by one. If the
+use count was zero before, the plugin will be loaded.
+If loading the plugin fails, the use count is reset to
+its prior value.
+loading the plugin failed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%FALSE if the plugin needed to be loaded and</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="Object" c:type="GObject"/>
+      </field>
+      <field name="use_count">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="type_infos">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="interface_infos">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="name">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </class>
+    <record name="TypeModuleClass"
+            c:type="GTypeModuleClass"
+            glib:is-gtype-struct-for="TypeModule">
+      <doc xml:whitespace="preserve">In order to implement dynamic loading of types based on #GTypeModule, 
+the @load and @unload functions in #GTypeModuleClass must be implemented.</doc>
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="load">
+        <callback name="load">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="module" transfer-ownership="none">
+              <type name="TypeModule" c:type="GTypeModule*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unload">
+        <callback name="unload">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="module" transfer-ownership="none">
+              <type name="TypeModule" c:type="GTypeModule*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="reserved1">
+        <callback name="reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="reserved2">
+        <callback name="reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="reserved3">
+        <callback name="reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="reserved4">
+        <callback name="reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <interface name="TypePlugin"
+               c:symbol-prefix="type_plugin"
+               c:type="GTypePlugin"
+               glib:type-name="GTypePlugin"
+               glib:get-type="g_type_plugin_get_type">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;GTypePlugin&lt;/structname&gt; typedef is used as a placeholder 
+for objects that implement the &lt;structname&gt;GTypePlugin&lt;/structname&gt; 
+interface.</doc>
+      <method name="complete_interface_info"
+              c:identifier="g_type_plugin_complete_interface_info">
+        <doc xml:whitespace="preserve">Calls the @complete_interface_info function from the
+#GTypePluginClass of @plugin. There should be no need to use this
+function outside of the GObject type system itself.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="instance_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GType of an instantiable type to which the interface is added</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="interface_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GType of the interface whose info is completed</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GInterfaceInfo to fill in</doc>
+            <type name="InterfaceInfo" c:type="GInterfaceInfo*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="complete_type_info"
+              c:identifier="g_type_plugin_complete_type_info">
+        <doc xml:whitespace="preserve">Calls the @complete_type_info function from the #GTypePluginClass of @plugin.
+There should be no need to use this function outside of the GObject
+type system itself.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="g_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GType whose info is completed</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GTypeInfo struct to fill in</doc>
+            <type name="TypeInfo" c:type="GTypeInfo*"/>
+          </parameter>
+          <parameter name="value_table" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GTypeValueTable to fill in</doc>
+            <type name="TypeValueTable" c:type="GTypeValueTable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unuse" c:identifier="g_type_plugin_unuse">
+        <doc xml:whitespace="preserve">Calls the @unuse_plugin function from the #GTypePluginClass of
+the GObject type system itself.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="use" c:identifier="g_type_plugin_use">
+        <doc xml:whitespace="preserve">Calls the @use_plugin function from the #GTypePluginClass of
+the GObject type system itself.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </interface>
+    <record name="TypePluginClass" c:type="GTypePluginClass">
+      <doc xml:whitespace="preserve">The #GTypePlugin interface is used by the type system in order to handle
+the lifecycle of dynamically loaded types.</doc>
+      <field name="base_iface" writable="1">
+        <type name="TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="use_plugin" writable="1">
+        <type name="TypePluginUse" c:type="GTypePluginUse"/>
+      </field>
+      <field name="unuse_plugin" writable="1">
+        <type name="TypePluginUnuse" c:type="GTypePluginUnuse"/>
+      </field>
+      <field name="complete_type_info" writable="1">
+        <type name="TypePluginCompleteTypeInfo"
+              c:type="GTypePluginCompleteTypeInfo"/>
+      </field>
+      <field name="complete_interface_info" writable="1">
+        <type name="TypePluginCompleteInterfaceInfo"
+              c:type="GTypePluginCompleteInterfaceInfo"/>
+      </field>
+    </record>
+    <callback name="TypePluginCompleteInterfaceInfo"
+              c:type="GTypePluginCompleteInterfaceInfo">
+      <doc xml:whitespace="preserve">The type of the @complete_interface_info function of #GTypePluginClass.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GTypePlugin</doc>
+          <type name="TypePlugin" c:type="GTypePlugin*"/>
+        </parameter>
+        <parameter name="instance_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType of an instantiable type to which the interface is added</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="interface_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType of the interface whose info is completed</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="info" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GInterfaceInfo to fill in</doc>
+          <type name="InterfaceInfo" c:type="GInterfaceInfo*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="TypePluginCompleteTypeInfo"
+              c:type="GTypePluginCompleteTypeInfo">
+      <doc xml:whitespace="preserve">The type of the @complete_type_info function of #GTypePluginClass.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GTypePlugin</doc>
+          <type name="TypePlugin" c:type="GTypePlugin*"/>
+        </parameter>
+        <parameter name="g_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType whose info is completed</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="info" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GTypeInfo struct to fill in</doc>
+          <type name="TypeInfo" c:type="GTypeInfo*"/>
+        </parameter>
+        <parameter name="value_table" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GTypeValueTable to fill in</doc>
+          <type name="TypeValueTable" c:type="GTypeValueTable*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="TypePluginUnuse" c:type="GTypePluginUnuse">
+      <doc xml:whitespace="preserve">The type of the @unuse_plugin function of #GTypePluginClass.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GTypePlugin whose use count should be decreased</doc>
+          <type name="TypePlugin" c:type="GTypePlugin*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="TypePluginUse" c:type="GTypePluginUse">
+      <doc xml:whitespace="preserve">The type of the @use_plugin function of #GTypePluginClass, which gets called
+to increase the use count of @plugin.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GTypePlugin whose use count should be increased</doc>
+          <type name="TypePlugin" c:type="GTypePlugin*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="TypeQuery" c:type="GTypeQuery">
+      <doc xml:whitespace="preserve">A structure holding information for a specific type. It is
+filled in by the g_type_query() function.</doc>
+      <field name="type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="type_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="class_size" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="instance_size" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="TypeValueTable" c:type="GTypeValueTable">
+      <doc xml:whitespace="preserve">The #GTypeValueTable provides the functions required by the #GValue implementation,
+to serve as a container for values of a type.</doc>
+      <field name="value_init">
+        <callback name="value_init">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="value" transfer-ownership="none">
+              <type name="Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="value_free">
+        <callback name="value_free">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="value" transfer-ownership="none">
+              <type name="Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="value_copy">
+        <callback name="value_copy">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="src_value" transfer-ownership="none">
+              <type name="Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="dest_value" transfer-ownership="none">
+              <type name="Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="value_peek_pointer" introspectable="0">
+        <callback name="value_peek_pointer" introspectable="0">
+          <return-value>
+            <type name="gpointer" c:type="gpointer"/>
+          </return-value>
+          <parameters>
+            <parameter name="value" transfer-ownership="none">
+              <type name="Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="collect_format" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="collect_value">
+        <callback name="collect_value">
+          <return-value transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="value" transfer-ownership="none">
+              <type name="Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="n_collect_values" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="collect_values" transfer-ownership="none">
+              <type name="TypeCValue" c:type="GTypeCValue*"/>
+            </parameter>
+            <parameter name="collect_flags" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lcopy_format" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="lcopy_value">
+        <callback name="lcopy_value">
+          <return-value transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="value" transfer-ownership="none">
+              <type name="Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="n_collect_values" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="collect_values" transfer-ownership="none">
+              <type name="TypeCValue" c:type="GTypeCValue*"/>
+            </parameter>
+            <parameter name="collect_flags" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <constant name="VALUE_COLLECT_FORMAT_MAX_LENGTH" value="8">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="VALUE_NOCOPY_CONTENTS" value="134217728">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="Value"
+            c:type="GValue"
+            glib:type-name="GValue"
+            glib:get-type="g_value_get_type"
+            c:symbol-prefix="value">
+      <doc xml:whitespace="preserve">An opaque structure used to hold different types of values.
+to functions within a #GTypeValueTable structure, or implementations of
+the g_value_*() API. That is, code portions which implement new fundamental
+types.
+#GValue users can not make any assumptions about how data is stored
+within the 2 element @data union, and the @g_type member should
+only be accessed through the G_VALUE_TYPE() macro.</doc>
+      <field name="g_type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="data" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+      <method name="copy" c:identifier="g_value_copy">
+        <doc xml:whitespace="preserve">Copies the value of @src_value into @dest_value.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An initialized #GValue structure of the same type as @src_value.</doc>
+            <type name="Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup_boxed"
+              c:identifier="g_value_dup_boxed"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Get the contents of a %G_TYPE_BOXED derived #GValue.  Upon getting,
+the boxed value is duplicated and needs to be later freed with
+return_value);</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">boxed contents of @value</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="dup_object"
+              c:identifier="g_value_dup_object"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Get the contents of a %G_TYPE_OBJECT derived #GValue, increasing
+its reference count.
+longer needed.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">object content of @value, should be unreferenced when no</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="dup_param"
+              c:identifier="g_value_dup_param"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Get the contents of a %G_TYPE_PARAM #GValue, increasing its
+reference count.
+no longer needed.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">#GParamSpec content of @value, should be unreferenced when</doc>
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+      </method>
+      <method name="dup_string" c:identifier="g_value_dup_string">
+        <doc xml:whitespace="preserve">Get a copy the contents of a %G_TYPE_STRING #GValue.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated copy of the string content of @value</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="dup_variant"
+              c:identifier="g_value_dup_variant"
+              version="2.26">
+        <doc xml:whitespace="preserve">Get the contents of a variant #GValue, increasing its refcount.
+g_variant_unref() when no longer needed</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">variant contents of @value, should be unrefed using</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+      </method>
+      <method name="fits_pointer" c:identifier="g_value_fits_pointer">
+        <doc xml:whitespace="preserve">Determines if @value will fit inside the size of a pointer value.
+This is an internal function introduced mainly for C marshallers.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @value will fit inside a pointer value.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_boolean" c:identifier="g_value_get_boolean">
+        <doc xml:whitespace="preserve">Get the contents of a %G_TYPE_BOOLEAN #GValue.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">boolean contents of @value</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_boxed"
+              c:identifier="g_value_get_boxed"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Get the contents of a %G_TYPE_BOXED derived #GValue.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">boxed contents of @value</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="get_char" c:identifier="g_value_get_char">
+        <doc xml:whitespace="preserve">Get the contents of a %G_TYPE_CHAR #GValue.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">character contents of @value</doc>
+          <type name="gchar" c:type="gchar"/>
+        </return-value>
+      </method>
+      <method name="get_double" c:identifier="g_value_get_double">
+        <doc xml:whitespace="preserve">Get the contents of a %G_TYPE_DOUBLE #GValue.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">double contents of @value</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_enum" c:identifier="g_value_get_enum">
+        <doc xml:whitespace="preserve">Get the contents of a %G_TYPE_ENUM #GValue.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">enum contents of @value</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_flags" c:identifier="g_value_get_flags">
+        <doc xml:whitespace="preserve">Get the contents of a %G_TYPE_FLAGS #GValue.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags contents of @value</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_float" c:identifier="g_value_get_float">
+        <doc xml:whitespace="preserve">Get the contents of a %G_TYPE_FLOAT #GValue.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">float contents of @value</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_gtype" c:identifier="g_value_get_gtype" version="2.12">
+        <doc xml:whitespace="preserve">Get the contents of a %G_TYPE_GTYPE #GValue.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType stored in @value</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="get_int" c:identifier="g_value_get_int">
+        <doc xml:whitespace="preserve">Get the contents of a %G_TYPE_INT #GValue.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">integer contents of @value</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_int64" c:identifier="g_value_get_int64">
+        <doc xml:whitespace="preserve">Get the contents of a %G_TYPE_INT64 #GValue.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">64bit integer contents of @value</doc>
+          <type name="gint64" c:type="gint64"/>
+        </return-value>
+      </method>
+      <method name="get_long" c:identifier="g_value_get_long">
+        <doc xml:whitespace="preserve">Get the contents of a %G_TYPE_LONG #GValue.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">long integer contents of @value</doc>
+          <type name="glong" c:type="glong"/>
+        </return-value>
+      </method>
+      <method name="get_object"
+              c:identifier="g_value_get_object"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Get the contents of a %G_TYPE_OBJECT derived #GValue.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">object contents of @value</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="get_param"
+              c:identifier="g_value_get_param"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Get the contents of a %G_TYPE_PARAM #GValue.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">#GParamSpec content of @value</doc>
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+      </method>
+      <method name="get_pointer"
+              c:identifier="g_value_get_pointer"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Get the contents of a pointer #GValue.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">pointer contents of @value</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="get_string" c:identifier="g_value_get_string">
+        <doc xml:whitespace="preserve">Get the contents of a %G_TYPE_STRING #GValue.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">string content of @value</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_uchar" c:identifier="g_value_get_uchar">
+        <doc xml:whitespace="preserve">Get the contents of a %G_TYPE_UCHAR #GValue.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">unsigned character contents of @value</doc>
+          <type name="guint8" c:type="guchar"/>
+        </return-value>
+      </method>
+      <method name="get_uint" c:identifier="g_value_get_uint">
+        <doc xml:whitespace="preserve">Get the contents of a %G_TYPE_UINT #GValue.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">unsigned integer contents of @value</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_uint64" c:identifier="g_value_get_uint64">
+        <doc xml:whitespace="preserve">Get the contents of a %G_TYPE_UINT64 #GValue.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">unsigned 64bit integer contents of @value</doc>
+          <type name="guint64" c:type="guint64"/>
+        </return-value>
+      </method>
+      <method name="get_ulong" c:identifier="g_value_get_ulong">
+        <doc xml:whitespace="preserve">Get the contents of a %G_TYPE_ULONG #GValue.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">unsigned long integer contents of @value</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <method name="get_variant"
+              c:identifier="g_value_get_variant"
+              version="2.26">
+        <doc xml:whitespace="preserve">Get the contents of a variant #GValue.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">variant contents of @value</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </return-value>
+      </method>
+      <method name="init" c:identifier="g_value_init">
+        <doc xml:whitespace="preserve">Initializes @value with the default value of @type.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GValue structure that has been passed in</doc>
+          <type name="Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="g_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Type the #GValue should hold values of.</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_pointer"
+              c:identifier="g_value_peek_pointer"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Return the value contents as pointer. This function asserts that
+g_value_fits_pointer() returned %TRUE for the passed in value.
+This is an internal function introduced mainly for C marshallers.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">%TRUE if @value will fit inside a pointer value.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="reset" c:identifier="g_value_reset">
+        <doc xml:whitespace="preserve">Clears the current value in @value and resets it to the default value
+(as if the value had just been initialized).</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GValue structure that has been passed in</doc>
+          <type name="Value" c:type="GValue*"/>
+        </return-value>
+      </method>
+      <method name="set_boolean" c:identifier="g_value_set_boolean">
+        <doc xml:whitespace="preserve">Set the contents of a %G_TYPE_BOOLEAN #GValue to @v_boolean.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_boolean" transfer-ownership="none">
+            <doc xml:whitespace="preserve">boolean value to be set</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_boxed" c:identifier="g_value_set_boxed">
+        <doc xml:whitespace="preserve">Set the contents of a %G_TYPE_BOXED derived #GValue to @v_boxed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_boxed" transfer-ownership="none">
+            <doc xml:whitespace="preserve">boxed value to be set</doc>
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_boxed_take_ownership"
+              c:identifier="g_value_set_boxed_take_ownership"
+              deprecated="Use g_value_take_boxed() instead."
+              deprecated-version="2.4">
+        <doc xml:whitespace="preserve">This is an internal function introduced mainly for C marshallers.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_boxed" transfer-ownership="none">
+            <doc xml:whitespace="preserve">duplicated unowned boxed value to be set</doc>
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_char" c:identifier="g_value_set_char">
+        <doc xml:whitespace="preserve">Set the contents of a %G_TYPE_CHAR #GValue to @v_char.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_char" transfer-ownership="none">
+            <doc xml:whitespace="preserve">character value to be set</doc>
+            <type name="gchar" c:type="gchar"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_double" c:identifier="g_value_set_double">
+        <doc xml:whitespace="preserve">Set the contents of a %G_TYPE_DOUBLE #GValue to @v_double.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_double" transfer-ownership="none">
+            <doc xml:whitespace="preserve">double value to be set</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_enum" c:identifier="g_value_set_enum">
+        <doc xml:whitespace="preserve">Set the contents of a %G_TYPE_ENUM #GValue to @v_enum.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_enum" transfer-ownership="none">
+            <doc xml:whitespace="preserve">enum value to be set</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_flags" c:identifier="g_value_set_flags">
+        <doc xml:whitespace="preserve">Set the contents of a %G_TYPE_FLAGS #GValue to @v_flags.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags value to be set</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_float" c:identifier="g_value_set_float">
+        <doc xml:whitespace="preserve">Set the contents of a %G_TYPE_FLOAT #GValue to @v_float.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_float" transfer-ownership="none">
+            <doc xml:whitespace="preserve">float value to be set</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_gtype" c:identifier="g_value_set_gtype" version="2.12">
+        <doc xml:whitespace="preserve">Set the contents of a %G_TYPE_GTYPE #GValue to @v_gtype.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_gtype" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GType to be set</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_instance" c:identifier="g_value_set_instance">
+        <doc xml:whitespace="preserve">Sets @value from an instantiatable type via the
+value_table's collect_value() function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="instance" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the instance</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_int" c:identifier="g_value_set_int">
+        <doc xml:whitespace="preserve">Set the contents of a %G_TYPE_INT #GValue to @v_int.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_int" transfer-ownership="none">
+            <doc xml:whitespace="preserve">integer value to be set</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_int64" c:identifier="g_value_set_int64">
+        <doc xml:whitespace="preserve">Set the contents of a %G_TYPE_INT64 #GValue to @v_int64.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_int64" transfer-ownership="none">
+            <doc xml:whitespace="preserve">64bit integer value to be set</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_long" c:identifier="g_value_set_long">
+        <doc xml:whitespace="preserve">Set the contents of a %G_TYPE_LONG #GValue to @v_long.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_long" transfer-ownership="none">
+            <doc xml:whitespace="preserve">long integer value to be set</doc>
+            <type name="glong" c:type="glong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_object" c:identifier="g_value_set_object">
+        <doc xml:whitespace="preserve">Set the contents of a %G_TYPE_OBJECT derived #GValue to @v_object.
+g_value_set_object() increases the reference count of @v_object
+(the #GValue holds a reference to @v_object).  If you do not wish
+to increase the reference count of the object (i.e. you wish to
+pass your current reference to the #GValue because you no longer
+need it), use g_value_take_object() instead.
+It is important that your #GValue holds a reference to @v_object (either its
+own, or one it has taken) to ensure that the object won't be destroyed while
+the #GValue still exists).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">object value to be set</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_object_take_ownership"
+              c:identifier="g_value_set_object_take_ownership"
+              deprecated="Use g_value_take_object() instead."
+              deprecated-version="2.4">
+        <doc xml:whitespace="preserve">This is an internal function introduced mainly for C marshallers.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">object value to be set</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_param" c:identifier="g_value_set_param">
+        <doc xml:whitespace="preserve">Set the contents of a %G_TYPE_PARAM #GValue to @param.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="param" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GParamSpec to be set</doc>
+            <type name="ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_param_take_ownership"
+              c:identifier="g_value_set_param_take_ownership"
+              deprecated="Use g_value_take_param() instead."
+              deprecated-version="2.4">
+        <doc xml:whitespace="preserve">This is an internal function introduced mainly for C marshallers.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="param" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GParamSpec to be set</doc>
+            <type name="ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pointer" c:identifier="g_value_set_pointer">
+        <doc xml:whitespace="preserve">Set the contents of a pointer #GValue to @v_pointer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_pointer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer value to be set</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_static_boxed" c:identifier="g_value_set_static_boxed">
+        <doc xml:whitespace="preserve">Set the contents of a %G_TYPE_BOXED derived #GValue to @v_boxed.
+The boxed value is assumed to be static, and is thus not duplicated
+when setting the #GValue.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_boxed" transfer-ownership="none">
+            <doc xml:whitespace="preserve">static boxed value to be set</doc>
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_static_string"
+              c:identifier="g_value_set_static_string">
+        <doc xml:whitespace="preserve">Set the contents of a %G_TYPE_STRING #GValue to @v_string.
+The string is assumed to be static, and is thus not duplicated
+when setting the #GValue.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">static string to be set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_string" c:identifier="g_value_set_string">
+        <doc xml:whitespace="preserve">Set the contents of a %G_TYPE_STRING #GValue to @v_string.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">caller-owned string to be duplicated for the #GValue</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_string_take_ownership"
+              c:identifier="g_value_set_string_take_ownership"
+              deprecated="Use g_value_take_string() instead."
+              deprecated-version="2.4">
+        <doc xml:whitespace="preserve">This is an internal function introduced mainly for C marshallers.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">duplicated unowned string to be set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_uchar" c:identifier="g_value_set_uchar">
+        <doc xml:whitespace="preserve">Set the contents of a %G_TYPE_UCHAR #GValue to @v_uchar.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_uchar" transfer-ownership="none">
+            <doc xml:whitespace="preserve">unsigned character value to be set</doc>
+            <type name="guint8" c:type="guchar"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_uint" c:identifier="g_value_set_uint">
+        <doc xml:whitespace="preserve">Set the contents of a %G_TYPE_UINT #GValue to @v_uint.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_uint" transfer-ownership="none">
+            <doc xml:whitespace="preserve">unsigned integer value to be set</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_uint64" c:identifier="g_value_set_uint64">
+        <doc xml:whitespace="preserve">Set the contents of a %G_TYPE_UINT64 #GValue to @v_uint64.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_uint64" transfer-ownership="none">
+            <doc xml:whitespace="preserve">unsigned 64bit integer value to be set</doc>
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_ulong" c:identifier="g_value_set_ulong">
+        <doc xml:whitespace="preserve">Set the contents of a %G_TYPE_ULONG #GValue to @v_ulong.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_ulong" transfer-ownership="none">
+            <doc xml:whitespace="preserve">unsigned long integer value to be set</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_variant"
+              c:identifier="g_value_set_variant"
+              version="2.26">
+        <doc xml:whitespace="preserve">Set the contents of a variant #GValue to @variant.
+If the variant is floating, it is consumed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="variant" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GVariant, or %NULL</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_boxed"
+              c:identifier="g_value_take_boxed"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the contents of a %G_TYPE_BOXED derived #GValue to @v_boxed
+and takes over the ownership of the callers reference to @v_boxed;
+the caller doesn't have to unref it any more.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_boxed" transfer-ownership="none">
+            <doc xml:whitespace="preserve">duplicated unowned boxed value to be set</doc>
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_object"
+              c:identifier="g_value_take_object"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the contents of a %G_TYPE_OBJECT derived #GValue to @v_object
+and takes over the ownership of the callers reference to @v_object;
+the caller doesn't have to unref it any more (i.e. the reference
+count of the object is not increased).
+If you want the #GValue to hold its own reference to @v_object, use
+g_value_set_object() instead.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">object value to be set</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_param"
+              c:identifier="g_value_take_param"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the contents of a %G_TYPE_PARAM #GValue to @param and takes
+over the ownership of the callers reference to @param; the caller
+doesn't have to unref it any more.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="param" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GParamSpec to be set</doc>
+            <type name="ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_string"
+              c:identifier="g_value_take_string"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the contents of a %G_TYPE_STRING #GValue to @v_string.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">string to take ownership of</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_variant"
+              c:identifier="g_value_take_variant"
+              version="2.26">
+        <doc xml:whitespace="preserve">Set the contents of a variant #GValue to @variant, and takes over
+the ownership of the caller's reference to @variant;
+the caller doesn't have to unref it any more (i.e. the reference
+count of the variant is not increased).
+It is a programmer error to pass a floating variant to this function.
+In particular this means that callbacks in closures, and signal handlers
+for signals of return type %G_TYPE_VARIANT, must never return floating
+variants.
+If you want the #GValue to hold its own reference to @variant, use
+g_value_set_variant() instead.
+This is an internal function introduced mainly for C marshallers.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="variant" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GVariant, or %NULL</doc>
+            <type name="GLib.Variant" c:type="GVariant*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="transform" c:identifier="g_value_transform">
+        <doc xml:whitespace="preserve">Tries to cast the contents of @src_value into a type appropriate
+to store in @dest_value, e.g. to transform a %G_TYPE_INT value
+into a %G_TYPE_FLOAT value. Performing transformations between
+value types might incur precision lossage. Especially
+transformations into strings might reveal seemingly arbitrary
+results and shouldn't be relied upon for production code (such
+as rcfile value or object property serialization).
+Upon failing transformations, @dest_value is left untouched.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Whether a transformation rule was found and could be applied.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Target value.</doc>
+            <type name="Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset" c:identifier="g_value_unset">
+        <doc xml:whitespace="preserve">Clears the current value in @value and "unsets" the type,
+this releases all resources associated with this GValue.
+An unset value is the same as an uninitialized (zero-filled)
+#GValue structure.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="ValueArray"
+            c:type="GValueArray"
+            glib:type-name="GValueArray"
+            glib:get-type="g_value_array_get_type"
+            c:symbol-prefix="value_array">
+      <doc xml:whitespace="preserve">A #GValueArray contains an array of #GValue elements.</doc>
+      <field name="n_values" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="values" writable="1">
+        <type name="Value" c:type="GValue*"/>
+      </field>
+      <field name="n_prealloced" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <constructor name="new" c:identifier="g_value_array_new">
+        <doc xml:whitespace="preserve">Allocate and initialize a new #GValueArray, optionally preserve space
+for @n_prealloced elements. New arrays always contain 0 elements,
+regardless of the value of @n_prealloced.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated #GValueArray with 0 values</doc>
+          <type name="ValueArray" c:type="GValueArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_prealloced" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of values to preallocate space for</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="append" c:identifier="g_value_array_append">
+        <doc xml:whitespace="preserve">Insert a copy of @value as last element of @value_array. If @value is
+%NULL, an uninitialized value is appended.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GValueArray passed in as @value_array</doc>
+          <type name="ValueArray" c:type="GValueArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GValue to copy into #GValueArray, or %NULL</doc>
+            <type name="Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="g_value_array_copy">
+        <doc xml:whitespace="preserve">Construct an exact copy of a #GValueArray by duplicating all its
+contents.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">Newly allocated copy of #GValueArray</doc>
+          <type name="ValueArray" c:type="GValueArray*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="g_value_array_free">
+        <doc xml:whitespace="preserve">Free a #GValueArray including its contents.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_nth" c:identifier="g_value_array_get_nth">
+        <doc xml:whitespace="preserve">Return a pointer to the value at @index_ containd in @value_array.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">pointer to a value at @index_ in @value_array</doc>
+          <type name="Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">index of the value of interest</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert" c:identifier="g_value_array_insert">
+        <doc xml:whitespace="preserve">Insert a copy of @value at specified position into @value_array. If @value
+is %NULL, an uninitialized value is inserted.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GValueArray passed in as @value_array</doc>
+          <type name="ValueArray" c:type="GValueArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">insertion position, must be &amp;lt;= value_array-&amp;gt;n_values</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GValue to copy into #GValueArray, or %NULL</doc>
+            <type name="Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend" c:identifier="g_value_array_prepend">
+        <doc xml:whitespace="preserve">Insert a copy of @value as first element of @value_array. If @value is
+%NULL, an uninitialized value is prepended.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GValueArray passed in as @value_array</doc>
+          <type name="ValueArray" c:type="GValueArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GValue to copy into #GValueArray, or %NULL</doc>
+            <type name="Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove" c:identifier="g_value_array_remove">
+        <doc xml:whitespace="preserve">Remove the value at position @index_ from @value_array.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GValueArray passed in as @value_array</doc>
+          <type name="ValueArray" c:type="GValueArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position of value to remove, must be &amp;lt; value_array-&gt;n_values</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sort" c:identifier="g_value_array_sort" introspectable="0">
+        <doc xml:whitespace="preserve">Sort @value_array using @compare_func to compare the elements accoring to
+the semantics of #GCompareFunc.
+The current implementation uses Quick-Sort as sorting algorithm.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GValueArray passed in as @value_array</doc>
+          <type name="ValueArray" c:type="GValueArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="compare_func" transfer-ownership="none">
+            <doc xml:whitespace="preserve">function to compare elements</doc>
+            <type name="GLib.CompareFunc" c:type="GCompareFunc"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sort_with_data"
+              c:identifier="g_value_array_sort_with_data"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sort @value_array using @compare_func to compare the elements accoring
+to the semantics of #GCompareDataFunc.
+The current implementation uses Quick-Sort as sorting algorithm.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GValueArray passed in as @value_array</doc>
+          <type name="ValueArray" c:type="GValueArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="compare_func" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">function to compare elements</doc>
+            <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">extra data argument provided for @compare_func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="ValueTransform" c:type="GValueTransform">
+      <doc xml:whitespace="preserve">The type of value transformation functions which can be registered with
+g_value_register_transform_func().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="src_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Source value.</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="dest_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Target value.</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="WeakNotify" c:type="GWeakNotify">
+      <doc xml:whitespace="preserve">A #GWeakNotify function can be added to an object as a callback that gets
+triggered when the object is finalized. Since the object is already being
+finalized when the #GWeakNotify is called, there's not much you could do 
+with the object, apart from e.g. using its adress as hash-index or the like.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data that was provided when the weak reference was established</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="where_the_object_was" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object being finalized</doc>
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="boxed_copy" c:identifier="g_boxed_copy" introspectable="0">
+      <doc xml:whitespace="preserve">Provide a copy of a boxed structure @src_boxed which is of type @boxed_type.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">The newly created copy of the boxed structure.</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="boxed_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The type of @src_boxed.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="src_boxed" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The boxed structure to be copied.</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="boxed_free" c:identifier="g_boxed_free">
+      <doc xml:whitespace="preserve">Free the boxed structure @boxed which is of type @boxed_type.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="boxed_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The type of @boxed.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="boxed" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The boxed structure to be freed.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="boxed_type_init" c:identifier="g_boxed_type_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="boxed_type_register_static"
+              c:identifier="g_boxed_type_register_static"
+              introspectable="0">
+      <doc xml:whitespace="preserve">This function creates a new %G_TYPE_BOXED derived type id for a new
+boxed type with name @name. Boxed type handling functions have to be
+provided to copy and free opaque boxed structures of this type.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">New %G_TYPE_BOXED derived type id for @name.</doc>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Name of the new boxed type.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="boxed_copy" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Boxed structure copy function.</doc>
+          <type name="BoxedCopyFunc" c:type="GBoxedCopyFunc"/>
+        </parameter>
+        <parameter name="boxed_free" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Boxed structure free function.</doc>
+          <type name="BoxedFreeFunc" c:type="GBoxedFreeFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_BOOLEAN__BOXED_BOXED"
+              c:identifier="g_cclosure_marshal_BOOLEAN__BOXED_BOXED">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure" transfer-ownership="none">
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_BOOLEAN__FLAGS"
+              c:identifier="g_cclosure_marshal_BOOLEAN__FLAGS">
+      <doc xml:whitespace="preserve">A marshaller for a #GCClosure with a callback of type
+&lt;literal&gt;gboolean (*callback) (gpointer instance, gint arg1, gpointer user_data)&lt;/literal&gt; where the #gint parameter
+denotes a flags type.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GClosure to which the marshaller belongs</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue which can store the returned #gboolean</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">2</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue array holding instance and arg1</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the invocation hint given as the last argument to g_closure_invoke()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">additional data specified when registering the marshaller</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_STRING__OBJECT_POINTER"
+              c:identifier="g_cclosure_marshal_STRING__OBJECT_POINTER">
+      <doc xml:whitespace="preserve">A marshaller for a #GCClosure with a callback of type
+&lt;literal&gt;gchar* (*callback) (gpointer instance, GObject *arg1, gpointer arg2, gpointer user_data)&lt;/literal&gt;.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GClosure to which the marshaller belongs</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue, which can store the returned string</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">3</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue array holding instance, arg1 and arg2</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the invocation hint given as the last argument to g_closure_invoke()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">additional data specified when registering the marshaller</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_VOID__BOOLEAN"
+              c:identifier="g_cclosure_marshal_VOID__BOOLEAN">
+      <doc xml:whitespace="preserve">A marshaller for a #GCClosure with a callback of type
+&lt;literal&gt;void (*callback) (gpointer instance, gboolean arg1, gpointer user_data)&lt;/literal&gt;.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GClosure to which the marshaller belongs</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">ignored</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">2</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue array holding the instance and the #gboolean parameter</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the invocation hint given as the last argument to g_closure_invoke()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">additional data specified when registering the marshaller</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_VOID__BOXED"
+              c:identifier="g_cclosure_marshal_VOID__BOXED">
+      <doc xml:whitespace="preserve">A marshaller for a #GCClosure with a callback of type
+&lt;literal&gt;void (*callback) (gpointer instance, GBoxed *arg1, gpointer user_data)&lt;/literal&gt;.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GClosure to which the marshaller belongs</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">ignored</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">2</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue array holding the instance and the #GBoxed* parameter</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the invocation hint given as the last argument to g_closure_invoke()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">additional data specified when registering the marshaller</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_VOID__CHAR"
+              c:identifier="g_cclosure_marshal_VOID__CHAR">
+      <doc xml:whitespace="preserve">A marshaller for a #GCClosure with a callback of type
+&lt;literal&gt;void (*callback) (gpointer instance, gchar arg1, gpointer user_data)&lt;/literal&gt;.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GClosure to which the marshaller belongs</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">ignored</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">2</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue array holding the instance and the #gchar parameter</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the invocation hint given as the last argument to g_closure_invoke()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">additional data specified when registering the marshaller</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_VOID__DOUBLE"
+              c:identifier="g_cclosure_marshal_VOID__DOUBLE">
+      <doc xml:whitespace="preserve">A marshaller for a #GCClosure with a callback of type
+&lt;literal&gt;void (*callback) (gpointer instance, gdouble arg1, gpointer user_data)&lt;/literal&gt;.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GClosure to which the marshaller belongs</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">ignored</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">2</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue array holding the instance and the #gdouble parameter</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the invocation hint given as the last argument to g_closure_invoke()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">additional data specified when registering the marshaller</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_VOID__ENUM"
+              c:identifier="g_cclosure_marshal_VOID__ENUM">
+      <doc xml:whitespace="preserve">A marshaller for a #GCClosure with a callback of type
+&lt;literal&gt;void (*callback) (gpointer instance, gint arg1, gpointer user_data)&lt;/literal&gt; where the #gint parameter denotes an enumeration type..</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GClosure to which the marshaller belongs</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">ignored</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">2</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue array holding the instance and the enumeration parameter</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the invocation hint given as the last argument to g_closure_invoke()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">additional data specified when registering the marshaller</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_VOID__FLAGS"
+              c:identifier="g_cclosure_marshal_VOID__FLAGS">
+      <doc xml:whitespace="preserve">A marshaller for a #GCClosure with a callback of type
+&lt;literal&gt;void (*callback) (gpointer instance, gint arg1, gpointer user_data)&lt;/literal&gt; where the #gint parameter denotes a flags type.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GClosure to which the marshaller belongs</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">ignored</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">2</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue array holding the instance and the flags parameter</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the invocation hint given as the last argument to g_closure_invoke()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">additional data specified when registering the marshaller</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_VOID__FLOAT"
+              c:identifier="g_cclosure_marshal_VOID__FLOAT">
+      <doc xml:whitespace="preserve">A marshaller for a #GCClosure with a callback of type
+&lt;literal&gt;void (*callback) (gpointer instance, gfloat arg1, gpointer user_data)&lt;/literal&gt;.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GClosure to which the marshaller belongs</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">ignored</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">2</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue array holding the instance and the #gfloat parameter</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the invocation hint given as the last argument to g_closure_invoke()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">additional data specified when registering the marshaller</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_VOID__INT"
+              c:identifier="g_cclosure_marshal_VOID__INT">
+      <doc xml:whitespace="preserve">A marshaller for a #GCClosure with a callback of type
+&lt;literal&gt;void (*callback) (gpointer instance, gint arg1, gpointer user_data)&lt;/literal&gt;.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GClosure to which the marshaller belongs</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">ignored</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">2</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue array holding the instance and the #gint parameter</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the invocation hint given as the last argument to g_closure_invoke()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">additional data specified when registering the marshaller</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_VOID__LONG"
+              c:identifier="g_cclosure_marshal_VOID__LONG">
+      <doc xml:whitespace="preserve">A marshaller for a #GCClosure with a callback of type
+&lt;literal&gt;void (*callback) (gpointer instance, glong arg1, gpointer user_data)&lt;/literal&gt;.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GClosure to which the marshaller belongs</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">ignored</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">2</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue array holding the instance and the #glong parameter</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the invocation hint given as the last argument to g_closure_invoke()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">additional data specified when registering the marshaller</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_VOID__OBJECT"
+              c:identifier="g_cclosure_marshal_VOID__OBJECT">
+      <doc xml:whitespace="preserve">A marshaller for a #GCClosure with a callback of type
+&lt;literal&gt;void (*callback) (gpointer instance, GObject *arg1, gpointer user_data)&lt;/literal&gt;.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GClosure to which the marshaller belongs</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">ignored</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">2</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue array holding the instance and the #GObject* parameter</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the invocation hint given as the last argument to g_closure_invoke()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">additional data specified when registering the marshaller</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_VOID__PARAM"
+              c:identifier="g_cclosure_marshal_VOID__PARAM">
+      <doc xml:whitespace="preserve">A marshaller for a #GCClosure with a callback of type
+&lt;literal&gt;void (*callback) (gpointer instance, GParamSpec *arg1, gpointer user_data)&lt;/literal&gt;.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GClosure to which the marshaller belongs</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">ignored</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">2</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue array holding the instance and the #GParamSpec* parameter</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the invocation hint given as the last argument to g_closure_invoke()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">additional data specified when registering the marshaller</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_VOID__POINTER"
+              c:identifier="g_cclosure_marshal_VOID__POINTER">
+      <doc xml:whitespace="preserve">A marshaller for a #GCClosure with a callback of type
+&lt;literal&gt;void (*callback) (gpointer instance, gpointer arg1, gpointer user_data)&lt;/literal&gt;.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GClosure to which the marshaller belongs</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">ignored</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">2</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue array holding the instance and the #gpointer parameter</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the invocation hint given as the last argument to g_closure_invoke()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">additional data specified when registering the marshaller</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_VOID__STRING"
+              c:identifier="g_cclosure_marshal_VOID__STRING">
+      <doc xml:whitespace="preserve">A marshaller for a #GCClosure with a callback of type
+&lt;literal&gt;void (*callback) (gpointer instance, const gchar *arg1, gpointer user_data)&lt;/literal&gt;.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GClosure to which the marshaller belongs</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">ignored</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">2</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue array holding the instance and the #gchar* parameter</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the invocation hint given as the last argument to g_closure_invoke()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">additional data specified when registering the marshaller</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_VOID__UCHAR"
+              c:identifier="g_cclosure_marshal_VOID__UCHAR">
+      <doc xml:whitespace="preserve">A marshaller for a #GCClosure with a callback of type
+&lt;literal&gt;void (*callback) (gpointer instance, guchar arg1, gpointer user_data)&lt;/literal&gt;.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GClosure to which the marshaller belongs</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">ignored</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">2</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue array holding the instance and the #guchar parameter</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the invocation hint given as the last argument to g_closure_invoke()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">additional data specified when registering the marshaller</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_VOID__UINT"
+              c:identifier="g_cclosure_marshal_VOID__UINT">
+      <doc xml:whitespace="preserve">A marshaller for a #GCClosure with a callback of type
+&lt;literal&gt;void (*callback) (gpointer instance, guint arg1, gpointer user_data)&lt;/literal&gt;.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GClosure to which the marshaller belongs</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">ignored</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">2</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue array holding the instance and the #guint parameter</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the invocation hint given as the last argument to g_closure_invoke()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">additional data specified when registering the marshaller</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_VOID__UINT_POINTER"
+              c:identifier="g_cclosure_marshal_VOID__UINT_POINTER">
+      <doc xml:whitespace="preserve">A marshaller for a #GCClosure with a callback of type
+&lt;literal&gt;void (*callback) (gpointer instance, guint arg1, gpointer arg2, gpointer user_data)&lt;/literal&gt;.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GClosure to which the marshaller belongs</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">ignored</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">3</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue array holding instance, arg1 and arg2</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the invocation hint given as the last argument to g_closure_invoke()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">additional data specified when registering the marshaller</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_VOID__ULONG"
+              c:identifier="g_cclosure_marshal_VOID__ULONG">
+      <doc xml:whitespace="preserve">A marshaller for a #GCClosure with a callback of type
+&lt;literal&gt;void (*callback) (gpointer instance, gulong arg1, gpointer user_data)&lt;/literal&gt;.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GClosure to which the marshaller belongs</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">ignored</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">2</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue array holding the instance and the #gulong parameter</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the invocation hint given as the last argument to g_closure_invoke()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">additional data specified when registering the marshaller</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_VOID__VARIANT"
+              c:identifier="g_cclosure_marshal_VOID__VARIANT"
+              version="2.26">
+      <doc xml:whitespace="preserve">A marshaller for a #GCClosure with a callback of type
+&lt;literal&gt;void (*callback) (gpointer instance, GVariant *arg1, gpointer user_data)&lt;/literal&gt;.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GClosure to which the marshaller belongs</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">ignored</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">2</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue array holding the instance and the #GVariant* parameter</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the invocation hint given as the last argument to g_closure_invoke()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">additional data specified when registering the marshaller</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_VOID__VOID"
+              c:identifier="g_cclosure_marshal_VOID__VOID">
+      <doc xml:whitespace="preserve">A marshaller for a #GCClosure with a callback of type
+&lt;literal&gt;void (*callback) (gpointer instance, gpointer user_data)&lt;/literal&gt;.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GClosure to which the marshaller belongs</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">ignored</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">1</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue array holding only the instance</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the invocation hint given as the last argument to g_closure_invoke()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">additional data specified when registering the marshaller</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_new"
+              c:identifier="g_cclosure_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new closure which invokes @callback_func with @user_data as
+the last parameter.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GCClosure</doc>
+        <type name="Closure" c:type="GClosure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="callback_func" transfer-ownership="none" closure="1">
+          <doc xml:whitespace="preserve">the function to invoke</doc>
+          <type name="Callback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data to pass to @callback_func</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">destroy notify to be called when @user_data is no longer used</doc>
+          <type name="ClosureNotify" c:type="GClosureNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_new_object"
+              c:identifier="g_cclosure_new_object"
+              introspectable="0">
+      <doc xml:whitespace="preserve">A variant of g_cclosure_new() which uses @object as @user_data and
+calls g_object_watch_closure() on @object and the created
+closure. This function is useful when you have a callback closely
+associated with a #GObject, and want the callback to no longer run
+after the object is is freed.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GCClosure</doc>
+        <type name="Closure" c:type="GClosure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="callback_func" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the function to invoke</doc>
+          <type name="Callback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObject pointer to pass to @callback_func</doc>
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_new_object_swap"
+              c:identifier="g_cclosure_new_object_swap"
+              introspectable="0">
+      <doc xml:whitespace="preserve">A variant of g_cclosure_new_swap() which uses @object as @user_data
+and calls g_object_watch_closure() on @object and the created
+closure. This function is useful when you have a callback closely
+associated with a #GObject, and want the callback to no longer run
+after the object is is freed.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GCClosure</doc>
+        <type name="Closure" c:type="GClosure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="callback_func" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the function to invoke</doc>
+          <type name="Callback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObject pointer to pass to @callback_func</doc>
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_new_swap"
+              c:identifier="g_cclosure_new_swap"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new closure which invokes @callback_func with @user_data as
+the first parameter.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GCClosure</doc>
+        <type name="Closure" c:type="GClosure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="callback_func" transfer-ownership="none" closure="1">
+          <doc xml:whitespace="preserve">the function to invoke</doc>
+          <type name="Callback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data to pass to @callback_func</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">destroy notify to be called when @user_data is no longer used</doc>
+          <type name="ClosureNotify" c:type="GClosureNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="enum_complete_type_info"
+              c:identifier="g_enum_complete_type_info">
+      <doc xml:whitespace="preserve">This function is meant to be called from the complete_type_info()
+function of a #GTypePlugin implementation, as in the following
+example:
+|[
+static void
+my_enum_complete_type_info (GTypePlugin     *plugin,
+GType            g_type,
+GTypeInfo       *info,
+GTypeValueTable *value_table)
+{
+static const GEnumValue values[] = {
+{ MY_ENUM_FOO, "MY_ENUM_FOO", "foo" },
+{ MY_ENUM_BAR, "MY_ENUM_BAR", "bar" },
+{ 0, NULL, NULL }
+};
+g_enum_complete_type_info (type, info, values);
+}
+]|</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_enum_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type identifier of the type being completed</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="info" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GTypeInfo struct to be filled in</doc>
+          <type name="TypeInfo" c:type="GTypeInfo*"/>
+        </parameter>
+        <parameter name="const_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An array of #GEnumValue structs for the possible enumeration values. The array is terminated by a struct with all members being 0.</doc>
+          <type name="EnumValue" c:type="GEnumValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="enum_get_value"
+              c:identifier="g_enum_get_value"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Returns the #GEnumValue for a value.
+member of the enumeration</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the #GEnumValue for @value, or %NULL if @value is not a</doc>
+        <type name="EnumValue" c:type="GEnumValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="enum_class" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GEnumClass</doc>
+          <type name="EnumClass" c:type="GEnumClass*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value to look up</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="enum_get_value_by_name"
+              c:identifier="g_enum_get_value_by_name"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Looks up a #GEnumValue by name.
+enumeration doesn't have a member with that name</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the #GEnumValue with name @name, or %NULL if the</doc>
+        <type name="EnumValue" c:type="GEnumValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="enum_class" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GEnumClass</doc>
+          <type name="EnumClass" c:type="GEnumClass*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name to look up</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="enum_get_value_by_nick"
+              c:identifier="g_enum_get_value_by_nick"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Looks up a #GEnumValue by nickname.
+enumeration doesn't have a member with that nickname</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the #GEnumValue with nickname @nick, or %NULL if the</doc>
+        <type name="EnumValue" c:type="GEnumValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="enum_class" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GEnumClass</doc>
+          <type name="EnumClass" c:type="GEnumClass*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the nickname to look up</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="enum_register_static"
+              c:identifier="g_enum_register_static">
+      <doc xml:whitespace="preserve">Registers a new static enumeration type with the name @name.
+It is normally more convenient to let &lt;link
+linkend="glib-mkenums"&gt;glib-mkenums&lt;/link&gt; generate a
+my_enum_get_type() function from a usual C enumeration definition
+than to write one yourself using g_enum_register_static().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The new type identifier.</doc>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A nul-terminated string used as the name of the new type.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="const_static_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An array of #GEnumValue structs for the possible enumeration values. The array is terminated by a struct with all members being 0. GObject keeps a reference to the data, so it cannot be stack-allocated.</doc>
+          <type name="EnumValue" c:type="GEnumValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="enum_types_init" c:identifier="g_enum_types_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="flags_complete_type_info"
+              c:identifier="g_flags_complete_type_info">
+      <doc xml:whitespace="preserve">This function is meant to be called from the complete_type_info()
+function of a #GTypePlugin implementation, see the example for
+g_enum_complete_type_info() above.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_flags_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type identifier of the type being completed</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="info" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GTypeInfo struct to be filled in</doc>
+          <type name="TypeInfo" c:type="GTypeInfo*"/>
+        </parameter>
+        <parameter name="const_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An array of #GFlagsValue structs for the possible enumeration values. The array is terminated by a struct with all members being 0.</doc>
+          <type name="FlagsValue" c:type="GFlagsValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flags_get_first_value"
+              c:identifier="g_flags_get_first_value"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Returns the first #GFlagsValue which is set in @value.
+none is set</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the first #GFlagsValue which is set in @value, or %NULL if</doc>
+        <type name="FlagsValue" c:type="GFlagsValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="flags_class" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GFlagsClass</doc>
+          <type name="FlagsClass" c:type="GFlagsClass*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flags_get_value_by_name"
+              c:identifier="g_flags_get_value_by_name"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Looks up a #GFlagsValue by name.
+flag with that name</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the #GFlagsValue with name @name, or %NULL if there is no</doc>
+        <type name="FlagsValue" c:type="GFlagsValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="flags_class" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GFlagsClass</doc>
+          <type name="FlagsClass" c:type="GFlagsClass*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name to look up</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flags_get_value_by_nick"
+              c:identifier="g_flags_get_value_by_nick"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Looks up a #GFlagsValue by nickname.
+no flag with that nickname</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the #GFlagsValue with nickname @nick, or %NULL if there is</doc>
+        <type name="FlagsValue" c:type="GFlagsValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="flags_class" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GFlagsClass</doc>
+          <type name="FlagsClass" c:type="GFlagsClass*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the nickname to look up</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flags_register_static"
+              c:identifier="g_flags_register_static">
+      <doc xml:whitespace="preserve">Registers a new static flags type with the name @name.
+It is normally more convenient to let &lt;link
+linkend="glib-mkenums"&gt;glib-mkenums&lt;/link&gt; generate a
+my_flags_get_type() function from a usual C enumeration definition
+than to write one yourself using g_flags_register_static().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The new type identifier.</doc>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A nul-terminated string used as the name of the new type.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="const_static_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An array of #GFlagsValue structs for the possible flags values. The array is terminated by a struct with all members being 0. GObject keeps a reference to the data, so it cannot be stack-allocated.</doc>
+          <type name="FlagsValue" c:type="GFlagsValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gtype_get_type" c:identifier="g_gtype_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="object_get_type" c:identifier="g_object_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="param_spec_boolean"
+              c:identifier="g_param_spec_boolean"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpecBoolean instance specifying a %G_TYPE_BOOLEAN
+property.
+See g_param_spec_internal() for details on property names.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly created parameter specification</doc>
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">canonical name of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">nick name for the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">default value for the property specified</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the property specified</doc>
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_boxed"
+              c:identifier="g_param_spec_boxed"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpecBoxed instance specifying a %G_TYPE_BOXED
+derived property.
+See g_param_spec_internal() for details on property names.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly created parameter specification</doc>
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">canonical name of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">nick name for the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="boxed_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%G_TYPE_BOXED derived type of this property</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the property specified</doc>
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_char"
+              c:identifier="g_param_spec_char"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpecChar instance specifying a %G_TYPE_CHAR property.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly created parameter specification</doc>
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">canonical name of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">nick name for the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="minimum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">minimum value for the property specified</doc>
+          <type name="gint8" c:type="gint8"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">maximum value for the property specified</doc>
+          <type name="gint8" c:type="gint8"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">default value for the property specified</doc>
+          <type name="gint8" c:type="gint8"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the property specified</doc>
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_double"
+              c:identifier="g_param_spec_double"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpecDouble instance specifying a %G_TYPE_DOUBLE
+property.
+See g_param_spec_internal() for details on property names.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly created parameter specification</doc>
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">canonical name of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">nick name for the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="minimum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">minimum value for the property specified</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">maximum value for the property specified</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">default value for the property specified</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the property specified</doc>
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_enum"
+              c:identifier="g_param_spec_enum"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpecEnum instance specifying a %G_TYPE_ENUM
+property.
+See g_param_spec_internal() for details on property names.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly created parameter specification</doc>
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">canonical name of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">nick name for the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="enum_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GType derived from %G_TYPE_ENUM</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">default value for the property specified</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the property specified</doc>
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_flags"
+              c:identifier="g_param_spec_flags"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpecFlags instance specifying a %G_TYPE_FLAGS
+property.
+See g_param_spec_internal() for details on property names.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly created parameter specification</doc>
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">canonical name of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">nick name for the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flags_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GType derived from %G_TYPE_FLAGS</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">default value for the property specified</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the property specified</doc>
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_float"
+              c:identifier="g_param_spec_float"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpecFloat instance specifying a %G_TYPE_FLOAT property.
+See g_param_spec_internal() for details on property names.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly created parameter specification</doc>
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">canonical name of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">nick name for the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="minimum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">minimum value for the property specified</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">maximum value for the property specified</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">default value for the property specified</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the property specified</doc>
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_gtype"
+              c:identifier="g_param_spec_gtype"
+              version="2.10"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpecGType instance specifying a
+%G_TYPE_GTYPE property.
+See g_param_spec_internal() for details on property names.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly created parameter specification</doc>
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">canonical name of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">nick name for the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="is_a_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GType whose subtypes are allowed as values of the property (use %G_TYPE_NONE for any type)</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the property specified</doc>
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_int"
+              c:identifier="g_param_spec_int"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpecInt instance specifying a %G_TYPE_INT property.
+See g_param_spec_internal() for details on property names.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly created parameter specification</doc>
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">canonical name of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">nick name for the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="minimum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">minimum value for the property specified</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">maximum value for the property specified</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">default value for the property specified</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the property specified</doc>
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_int64"
+              c:identifier="g_param_spec_int64"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpecInt64 instance specifying a %G_TYPE_INT64 property.
+See g_param_spec_internal() for details on property names.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly created parameter specification</doc>
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">canonical name of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">nick name for the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="minimum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">minimum value for the property specified</doc>
+          <type name="gint64" c:type="gint64"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">maximum value for the property specified</doc>
+          <type name="gint64" c:type="gint64"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">default value for the property specified</doc>
+          <type name="gint64" c:type="gint64"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the property specified</doc>
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_internal"
+              c:identifier="g_param_spec_internal"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpec instance.
+A property name consists of segments consisting of ASCII letters and
+digits, separated by either the '-' or '_' character. The first
+character of a property name must be a letter. Names which violate these
+rules lead to undefined behaviour.
+When creating and looking up a #GParamSpec, either separator can be
+used, but they cannot be mixed. Using '-' is considerably more
+efficient and in fact required when using property names as detail
+strings for signals.
+Beyond the name, #GParamSpec&lt;!-- --&gt;s have two more descriptive
+strings associated with them, the @nick, which should be suitable
+for use as a label for the property in a property editor, and the
+e.g. a tooltip. The @nick and @blurb should ideally be localized.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly allocated #GParamSpec instance</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="param_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType for the property; must be derived from #G_TYPE_PARAM</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the canonical name of the property</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the nickname of the property</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a short description of the property</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a combination of #GParamFlags</doc>
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_long"
+              c:identifier="g_param_spec_long"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpecLong instance specifying a %G_TYPE_LONG property.
+See g_param_spec_internal() for details on property names.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly created parameter specification</doc>
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">canonical name of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">nick name for the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="minimum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">minimum value for the property specified</doc>
+          <type name="glong" c:type="glong"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">maximum value for the property specified</doc>
+          <type name="glong" c:type="glong"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">default value for the property specified</doc>
+          <type name="glong" c:type="glong"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the property specified</doc>
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_object"
+              c:identifier="g_param_spec_object"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpecBoxed instance specifying a %G_TYPE_OBJECT
+derived property.
+See g_param_spec_internal() for details on property names.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly created parameter specification</doc>
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">canonical name of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">nick name for the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="object_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%G_TYPE_OBJECT derived type of this property</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the property specified</doc>
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_override"
+              c:identifier="g_param_spec_override"
+              version="2.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new property of type #GParamSpecOverride. This is used
+to direct operations to another paramspec, and will not be directly
+useful unless you are implementing a new base type similar to GObject.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly created #GParamSpec</doc>
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the property.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="overridden" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The property that is being overridden</doc>
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_param"
+              c:identifier="g_param_spec_param"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpecParam instance specifying a %G_TYPE_PARAM
+property.
+See g_param_spec_internal() for details on property names.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly created parameter specification</doc>
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">canonical name of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">nick name for the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="param_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GType derived from %G_TYPE_PARAM</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the property specified</doc>
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_pointer"
+              c:identifier="g_param_spec_pointer"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpecPoiner instance specifying a pointer property.
+See g_param_spec_internal() for details on property names.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly created parameter specification</doc>
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">canonical name of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">nick name for the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the property specified</doc>
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_pool_new"
+              c:identifier="g_param_spec_pool_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpecPool.
+If @type_prefixing is %TRUE, lookups in the newly created pool will
+allow to specify the owner as a colon-separated prefix of the
+property name, like "GtkContainer:border-width". This feature is
+deprecated, so you should always set @type_prefixing to %FALSE.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly allocated #GParamSpecPool.</doc>
+        <type name="ParamSpecPool" c:type="GParamSpecPool*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type_prefixing" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Whether the pool will support type-prefixed property names.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_string"
+              c:identifier="g_param_spec_string"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpecString instance.
+See g_param_spec_internal() for details on property names.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly created parameter specification</doc>
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">canonical name of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">nick name for the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">default value for the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the property specified</doc>
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_types_init"
+              c:identifier="g_param_spec_types_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="param_spec_uchar"
+              c:identifier="g_param_spec_uchar"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpecUChar instance specifying a %G_TYPE_UCHAR property.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly created parameter specification</doc>
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">canonical name of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">nick name for the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="minimum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">minimum value for the property specified</doc>
+          <type name="guint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">maximum value for the property specified</doc>
+          <type name="guint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">default value for the property specified</doc>
+          <type name="guint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the property specified</doc>
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_uint"
+              c:identifier="g_param_spec_uint"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpecUInt instance specifying a %G_TYPE_UINT property.
+See g_param_spec_internal() for details on property names.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly created parameter specification</doc>
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">canonical name of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">nick name for the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="minimum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">minimum value for the property specified</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">maximum value for the property specified</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">default value for the property specified</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the property specified</doc>
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_uint64"
+              c:identifier="g_param_spec_uint64"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpecUInt64 instance specifying a %G_TYPE_UINT64
+property.
+See g_param_spec_internal() for details on property names.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly created parameter specification</doc>
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">canonical name of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">nick name for the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="minimum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">minimum value for the property specified</doc>
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">maximum value for the property specified</doc>
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">default value for the property specified</doc>
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the property specified</doc>
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_ulong"
+              c:identifier="g_param_spec_ulong"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpecULong instance specifying a %G_TYPE_ULONG
+property.
+See g_param_spec_internal() for details on property names.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly created parameter specification</doc>
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">canonical name of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">nick name for the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="minimum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">minimum value for the property specified</doc>
+          <type name="gulong" c:type="gulong"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">maximum value for the property specified</doc>
+          <type name="gulong" c:type="gulong"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">default value for the property specified</doc>
+          <type name="gulong" c:type="gulong"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the property specified</doc>
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_unichar"
+              c:identifier="g_param_spec_unichar"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpecUnichar instance specifying a %G_TYPE_UINT
+property. #GValue structures for this property can be accessed with
+g_value_set_uint() and g_value_get_uint().
+See g_param_spec_internal() for details on property names.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly created parameter specification</doc>
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">canonical name of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">nick name for the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">default value for the property specified</doc>
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the property specified</doc>
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_value_array"
+              c:identifier="g_param_spec_value_array"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpecValueArray instance specifying a
+%G_TYPE_VALUE_ARRAY property. %G_TYPE_VALUE_ARRAY is a
+%G_TYPE_BOXED type, as such, #GValue structures for this property
+can be accessed with g_value_set_boxed() and g_value_get_boxed().
+See g_param_spec_internal() for details on property names.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly created parameter specification</doc>
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">canonical name of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">nick name for the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="element_spec" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GParamSpec describing the elements contained in arrays of this property, may be %NULL</doc>
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the property specified</doc>
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_variant"
+              c:identifier="g_param_spec_variant"
+              version="2.26"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpecVariant instance specifying a #GVariant
+property.
+If @default_value is floating, it is consumed.
+See g_param_spec_internal() for details on property names.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly created #GParamSpec</doc>
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">canonical name of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">nick name for the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description of the property specified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GVariantType</doc>
+          <type name="GLib.VariantType" c:type="GVariantType*"/>
+        </parameter>
+        <parameter name="default_value"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">a #GVariant of type @type to use as the default value, or %NULL</doc>
+          <type name="GLib.Variant" c:type="GVariant*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the property specified</doc>
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_type_init" c:identifier="g_param_type_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="param_type_register_static"
+              c:identifier="g_param_type_register_static">
+      <doc xml:whitespace="preserve">Registers @name as the name of a new static type derived from
+#G_TYPE_PARAM. The type system uses the information contained in
+the #GParamSpecTypeInfo structure pointed to by @info to manage the
+#GParamSpec type and its instances.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The new type identifier.</doc>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">0-terminated string used as the name of the new #GParamSpec type.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="pspec_info" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GParamSpecTypeInfo for this #GParamSpec type.</doc>
+          <type name="ParamSpecTypeInfo" c:type="GParamSpecTypeInfo*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_value_convert" c:identifier="g_param_value_convert">
+      <doc xml:whitespace="preserve">Transforms @src_value into @dest_value if possible, and then
+validates @dest_value, in order for it to conform to @pspec.  If
+transformed @dest_value complied to @pspec without modifications.
+See also g_value_type_transformable(), g_value_transform() and
+g_param_value_validate().
+%FALSE otherwise and @dest_value is left untouched.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if transformation and validation were successful,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a valid #GParamSpec</doc>
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <parameter name="src_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">souce #GValue</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="dest_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">destination #GValue of correct type for @pspec</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="strict_validation" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE requires @dest_value to conform to @pspec without modifications</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_value_defaults"
+              c:identifier="g_param_value_defaults">
+      <doc xml:whitespace="preserve">Checks whether @value contains the default value as specified in @pspec.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">whether @value contains the canonical default for this @pspec</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a valid #GParamSpec</doc>
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue of correct type for @pspec</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_value_set_default"
+              c:identifier="g_param_value_set_default">
+      <doc xml:whitespace="preserve">Sets @value to its default value as specified in @pspec.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a valid #GParamSpec</doc>
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue of correct type for @pspec</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_value_validate"
+              c:identifier="g_param_value_validate">
+      <doc xml:whitespace="preserve">Ensures that the contents of @value comply with the specifications
+set out by @pspec. For example, a #GParamSpecInt might require
+that integers stored in @value may not be smaller than -42 and not be
+greater than +42. If @value contains an integer outside of this range,
+it is modified accordingly, so the resulting value will fit into the
+range -42 .. +42.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">whether modifying @value was necessary to ensure validity</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a valid #GParamSpec</doc>
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue of correct type for @pspec</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_values_cmp" c:identifier="g_param_values_cmp">
+      <doc xml:whitespace="preserve">Compares @value1 with @value2 according to @pspec, and return -1, 0 or +1,
+if @value1 is found to be less than, equal to or greater than @value2,
+respectively.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">-1, 0 or +1, for a less than, equal to or greater than result</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a valid #GParamSpec</doc>
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <parameter name="value1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue of correct type for @pspec</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue of correct type for @pspec</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pointer_type_register_static"
+              c:identifier="g_pointer_type_register_static">
+      <doc xml:whitespace="preserve">Creates a new %G_TYPE_POINTER derived type id for a new
+pointer type with name @name.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a new %G_TYPE_POINTER derived type id for @name.</doc>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the new pointer type.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_accumulator_true_handled"
+              c:identifier="g_signal_accumulator_true_handled"
+              version="2.4">
+      <doc xml:whitespace="preserve">A predefined #GSignalAccumulator for signals that return a
+boolean values. The behavior that this accumulator gives is
+callbacks will be invoked, while a return of %FALSE allows
+the emission to coninue. The idea here is that a %TRUE return
+indicates that the callback &lt;emphasis&gt;handled&lt;/emphasis&gt; the signal,
+and no further handling is needed.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">standard #GSignalAccumulator result</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="ihint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">standard #GSignalAccumulator parameter</doc>
+          <type name="SignalInvocationHint" c:type="GSignalInvocationHint*"/>
+        </parameter>
+        <parameter name="return_accu" transfer-ownership="none">
+          <doc xml:whitespace="preserve">standard #GSignalAccumulator parameter</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="handler_return" transfer-ownership="none">
+          <doc xml:whitespace="preserve">standard #GSignalAccumulator parameter</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="dummy" transfer-ownership="none">
+          <doc xml:whitespace="preserve">standard #GSignalAccumulator parameter</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_add_emission_hook"
+              c:identifier="g_signal_add_emission_hook">
+      <doc xml:whitespace="preserve">Adds an emission hook for a signal, which will get called for any emission
+of that signal, independent of the instance. This is possible only
+for signals which don't have #G_SIGNAL_NO_HOOKS flag set.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the hook id, for later use with g_signal_remove_emission_hook().</doc>
+        <type name="gulong" c:type="gulong"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the signal identifier, as returned by g_signal_lookup().</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the detail on which to call the hook.</doc>
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="hook_func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="3"
+                   destroy="4">
+          <doc xml:whitespace="preserve">a #GSignalEmissionHook function.</doc>
+          <type name="SignalEmissionHook" c:type="GSignalEmissionHook"/>
+        </parameter>
+        <parameter name="hook_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data for @hook_func.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="data_destroy" transfer-ownership="none" scope="async">
+          <doc xml:whitespace="preserve">a #GDestroyNotify for @hook_data.</doc>
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_chain_from_overridden"
+              c:identifier="g_signal_chain_from_overridden">
+      <doc xml:whitespace="preserve">Calls the original class closure of a signal. This function should only
+be called from an overridden class closure; see
+g_signal_override_class_closure() and
+g_signal_override_class_handler().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance_and_params" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the argument list of the signal emission. The first element in the array is a #GValue for the instance the signal is being emitted on. The rest are any arguments to be passed to the signal.</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Location for the return value.</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_chain_from_overridden_handler"
+              c:identifier="g_signal_chain_from_overridden_handler"
+              version="2.18"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Calls the original class closure of a signal. This function should
+only be called from an overridden class closure; see
+g_signal_override_class_closure() and
+g_signal_override_class_handler().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the instance the signal is being emitted on.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_connect_closure"
+              c:identifier="g_signal_connect_closure">
+      <doc xml:whitespace="preserve">Connects a closure to a signal for a particular object.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the handler id</doc>
+        <type name="gulong" c:type="gulong"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the instance to connect to.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="detailed_signal" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string of the form "signal-name::detail".</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the closure to connect.</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="after" transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the handler should be called before or after the default handler of the signal.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_connect_closure_by_id"
+              c:identifier="g_signal_connect_closure_by_id">
+      <doc xml:whitespace="preserve">Connects a closure to a signal for a particular object.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the handler id</doc>
+        <type name="gulong" c:type="gulong"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the instance to connect to.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="signal_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the id of the signal.</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the detail.</doc>
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the closure to connect.</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="after" transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the handler should be called before or after the default handler of the signal.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_connect_data"
+              c:identifier="g_signal_connect_data"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Connects a #GCallback function to a signal for a particular object. Similar
+to g_signal_connect(), but allows to provide a #GClosureNotify for the data
+which will be called when the signal handler is disconnected and no longer
+used. Specify @connect_flags if you need &lt;literal&gt;..._after()&lt;/literal&gt; or
+&lt;literal&gt;..._swapped()&lt;/literal&gt; variants of this function.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the handler id</doc>
+        <type name="gulong" c:type="gulong"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the instance to connect to.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="detailed_signal" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string of the form "signal-name::detail".</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="c_handler" transfer-ownership="none" closure="3">
+          <doc xml:whitespace="preserve">the #GCallback to connect.</doc>
+          <type name="Callback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to @c_handler calls.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GClosureNotify for @data.</doc>
+          <type name="ClosureNotify" c:type="GClosureNotify"/>
+        </parameter>
+        <parameter name="connect_flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a combination of #GConnectFlags.</doc>
+          <type name="ConnectFlags" c:type="GConnectFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_connect_object"
+              c:identifier="g_signal_connect_object"
+              introspectable="0">
+      <doc xml:whitespace="preserve">This is similar to g_signal_connect_data(), but uses a closure which
+ensures that the @gobject stays alive during the call to @c_handler
+by temporarily adding a reference count to @gobject.
+Note that there is a bug in GObject that makes this function
+much less useful than it might seem otherwise. Once @gobject is
+disposed, the callback will no longer be called, but, the signal
+handler is &lt;emphasis&gt;not&lt;/emphasis&gt; currently disconnected. If the
+matter, since the signal will automatically be removed, but
+if @instance persists, then the signal handler will leak. You
+should not remove the signal yourself because in a future versions of
+GObject, the handler &lt;emphasis&gt;will&lt;/emphasis&gt; automatically
+be disconnected.
+It's possible to work around this problem in a way that will
+continue to work with future versions of GObject by checking
+that the signal handler is still connected before disconnected it:
+&lt;informalexample&gt;&lt;programlisting&gt;
+if (g_signal_handler_is_connected (instance, id))
+g_signal_handler_disconnect (instance, id);
+&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the handler id.</doc>
+        <type name="gulong" c:type="gulong"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the instance to connect to.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="detailed_signal" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string of the form "signal-name::detail".</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="c_handler" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GCallback to connect.</doc>
+          <type name="Callback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="gobject" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object to pass as data to @c_handler.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="connect_flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a combination of #GConnnectFlags.</doc>
+          <type name="ConnectFlags" c:type="GConnectFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_emit"
+              c:identifier="g_signal_emit"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Emits a signal.
+Note that g_signal_emit() resets the return value to the default
+if no handlers are connected, in contrast to g_signal_emitv().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the instance the signal is being emitted on.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="signal_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the signal id</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the detail</doc>
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_emit_by_name"
+              c:identifier="g_signal_emit_by_name"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Emits a signal.
+Note that g_signal_emit_by_name() resets the return value to the default
+if no handlers are connected, in contrast to g_signal_emitv().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the instance the signal is being emitted on.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="detailed_signal" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string of the form "signal-name::detail".</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_emit_valist"
+              c:identifier="g_signal_emit_valist"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Emits a signal.
+Note that g_signal_emit_valist() resets the return value to the default
+if no handlers are connected, in contrast to g_signal_emitv().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the instance the signal is being emitted on.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="signal_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the signal id</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the detail</doc>
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="var_args" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a list of parameters to be passed to the signal, followed by a location for the return value. If the return type of the signal is #G_TYPE_NONE, the return value location can be omitted.</doc>
+          <type name="va_list" c:type="va_list"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_emitv" c:identifier="g_signal_emitv">
+      <doc xml:whitespace="preserve">Emits a signal.
+Note that g_signal_emitv() doesn't change @return_value if no handlers are
+connected, in contrast to g_signal_emit() and g_signal_emit_valist().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance_and_params" transfer-ownership="none">
+          <doc xml:whitespace="preserve">argument list for the signal emission. The first element in the array is a #GValue for the instance the signal is being emitted on. The rest are any arguments to be passed to the signal.</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="signal_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the signal id</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the detail</doc>
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Location to store the return value of the signal emission.</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_get_invocation_hint"
+              c:identifier="g_signal_get_invocation_hint"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Returns the invocation hint of the innermost signal emission of instance.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the invocation hint of the innermost signal emission.</doc>
+        <type name="SignalInvocationHint" c:type="GSignalInvocationHint*"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the instance to query</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handler_block"
+              c:identifier="g_signal_handler_block">
+      <doc xml:whitespace="preserve">Blocks a handler of an instance so it will not be called during any
+signal emissions unless it is unblocked again. Thus "blocking" a
+signal handler means to temporarily deactive it, a signal handler
+has to be unblocked exactly the same amount of times it has been
+blocked before to become active again.
+The @handler_id has to be a valid signal handler id, connected to a
+signal of @instance.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The instance to block the signal handler of.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="handler_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Handler id of the handler to be blocked.</doc>
+          <type name="gulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handler_disconnect"
+              c:identifier="g_signal_handler_disconnect">
+      <doc xml:whitespace="preserve">Disconnects a handler from an instance so it will not be called during
+any future or currently ongoing emissions of the signal it has been
+connected to. The @handler_id becomes invalid and may be reused.
+The @handler_id has to be a valid signal handler id, connected to a
+signal of @instance.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The instance to remove the signal handler from.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="handler_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Handler id of the handler to be disconnected.</doc>
+          <type name="gulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handler_find" c:identifier="g_signal_handler_find">
+      <doc xml:whitespace="preserve">Finds the first signal handler that matches certain selection criteria.
+The criteria mask is passed as an OR-ed combination of #GSignalMatchType
+flags, and the criteria values are passed as arguments.
+The match @mask has to be non-0 for successful matches.
+If no handler was found, 0 is returned.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">A valid non-0 signal handler id for a successful match.</doc>
+        <type name="gulong" c:type="gulong"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The instance owning the signal handler to be found.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="mask" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Mask indicating which of @signal_id, @detail, @closure, @func and/or @data the handler has to match.</doc>
+          <type name="SignalMatchType" c:type="GSignalMatchType"/>
+        </parameter>
+        <parameter name="signal_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Signal the handler has to be connected to.</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Signal detail the handler has to be connected to.</doc>
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The closure the handler will invoke.</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The C closure callback of the handler (useless for non-C closures).</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The closure data of the handler's closure.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handler_is_connected"
+              c:identifier="g_signal_handler_is_connected">
+      <doc xml:whitespace="preserve">Returns whether @handler_id is the id of a handler connected to @instance.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">whether @handler_id identifies a handler connected to @instance.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The instance where a signal handler is sought.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="handler_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the handler id.</doc>
+          <type name="gulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handler_unblock"
+              c:identifier="g_signal_handler_unblock">
+      <doc xml:whitespace="preserve">Undoes the effect of a previous g_signal_handler_block() call.  A
+blocked handler is skipped during signal emissions and will not be
+invoked, unblocking it (for exactly the amount of times it has been
+blocked before) reverts its "blocked" state, so the handler will be
+recognized by the signal system and is called upon future or
+currently ongoing signal emissions (since the order in which
+handlers are called during signal emissions is deterministic,
+whether the unblocked handler in question is called as part of a
+currently ongoing emission depends on how far that emission has
+proceeded yet).
+The @handler_id has to be a valid id of a signal handler that is
+connected to a signal of @instance and is currently blocked.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The instance to unblock the signal handler of.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="handler_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Handler id of the handler to be unblocked.</doc>
+          <type name="gulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handlers_block_matched"
+              c:identifier="g_signal_handlers_block_matched">
+      <doc xml:whitespace="preserve">Blocks all handlers on an instance that match a certain selection criteria.
+The criteria mask is passed as an OR-ed combination of #GSignalMatchType
+flags, and the criteria values are passed as arguments.
+Passing at least one of the %G_SIGNAL_MATCH_CLOSURE, %G_SIGNAL_MATCH_FUNC
+or %G_SIGNAL_MATCH_DATA match flags is required for successful matches.
+If no handlers were found, 0 is returned, the number of blocked handlers
+otherwise.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The number of handlers that matched.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The instance to block handlers from.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="mask" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Mask indicating which of @signal_id, @detail, @closure, @func and/or @data the handlers have to match.</doc>
+          <type name="SignalMatchType" c:type="GSignalMatchType"/>
+        </parameter>
+        <parameter name="signal_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Signal the handlers have to be connected to.</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Signal detail the handlers have to be connected to.</doc>
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The closure the handlers will invoke.</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The C closure callback of the handlers (useless for non-C closures).</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The closure data of the handlers' closures.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handlers_destroy"
+              c:identifier="g_signal_handlers_destroy">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handlers_disconnect_matched"
+              c:identifier="g_signal_handlers_disconnect_matched">
+      <doc xml:whitespace="preserve">Disconnects all handlers on an instance that match a certain
+selection criteria. The criteria mask is passed as an OR-ed
+combination of #GSignalMatchType flags, and the criteria values are
+passed as arguments.  Passing at least one of the
+%G_SIGNAL_MATCH_CLOSURE, %G_SIGNAL_MATCH_FUNC or
+%G_SIGNAL_MATCH_DATA match flags is required for successful
+matches.  If no handlers were found, 0 is returned, the number of
+disconnected handlers otherwise.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The number of handlers that matched.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The instance to remove handlers from.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="mask" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Mask indicating which of @signal_id, @detail, @closure, @func and/or @data the handlers have to match.</doc>
+          <type name="SignalMatchType" c:type="GSignalMatchType"/>
+        </parameter>
+        <parameter name="signal_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Signal the handlers have to be connected to.</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Signal detail the handlers have to be connected to.</doc>
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The closure the handlers will invoke.</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The C closure callback of the handlers (useless for non-C closures).</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The closure data of the handlers' closures.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handlers_unblock_matched"
+              c:identifier="g_signal_handlers_unblock_matched">
+      <doc xml:whitespace="preserve">Unblocks all handlers on an instance that match a certain selection
+criteria. The criteria mask is passed as an OR-ed combination of
+#GSignalMatchType flags, and the criteria values are passed as arguments.
+Passing at least one of the %G_SIGNAL_MATCH_CLOSURE, %G_SIGNAL_MATCH_FUNC
+or %G_SIGNAL_MATCH_DATA match flags is required for successful matches.
+If no handlers were found, 0 is returned, the number of unblocked handlers
+otherwise. The match criteria should not apply to any handlers that are
+not currently blocked.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The number of handlers that matched.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The instance to unblock handlers from.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="mask" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Mask indicating which of @signal_id, @detail, @closure, @func and/or @data the handlers have to match.</doc>
+          <type name="SignalMatchType" c:type="GSignalMatchType"/>
+        </parameter>
+        <parameter name="signal_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Signal the handlers have to be connected to.</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Signal detail the handlers have to be connected to.</doc>
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The closure the handlers will invoke.</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The C closure callback of the handlers (useless for non-C closures).</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The closure data of the handlers' closures.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_has_handler_pending"
+              c:identifier="g_signal_has_handler_pending">
+      <doc xml:whitespace="preserve">Returns whether there are any handlers connected to @instance for the
+given signal id and detail.
+One example of when you might use this is when the arguments to the
+signal are difficult to compute. A class implementor may opt to not
+emit the signal if no one is attached anyway, thus saving the cost
+of building the arguments.
+otherwise.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if a handler is connected to the signal, %FALSE</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object whose signal handlers are sought.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="signal_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the signal id.</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the detail.</doc>
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="may_be_blocked" transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether blocked handlers should count as match.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_init" c:identifier="g_signal_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="signal_list_ids" c:identifier="g_signal_list_ids">
+      <doc xml:whitespace="preserve">Lists the signals by id that a certain instance or interface type
+created. Further information about the signals can be acquired through
+g_signal_query().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">Newly allocated array of signal IDs.</doc>
+        <type name="guint" c:type="guint*"/>
+      </return-value>
+      <parameters>
+        <parameter name="itype" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Instance or interface type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_ids" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Location to store the number of signal ids for @itype.</doc>
+          <type name="guint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_lookup" c:identifier="g_signal_lookup">
+      <doc xml:whitespace="preserve">Given the name of the signal and the type of object it connects to, gets
+the signal's identifying integer. Emitting the signal by number is
+somewhat faster than using the name each time.
+Also tries the ancestors of the given type.
+See g_signal_new() for details on allowed signal names.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the signal's identifying number, or 0 if no signal was found.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the signal's name.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="itype" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type that the signal operates on.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_name" c:identifier="g_signal_name">
+      <doc xml:whitespace="preserve">Given the signal's identifier, finds its name.
+Two different signals may have the same name, if they have differing types.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the signal name, or %NULL if the signal number was invalid.</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the signal's identifying number.</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_new" c:identifier="g_signal_new" introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new signal. (This is usually done in the class initializer.)
+A signal name consists of segments consisting of ASCII letters and
+digits, separated by either the '-' or '_' character. The first
+character of a signal name must be a letter. Names which violate these
+rules lead to undefined behaviour of the GSignal system.
+When registering a signal and looking up a signal, either separator can
+be used, but they cannot be mixed.
+If 0 is used for @class_offset subclasses cannot override the class handler
+in their &lt;code&gt;class_init&lt;/code&gt; method by doing
+&lt;code&gt;super_class-&gt;signal_handler = my_signal_handler&lt;/code&gt;. Instead they
+will have to use g_signal_override_class_handler().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the signal id</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name for the signal</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="itype" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type this signal pertains to. It will also pertain to types which are derived from this type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="signal_flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a combination of #GSignalFlags specifying detail of when the default handler is to be invoked. You should at least specify %G_SIGNAL_RUN_FIRST or %G_SIGNAL_RUN_LAST.</doc>
+          <type name="SignalFlags" c:type="GSignalFlags"/>
+        </parameter>
+        <parameter name="class_offset" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The offset of the function pointer in the class structure for this type. Used to invoke a class method generically. Pass 0 to not associate a class method slot with this signal.</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="accumulator" transfer-ownership="none" closure="5">
+          <doc xml:whitespace="preserve">the accumulator for this signal; may be %NULL.</doc>
+          <type name="SignalAccumulator" c:type="GSignalAccumulator"/>
+        </parameter>
+        <parameter name="accu_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data for the @accumulator.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="c_marshaller" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the function to translate arrays of parameter values to signal emissions into C language callback invocations.</doc>
+          <type name="SignalCMarshaller" c:type="GSignalCMarshaller"/>
+        </parameter>
+        <parameter name="return_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of return value, or #G_TYPE_NONE for a signal without a return value.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_params" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of parameter types to follow.</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_new_class_handler"
+              c:identifier="g_signal_new_class_handler"
+              version="2.18"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new signal. (This is usually done in the class initializer.)
+This is a variant of g_signal_new() that takes a C callback instead
+off a class offset for the signal's class handler. This function
+doesn't need a function pointer exposed in the class structure of
+an object definition, instead the function pointer is passed
+directly and can be overriden by derived classes with
+g_signal_override_class_closure() or
+g_signal_override_class_handler()and chained to with
+g_signal_chain_from_overridden() or
+g_signal_chain_from_overridden_handler().
+See g_signal_new() for information about signal names.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the signal id</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name for the signal</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="itype" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type this signal pertains to. It will also pertain to types which are derived from this type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="signal_flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a combination of #GSignalFlags specifying detail of when the default handler is to be invoked. You should at least specify %G_SIGNAL_RUN_FIRST or %G_SIGNAL_RUN_LAST.</doc>
+          <type name="SignalFlags" c:type="GSignalFlags"/>
+        </parameter>
+        <parameter name="class_handler" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GCallback which acts as class implementation of this signal. Used to invoke a class method generically. Pass %NULL to not associate a class method with this signal.</doc>
+          <type name="Callback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="accumulator" transfer-ownership="none" closure="5">
+          <doc xml:whitespace="preserve">the accumulator for this signal; may be %NULL.</doc>
+          <type name="SignalAccumulator" c:type="GSignalAccumulator"/>
+        </parameter>
+        <parameter name="accu_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data for the @accumulator.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="c_marshaller" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the function to translate arrays of parameter values to signal emissions into C language callback invocations.</doc>
+          <type name="SignalCMarshaller" c:type="GSignalCMarshaller"/>
+        </parameter>
+        <parameter name="return_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of return value, or #G_TYPE_NONE for a signal without a return value.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_params" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of parameter types to follow.</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_new_valist"
+              c:identifier="g_signal_new_valist"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new signal. (This is usually done in the class initializer.)
+See g_signal_new() for details on allowed signal names.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the signal id</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name for the signal</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="itype" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type this signal pertains to. It will also pertain to types which are derived from this type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="signal_flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a combination of #GSignalFlags specifying detail of when the default handler is to be invoked. You should at least specify %G_SIGNAL_RUN_FIRST or %G_SIGNAL_RUN_LAST.</doc>
+          <type name="SignalFlags" c:type="GSignalFlags"/>
+        </parameter>
+        <parameter name="class_closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The closure to invoke on signal emission; may be %NULL.</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="accumulator" transfer-ownership="none" closure="5">
+          <doc xml:whitespace="preserve">the accumulator for this signal; may be %NULL.</doc>
+          <type name="SignalAccumulator" c:type="GSignalAccumulator"/>
+        </parameter>
+        <parameter name="accu_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data for the @accumulator.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="c_marshaller" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the function to translate arrays of parameter values to signal emissions into C language callback invocations.</doc>
+          <type name="SignalCMarshaller" c:type="GSignalCMarshaller"/>
+        </parameter>
+        <parameter name="return_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of return value, or #G_TYPE_NONE for a signal without a return value.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_params" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of parameter types in @args.</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="args" transfer-ownership="none">
+          <doc xml:whitespace="preserve">va_list of #GType, one for each parameter.</doc>
+          <type name="va_list" c:type="va_list"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_newv"
+              c:identifier="g_signal_newv"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new signal. (This is usually done in the class initializer.)
+See g_signal_new() for details on allowed signal names.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the signal id</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name for the signal</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="itype" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type this signal pertains to. It will also pertain to types which are derived from this type</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="signal_flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a combination of #GSignalFlags specifying detail of when the default handler is to be invoked. You should at least specify %G_SIGNAL_RUN_FIRST or %G_SIGNAL_RUN_LAST</doc>
+          <type name="SignalFlags" c:type="GSignalFlags"/>
+        </parameter>
+        <parameter name="class_closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The closure to invoke on signal emission; may be %NULL</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="accumulator" transfer-ownership="none" closure="5">
+          <doc xml:whitespace="preserve">the accumulator for this signal; may be %NULL</doc>
+          <type name="SignalAccumulator" c:type="GSignalAccumulator"/>
+        </parameter>
+        <parameter name="accu_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data for the @accumulator</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="c_marshaller" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the function to translate arrays of parameter values to signal emissions into C language callback invocations</doc>
+          <type name="SignalCMarshaller" c:type="GSignalCMarshaller"/>
+        </parameter>
+        <parameter name="return_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of return value, or #G_TYPE_NONE for a signal without a return value</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_params" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the length of @param_types</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_types" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an array of types, one for each parameter</doc>
+          <type name="GType" c:type="GType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_override_class_closure"
+              c:identifier="g_signal_override_class_closure">
+      <doc xml:whitespace="preserve">Overrides the class closure (i.e. the default handler) for the given signal
+for emissions on instances of @instance_type. @instance_type must be derived
+from the type to which the signal belongs.
+See g_signal_chain_from_overridden() and
+g_signal_chain_from_overridden_handler() for how to chain up to the
+parent class closure from inside the overridden one.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the signal id</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="instance_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the instance type on which to override the class closure for the signal.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="class_closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the closure.</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_override_class_handler"
+              c:identifier="g_signal_override_class_handler"
+              version="2.18"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Overrides the class closure (i.e. the default handler) for the
+given signal for emissions on instances of @instance_type with
+callabck @class_handler. @instance_type must be derived from the
+type to which the signal belongs.
+See g_signal_chain_from_overridden() and
+g_signal_chain_from_overridden_handler() for how to chain up to the
+parent class closure from inside the overridden one.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name for the signal</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="instance_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the instance type on which to override the class handler for the signal.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="class_handler" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the handler.</doc>
+          <type name="Callback" c:type="GCallback"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_parse_name" c:identifier="g_signal_parse_name">
+      <doc xml:whitespace="preserve">Internal function to parse a signal name into its @signal_id
+and @detail quark.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the signal name could successfully be parsed and @signal_id_p and @detail_p contain valid return values.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="detailed_signal" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string of the form "signal-name::detail".</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="itype" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The interface/instance type that introduced "signal-name".</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="signal_id_p" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Location to store the signal id.</doc>
+          <type name="guint" c:type="guint*"/>
+        </parameter>
+        <parameter name="detail_p" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Location to store the detail quark.</doc>
+          <type name="GLib.Quark" c:type="GQuark*"/>
+        </parameter>
+        <parameter name="force_detail_quark" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE forces creation of a #GQuark for the detail.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_query" c:identifier="g_signal_query">
+      <doc xml:whitespace="preserve">Queries the signal system for in-depth information about a
+specific signal. This function will fill in a user-provided
+structure to hold signal-specific information. If an invalid
+signal id is passed in, the @signal_id member of the #GSignalQuery
+is 0. All members filled into the #GSignalQuery structure should
+be considered constant and have to be left untouched.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The signal id of the signal to query information for.</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="query" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A user provided structure that is filled in with constant values upon success.</doc>
+          <type name="SignalQuery" c:type="GSignalQuery*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_remove_emission_hook"
+              c:identifier="g_signal_remove_emission_hook">
+      <doc xml:whitespace="preserve">Deletes an emission hook.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the id of the signal</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="hook_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the id of the emission hook, as returned by g_signal_add_emission_hook()</doc>
+          <type name="gulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_stop_emission"
+              c:identifier="g_signal_stop_emission">
+      <doc xml:whitespace="preserve">Stops a signal's current emission.
+This will prevent the default method from running, if the signal was
+%G_SIGNAL_RUN_LAST and you connected normally (i.e. without the "after"
+flag).
+Prints a warning if used on a signal which isn't being emitted.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object whose signal handlers you wish to stop.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="signal_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the signal identifier, as returned by g_signal_lookup().</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the detail which the signal was emitted with.</doc>
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_stop_emission_by_name"
+              c:identifier="g_signal_stop_emission_by_name">
+      <doc xml:whitespace="preserve">Stops a signal's current emission.
+This is just like g_signal_stop_emission() except it will look up the
+signal id for you.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object whose signal handlers you wish to stop.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="detailed_signal" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string of the form "signal-name::detail".</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_type_cclosure_new"
+              c:identifier="g_signal_type_cclosure_new">
+      <doc xml:whitespace="preserve">Creates a new closure which invokes the function found at the offset
+identified by @itype.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GCClosure</doc>
+        <type name="Closure" c:type="GClosure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="itype" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType identifier of an interface or classed type</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="struct_offset" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the offset of the member function of @itype's class structure which is to be invoked by the new closure</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_set_closure" c:identifier="g_source_set_closure">
+      <doc xml:whitespace="preserve">Set the callback for a source as a #GClosure.
+If the source is not one of the standard GLib types, the @closure_callback
+and @closure_marshal fields of the #GSourceFuncs structure must have been
+filled in with pointers to appropriate functions.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="source" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the source</doc>
+          <type name="GLib.Source" c:type="GSource*"/>
+        </parameter>
+        <parameter name="closure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GClosure</doc>
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strdup_value_contents"
+              c:identifier="g_strdup_value_contents">
+      <doc xml:whitespace="preserve">Return a newly allocated string, which describes the contents of a
+#GValue.  The main purpose of this function is to describe #GValue
+contents for debugging output, the way in which the contents are
+described may change between different GLib versions.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">Newly allocated string.</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GValue which contents are to be described.</doc>
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strv_get_type" c:identifier="g_strv_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="type_add_class_cache_func"
+              c:identifier="g_type_add_class_cache_func"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Adds a #GTypeClassCacheFunc to be called before the reference count of a
+class goes from one to zero. This can be used to prevent premature class
+destruction. All installed #GTypeClassCacheFunc functions will be chained
+until one of them returns %TRUE. The functions have to check the class id
+passed in to figure whether they actually want to cache the class of this
+type, since all classes are routed through the same #GTypeClassCacheFunc
+chain.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cache_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to be passed to @cache_func</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="cache_func" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GTypeClassCacheFunc</doc>
+          <type name="TypeClassCacheFunc" c:type="GTypeClassCacheFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_add_class_private"
+              c:identifier="g_type_add_class_private"
+              version="2.24">
+      <doc xml:whitespace="preserve">Registers a private class structure for a classed type;
+when the class is allocated, the private structures for
+the class and all of its parent types are allocated
+sequentially in the same memory block as the public
+structures. This function should be called in the
+type's get_type() function after the type is registered.
+The private structure can be retrieved using the
+G_TYPE_CLASS_GET_PRIVATE() macro.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="class_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">GType of an classed type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="private_size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">size of private structure.</doc>
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_add_interface_check"
+              c:identifier="g_type_add_interface_check"
+              version="2.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Adds a function to be called after an interface vtable is
+initialized for any class (i.e. after the @interface_init member of
+#GInterfaceInfo has been called).
+This function is useful when you want to check an invariant that
+depends on the interfaces of a class. For instance, the
+implementation of #GObject uses this facility to check that an
+object implements all of the properties that are defined on its
+interfaces.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="check_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to @check_func</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="check_func" transfer-ownership="none">
+          <doc xml:whitespace="preserve">function to be called after each interface is initialized.</doc>
+          <type name="TypeInterfaceCheckFunc"
+                c:type="GTypeInterfaceCheckFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_add_interface_dynamic"
+              c:identifier="g_type_add_interface_dynamic">
+      <doc xml:whitespace="preserve">Adds the dynamic @interface_type to @instantiable_type. The information
+contained in the #GTypePlugin structure pointed to by @plugin
+is used to manage the relationship.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType value of an instantiable type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="interface_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType value of an interface type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="plugin" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GTypePlugin structure to retrieve the #GInterfaceInfo from.</doc>
+          <type name="TypePlugin" c:type="GTypePlugin*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_add_interface_static"
+              c:identifier="g_type_add_interface_static">
+      <doc xml:whitespace="preserve">Adds the static @interface_type to @instantiable_type.  The information
+contained in the #GTypeInterfaceInfo structure pointed to by @info
+is used to manage the relationship.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GType value of an instantiable type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="interface_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GType value of an interface type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="info" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GInterfaceInfo structure for this (@instance_type, @interface_type) combination.</doc>
+          <type name="InterfaceInfo" c:type="GInterfaceInfo*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_check_class_cast"
+              c:identifier="g_type_check_class_cast"
+              introspectable="0">
+      <return-value>
+        <type name="TypeClass" c:type="GTypeClass*"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class" transfer-ownership="none">
+          <type name="TypeClass" c:type="GTypeClass*"/>
+        </parameter>
+        <parameter name="is_a_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_check_class_is_a"
+              c:identifier="g_type_check_class_is_a">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class" transfer-ownership="none">
+          <type name="TypeClass" c:type="GTypeClass*"/>
+        </parameter>
+        <parameter name="is_a_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_check_instance" c:identifier="g_type_check_instance">
+      <doc xml:whitespace="preserve">Private helper function to aid implementation of the G_TYPE_CHECK_INSTANCE()
+macro.</doc>
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A valid #GTypeInstance structure.</doc>
+          <type name="TypeInstance" c:type="GTypeInstance*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_check_instance_cast"
+              c:identifier="g_type_check_instance_cast"
+              introspectable="0">
+      <return-value>
+        <type name="TypeInstance" c:type="GTypeInstance*"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="TypeInstance" c:type="GTypeInstance*"/>
+        </parameter>
+        <parameter name="iface_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_check_instance_is_a"
+              c:identifier="g_type_check_instance_is_a">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="TypeInstance" c:type="GTypeInstance*"/>
+        </parameter>
+        <parameter name="iface_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_check_is_value_type"
+              c:identifier="g_type_check_is_value_type">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_check_value" c:identifier="g_type_check_value">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_check_value_holds"
+              c:identifier="g_type_check_value_holds">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_children" c:identifier="g_type_children">
+      <doc xml:whitespace="preserve">Return a newly allocated and 0-terminated array of type IDs, listing the
+child types of @type. The return value has to be g_free()ed after use.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">Newly allocated and 0-terminated array of child types.</doc>
+        <type name="GType" c:type="GType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The parent type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_children" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Optional #guint pointer to contain the number of child types.</doc>
+          <type name="guint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_class_add_private"
+              c:identifier="g_type_class_add_private"
+              version="2.4">
+      <doc xml:whitespace="preserve">Registers a private structure for an instantiatable type.
+When an object is allocated, the private structures for
+the type and all of its parent types are allocated
+sequentially in the same memory block as the public
+structures.
+Note that the accumulated size of the private structures of
+a type and all its parent types cannot excced 64kB.
+This function should be called in the type's class_init() function.
+The private structure can be retrieved using the
+G_TYPE_INSTANCE_GET_PRIVATE() macro.
+The following example shows attaching a private structure
+&lt;structname&gt;MyObjectPrivate&lt;/structname&gt; to an object
+&lt;structname&gt;MyObject&lt;/structname&gt; defined in the standard GObject
+fashion.
+type's class_init() function.
+|[
+typedef struct _MyObject        MyObject;
+typedef struct _MyObjectPrivate MyObjectPrivate;
+struct _MyObject {
+GObject parent;
+MyObjectPrivate *priv;
+};
+struct _MyObjectPrivate {
+int some_field;
+};
+static void
+my_object_class_init (MyObjectClass *klass)
+{
+g_type_class_add_private (klass, sizeof (MyObjectPrivate));
+}
+static void
+my_object_init (MyObject *my_object)
+{
+my_object-&gt;priv = G_TYPE_INSTANCE_GET_PRIVATE (my_object,
+MY_TYPE_OBJECT,
+MyObjectPrivate);
+}
+static int
+my_object_get_some_field (MyObject *my_object)
+{
+MyObjectPrivate *priv = my_object-&gt;priv;
+return priv-&gt;some_field;
+}
+]|</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class" transfer-ownership="none">
+          <doc xml:whitespace="preserve">class structure for an instantiatable type</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="private_size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">size of private structure.</doc>
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_class_peek"
+              c:identifier="g_type_class_peek"
+              introspectable="0">
+      <doc xml:whitespace="preserve">This function is essentially the same as g_type_class_ref(), except that
+the classes reference count isn't incremented. As a consequence, this function
+may return %NULL if the class of the type passed in does not currently
+exist (hasn't been referenced before).
+if the class does not currently exist.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">The #GTypeClass structure for the given type ID or %NULL</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Type ID of a classed type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_class_peek_parent"
+              c:identifier="g_type_class_peek_parent"
+              introspectable="0">
+      <doc xml:whitespace="preserve">This is a convenience function often needed in class initializers.
+It returns the class structure of the immediate parent type of the
+class passed in.  Since derived classes hold a reference count on
+their parent classes as long as they are instantiated, the returned
+class will always exist. This function is essentially equivalent
+to:
+&lt;programlisting&gt;
+g_type_class_peek (g_type_parent (G_TYPE_FROM_CLASS (g_class)));
+&lt;/programlisting&gt;</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">The parent class of @g_class.</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GTypeClass structure to retrieve the parent class for.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_class_peek_static"
+              c:identifier="g_type_class_peek_static"
+              version="2.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">A more efficient version of g_type_class_peek() which works only for
+static types.
+if the class does not currently exist or is dynamically loaded.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">The #GTypeClass structure for the given type ID or %NULL</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Type ID of a classed type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_class_ref"
+              c:identifier="g_type_class_ref"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Increments the reference count of the class structure belonging to
+exist already.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">The #GTypeClass structure for the given type ID.</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Type ID of a classed type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_class_unref" c:identifier="g_type_class_unref">
+      <doc xml:whitespace="preserve">Decrements the reference count of the class structure being passed in.
+Once the last reference count of a class has been released, classes
+may be finalized by the type system, so further dereferencing of a
+class pointer after g_type_class_unref() are invalid.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GTypeClass structure to unreference.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_class_unref_uncached"
+              c:identifier="g_type_class_unref_uncached">
+      <doc xml:whitespace="preserve">A variant of g_type_class_unref() for use in #GTypeClassCacheFunc
+implementations. It unreferences a class without consulting the chain
+of #GTypeClassCacheFunc&lt;!-- --&gt;s, avoiding the recursion which would occur
+otherwise.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GTypeClass structure to unreference.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_create_instance"
+              c:identifier="g_type_create_instance"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates and initializes an instance of @type if @type is valid and
+can be instantiated. The type system only performs basic allocation
+happen through functions supplied by the type's fundamental type
+implementation.  So use of g_type_create_instance() is reserved for
+implementators of fundamental types only. E.g. instances of the
+#GObject hierarchy should be created via g_object_new() and
+&lt;emphasis&gt;never&lt;/emphasis&gt; directly through
+g_type_create_instance() which doesn't handle things like singleton
+use this function, unless you're implementing a fundamental
+type. Also language bindings should &lt;emphasis&gt;not&lt;/emphasis&gt; use
+this function but g_object_new() instead.
+treatment by the fundamental type implementation.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">An allocated and initialized instance, subject to further</doc>
+        <type name="TypeInstance" c:type="GTypeInstance*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An instantiatable type to create an instance for.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_default_interface_peek"
+              c:identifier="g_type_default_interface_peek"
+              version="2.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">If the interface type @g_type is currently in use, returns its
+default interface vtable.
+if the type is not currently in use.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the default vtable for the interface, or %NULL</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an interface type</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_default_interface_ref"
+              c:identifier="g_type_default_interface_ref"
+              version="2.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Increments the reference count for the interface type @g_type,
+and returns the default interface vtable for the type.
+If the type is not currently in use, then the default vtable
+for the type will be created and initalized by calling
+the base interface init and default vtable init functions for
+the type (the @&lt;structfield&gt;base_init&lt;/structfield&gt;
+and &lt;structfield&gt;class_init&lt;/structfield&gt; members of #GTypeInfo).
+Calling g_type_default_interface_ref() is useful when you
+want to make sure that signals and properties for an interface
+have been installed.
+g_type_default_interface_unref() when you are done using
+the interface.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the default vtable for the interface; call</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an interface type</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_default_interface_unref"
+              c:identifier="g_type_default_interface_unref"
+              version="2.4">
+      <doc xml:whitespace="preserve">Decrements the reference count for the type corresponding to the
+interface default vtable @g_iface. If the type is dynamic, then
+when no one is using the interface and all references have
+been released, the finalize function for the interface's default
+vtable (the &lt;structfield&gt;class_finalize&lt;/structfield&gt; member of
+#GTypeInfo) will be called.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_iface" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the default vtable structure for a interface, as returned by g_type_default_interface_ref()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_depth" c:identifier="g_type_depth">
+      <doc xml:whitespace="preserve">Returns the length of the ancestry of the passed in type. This
+includes the type itself, so that e.g. a fundamental type has depth 1.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The depth of @type.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GType value.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_free_instance" c:identifier="g_type_free_instance">
+      <doc xml:whitespace="preserve">Frees an instance of a type, returning it to the instance pool for
+the type, if there is one.
+Like g_type_create_instance(), this function is reserved for
+implementors of fundamental types.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an instance of a type.</doc>
+          <type name="TypeInstance" c:type="GTypeInstance*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_from_name" c:identifier="g_type_from_name">
+      <doc xml:whitespace="preserve">Lookup the type ID from a given type name, returning 0 if no type
+has been registered under this name (this is the preferred method
+to find out by name whether a specific type has been registered
+yet).</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">Corresponding type ID or 0.</doc>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Type name to lookup.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_fundamental" c:identifier="g_type_fundamental">
+      <doc xml:whitespace="preserve">Internal function, used to extract the fundamental type ID portion.
+use G_TYPE_FUNDAMENTAL() instead.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">fundamental type ID</doc>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="type_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">valid type ID</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_fundamental_next"
+              c:identifier="g_type_fundamental_next">
+      <doc xml:whitespace="preserve">Returns the next free fundamental type id which can be used to
+register a new fundamental type with g_type_register_fundamental().
+The returned type ID represents the highest currently registered
+fundamental type identifier.
+or 0 if the type system ran out of fundamental type IDs.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The nextmost fundamental type ID to be registered,</doc>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="type_get_plugin"
+              c:identifier="g_type_get_plugin"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Returns the #GTypePlugin structure for @type or
+%NULL if @type does not have a #GTypePlugin structure.
+%NULL otherwise.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">The corresponding plugin if @type is a dynamic type,</doc>
+        <type name="TypePlugin" c:type="GTypePlugin*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GType to retrieve the plugin for.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_get_qdata"
+              c:identifier="g_type_get_qdata"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Obtains data which has previously been attached to @type
+with g_type_set_qdata().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the data, or %NULL if no data was found</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GType</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="quark" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GQuark id to identify the data</doc>
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_init" c:identifier="g_type_init">
+      <doc xml:whitespace="preserve">Prior to any use of the type system, g_type_init() has to be called
+to initialize the type system and assorted other code portions
+(such as the various fundamental type implementations or the signal
+system).
+Since version 2.24 this also initializes the thread system</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="type_init_with_debug_flags"
+              c:identifier="g_type_init_with_debug_flags">
+      <doc xml:whitespace="preserve">Similar to g_type_init(), but additionally sets debug flags.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="debug_flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Bitwise combination of #GTypeDebugFlags values for debugging purposes.</doc>
+          <type name="TypeDebugFlags" c:type="GTypeDebugFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_interface_add_prerequisite"
+              c:identifier="g_type_interface_add_prerequisite">
+      <doc xml:whitespace="preserve">Adds @prerequisite_type to the list of prerequisites of @interface_type.
+This means that any type implementing @interface_type must also implement
+interface derivation (which GType doesn't support). An interface can have
+at most one instantiatable prerequisite type.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="interface_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GType value of an interface type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="prerequisite_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GType value of an interface or instantiatable type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_interface_get_plugin"
+              c:identifier="g_type_interface_get_plugin"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Returns the #GTypePlugin structure for the dynamic interface
+have a #GTypePlugin structure. See g_type_add_interface_dynamic().
+of @instance_type.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the #GTypePlugin for the dynamic interface @interface_type</doc>
+        <type name="TypePlugin" c:type="GTypePlugin*"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType value of an instantiatable type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="interface_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType value of an interface type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_interface_peek"
+              c:identifier="g_type_interface_peek"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Returns the #GTypeInterface structure of an interface to which the
+passed in class conforms.
+by @instance_class, %NULL otherwise</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">The GTypeInterface structure of iface_type if implemented</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance_class" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GTypeClass structure.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="iface_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An interface ID which this class conforms to.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_interface_peek_parent"
+              c:identifier="g_type_interface_peek_parent"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Returns the corresponding #GTypeInterface structure of the parent type
+of the instance type to which @g_iface belongs. This is useful when
+deriving the implementation of an interface from the parent type and
+then possibly overriding some methods.
+type of the instance type to which @g_iface belongs, or
+%NULL if the parent type doesn't conform to the interface.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">The corresponding #GTypeInterface structure of the parent</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_iface" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GTypeInterface structure.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_interface_prerequisites"
+              c:identifier="g_type_interface_prerequisites"
+              version="2.2">
+      <doc xml:whitespace="preserve">Returns the prerequisites of an interfaces type.
+the prerequisites of @interface_type</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a newly-allocated zero-terminated array of #GType containing</doc>
+        <type name="GType" c:type="GType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="interface_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an interface type</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_prerequisites" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to return the number of prerequisites, or %NULL</doc>
+          <type name="guint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_interfaces" c:identifier="g_type_interfaces">
+      <doc xml:whitespace="preserve">Return a newly allocated and 0-terminated array of type IDs, listing the
+interface types that @type conforms to. The return value has to be
+g_free()ed after use.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">Newly allocated and 0-terminated array of interface types.</doc>
+        <type name="GType" c:type="GType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The type to list interface types for.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_interfaces" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Optional #guint pointer to contain the number of interface types.</doc>
+          <type name="guint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_is_a" c:identifier="g_type_is_a">
+      <doc xml:whitespace="preserve">If @is_a_type is a derivable type, check whether @type is a
+descendant of @is_a_type.  If @is_a_type is an interface, check
+whether @type conforms to it.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @type is_a @is_a_type holds true.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Type to check anchestry for.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="is_a_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Possible anchestor of @type or interface @type could conform to.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_name" c:identifier="g_type_name">
+      <doc xml:whitespace="preserve">Get the unique name that is assigned to a type ID.  Note that this
+function (like all other GType API) cannot cope with invalid type
+IDs. %G_TYPE_INVALID may be passed to this function, as may be any
+other validly registered type ID, but randomized type IDs should
+not be passed in and will most likely lead to a crash.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">Static type name or %NULL.</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Type to return name for.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_name_from_class"
+              c:identifier="g_type_name_from_class">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class" transfer-ownership="none">
+          <type name="TypeClass" c:type="GTypeClass*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_name_from_instance"
+              c:identifier="g_type_name_from_instance">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="TypeInstance" c:type="GTypeInstance*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_next_base" c:identifier="g_type_next_base">
+      <doc xml:whitespace="preserve">Given a @leaf_type and a @root_type which is contained in its
+anchestry, return the type that @root_type is the immediate parent
+of.  In other words, this function determines the type that is
+derived directly from @root_type which is also a base class of
+be used to determine the types and order in which the leaf type is
+descended from the root type.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">Immediate child of @root_type and anchestor of @leaf_type.</doc>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="leaf_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Descendant of @root_type and the type to be returned.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="root_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Immediate parent of the returned type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_parent" c:identifier="g_type_parent">
+      <doc xml:whitespace="preserve">Return the direct parent type of the passed in type.  If the passed
+in type has no parent, i.e. is a fundamental type, 0 is returned.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The parent type.</doc>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The derived type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_qname" c:identifier="g_type_qname">
+      <doc xml:whitespace="preserve">Get the corresponding quark of the type IDs name.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The type names quark or 0.</doc>
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Type to return quark of type name for.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_query" c:identifier="g_type_query">
+      <doc xml:whitespace="preserve">Queries the type system for information about a specific type.
+This function will fill in a user-provided structure to hold
+type-specific information. If an invalid #GType is passed in, the
+#GTypeQuery structure should be considered constant and have to be
+left untouched.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType value of a static, classed type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="query" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A user provided structure that is filled in with constant values upon success.</doc>
+          <type name="TypeQuery" c:type="GTypeQuery*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_register_dynamic"
+              c:identifier="g_type_register_dynamic">
+      <doc xml:whitespace="preserve">Registers @type_name as the name of a new dynamic type derived from
+#GTypePlugin structure pointed to by @plugin to manage the type and its
+instances (if not abstract).  The value of @flags determines the nature
+(e.g. abstract or not) of the type.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The new type identifier or #G_TYPE_INVALID if registration failed.</doc>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Type from which this type will be derived.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="type_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">0-terminated string used as the name of the new type.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="plugin" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GTypePlugin structure to retrieve the #GTypeInfo from.</doc>
+          <type name="TypePlugin" c:type="GTypePlugin*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Bitwise combination of #GTypeFlags values.</doc>
+          <type name="TypeFlags" c:type="GTypeFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_register_fundamental"
+              c:identifier="g_type_register_fundamental">
+      <doc xml:whitespace="preserve">Registers @type_id as the predefined identifier and @type_name as the
+name of a fundamental type.  The type system uses the information
+contained in the #GTypeInfo structure pointed to by @info and the
+#GTypeFundamentalInfo structure pointed to by @finfo to manage the
+type and its instances.  The value of @flags determines additional
+characteristics of the fundamental type.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The predefined type identifier.</doc>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="type_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A predefined type identifier.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="type_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">0-terminated string used as the name of the new type.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="info" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GTypeInfo structure for this type.</doc>
+          <type name="TypeInfo" c:type="GTypeInfo*"/>
+        </parameter>
+        <parameter name="finfo" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GTypeFundamentalInfo structure for this type.</doc>
+          <type name="TypeFundamentalInfo" c:type="GTypeFundamentalInfo*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Bitwise combination of #GTypeFlags values.</doc>
+          <type name="TypeFlags" c:type="GTypeFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_register_static"
+              c:identifier="g_type_register_static">
+      <doc xml:whitespace="preserve">Registers @type_name as the name of a new static type derived from
+#GTypeInfo structure pointed to by @info to manage the type and its
+instances (if not abstract).  The value of @flags determines the nature
+(e.g. abstract or not) of the type.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The new type identifier.</doc>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Type from which this type will be derived.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="type_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">0-terminated string used as the name of the new type.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="info" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GTypeInfo structure for this type.</doc>
+          <type name="TypeInfo" c:type="GTypeInfo*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Bitwise combination of #GTypeFlags values.</doc>
+          <type name="TypeFlags" c:type="GTypeFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_register_static_simple"
+              c:identifier="g_type_register_static_simple"
+              version="2.12"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Registers @type_name as the name of a new static type derived from
+abstract or not) of the type. It works by filling a #GTypeInfo
+struct and calling g_type_register_static().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The new type identifier.</doc>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Type from which this type will be derived.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="type_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">0-terminated string used as the name of the new type.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="class_size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Size of the class structure (see #GTypeInfo)</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="class_init" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Location of the class initialization function (see #GTypeInfo)</doc>
+          <type name="ClassInitFunc" c:type="GClassInitFunc"/>
+        </parameter>
+        <parameter name="instance_size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Size of the instance structure (see #GTypeInfo)</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="instance_init" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Location of the instance initialization function (see #GTypeInfo)</doc>
+          <type name="InstanceInitFunc" c:type="GInstanceInitFunc"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Bitwise combination of #GTypeFlags values.</doc>
+          <type name="TypeFlags" c:type="GTypeFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_remove_class_cache_func"
+              c:identifier="g_type_remove_class_cache_func"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Removes a previously installed #GTypeClassCacheFunc. The cache
+maintained by @cache_func has to be empty when calling
+g_type_remove_class_cache_func() to avoid leaks.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cache_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data that was given when adding @cache_func</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="cache_func" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GTypeClassCacheFunc</doc>
+          <type name="TypeClassCacheFunc" c:type="GTypeClassCacheFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_remove_interface_check"
+              c:identifier="g_type_remove_interface_check"
+              version="2.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Removes an interface check function added with
+g_type_add_interface_check().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="check_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">callback data passed to g_type_add_interface_check()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="check_func" transfer-ownership="none">
+          <doc xml:whitespace="preserve">callback function passed to g_type_add_interface_check()</doc>
+          <type name="TypeInterfaceCheckFunc"
+                c:type="GTypeInterfaceCheckFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_set_qdata" c:identifier="g_type_set_qdata">
+      <doc xml:whitespace="preserve">Attaches arbitrary data to a type.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GType</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="quark" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GQuark id to identify the data</doc>
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the data</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_test_flags" c:identifier="g_type_test_flags">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_value_table_peek"
+              c:identifier="g_type_value_table_peek"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Returns the location of the #GTypeValueTable associated with @type.
+&lt;emphasis&gt;Note that this function should only be used from source code
+that implements or has internal knowledge of the implementation of
+%NULL if there is no #GTypeValueTable associated with @type.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">Location of the #GTypeValueTable associated with @type or</doc>
+        <type name="TypeValueTable" c:type="GTypeValueTable*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GType value.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_c_init" c:identifier="g_value_c_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="value_register_transform_func"
+              c:identifier="g_value_register_transform_func"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Registers a value transformation function for use in g_value_transform().
+A previously registered transformation function for @src_type and @dest_type
+will be replaced.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="src_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Source type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="dest_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Target type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="transform_func" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a function which transforms values of type @src_type into value of type @dest_type</doc>
+          <type name="ValueTransform" c:type="GValueTransform"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_transforms_init"
+              c:identifier="g_value_transforms_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="value_type_compatible"
+              c:identifier="g_value_type_compatible">
+      <doc xml:whitespace="preserve">Returns whether a #GValue of type @src_type can be copied into
+a #GValue of type @dest_type.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if g_value_copy() is possible with @src_type and @dest_type.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="src_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">source type to be copied.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="dest_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">destination type for copying.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_type_transformable"
+              c:identifier="g_value_type_transformable">
+      <doc xml:whitespace="preserve">Check whether g_value_transform() is able to transform values
+of type @src_type into values of type @dest_type.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the transformation is possible, %FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="src_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Source type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="dest_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Target type.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_types_init" c:identifier="g_value_types_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="variant_get_gtype"
+              c:identifier="g_variant_get_gtype"
+              version="2.24"
+              deprecated="2.26">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="variant_type_get_gtype"
+              c:identifier="g_variant_type_get_gtype">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+  </namespace>
+</repository>
diff --git a/basis/gobject/authors.txt b/basis/gobject/authors.txt
new file mode 100644 (file)
index 0000000..ce9bcc8
--- /dev/null
@@ -0,0 +1 @@
+Anton Gorenko
\ No newline at end of file
diff --git a/basis/gobject/ffi/ffi.factor b/basis/gobject/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..070a2c5
--- /dev/null
@@ -0,0 +1,68 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.destructors alien.libraries alien.syntax
+combinators gobject-introspection literals math system vocabs.loader ;
+IN: gobject.ffi
+
+<<
+"glib.ffi" require
+>>
+
+LIBRARY: gobject
+
+<<
+"gobject" {
+    { [ os winnt? ] [ "libobject-2.0-0.dll" cdecl add-library ] }
+    { [ os macosx? ] [ "/opt/local/lib/libgobject-2.0.0.dylib" cdecl add-library ] }
+    { [ os unix? ] [ "libgobject-2.0.so" cdecl add-library ] }
+} cond
+>>
+
+IMPLEMENT-STRUCTS: GValue GParamSpecVariant ;
+
+GIR: vocab:gobject/GObject-2.0.gir
+
+IN: gobject.ffi
+
+FORGET: GIOCondition
+FORGET: G_IO_IN
+FORGET: G_IO_OUT
+FORGET: G_IO_PRI
+FORGET: G_IO_ERR
+FORGET: G_IO_HUP
+FORGET: G_IO_NVAL
+
+DESTRUCTOR: g_object_unref
+
+CONSTANT: G_TYPE_INVALID $[ 0 2 shift ]
+CONSTANT: G_TYPE_NONE $[ 1 2 shift ]
+CONSTANT: G_TYPE_INTERFACE $[ 2 2 shift ]
+CONSTANT: G_TYPE_CHAR $[ 3 2 shift ]
+CONSTANT: G_TYPE_UCHAR $[ 4 2 shift ]
+CONSTANT: G_TYPE_BOOLEAN $[ 5 2 shift ]
+CONSTANT: G_TYPE_INT $[ 6 2 shift ]
+CONSTANT: G_TYPE_UINT $[ 7 2 shift ]
+CONSTANT: G_TYPE_LONG $[ 8 2 shift ]
+CONSTANT: G_TYPE_ULONG $[ 9 2 shift ]
+CONSTANT: G_TYPE_INT64 $[ 10 2 shift ]
+CONSTANT: G_TYPE_UINT64 $[ 11 2 shift ]
+CONSTANT: G_TYPE_ENUM $[ 12 2 shift ]
+CONSTANT: G_TYPE_FLAGS $[ 13 2 shift ]
+CONSTANT: G_TYPE_FLOAT $[ 14 2 shift ]
+CONSTANT: G_TYPE_DOUBLE $[ 15 2 shift ]
+CONSTANT: G_TYPE_STRING $[ 16 2 shift ]
+CONSTANT: G_TYPE_POINTER $[ 17 2 shift ]
+CONSTANT: G_TYPE_BOXED $[ 18 2 shift ]
+CONSTANT: G_TYPE_PARAM $[ 19 2 shift ]
+CONSTANT: G_TYPE_OBJECT $[ 20 2 shift ]
+
+! Macros
+
+: g_signal_connect ( instance detailed_signal c_handler data -- result )
+    f 0 g_signal_connect_data ;
+
+: g_signal_connect_after ( instance detailed_signal c_handler data -- result )
+    f G_CONNECT_AFTER g_signal_connect_data ;
+
+: g_signal_connect_swapped ( instance detailed_signal c_handler data -- result )
+    f G_CONNECT_SWAPPED g_signal_connect_data ;
diff --git a/basis/gobject/gobject.factor b/basis/gobject/gobject.factor
new file mode 100644 (file)
index 0000000..5dc903a
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gobject.ffi ;
+IN: gobject
+
diff --git a/basis/gobject/summary.txt b/basis/gobject/summary.txt
new file mode 100644 (file)
index 0000000..880215c
--- /dev/null
@@ -0,0 +1 @@
+GObject binding
diff --git a/basis/gobject/tags.txt b/basis/gobject/tags.txt
new file mode 100755 (executable)
index 0000000..bb863cf
--- /dev/null
@@ -0,0 +1 @@
+bindings
diff --git a/basis/gtk/Gtk-3.0.gir b/basis/gtk/Gtk-3.0.gir
new file mode 100644 (file)
index 0000000..474b6e0
--- /dev/null
@@ -0,0 +1,81744 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="Atk" version="1.0"/>
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gdk" version="3.0"/>
+  <include name="GdkPixbuf" version="2.0"/>
+  <include name="Gio" version="2.0"/>
+  <include name="Pango" version="1.0"/>
+  <include name="cairo" version="1.0"/>
+  <namespace name="Gtk"
+             version="3.0"
+             shared-library="libgtk-x11-3.0.so.0"
+             c:identifier-prefixes="Gtk"
+             c:symbol-prefixes="gtk">
+    <alias name="Allocation" c:type="GtkAllocation">
+      <doc xml:whitespace="preserve">A &lt;structname&gt;GtkAllocation&lt;/structname&gt; of a widget represents region which has been allocated to the
+widget by its parent. It is a subregion of its parents allocation. See
+&lt;xref linkend="size-allocation"/&gt; for more information.</doc>
+      <type name="Gdk.Rectangle" c:type="GdkRectangle"/>
+    </alias>
+    <class name="AboutDialog"
+           c:symbol-prefix="about_dialog"
+           c:type="GtkAboutDialog"
+           parent="Dialog"
+           glib:type-name="GtkAboutDialog"
+           glib:get-type="gtk_about_dialog_get_type"
+           glib:type-struct="AboutDialogClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;GtkAboutDialog&lt;/structname&gt; struct contains
+only private fields and should not be directly accessed.</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new"
+                   c:identifier="gtk_about_dialog_new"
+                   version="2.6">
+        <doc xml:whitespace="preserve">Creates a new #GtkAboutDialog.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a newly created #GtkAboutDialog</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="get_artists"
+              c:identifier="gtk_about_dialog_get_artists"
+              version="2.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns the string which are displayed in the artists tab
+of the secondary credits dialog.
+the artists. The array is owned by the about dialog
+and must not be modified.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">A %NULL-terminated string array containing</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_authors"
+              c:identifier="gtk_about_dialog_get_authors"
+              version="2.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns the string which are displayed in the authors tab
+of the secondary credits dialog.
+the authors. The array is owned by the about dialog
+and must not be modified.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">A %NULL-terminated string array containing</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_comments"
+              c:identifier="gtk_about_dialog_get_comments"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the comments string.
+dialog and must not be modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The comments. The string is owned by the about</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_copyright"
+              c:identifier="gtk_about_dialog_get_copyright"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the copyright string.
+dialog and must not be modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The copyright string. The string is owned by the about</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_documenters"
+              c:identifier="gtk_about_dialog_get_documenters"
+              version="2.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns the string which are displayed in the documenters
+tab of the secondary credits dialog.
+the documenters. The array is owned by the about dialog
+and must not be modified.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">A %NULL-terminated string array containing</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_license"
+              c:identifier="gtk_about_dialog_get_license"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the license information.
+dialog and must not be modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The license information. The string is owned by the about</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_license_type"
+              c:identifier="gtk_about_dialog_get_license_type"
+              version="3.0">
+        <doc xml:whitespace="preserve">Retrieves the license set using gtk_about_dialog_set_license_type()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkLicense value</doc>
+          <type name="License" c:type="GtkLicense"/>
+        </return-value>
+      </method>
+      <method name="get_logo"
+              c:identifier="gtk_about_dialog_get_logo"
+              version="2.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns the pixbuf displayed as logo in the about dialog.
+owned by the about dialog. If you want to keep a reference
+to it, you have to call g_object_ref() on it.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the pixbuf displayed as logo. The pixbuf is</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="get_logo_icon_name"
+              c:identifier="gtk_about_dialog_get_logo_icon_name"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the icon name displayed as logo in the about dialog.
+owned by the dialog. If you want to keep a reference
+to it, you have to call g_strdup() on it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the icon name displayed as logo. The string is</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_program_name"
+              c:identifier="gtk_about_dialog_get_program_name"
+              version="2.12">
+        <doc xml:whitespace="preserve">Returns the program name displayed in the about dialog.
+dialog and must not be modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The program name. The string is owned by the about</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_translator_credits"
+              c:identifier="gtk_about_dialog_get_translator_credits"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the translator credits string which is displayed
+in the translators tab of the secondary credits dialog.
+owned by the about dialog and must not be modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The translator credits string. The string is</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_version"
+              c:identifier="gtk_about_dialog_get_version"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the version string.
+dialog and must not be modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The version string. The string is owned by the about</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_website"
+              c:identifier="gtk_about_dialog_get_website"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the website URL.
+dialog and must not be modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The website URL. The string is owned by the about</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_website_label"
+              c:identifier="gtk_about_dialog_get_website_label"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the label used for the website link.
+owned by the about dialog and must not be modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The label used for the website link. The string is</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_wrap_license"
+              c:identifier="gtk_about_dialog_get_wrap_license"
+              version="2.8">
+        <doc xml:whitespace="preserve">Returns whether the license text in @about is
+automatically wrapped.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the license text is wrapped</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_artists"
+              c:identifier="gtk_about_dialog_set_artists"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the strings which are displayed in the artists tab
+of the secondary credits dialog.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="artists" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a %NULL-terminated array of strings</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_authors"
+              c:identifier="gtk_about_dialog_set_authors"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the strings which are displayed in the authors tab
+of the secondary credits dialog.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="authors" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a %NULL-terminated array of strings</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_comments"
+              c:identifier="gtk_about_dialog_set_comments"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the comments string to display in the about dialog.
+This should be a short string of one or two lines.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="comments" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a comments string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_copyright"
+              c:identifier="gtk_about_dialog_set_copyright"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the copyright string to display in the about dialog.
+This should be a short string of one or two lines.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="copyright" transfer-ownership="none">
+            <doc xml:whitespace="preserve">(allow-none) the copyright string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_documenters"
+              c:identifier="gtk_about_dialog_set_documenters"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the strings which are displayed in the documenters tab
+of the secondary credits dialog.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="documenters" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a %NULL-terminated array of strings</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_license"
+              c:identifier="gtk_about_dialog_set_license"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the license information to be displayed in the secondary
+license dialog. If @license is %NULL, the license button is
+hidden.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="license" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the license information or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_license_type"
+              c:identifier="gtk_about_dialog_set_license_type"
+              version="3.0">
+        <doc xml:whitespace="preserve">Sets the license of the application showing the @about dialog from a
+list of known licenses.
+This function overrides the license set using
+gtk_about_dialog_set_license().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="license_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of license</doc>
+            <type name="License" c:type="GtkLicense"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_logo"
+              c:identifier="gtk_about_dialog_set_logo"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the pixbuf to be displayed as logo in the about dialog.
+If it is %NULL, the default window icon set with
+gtk_window_set_default_icon() will be used.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="logo" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdkPixbuf, or %NULL</doc>
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_logo_icon_name"
+              c:identifier="gtk_about_dialog_set_logo_icon_name"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the pixbuf to be displayed as logo in the about dialog.
+If it is %NULL, the default window icon set with
+gtk_window_set_default_icon() will be used.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an icon name, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_program_name"
+              c:identifier="gtk_about_dialog_set_program_name"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets the name to display in the about dialog.
+If this is not set, it defaults to g_get_application_name().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the program name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_translator_credits"
+              c:identifier="gtk_about_dialog_set_translator_credits"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the translator credits string which is displayed in
+the translators tab of the secondary credits dialog.
+The intended use for this string is to display the translator
+of the language which is currently used in the user interface.
+Using gettext(), a simple way to achieve that is to mark the
+string for translation:
+|[
+gtk_about_dialog_set_translator_credits (about, _("translator-credits"));
+]|
+It is a good idea to use the customary msgid "translator-credits" for this
+purpose, since translators will already know the purpose of that msgid, and
+since #GtkAboutDialog will detect if "translator-credits" is untranslated
+and hide the tab.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="translator_credits"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the translator credits</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_version"
+              c:identifier="gtk_about_dialog_set_version"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the version string to display in the about dialog.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="version" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the version string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_website"
+              c:identifier="gtk_about_dialog_set_website"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the URL to use for the website link.
+Note that that the hook functions need to be set up
+before calling this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="website" transfer-ownership="none">
+            <doc xml:whitespace="preserve">(allow-none): a URL string starting with "http://"</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_website_label"
+              c:identifier="gtk_about_dialog_set_website_label"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the label to be used for the website link.
+It defaults to the website URL.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="website_label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the label used for the website link</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_wrap_license"
+              c:identifier="gtk_about_dialog_set_wrap_license"
+              version="2.8">
+        <doc xml:whitespace="preserve">Sets whether the license text in @about is
+automatically wrapped.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wrap_license" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to wrap the license</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="artists"
+                version="2.6"
+                introspectable="0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The people who contributed artwork to the program, as a %NULL-terminated
+array of strings. Each string may contain email addresses and URLs, which
+will be displayed as links, see the introduction for more details.</doc>
+        <type/>
+      </property>
+      <property name="authors"
+                version="2.6"
+                introspectable="0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The authors of the program, as a %NULL-terminated array of strings.
+Each string may contain email addresses and URLs, which will be displayed
+as links, see the introduction for more details.</doc>
+        <type/>
+      </property>
+      <property name="comments"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Comments about the program. This string is displayed in a label
+in the main dialog, thus it should be a short explanation of
+the main purpose of the program, not a detailed list of features.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="copyright"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Copyright information for the program.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="documenters"
+                version="2.6"
+                introspectable="0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The people documenting the program, as a %NULL-terminated array of strings.
+Each string may contain email addresses and URLs, which will be displayed
+as links, see the introduction for more details.</doc>
+        <type/>
+      </property>
+      <property name="license"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The license of the program. This string is displayed in a
+text view in a secondary dialog, therefore it is fine to use
+a long multi-paragraph text. Note that the text is only wrapped
+in the text view if the "wrap-license" property is set to %TRUE;
+otherwise the text itself must contain the intended linebreaks.
+When setting this property to a non-%NULL value, the
+#GtkAboutDialog:license-type property is set to %GTK_LICENSE_CUSTOM
+as a side effect.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="license-type"
+                version="3.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The license of the program, as a value of the %GtkLicense enumeration.
+The #GtkAboutDialog will automatically fill out a standard disclaimer
+and link the user to the appropriate online resource for the license
+text.
+If %GTK_LICENSE_UNKNOWN is used, the link used will be the same
+specified in the #GtkAboutDialog:website property.
+If %GTK_LICENSE_CUSTOM is used, the current contents of the
+#GtkAboutDialog:license property are used.
+For any other #GtkLicense value, the contents of the
+#GtkAboutDialog:license property are also set by this property as
+a side effect.</doc>
+        <type name="License"/>
+      </property>
+      <property name="logo"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A logo for the about box. If this is not set, it defaults to
+gtk_window_get_default_icon_list().</doc>
+        <type name="GdkPixbuf.Pixbuf"/>
+      </property>
+      <property name="logo-icon-name"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A named icon to use as the logo for the about box. This property
+overrides the #GtkAboutDialog:logo property.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="program-name"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The name of the program.
+If this is not set, it defaults to g_get_application_name().</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="translator-credits"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Credits to the translators. This string should be marked as translatable.
+The string may contain email addresses and URLs, which will be displayed
+as links, see the introduction for more details.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="version"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The version of the program.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="website"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The URL for the link to the website of the program.
+This should be a string starting with "http://.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="website-label"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The label for the link to the website of the program. If this is not set,
+it defaults to the URL specified in the #GtkAboutDialog:website property.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="wrap-license"
+                version="2.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether to wrap the text in the license dialog.</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Dialog" c:type="GtkDialog"/>
+      </field>
+      <field name="priv">
+        <type name="AboutDialogPrivate" c:type="GtkAboutDialogPrivate*"/>
+      </field>
+      <glib:signal name="activate-link" version="2.24">
+        <doc xml:whitespace="preserve">The signal which gets emitted to activate a URI.
+Applications may connect to it to override the default behaviour,
+which is to call gtk_show_uri().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the link has been activated</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the URI that is activated</doc>
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="AboutDialogClass"
+            c:type="GtkAboutDialogClass"
+            glib:is-gtype-struct-for="AboutDialog">
+      <field name="parent_class">
+        <type name="DialogClass" c:type="GtkDialogClass"/>
+      </field>
+      <field name="activate_link">
+        <callback name="activate_link">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="dialog" transfer-ownership="none">
+              <type name="AboutDialog" c:type="GtkAboutDialog*"/>
+            </parameter>
+            <parameter name="uri" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="AboutDialogPrivate"
+            c:type="GtkAboutDialogPrivate"
+            disguised="1">
+    </record>
+    <bitfield name="AccelFlags"
+              glib:type-name="GtkAccelFlags"
+              glib:get-type="gtk_accel_flags_get_type"
+              c:type="GtkAccelFlags">
+      <member name="visible"
+              value="1"
+              c:identifier="GTK_ACCEL_VISIBLE"
+              glib:nick="visible"/>
+      <member name="locked"
+              value="2"
+              c:identifier="GTK_ACCEL_LOCKED"
+              glib:nick="locked"/>
+      <member name="mask"
+              value="7"
+              c:identifier="GTK_ACCEL_MASK"
+              glib:nick="mask"/>
+    </bitfield>
+    <class name="AccelGroup"
+           c:symbol-prefix="accel_group"
+           c:type="GtkAccelGroup"
+           parent="GObject.Object"
+           glib:type-name="GtkAccelGroup"
+           glib:get-type="gtk_accel_group_get_type"
+           glib:type-struct="AccelGroupClass">
+      <doc xml:whitespace="preserve">An object representing and maintaining a group of accelerators.</doc>
+      <constructor name="new" c:identifier="gtk_accel_group_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkAccelGroup.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkAccelGroup object</doc>
+          <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+        </return-value>
+      </constructor>
+      <function name="from_accel_closure"
+                c:identifier="gtk_accel_group_from_accel_closure"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Finds the #GtkAccelGroup to which @closure is connected; 
+see gtk_accel_group_connect().</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the #GtkAccelGroup to which @closure is connected, or %NULL.</doc>
+          <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+        </return-value>
+        <parameters>
+          <parameter name="closure" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GClosure</doc>
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="activate" c:identifier="gtk_accel_group_activate">
+        <doc xml:whitespace="preserve">Finds the first accelerator in @accel_group 
+that matches @accel_key and @accel_mods, and
+activates it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if an accelerator was activated and handled this keypress</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_quark" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the quark for the accelerator name</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="acceleratable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GObject, usually a #GtkWindow, on which to activate the accelerator.</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="accel_key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">accelerator keyval from a key event</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="accel_mods" transfer-ownership="none">
+            <doc xml:whitespace="preserve">keyboard state mask from a key event</doc>
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect" c:identifier="gtk_accel_group_connect">
+        <doc xml:whitespace="preserve">Installs an accelerator in this group. When @accel_group is being activated
+in response to a call to gtk_accel_groups_activate(), @closure will be
+invoked if the @accel_key and @accel_mods from gtk_accel_groups_activate()
+match those of this connection.
+The signature used for the @closure is that of #GtkAccelGroupActivate.
+Note that, due to implementation details, a single closure can only be
+connected to one accelerator group.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">key value of the accelerator</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="accel_mods" transfer-ownership="none">
+            <doc xml:whitespace="preserve">modifier combination of the accelerator</doc>
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+          <parameter name="accel_flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a flag mask to configure this accelerator</doc>
+            <type name="AccelFlags" c:type="GtkAccelFlags"/>
+          </parameter>
+          <parameter name="closure" transfer-ownership="none">
+            <doc xml:whitespace="preserve">closure to be executed upon accelerator activation</doc>
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_by_path"
+              c:identifier="gtk_accel_group_connect_by_path">
+        <doc xml:whitespace="preserve">Installs an accelerator in this group, using an accelerator path to look
+up the appropriate key and modifiers (see gtk_accel_map_add_entry()).
+When @accel_group is being activated in response to a call to
+gtk_accel_groups_activate(), @closure will be invoked if the @accel_key and
+for the path.
+The signature used for the @closure is that of #GtkAccelGroupActivate.
+Note that @accel_path string will be stored in a #GQuark. Therefore, if you
+pass a static string, you can save some memory by interning it first with 
+g_intern_static_string().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">path used for determining key and modifiers.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="closure" transfer-ownership="none">
+            <doc xml:whitespace="preserve">closure to be executed upon accelerator activation</doc>
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="disconnect" c:identifier="gtk_accel_group_disconnect">
+        <doc xml:whitespace="preserve">Removes an accelerator previously installed through
+gtk_accel_group_connect().
+Since 2.20 @closure can be %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the closure was found and got disconnected</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="closure" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the closure to remove from this accelerator group, or %NULL to remove all closures</doc>
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="disconnect_key"
+              c:identifier="gtk_accel_group_disconnect_key">
+        <doc xml:whitespace="preserve">Removes an accelerator previously installed through
+gtk_accel_group_connect().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if there was an accelerator which could be removed, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">key value of the accelerator</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="accel_mods" transfer-ownership="none">
+            <doc xml:whitespace="preserve">modifier combination of the accelerator</doc>
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find"
+              c:identifier="gtk_accel_group_find"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Finds the first entry in an accelerator group for which</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the key of the first entry passing @find_func. The key is owned by GTK+ and must not be freed.</doc>
+          <type name="AccelKey" c:type="GtkAccelKey*"/>
+        </return-value>
+        <parameters>
+          <parameter name="find_func" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">a function to filter the entries of @accel_group with</doc>
+            <type name="AccelGroupFindFunc" c:type="GtkAccelGroupFindFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to @find_func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_is_locked"
+              c:identifier="gtk_accel_group_get_is_locked"
+              version="2.14">
+        <doc xml:whitespace="preserve">Locks are added and removed using gtk_accel_group_lock() and
+gtk_accel_group_unlock().
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if there are 1 or more locks on the @accel_group,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_modifier_mask"
+              c:identifier="gtk_accel_group_get_modifier_mask"
+              version="2.14">
+        <doc xml:whitespace="preserve">Gets a #GdkModifierType representing the mask for this</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the modifier mask for this accel group.</doc>
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </return-value>
+      </method>
+      <method name="lock" c:identifier="gtk_accel_group_lock">
+        <doc xml:whitespace="preserve">Locks the given accelerator group.
+Locking an acelerator group prevents the accelerators contained
+within it to be changed during runtime. Refer to
+gtk_accel_map_change_entry() about runtime accelerator changes.
+If called more than once, @accel_group remains locked until
+gtk_accel_group_unlock() has been called an equivalent number
+of times.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="query"
+              c:identifier="gtk_accel_group_query"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Queries an accelerator group for all entries matching @accel_key and</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">an array of @n_entries #GtkAccelGroupEntry elements, or %NULL. The array is owned by GTK+ and must not be freed.</doc>
+          <type name="AccelGroupEntry" c:type="GtkAccelGroupEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">key value of the accelerator</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="accel_mods" transfer-ownership="none">
+            <doc xml:whitespace="preserve">modifier combination of the accelerator</doc>
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+          <parameter name="n_entries" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to return the number of entries found, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unlock" c:identifier="gtk_accel_group_unlock">
+        <doc xml:whitespace="preserve">Undoes the last call to gtk_accel_group_lock() on this @accel_group.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="is-locked" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="modifier-mask" transfer-ownership="none">
+        <type name="Gdk.ModifierType"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="AccelGroupPrivate" c:type="GtkAccelGroupPrivate*"/>
+      </field>
+      <glib:signal name="accel-activate">
+        <doc xml:whitespace="preserve">The accel-activate signal is an implementation detail of
+#GtkAccelGroup and not meant to be used by applications.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the accelerator was activated</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the object on which the accelerator was activated</doc>
+            <type name="GObject.Object"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the accelerator keyval</doc>
+            <type name="guint"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the modifier combination of the accelerator</doc>
+            <type name="Gdk.ModifierType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="accel-changed">
+        <doc xml:whitespace="preserve">The accel-changed signal is emitted when a #GtkAccelGroupEntry
+is added to or removed from the accel group. 
+Widgets like #GtkAccelLabel which display an associated 
+accelerator should connect to this signal, and rebuild 
+their visual representation if the @accel_closure is theirs.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the accelerator keyval</doc>
+            <type name="guint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the modifier combination of the accelerator</doc>
+            <type name="Gdk.ModifierType"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GClosure of the accelerator</doc>
+            <type name="GObject.Closure"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <callback name="AccelGroupActivate" c:type="GtkAccelGroupActivate">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="accel_group" transfer-ownership="none">
+          <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+        </parameter>
+        <parameter name="acceleratable" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="keyval" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="modifier" transfer-ownership="none">
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="AccelGroupClass"
+            c:type="GtkAccelGroupClass"
+            glib:is-gtype-struct-for="AccelGroup">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="accel_changed">
+        <callback name="accel_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="accel_group" transfer-ownership="none">
+              <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+            </parameter>
+            <parameter name="keyval" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="modifier" transfer-ownership="none">
+              <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+            </parameter>
+            <parameter name="accel_closure" transfer-ownership="none">
+              <type name="GObject.Closure" c:type="GClosure*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="AccelGroupEntry" c:type="GtkAccelGroupEntry">
+      <field name="key" writable="1">
+        <type name="AccelKey" c:type="GtkAccelKey"/>
+      </field>
+      <field name="closure" writable="1">
+        <type name="GObject.Closure" c:type="GClosure*"/>
+      </field>
+      <field name="accel_path_quark" writable="1">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </field>
+    </record>
+    <callback name="AccelGroupFindFunc"
+              c:type="GtkAccelGroupFindFunc"
+              version="2.2">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="key" transfer-ownership="none">
+          <type name="AccelKey" c:type="GtkAccelKey*"/>
+        </parameter>
+        <parameter name="closure" transfer-ownership="none">
+          <type name="GObject.Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="AccelGroupPrivate" c:type="GtkAccelGroupPrivate">
+      <field name="lock_count" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="modifier_mask" writable="1">
+        <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+      </field>
+      <field name="acceleratables" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="n_accels" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="priv_accels" writable="1">
+        <type name="AccelGroupEntry" c:type="GtkAccelGroupEntry*"/>
+      </field>
+    </record>
+    <record name="AccelKey" c:type="GtkAccelKey">
+      <field name="accel_key" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="accel_mods" writable="1">
+        <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+      </field>
+      <field name="accel_flags" writable="1" bits="16">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <class name="AccelLabel"
+           c:symbol-prefix="accel_label"
+           c:type="GtkAccelLabel"
+           parent="Label"
+           glib:type-name="GtkAccelLabel"
+           glib:get-type="gtk_accel_label_get_type"
+           glib:type-struct="AccelLabelClass">
+      <doc xml:whitespace="preserve">The #GtkAccelLabel-struct struct contains private data only, and
+should be accessed using the functions below.</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_accel_label_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkAccelLabel.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkAccelLabel.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the label string. Must be non-%NULL.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_accel_widget"
+              c:identifier="gtk_accel_label_get_accel_widget">
+        <doc xml:whitespace="preserve">Fetches the widget monitored by this accelerator label. See
+gtk_accel_label_set_accel_widget().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object monitored by the accelerator label, or %NULL.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_accel_width"
+              c:identifier="gtk_accel_label_get_accel_width">
+        <doc xml:whitespace="preserve">Returns the width needed to display the accelerator key(s).
+This is used by menus to align all of the #GtkMenuItem widgets, and shouldn't
+be needed by applications.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width needed to display the accelerator key(s).</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="refetch" c:identifier="gtk_accel_label_refetch">
+        <doc xml:whitespace="preserve">Recreates the string representing the accelerator keys.
+This should not be needed since the string is automatically updated whenever
+accelerators are added or removed from the associated widget.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">always returns %FALSE.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_accel_closure"
+              c:identifier="gtk_accel_label_set_accel_closure">
+        <doc xml:whitespace="preserve">Sets the closure to be monitored by this accelerator label. The closure
+must be connected to an accelerator group; see gtk_accel_group_connect().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_closure" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the closure to monitor for accelerator changes.</doc>
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_accel_widget"
+              c:identifier="gtk_accel_label_set_accel_widget">
+        <doc xml:whitespace="preserve">Sets the widget to be monitored by this accelerator label.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the widget to be monitored.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="accel-closure" writable="1" transfer-ownership="none">
+        <type name="GObject.Closure"/>
+      </property>
+      <property name="accel-widget" writable="1" transfer-ownership="none">
+        <type name="Widget"/>
+      </property>
+      <field name="label">
+        <type name="Label" c:type="GtkLabel"/>
+      </field>
+      <field name="priv">
+        <type name="AccelLabelPrivate" c:type="GtkAccelLabelPrivate*"/>
+      </field>
+    </class>
+    <record name="AccelLabelClass"
+            c:type="GtkAccelLabelClass"
+            glib:is-gtype-struct-for="AccelLabel">
+      <field name="parent_class">
+        <type name="LabelClass" c:type="GtkLabelClass"/>
+      </field>
+      <field name="signal_quote1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="signal_quote2">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="mod_name_shift">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="mod_name_control">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="mod_name_alt">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="mod_separator">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="AccelLabelPrivate"
+            c:type="GtkAccelLabelPrivate"
+            disguised="1">
+    </record>
+    <class name="AccelMap"
+           c:symbol-prefix="accel_map"
+           c:type="GtkAccelMap"
+           parent="GObject.Object"
+           glib:type-name="GtkAccelMap"
+           glib:get-type="gtk_accel_map_get_type"
+           glib:type-struct="AccelMapClass">
+      <function name="add_entry" c:identifier="gtk_accel_map_add_entry">
+        <doc xml:whitespace="preserve">Registers a new accelerator with the global accelerator map.
+This function should only be called once per @accel_path
+with the canonical @accel_key and @accel_mods for this path.
+To change the accelerator during runtime programatically, use
+gtk_accel_map_change_entry().
+The accelerator path must consist of "&amp;lt;WINDOWTYPE&amp;gt;/Category1/Category2/.../Action",
+where &amp;lt;WINDOWTYPE&amp;gt; should be a unique application-specific identifier, that
+corresponds to the kind of window the accelerator is being used in, e.g. "Gimp-Image",
+"Abiword-Document" or "Gnumeric-Settings".
+The Category1/.../Action portion is most appropriately chosen by the action the
+accelerator triggers, i.e. for accelerators on menu items, choose the item's menu path,
+e.g. "File/Save As", "Image/View/Zoom" or "Edit/Select All".
+So a full valid accelerator path may look like:
+"&amp;lt;Gimp-Toolbox&amp;gt;/File/Dialogs/Tool Options...".
+Note that @accel_path string will be stored in a #GQuark. Therefore, if you
+pass a static string, you can save some memory by interning it first with 
+g_intern_static_string().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">valid accelerator path</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="accel_key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the accelerator key</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="accel_mods" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the accelerator modifiers</doc>
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="add_filter" c:identifier="gtk_accel_map_add_filter">
+        <doc xml:whitespace="preserve">Adds a filter to the global list of accel path filters.
+Accel map entries whose accel path matches one of the filters
+are skipped by gtk_accel_map_foreach().
+This function is intended for GTK+ modules that create their own
+menus, but don't want them to be saved into the applications accelerator
+map dump.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter_pattern" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pattern (see #GPatternSpec)</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="change_entry" c:identifier="gtk_accel_map_change_entry">
+        <doc xml:whitespace="preserve">Changes the @accel_key and @accel_mods currently associated with @accel_path.
+Due to conflicts with other accelerators, a change may not always be possible,
+conflicts. A change will only occur if all conflicts could be resolved (which
+might not be the case if conflicting accelerators are locked). Successful
+changes are indicated by a %TRUE return value.
+Note that @accel_path string will be stored in a #GQuark. Therefore, if you
+pass a static string, you can save some memory by interning it first with 
+g_intern_static_string().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the accelerator could be changed, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid accelerator path</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="accel_key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new accelerator key</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="accel_mods" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new accelerator modifiers</doc>
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+          <parameter name="replace" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if other accelerators may be deleted upon conflicts</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="foreach"
+                c:identifier="gtk_accel_map_foreach"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Loops over the entries in the accelerator map whose accel path 
+doesn't match any of the filters added with gtk_accel_map_add_filter(), 
+and execute @foreach_func on each. The signature of @foreach_func is 
+that of #GtkAccelMapForeach, the @changed parameter indicates whether
+this accelerator was changed during runtime (thus, would need
+saving during an accelerator map dump).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to be passed into @foreach_func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="foreach_func" transfer-ownership="none">
+            <doc xml:whitespace="preserve">function to be executed for each accel map entry which is not filtered out</doc>
+            <type name="AccelMapForeach" c:type="GtkAccelMapForeach"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="foreach_unfiltered"
+                c:identifier="gtk_accel_map_foreach_unfiltered"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Loops over all entries in the accelerator map, and execute
+#GtkAccelMapForeach, the @changed parameter indicates whether
+this accelerator was changed during runtime (thus, would need
+saving during an accelerator map dump).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to be passed into @foreach_func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="foreach_func" transfer-ownership="none">
+            <doc xml:whitespace="preserve">function to be executed for each accel map entry</doc>
+            <type name="AccelMapForeach" c:type="GtkAccelMapForeach"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get" c:identifier="gtk_accel_map_get" version="2.4">
+        <doc xml:whitespace="preserve">Gets the singleton global #GtkAccelMap object. This object
+is useful only for notification of changes to the accelerator
+map via the ::changed signal; it isn't a parameter to the
+other accelerator map functions.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the global #GtkAccelMap object</doc>
+          <type name="AccelMap" c:type="GtkAccelMap*"/>
+        </return-value>
+      </function>
+      <function name="load" c:identifier="gtk_accel_map_load">
+        <doc xml:whitespace="preserve">Parses a file previously saved with gtk_accel_map_save() for
+accelerator specifications, and propagates them accordingly.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="file_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file containing accelerator specifications, in the GLib file name encoding</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="load_fd" c:identifier="gtk_accel_map_load_fd">
+        <doc xml:whitespace="preserve">Filedescriptor variant of gtk_accel_map_load().
+Note that the file descriptor will not be closed by this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid readable file descriptor</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="load_scanner" c:identifier="gtk_accel_map_load_scanner">
+        <doc xml:whitespace="preserve">#GScanner variant of gtk_accel_map_load().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scanner" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GScanner which has already been provided with an input file</doc>
+            <type name="GLib.Scanner" c:type="GScanner*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="lock_path"
+                c:identifier="gtk_accel_map_lock_path"
+                version="2.4">
+        <doc xml:whitespace="preserve">Locks the given accelerator path. If the accelerator map doesn't yet contain
+an entry for @accel_path, a new one is created.
+Locking an accelerator path prevents its accelerator from being changed 
+during runtime. A locked accelerator path can be unlocked by 
+gtk_accel_map_unlock_path(). Refer to gtk_accel_map_change_entry() 
+for information about runtime accelerator changes.
+If called more than once, @accel_path remains locked until
+gtk_accel_map_unlock_path() has been called an equivalent number
+of times.
+Note that locking of individual accelerator paths is independent from 
+locking the #GtkAccelGroup containing them. For runtime accelerator
+changes to be possible both the accelerator path and its #GtkAccelGroup
+have to be unlocked.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid accelerator path</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="lookup_entry" c:identifier="gtk_accel_map_lookup_entry">
+        <doc xml:whitespace="preserve">Looks up the accelerator entry for @accel_path and fills in @key.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @accel_path is known, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid accelerator path</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the accelerator key to be filled in (optional)</doc>
+            <type name="AccelKey" c:type="GtkAccelKey*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="save" c:identifier="gtk_accel_map_save">
+        <doc xml:whitespace="preserve">Saves current accelerator specifications (accelerator path, key
+and modifiers) to @file_name.
+The file is written in a format suitable to be read back in by
+gtk_accel_map_load().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="file_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the file to contain accelerator specifications, in the GLib file name encoding</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="save_fd" c:identifier="gtk_accel_map_save_fd">
+        <doc xml:whitespace="preserve">Filedescriptor variant of gtk_accel_map_save().
+Note that the file descriptor will not be closed by this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid writable file descriptor</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="unlock_path"
+                c:identifier="gtk_accel_map_unlock_path"
+                version="2.4">
+        <doc xml:whitespace="preserve">Undoes the last call to gtk_accel_map_lock_path() on this @accel_path.
+Refer to gtk_accel_map_lock_path() for information about accelerator path locking.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid accelerator path</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <glib:signal name="changed" version="2.4">
+        <doc xml:whitespace="preserve">Notifies of a change in the global accelerator map.
+The path is also used as the detail for the signal,
+so it is possible to connect to
+changed::&lt;replaceable&gt;accel_path&lt;/replaceable&gt;.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the path of the accelerator that changed</doc>
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the key value for the new accelerator</doc>
+            <type name="guint"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the modifier mask for the new accelerator</doc>
+            <type name="Gdk.ModifierType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="AccelMapClass"
+            c:type="GtkAccelMapClass"
+            disguised="1"
+            glib:is-gtype-struct-for="AccelMap">
+    </record>
+    <callback name="AccelMapForeach" c:type="GtkAccelMapForeach">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="accel_path" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="accel_key" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="accel_mods" transfer-ownership="none">
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+        <parameter name="changed" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="Accessible"
+           c:symbol-prefix="accessible"
+           c:type="GtkAccessible"
+           parent="Atk.Object"
+           glib:type-name="GtkAccessible"
+           glib:get-type="gtk_accessible_get_type"
+           glib:type-struct="AccessibleClass">
+      <virtual-method name="connect_widget_destroyed"
+                      invoker="connect_widget_destroyed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="connect_widget_destroyed"
+              c:identifier="gtk_accessible_connect_widget_destroyed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_widget"
+              c:identifier="gtk_accessible_get_widget"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the #GtkWidget corresponding to the #GtkAccessible. The returned widget
+does not have a reference added, so you do not need to unref it.
+the #GtkAccessible, or %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">pointer to the #GtkWidget corresponding to</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="set_widget"
+              c:identifier="gtk_accessible_set_widget"
+              version="2.22">
+        <doc xml:whitespace="preserve">Sets the #GtkWidget corresponding to the #GtkAccessible.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkWidget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent">
+        <type name="Atk.Object" c:type="AtkObject"/>
+      </field>
+      <field name="priv">
+        <type name="AccessiblePrivate" c:type="GtkAccessiblePrivate*"/>
+      </field>
+    </class>
+    <record name="AccessibleClass"
+            c:type="GtkAccessibleClass"
+            glib:is-gtype-struct-for="Accessible">
+      <field name="parent_class">
+        <type name="Atk.ObjectClass" c:type="AtkObjectClass"/>
+      </field>
+      <field name="connect_widget_destroyed">
+        <callback name="connect_widget_destroyed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="accessible" transfer-ownership="none">
+              <type name="Accessible" c:type="GtkAccessible*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="AccessiblePrivate"
+            c:type="GtkAccessiblePrivate"
+            disguised="1">
+    </record>
+    <class name="Action"
+           c:symbol-prefix="action"
+           c:type="GtkAction"
+           parent="GObject.Object"
+           glib:type-name="GtkAction"
+           glib:get-type="gtk_action_get_type"
+           glib:type-struct="ActionClass">
+      <implements name="Buildable"/>
+      <constructor name="new" c:identifier="gtk_action_new" version="2.4">
+        <doc xml:whitespace="preserve">Creates a new #GtkAction object. To add the action to a
+#GtkActionGroup and set the accelerator for the action,
+call gtk_action_group_add_action_with_accel().
+See &lt;xref linkend="XML-UI"/&gt; for information on allowed action
+names.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkAction</doc>
+          <type name="Action" c:type="GtkAction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A unique name for the action</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="label" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the label displayed in menu items and on buttons, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tooltip" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a tooltip for the action, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="stock_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the stock icon to display in widgets representing the action, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="connect_proxy">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="proxy" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="create_menu" invoker="create_menu" version="2.12">
+        <doc xml:whitespace="preserve">If @action provides a #GtkMenu widget as a submenu for the menu
+item or the toolbar item it creates, this function returns an
+instance of that menu.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the menu item provided by the action, or %NULL.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="create_menu_item"
+                      invoker="create_menu_item"
+                      version="2.4">
+        <doc xml:whitespace="preserve">Creates a menu item widget that proxies for the given action.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a menu item connected to the action.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="create_tool_item"
+                      invoker="create_tool_item"
+                      version="2.4">
+        <doc xml:whitespace="preserve">Creates a toolbar item widget that proxies for the given action.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a toolbar item connected to the action.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="disconnect_proxy">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="proxy" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="activate" c:identifier="gtk_action_activate" version="2.4">
+        <doc xml:whitespace="preserve">Emits the "activate" signal on the specified action, if it isn't 
+insensitive. This gets called by the proxy widgets when they get 
+activated.
+It can also be used to manually activate an action.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="block_activate"
+              c:identifier="gtk_action_block_activate"
+              version="2.16">
+        <doc xml:whitespace="preserve">Disable activation signals from the action 
+This is needed when updating the state of your proxy
+#GtkActivatable widget could result in calling gtk_action_activate(),
+this is a convenience function to avoid recursing in those
+cases (updating toggle state for instance).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="connect_accelerator"
+              c:identifier="gtk_action_connect_accelerator"
+              version="2.4">
+        <doc xml:whitespace="preserve">Installs the accelerator for @action if @action has an
+accel path and group. See gtk_action_set_accel_path() and 
+gtk_action_set_accel_group()
+Since multiple proxies may independently trigger the installation
+of the accelerator, the @action counts the number of times this
+function has been called and doesn't remove the accelerator until
+gtk_action_disconnect_accelerator() has been called as many times.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="create_icon"
+              c:identifier="gtk_action_create_icon"
+              version="2.4">
+        <doc xml:whitespace="preserve">This function is intended for use by action implementations to
+create icons displayed in the proxy widgets.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a widget that displays the icon for this action.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of the icon that should be created.</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_menu"
+              c:identifier="gtk_action_create_menu"
+              version="2.12">
+        <doc xml:whitespace="preserve">If @action provides a #GtkMenu widget as a submenu for the menu
+item or the toolbar item it creates, this function returns an
+instance of that menu.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the menu item provided by the action, or %NULL.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="create_menu_item"
+              c:identifier="gtk_action_create_menu_item"
+              version="2.4">
+        <doc xml:whitespace="preserve">Creates a menu item widget that proxies for the given action.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a menu item connected to the action.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="create_tool_item"
+              c:identifier="gtk_action_create_tool_item"
+              version="2.4">
+        <doc xml:whitespace="preserve">Creates a toolbar item widget that proxies for the given action.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a toolbar item connected to the action.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="disconnect_accelerator"
+              c:identifier="gtk_action_disconnect_accelerator"
+              version="2.4">
+        <doc xml:whitespace="preserve">Undoes the effect of one call to gtk_action_connect_accelerator().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_accel_closure"
+              c:identifier="gtk_action_get_accel_closure"
+              version="2.8">
+        <doc xml:whitespace="preserve">Returns the accel closure for this action.
+owned by GTK+ and must not be unreffed or modified.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the accel closure for this action. The returned closure is</doc>
+          <type name="GObject.Closure" c:type="GClosure*"/>
+        </return-value>
+      </method>
+      <method name="get_accel_path"
+              c:identifier="gtk_action_get_accel_path"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the accel path for this action.  
+if none is set. The returned string is owned by GTK+ 
+and must not be freed or modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the accel path for this action, or %NULL</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_always_show_image"
+              c:identifier="gtk_action_get_always_show_image"
+              version="2.20">
+        <doc xml:whitespace="preserve">Returns whether @action&lt;!-- --&gt;'s menu item proxies will ignore the
+#GtkSettings:gtk-menu-images setting and always show their image,
+if available.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the menu item proxies will always show their image</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_gicon"
+              c:identifier="gtk_action_get_gicon"
+              version="2.16">
+        <doc xml:whitespace="preserve">Gets the gicon of @action.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The action's #GIcon if one is set.</doc>
+          <type name="Gio.Icon" c:type="GIcon*"/>
+        </return-value>
+      </method>
+      <method name="get_icon_name"
+              c:identifier="gtk_action_get_icon_name"
+              version="2.16">
+        <doc xml:whitespace="preserve">Gets the icon name of @action.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the icon name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_is_important"
+              c:identifier="gtk_action_get_is_important"
+              version="2.16">
+        <doc xml:whitespace="preserve">Checks whether @action is important or not</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @action is important</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_label"
+              c:identifier="gtk_action_get_label"
+              version="2.16">
+        <doc xml:whitespace="preserve">Gets the label text of @action.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the label text</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_name" c:identifier="gtk_action_get_name" version="2.4">
+        <doc xml:whitespace="preserve">Returns the name of the action.
+be freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the action. The string belongs to GTK+ and should not</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_proxies"
+              c:identifier="gtk_action_get_proxies"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the proxy widgets for an action.
+See also gtk_activatable_get_related_action().
+and must not be modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GSList of proxy widgets. The list is owned by GTK+</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Widget"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_sensitive"
+              c:identifier="gtk_action_get_sensitive"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether the action itself is sensitive. Note that this doesn't 
+necessarily mean effective sensitivity. See gtk_action_is_sensitive() 
+for that.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the action itself is sensitive.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_short_label"
+              c:identifier="gtk_action_get_short_label"
+              version="2.16">
+        <doc xml:whitespace="preserve">Gets the short label text of @action.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the short label text.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_stock_id"
+              c:identifier="gtk_action_get_stock_id"
+              version="2.16">
+        <doc xml:whitespace="preserve">Gets the stock id of @action.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the stock id</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_tooltip"
+              c:identifier="gtk_action_get_tooltip"
+              version="2.16">
+        <doc xml:whitespace="preserve">Gets the tooltip text of @action.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the tooltip text</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_visible"
+              c:identifier="gtk_action_get_visible"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether the action itself is visible. Note that this doesn't 
+necessarily mean effective visibility. See gtk_action_is_sensitive() 
+for that.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the action itself is visible.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_visible_horizontal"
+              c:identifier="gtk_action_get_visible_horizontal"
+              version="2.16">
+        <doc xml:whitespace="preserve">Checks whether @action is visible when horizontal</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @action is visible when horizontal</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_visible_vertical"
+              c:identifier="gtk_action_get_visible_vertical"
+              version="2.16">
+        <doc xml:whitespace="preserve">Checks whether @action is visible when horizontal</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @action is visible when horizontal</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_sensitive"
+              c:identifier="gtk_action_is_sensitive"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether the action is effectively sensitive.
+are both sensitive.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the action and its associated action group</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_visible"
+              c:identifier="gtk_action_is_visible"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether the action is effectively visible.
+are both visible.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the action and its associated action group</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_accel_group"
+              c:identifier="gtk_action_set_accel_group"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the #GtkAccelGroup in which the accelerator for this action
+will be installed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_group"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkAccelGroup or %NULL</doc>
+            <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_accel_path"
+              c:identifier="gtk_action_set_accel_path"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the accel path for this action.  All proxy widgets associated
+with the action will have this accel path, so that their
+accelerators are consistent.
+Note that @accel_path string will be stored in a #GQuark. Therefore, if you
+pass a static string, you can save some memory by interning it first with 
+g_intern_static_string().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the accelerator path</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_always_show_image"
+              c:identifier="gtk_action_set_always_show_image"
+              version="2.20">
+        <doc xml:whitespace="preserve">Sets whether @action&lt;!-- --&gt;'s menu item proxies will ignore the
+#GtkSettings:gtk-menu-images setting and always show their image, if available.
+Use this if the menu item would be useless or hard to use
+without their image.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="always_show" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if menuitem proxies should always show their image</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_gicon"
+              c:identifier="gtk_action_set_gicon"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets the icon of @action.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GIcon to set</doc>
+            <type name="Gio.Icon" c:type="GIcon*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_name"
+              c:identifier="gtk_action_set_icon_name"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets the icon name on @action</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the icon name to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_is_important"
+              c:identifier="gtk_action_set_is_important"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets whether the action is important, this attribute is used
+primarily by toolbar items to decide whether to show a label
+or not.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_important" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to make the action important</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_label"
+              c:identifier="gtk_action_set_label"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets the label of @action.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the label text to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sensitive"
+              c:identifier="gtk_action_set_sensitive"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the ::sensitive property of the action to @sensitive. Note that 
+this doesn't necessarily mean effective sensitivity. See 
+gtk_action_is_sensitive() 
+for that.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sensitive" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to make the action sensitive</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_short_label"
+              c:identifier="gtk_action_set_short_label"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets a shorter label text on @action.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="short_label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the label text to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_stock_id"
+              c:identifier="gtk_action_set_stock_id"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets the stock id on @action</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the stock id</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tooltip"
+              c:identifier="gtk_action_set_tooltip"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets the tooltip text on @action</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tooltip" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the tooltip text</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_visible"
+              c:identifier="gtk_action_set_visible"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the ::visible property of the action to @visible. Note that 
+this doesn't necessarily mean effective visibility. See 
+gtk_action_is_visible() 
+for that.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to make the action visible</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_visible_horizontal"
+              c:identifier="gtk_action_set_visible_horizontal"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets whether @action is visible when horizontal</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible_horizontal" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the action is visible horizontally</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_visible_vertical"
+              c:identifier="gtk_action_set_visible_vertical"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets whether @action is visible when vertical</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible_vertical" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the action is visible vertically</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unblock_activate"
+              c:identifier="gtk_action_unblock_activate"
+              version="2.16">
+        <doc xml:whitespace="preserve">Reenable activation signals from the action</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="action-group" writable="1" transfer-ownership="none">
+        <type name="ActionGroup"/>
+      </property>
+      <property name="always-show-image"
+                version="2.20"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If %TRUE, the action's menu item proxies will ignore the #GtkSettings:gtk-menu-images 
+setting and always show their image, if available.
+Use this property if the menu item would be useless or hard to use
+without their image.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="gicon"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GIcon displayed in the #GtkAction.
+Note that the stock icon is preferred, if the #GtkAction:stock-id 
+property holds the id of an existing stock icon.
+This is an appearance property and thus only applies if 
+#GtkActivatable:use-action-appearance is %TRUE.</doc>
+        <type name="Gio.Icon"/>
+      </property>
+      <property name="hide-if-empty" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="icon-name"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The name of the icon from the icon theme. 
+Note that the stock icon is preferred, if the #GtkAction:stock-id 
+property holds the id of an existing stock icon, and the #GIcon is
+preferred if the #GtkAction:gicon property is set. 
+This is an appearance property and thus only applies if 
+#GtkActivatable:use-action-appearance is %TRUE.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="is-important" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="label" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The label used for menu items and buttons that activate
+this action. If the label is %NULL, GTK+ uses the stock 
+label specified via the stock-id property.
+This is an appearance property and thus only applies if 
+#GtkActivatable:use-action-appearance is %TRUE.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="name"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="sensitive" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="short-label" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">A shorter label that may be used on toolbar buttons.
+This is an appearance property and thus only applies if 
+#GtkActivatable:use-action-appearance is %TRUE.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="stock-id" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The stock icon displayed in widgets representing this action.
+This is an appearance property and thus only applies if 
+#GtkActivatable:use-action-appearance is %TRUE.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="tooltip" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="visible" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="visible-horizontal"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="visible-overflown"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">When %TRUE, toolitem proxies for this action are represented in the 
+toolbar overflow menu.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="visible-vertical" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="private_data">
+        <type name="ActionPrivate" c:type="GtkActionPrivate*"/>
+      </field>
+      <glib:signal name="activate" version="2.4">
+        <doc xml:whitespace="preserve">The "activate" signal is emitted when the action is activated.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ActionClass"
+            c:type="GtkActionClass"
+            glib:is-gtype-struct-for="Action">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="activate">
+        <callback name="activate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="GtkAction*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="menu_item_type">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="toolbar_item_type">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="create_menu_item">
+        <callback name="create_menu_item">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a menu item connected to the action.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="GtkAction*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_tool_item">
+        <callback name="create_tool_item">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a toolbar item connected to the action.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="GtkAction*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="connect_proxy">
+        <callback name="connect_proxy">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="GtkAction*"/>
+            </parameter>
+            <parameter name="proxy" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="disconnect_proxy">
+        <callback name="disconnect_proxy">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="GtkAction*"/>
+            </parameter>
+            <parameter name="proxy" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_menu">
+        <callback name="create_menu">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the menu item provided by the action, or %NULL.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="GtkAction*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ActionEntry" c:type="GtkActionEntry">
+      <doc xml:whitespace="preserve">#GtkActionEntry structs are used with gtk_action_group_add_actions() to
+construct actions.</doc>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="stock_id" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="label" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="accelerator" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="tooltip" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="callback" writable="1">
+        <type name="GObject.Callback" c:type="GCallback"/>
+      </field>
+    </record>
+    <class name="ActionGroup"
+           c:symbol-prefix="action_group"
+           c:type="GtkActionGroup"
+           parent="GObject.Object"
+           glib:type-name="GtkActionGroup"
+           glib:get-type="gtk_action_group_get_type"
+           glib:type-struct="ActionGroupClass">
+      <implements name="Buildable"/>
+      <constructor name="new"
+                   c:identifier="gtk_action_group_new"
+                   version="2.4">
+        <doc xml:whitespace="preserve">Creates a new #GtkActionGroup object. The name of the action group
+is used when associating &lt;link linkend="Action-Accel"&gt;keybindings&lt;/link&gt; 
+with the actions.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GtkActionGroup</doc>
+          <type name="ActionGroup" c:type="GtkActionGroup*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action group.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="get_action" invoker="get_action" version="2.4">
+        <doc xml:whitespace="preserve">Looks up an action in the action group by name.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the action, or %NULL if no action by that name exists</doc>
+          <type name="Action" c:type="GtkAction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_action"
+              c:identifier="gtk_action_group_add_action"
+              version="2.4">
+        <doc xml:whitespace="preserve">Adds an action object to the action group. Note that this function
+does not set up the accel path of the action, which can lead to problems
+if a user tries to modify the accelerator of a menuitem associated with
+the action. Therefore you must either set the accel path yourself with
+gtk_action_set_accel_path(), or use 
+&lt;literal&gt;gtk_action_group_add_action_with_accel (..., NULL)&lt;/literal&gt;.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an action</doc>
+            <type name="Action" c:type="GtkAction*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_action_with_accel"
+              c:identifier="gtk_action_group_add_action_with_accel"
+              version="2.4">
+        <doc xml:whitespace="preserve">Adds an action object to the action group and sets up the accelerator.
+If @accelerator is %NULL, attempts to use the accelerator associated 
+with the stock_id of the action. 
+Accel paths are set to
+&lt;literal&gt;&amp;lt;Actions&amp;gt;/&lt;replaceable&gt;group-name&lt;/replaceable&gt;/&lt;replaceable&gt;action-name&lt;/replaceable&gt;&lt;/literal&gt;.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action to add</doc>
+            <type name="Action" c:type="GtkAction*"/>
+          </parameter>
+          <parameter name="accelerator"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the accelerator for the action, in the format understood by gtk_accelerator_parse(), or "" for no accelerator, or %NULL to use the stock accelerator</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_actions"
+              c:identifier="gtk_action_group_add_actions"
+              version="2.4">
+        <doc xml:whitespace="preserve">This is a convenience function to create a number of actions and add them 
+to the action group.
+The "activate" signals of the actions are connected to the callbacks and 
+their accel paths are set to 
+&lt;literal&gt;&amp;lt;Actions&amp;gt;/&lt;replaceable&gt;group-name&lt;/replaceable&gt;/&lt;replaceable&gt;action-name&lt;/replaceable&gt;&lt;/literal&gt;.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entries" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of action descriptions</doc>
+            <type name="ActionEntry" c:type="GtkActionEntry*"/>
+          </parameter>
+          <parameter name="n_entries" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of entries</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to the action callbacks</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_actions_full"
+              c:identifier="gtk_action_group_add_actions_full"
+              version="2.4">
+        <doc xml:whitespace="preserve">This variant of gtk_action_group_add_actions() adds a #GDestroyNotify
+callback for @user_data.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entries" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of action descriptions</doc>
+            <type name="ActionEntry" c:type="GtkActionEntry*"/>
+          </parameter>
+          <parameter name="n_entries" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of entries</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to the action callbacks</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">destroy notification callback for @user_data</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_radio_actions"
+              c:identifier="gtk_action_group_add_radio_actions"
+              version="2.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">This is a convenience routine to create a group of radio actions and
+add them to the action group. 
+The "changed" signal of the first radio action is connected to the 
+&lt;literal&gt;&amp;lt;Actions&amp;gt;/&lt;replaceable&gt;group-name&lt;/replaceable&gt;/&lt;replaceable&gt;action-name&lt;/replaceable&gt;&lt;/literal&gt;.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entries" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of radio action descriptions</doc>
+            <type name="RadioActionEntry" c:type="GtkRadioActionEntry*"/>
+          </parameter>
+          <parameter name="n_entries" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of entries</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the action to activate initially, or -1 if no action should be activated</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="on_change" transfer-ownership="none" closure="4">
+            <doc xml:whitespace="preserve">the callback to connect to the changed signal</doc>
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to the action callbacks</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_radio_actions_full"
+              c:identifier="gtk_action_group_add_radio_actions_full"
+              version="2.4">
+        <doc xml:whitespace="preserve">This variant of gtk_action_group_add_radio_actions() adds a 
+#GDestroyNotify callback for @user_data.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entries" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of radio action descriptions</doc>
+            <type name="RadioActionEntry" c:type="GtkRadioActionEntry*"/>
+          </parameter>
+          <parameter name="n_entries" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of entries</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the action to activate initially, or -1 if no action should be activated</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="on_change"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="4"
+                     destroy="5">
+            <doc xml:whitespace="preserve">the callback to connect to the changed signal</doc>
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to the action callbacks</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">destroy notification callback for @user_data</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_toggle_actions"
+              c:identifier="gtk_action_group_add_toggle_actions"
+              version="2.4">
+        <doc xml:whitespace="preserve">This is a convenience function to create a number of toggle actions and add them 
+to the action group.
+The "activate" signals of the actions are connected to the callbacks and 
+their accel paths are set to 
+&lt;literal&gt;&amp;lt;Actions&amp;gt;/&lt;replaceable&gt;group-name&lt;/replaceable&gt;/&lt;replaceable&gt;action-name&lt;/replaceable&gt;&lt;/literal&gt;.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entries" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of toggle action descriptions</doc>
+            <type name="ToggleActionEntry" c:type="GtkToggleActionEntry*"/>
+          </parameter>
+          <parameter name="n_entries" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of entries</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to the action callbacks</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_toggle_actions_full"
+              c:identifier="gtk_action_group_add_toggle_actions_full"
+              version="2.4">
+        <doc xml:whitespace="preserve">This variant of gtk_action_group_add_toggle_actions() adds a 
+#GDestroyNotify callback for @user_data.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entries" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of toggle action descriptions</doc>
+            <type name="ToggleActionEntry" c:type="GtkToggleActionEntry*"/>
+          </parameter>
+          <parameter name="n_entries" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of entries</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to the action callbacks</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">destroy notification callback for @user_data</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_action"
+              c:identifier="gtk_action_group_get_action"
+              version="2.4">
+        <doc xml:whitespace="preserve">Looks up an action in the action group by name.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the action, or %NULL if no action by that name exists</doc>
+          <type name="Action" c:type="GtkAction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_name"
+              c:identifier="gtk_action_group_get_name"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the name of the action group.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the action group.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_sensitive"
+              c:identifier="gtk_action_group_get_sensitive"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns %TRUE if the group is sensitive.  The constituent actions
+can only be logically sensitive (see gtk_action_is_sensitive()) if
+they are sensitive (see gtk_action_get_sensitive()) and their group
+is sensitive.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the group is sensitive.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_visible"
+              c:identifier="gtk_action_group_get_visible"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns %TRUE if the group is visible.  The constituent actions
+can only be logically visible (see gtk_action_is_visible()) if
+they are visible (see gtk_action_get_visible()) and their group
+is visible.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the group is visible.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="list_actions"
+              c:identifier="gtk_action_group_list_actions"
+              version="2.4">
+        <doc xml:whitespace="preserve">Lists the actions in the action group.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">an allocated list of the action objects in the action group</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Action"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="remove_action"
+              c:identifier="gtk_action_group_remove_action"
+              version="2.4">
+        <doc xml:whitespace="preserve">Removes an action object from the action group.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an action</doc>
+            <type name="Action" c:type="GtkAction*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sensitive"
+              c:identifier="gtk_action_group_set_sensitive"
+              version="2.4">
+        <doc xml:whitespace="preserve">Changes the sensitivity of @action_group</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sensitive" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new sensitivity</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_translate_func"
+              c:identifier="gtk_action_group_set_translate_func"
+              version="2.4 ">
+        <doc xml:whitespace="preserve">Sets a function to be used for translating the @label and @tooltip of 
+#GtkActionGroupEntry&lt;!-- --&gt;s added by gtk_action_group_add_actions().
+If you're using gettext(), it is enough to set the translation domain
+with gtk_action_group_set_translation_domain().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">a #GtkTranslateFunc</doc>
+            <type name="TranslateFunc" c:type="GtkTranslateFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to be passed to @func and @notify</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">a #GDestroyNotify function to be called when @action_group is destroyed and when the translation function is changed again</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_translation_domain"
+              c:identifier="gtk_action_group_set_translation_domain"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the translation domain and uses g_dgettext() for translating the 
+gtk_action_group_add_actions().
+If you're not using gettext() for localization, see 
+gtk_action_group_set_translate_func().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="domain" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the translation domain to use for g_dgettext() calls</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_visible"
+              c:identifier="gtk_action_group_set_visible"
+              version="2.4">
+        <doc xml:whitespace="preserve">Changes the visible of @action_group.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new visiblity</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="translate_string"
+              c:identifier="gtk_action_group_translate_string"
+              version="2.6">
+        <doc xml:whitespace="preserve">Translates a string using the specified translate_func(). This
+is mainly intended for language bindings.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the translation of @string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="name"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="sensitive" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="visible" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ActionGroupPrivate" c:type="GtkActionGroupPrivate*"/>
+      </field>
+      <glib:signal name="connect-proxy" version="2.4">
+        <doc xml:whitespace="preserve">The ::connect-proxy signal is emitted after connecting a proxy to 
+an action in the group. Note that the proxy may have been connected 
+to a different action before.
+This is intended for simple customizations for which a custom action
+class would be too clumsy, e.g. showing tooltips for menuitems in the
+statusbar.
+#GtkUIManager proxies the signal and provides global notification 
+just before any action is connected to a proxy, which is probably more
+convenient to use.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action</doc>
+            <type name="Action"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the proxy</doc>
+            <type name="Widget"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="disconnect-proxy" version="2.4">
+        <doc xml:whitespace="preserve">The ::disconnect-proxy signal is emitted after disconnecting a proxy 
+from an action in the group. 
+#GtkUIManager proxies the signal and provides global notification 
+just before any action is connected to a proxy, which is probably more
+convenient to use.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action</doc>
+            <type name="Action"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the proxy</doc>
+            <type name="Widget"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="post-activate" version="2.4">
+        <doc xml:whitespace="preserve">The ::post-activate signal is emitted just after the @action in the
+This is intended for #GtkUIManager to proxy the signal and provide global
+notification just after any action is activated.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action</doc>
+            <type name="Action"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="pre-activate" version="2.4">
+        <doc xml:whitespace="preserve">The ::pre-activate signal is emitted just before the @action in the
+This is intended for #GtkUIManager to proxy the signal and provide global
+notification just before any action is activated.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action</doc>
+            <type name="Action"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ActionGroupClass"
+            c:type="GtkActionGroupClass"
+            glib:is-gtype-struct-for="ActionGroup">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_action">
+        <callback name="get_action">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action, or %NULL if no action by that name exists</doc>
+            <type name="Action" c:type="GtkAction*"/>
+          </return-value>
+          <parameters>
+            <parameter name="action_group" transfer-ownership="none">
+              <type name="ActionGroup" c:type="GtkActionGroup*"/>
+            </parameter>
+            <parameter name="action_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the action</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ActionGroupPrivate"
+            c:type="GtkActionGroupPrivate"
+            disguised="1">
+    </record>
+    <record name="ActionPrivate" c:type="GtkActionPrivate" disguised="1">
+    </record>
+    <interface name="Activatable"
+               c:symbol-prefix="activatable"
+               c:type="GtkActivatable"
+               glib:type-name="GtkActivatable"
+               glib:get-type="gtk_activatable_get_type"
+               glib:type-struct="ActivatableIface">
+      <virtual-method name="sync_action_properties"
+                      invoker="sync_action_properties"
+                      version="2.16">
+        <doc xml:whitespace="preserve">This is called to update the activatable completely, this is called
+internally when the #GtkActivatable::related-action property is set
+or unset and by the implementing class when
+#GtkActivatable::use-action-appearance changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the related #GtkAction or %NULL</doc>
+            <type name="Action" c:type="GtkAction*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="update">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none">
+            <type name="Action" c:type="GtkAction*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="do_set_related_action"
+              c:identifier="gtk_activatable_do_set_related_action"
+              version="2.16">
+        <doc xml:whitespace="preserve">This is a utility function for #GtkActivatable implementors.
+When implementing #GtkActivatable you must call this when
+handling changes of the #GtkActivatable:related-action, and
+you must also use this to break references in #GObject-&gt;dispose().
+This function adds a reference to the currently set related
+action for you, it also makes sure the #GtkActivatable-&gt;update()
+method is called when the related #GtkAction properties change
+and registers to the action's proxy list.
+&lt;note&gt;&lt;para&gt;Be careful to call this before setting the local
+copy of the #GtkAction property, since this function uses 
+gtk_activatable_get_action() to retrieve the previous action&lt;/para&gt;&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkAction to set</doc>
+            <type name="Action" c:type="GtkAction*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_related_action"
+              c:identifier="gtk_activatable_get_related_action"
+              version="2.16">
+        <doc xml:whitespace="preserve">Gets the related #GtkAction for @activatable.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the related #GtkAction if one is set.</doc>
+          <type name="Action" c:type="GtkAction*"/>
+        </return-value>
+      </method>
+      <method name="get_use_action_appearance"
+              c:identifier="gtk_activatable_get_use_action_appearance"
+              version="2.16">
+        <doc xml:whitespace="preserve">Gets whether this activatable should reset its layout
+and appearance when setting the related action or when
+the action changes appearance.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @activatable uses its actions appearance.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_related_action"
+              c:identifier="gtk_activatable_set_related_action"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets the related action on the @activatable object.
+&lt;note&gt;&lt;para&gt;#GtkActivatable implementors need to handle the #GtkActivatable:related-action
+property and call gtk_activatable_do_set_related_action() when it changes.&lt;/para&gt;&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkAction to set</doc>
+            <type name="Action" c:type="GtkAction*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_action_appearance"
+              c:identifier="gtk_activatable_set_use_action_appearance"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets whether this activatable should reset its layout and appearance
+when setting the related action or when the action changes appearance
+&lt;note&gt;&lt;para&gt;#GtkActivatable implementors need to handle the
+#GtkActivatable:use-action-appearance property and call
+gtk_activatable_sync_action_properties() to update @activatable
+if needed.&lt;/para&gt;&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_appearance" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to use the actions appearance</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sync_action_properties"
+              c:identifier="gtk_activatable_sync_action_properties"
+              version="2.16">
+        <doc xml:whitespace="preserve">This is called to update the activatable completely, this is called
+internally when the #GtkActivatable::related-action property is set
+or unset and by the implementing class when
+#GtkActivatable::use-action-appearance changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the related #GtkAction or %NULL</doc>
+            <type name="Action" c:type="GtkAction*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="related-action"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The action that this activatable will activate and receive
+updates from for various states and possibly appearance.
+&lt;note&gt;&lt;para&gt;#GtkActivatable implementors need to handle the this property and 
+call gtk_activatable_do_set_related_action() when it changes.&lt;/para&gt;&lt;/note&gt;</doc>
+        <type name="Action"/>
+      </property>
+      <property name="use-action-appearance"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether this activatable should reset its layout
+and appearance when setting the related action or when
+the action changes appearance.
+See the #GtkAction documentation directly to find which properties
+should be ignored by the #GtkActivatable when this property is %FALSE.
+&lt;note&gt;&lt;para&gt;#GtkActivatable implementors need to handle this property
+and call gtk_activatable_sync_action_properties() on the activatable
+widget when it changes.&lt;/para&gt;&lt;/note&gt;</doc>
+        <type name="gboolean"/>
+      </property>
+    </interface>
+    <record name="ActivatableIface"
+            c:type="GtkActivatableIface"
+            glib:is-gtype-struct-for="Activatable"
+            version="2.16">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="update">
+        <callback name="update">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="activatable" transfer-ownership="none">
+              <type name="Activatable" c:type="GtkActivatable*"/>
+            </parameter>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="GtkAction*"/>
+            </parameter>
+            <parameter name="property_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="sync_action_properties">
+        <callback name="sync_action_properties">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="activatable" transfer-ownership="none">
+              <type name="Activatable" c:type="GtkActivatable*"/>
+            </parameter>
+            <parameter name="action" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">the related #GtkAction or %NULL</doc>
+              <type name="Action" c:type="GtkAction*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="Adjustment"
+           c:symbol-prefix="adjustment"
+           c:type="GtkAdjustment"
+           parent="Object"
+           glib:type-name="GtkAdjustment"
+           glib:get-type="gtk_adjustment_get_type"
+           glib:type-struct="AdjustmentClass">
+      <constructor name="new" c:identifier="gtk_adjustment_new">
+        <return-value transfer-ownership="none">
+          <type name="Object" c:type="GtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="lower" transfer-ownership="none">
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="upper" transfer-ownership="none">
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="step_increment" transfer-ownership="none">
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="page_increment" transfer-ownership="none">
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="page_size" transfer-ownership="none">
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="changed" c:identifier="gtk_adjustment_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="clamp_page" c:identifier="gtk_adjustment_clamp_page">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="lower" transfer-ownership="none">
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="upper" transfer-ownership="none">
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="configure"
+              c:identifier="gtk_adjustment_configure"
+              version="2.14">
+        <doc xml:whitespace="preserve">Sets all properties of the adjustment at once.
+Use this function to avoid multiple emissions of the "changed"
+signal. See gtk_adjustment_set_lower() for an alternative way
+of compressing multiple emissions of "changed" into one.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="lower" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new minimum value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="upper" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new maximum value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="step_increment" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new step increment</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="page_increment" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new page increment</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="page_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new page size</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_lower"
+              c:identifier="gtk_adjustment_get_lower"
+              version="2.14">
+        <doc xml:whitespace="preserve">Retrieves the minimum value of the adjustment.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The current minimum value of the adjustment.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_page_increment"
+              c:identifier="gtk_adjustment_get_page_increment"
+              version="2.14">
+        <doc xml:whitespace="preserve">Retrieves the page increment of the adjustment.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The current page increment of the adjustment.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_page_size"
+              c:identifier="gtk_adjustment_get_page_size"
+              version="2.14">
+        <doc xml:whitespace="preserve">Retrieves the page size of the adjustment.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The current page size of the adjustment.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_step_increment"
+              c:identifier="gtk_adjustment_get_step_increment"
+              version="2.14">
+        <doc xml:whitespace="preserve">Retrieves the step increment of the adjustment.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The current step increment of the adjustment.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_upper"
+              c:identifier="gtk_adjustment_get_upper"
+              version="2.14">
+        <doc xml:whitespace="preserve">Retrieves the maximum value of the adjustment.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The current maximum value of the adjustment.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_value" c:identifier="gtk_adjustment_get_value">
+        <doc xml:whitespace="preserve">Gets the current value of the adjustment. See
+gtk_adjustment_set_value ().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The current value of the adjustment.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_lower"
+              c:identifier="gtk_adjustment_set_lower"
+              version="2.14">
+        <doc xml:whitespace="preserve">Sets the minimum value of the adjustment.
+When setting multiple adjustment properties via their individual
+setters, multiple "changed" signals will be emitted. However, since
+the emission of the "changed" signal is tied to the emission of the
+"GObject::notify" signals of the changed properties, it's possible
+to compress the "changed" signals into one by calling
+g_object_freeze_notify() and g_object_thaw_notify() around the
+calls to the individual setters.
+Alternatively, using a single g_object_set() for all the properties
+to change, or using gtk_adjustment_configure() has the same effect
+of compressing "changed" emissions.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="lower" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new minimum value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_page_increment"
+              c:identifier="gtk_adjustment_set_page_increment"
+              version="2.14">
+        <doc xml:whitespace="preserve">Sets the page increment of the adjustment.
+See gtk_adjustment_set_lower() about how to compress multiple
+emissions of the "changed" signal when setting multiple adjustment
+properties.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_increment" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new page increment</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_page_size"
+              c:identifier="gtk_adjustment_set_page_size"
+              version="2.14">
+        <doc xml:whitespace="preserve">Sets the page size of the adjustment.
+See gtk_adjustment_set_lower() about how to compress multiple
+emissions of the "changed" signal when setting multiple adjustment
+properties.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new page size</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_step_increment"
+              c:identifier="gtk_adjustment_set_step_increment"
+              version="2.14">
+        <doc xml:whitespace="preserve">Sets the step increment of the adjustment.
+See gtk_adjustment_set_lower() about how to compress multiple
+emissions of the "changed" signal when setting multiple adjustment
+properties.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="step_increment" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new step increment</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_upper"
+              c:identifier="gtk_adjustment_set_upper"
+              version="2.14">
+        <doc xml:whitespace="preserve">Sets the maximum value of the adjustment.
+Note that values will be restricted by
+&lt;literal&gt;upper - page-size&lt;/literal&gt; if the page-size
+property is nonzero.
+See gtk_adjustment_set_lower() about how to compress multiple
+emissions of the "changed" signal when setting multiple adjustment
+properties.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="upper" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new maximum value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value" c:identifier="gtk_adjustment_set_value">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="value_changed" c:identifier="gtk_adjustment_value_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="lower"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The minimum value of the adjustment.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="page-increment"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The page increment of the adjustment.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="page-size"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The page size of the adjustment. 
+Note that the page-size is irrelevant and should be set to zero
+if the adjustment is used for a simple scalar value, e.g. in a 
+#GtkSpinButton.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="step-increment"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The step increment of the adjustment.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="upper"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The maximum value of the adjustment. 
+Note that values will be restricted by 
+&lt;literal&gt;upper - page-size&lt;/literal&gt; if the page-size 
+property is nonzero.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="value"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The value of the adjustment.</doc>
+        <type name="gdouble"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Object" c:type="GtkObject"/>
+      </field>
+      <field name="lower">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="upper">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="value">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="step_increment">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="page_increment">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="page_size">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <glib:signal name="changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="value-changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="AdjustmentClass"
+            c:type="GtkAdjustmentClass"
+            glib:is-gtype-struct-for="Adjustment">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GtkObjectClass"/>
+      </field>
+      <field name="changed">
+        <callback name="changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="adjustment" transfer-ownership="none">
+              <type name="Adjustment" c:type="GtkAdjustment*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="value_changed">
+        <callback name="value_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="adjustment" transfer-ownership="none">
+              <type name="Adjustment" c:type="GtkAdjustment*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="Align"
+                 glib:type-name="GtkAlign"
+                 glib:get-type="gtk_align_get_type"
+                 c:type="GtkAlign">
+      <doc xml:whitespace="preserve">no meaningful way to stretch
+or bottom
+or top
+allocation
+Controls how a widget deals with extra space in a single (x or y)
+dimension.
+Alignment only matters if the widget receives a "too large"
+allocation, for example if you packed the widget with the "expand"
+flag inside a #GtkBox, then the widget might get extra space.  If
+you have for example a 16x16 icon inside a 32x32 space, the icon
+could be scaled and stretched, it could be centered, or it could be
+positioned to one side of the space.</doc>
+      <member name="fill"
+              value="0"
+              c:identifier="GTK_ALIGN_FILL"
+              glib:nick="fill"/>
+      <member name="start"
+              value="1"
+              c:identifier="GTK_ALIGN_START"
+              glib:nick="start"/>
+      <member name="end"
+              value="2"
+              c:identifier="GTK_ALIGN_END"
+              glib:nick="end"/>
+      <member name="center"
+              value="3"
+              c:identifier="GTK_ALIGN_CENTER"
+              glib:nick="center"/>
+    </enumeration>
+    <class name="Alignment"
+           c:symbol-prefix="alignment"
+           c:type="GtkAlignment"
+           parent="Bin"
+           glib:type-name="GtkAlignment"
+           glib:get-type="gtk_alignment_get_type"
+           glib:type-struct="AlignmentClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_alignment_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkAlignment.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new #GtkAlignment.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the horizontal alignment of the child widget, from 0 (left) to 1 (right).</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="yalign" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the vertical alignment of the child widget, from 0 (top) to 1 (bottom).</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="xscale" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the amount that the child widget expands horizontally to fill up unused space, from 0 to 1. A value of 0 indicates that the child widget should never expand. A value of 1 indicates that the child widget will expand to fill all of the space allocated for the #GtkAlignment.</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="yscale" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the amount that the child widget expands vertically to fill up unused space, from 0 to 1. The values are similar to @xscale.</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_padding"
+              c:identifier="gtk_alignment_get_padding"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the padding on the different sides of the widget.
+See gtk_alignment_set_padding ().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="padding_top"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the padding for the top of the widget, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="padding_bottom"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the padding for the bottom of the widget, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="padding_left"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the padding for the left of the widget, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="padding_right"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the padding for the right of the widget, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set" c:identifier="gtk_alignment_set">
+        <doc xml:whitespace="preserve">Sets the #GtkAlignment values.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the horizontal alignment of the child widget, from 0 (left) to 1 (right).</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="yalign" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the vertical alignment of the child widget, from 0 (top) to 1 (bottom).</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="xscale" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the amount that the child widget expands horizontally to fill up unused space, from 0 to 1. A value of 0 indicates that the child widget should never expand. A value of 1 indicates that the child widget will expand to fill all of the space allocated for the #GtkAlignment.</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="yscale" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the amount that the child widget expands vertically to fill up unused space, from 0 to 1. The values are similar to @xscale.</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_padding"
+              c:identifier="gtk_alignment_set_padding"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the padding on the different sides of the widget.
+The padding adds blank space to the sides of the widget. For instance,
+this can be used to indent the child widget towards the right by adding
+padding on the left.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="padding_top" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the padding at the top of the widget</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="padding_bottom" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the padding at the bottom of the widget</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="padding_left" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the padding at the left of the widget</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="padding_right" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the padding at the right of the widget.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="bottom-padding"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The padding to insert at the bottom of the widget.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="left-padding"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The padding to insert at the left of the widget.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="right-padding"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The padding to insert at the right of the widget.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="top-padding"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The padding to insert at the top of the widget.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="xalign" writable="1" transfer-ownership="none">
+        <type name="gfloat"/>
+      </property>
+      <property name="xscale" writable="1" transfer-ownership="none">
+        <type name="gfloat"/>
+      </property>
+      <property name="yalign" writable="1" transfer-ownership="none">
+        <type name="gfloat"/>
+      </property>
+      <property name="yscale" writable="1" transfer-ownership="none">
+        <type name="gfloat"/>
+      </property>
+      <field name="bin">
+        <type name="Bin" c:type="GtkBin"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="AlignmentPrivate" c:type="GtkAlignmentPrivate*"/>
+      </field>
+    </class>
+    <record name="AlignmentClass"
+            c:type="GtkAlignmentClass"
+            glib:is-gtype-struct-for="Alignment">
+      <field name="parent_class">
+        <type name="BinClass" c:type="GtkBinClass"/>
+      </field>
+    </record>
+    <record name="AlignmentPrivate" c:type="GtkAlignmentPrivate" disguised="1">
+    </record>
+    <class name="Application"
+           c:symbol-prefix="application"
+           c:type="GtkApplication"
+           parent="Gio.Application"
+           glib:type-name="GtkApplication"
+           glib:get-type="gtk_application_get_type"
+           glib:type-struct="ApplicationClass">
+      <implements name="Gio.Initable"/>
+      <constructor name="new" c:identifier="gtk_application_new" version="3.0">
+        <doc xml:whitespace="preserve">Create a new #GtkApplication, or if one has already been initialized
+in this process, return the existing instance. This function will as
+a side effect initialize the display system; see gtk_init().
+For the behavior if this application is running in another process,
+see g_application_new().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly-referenced #GtkApplication</doc>
+          <type name="Application" c:type="GtkApplication*"/>
+        </return-value>
+        <parameters>
+          <parameter name="appid" transfer-ownership="none">
+            <doc xml:whitespace="preserve">System-dependent application identifier</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="argc"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">System argument count</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="argv"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">System argument vector</doc>
+            <type name="utf8" c:type="gchar***"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="create_window"
+                      invoker="create_window"
+                      version="3.0">
+        <doc xml:whitespace="preserve">Creates a new #GtkWindow for the application.
+This function calls the #GtkApplication::create_window() virtual function,
+which can be overridden by sub-classes, for instance to use #GtkBuilder to
+create the user interface. After creating a new #GtkWindow instance, it will
+be added to the list of toplevels associated to the application.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created application #GtkWindow</doc>
+          <type name="Window" c:type="GtkWindow*"/>
+        </return-value>
+      </virtual-method>
+      <method name="add_window"
+              c:identifier="gtk_application_add_window"
+              version="3.0">
+        <doc xml:whitespace="preserve">Adds a window to the #GtkApplication.
+If all the windows managed by #GtkApplication are closed, the
+#GtkApplication will call gtk_application_quit(), and quit
+the application.
+If your application uses only a single toplevel window, you can
+use gtk_application_get_window(). If you are using a sub-class
+of #GtkApplication you should call gtk_application_create_window()
+to let the #GtkApplication instance create a #GtkWindow and add
+it to the list of toplevels of the application. You should call
+this function only to add #GtkWindow&lt;!-- --&gt;s that you created
+directly using gtk_window_new().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a toplevel window to add to @app</doc>
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_window"
+              c:identifier="gtk_application_create_window"
+              version="3.0">
+        <doc xml:whitespace="preserve">Creates a new #GtkWindow for the application.
+This function calls the #GtkApplication::create_window() virtual function,
+which can be overridden by sub-classes, for instance to use #GtkBuilder to
+create the user interface. After creating a new #GtkWindow instance, it will
+be added to the list of toplevels associated to the application.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created application #GtkWindow</doc>
+          <type name="Window" c:type="GtkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_window"
+              c:identifier="gtk_application_get_window"
+              version="3.0">
+        <doc xml:whitespace="preserve">A simple #GtkApplication has a "default window". This window should
+act as the primary user interaction point with your application.
+The window returned by this function is of type #GTK_WINDOW_TYPE_TOPLEVEL
+and its properties such as "title" and "icon-name" will be initialized
+as appropriate for the platform.
+If the user closes this window, and your application hasn't created
+any other windows, the default action will be to call gtk_application_quit().
+If your application has more than one toplevel window (e.g. an
+single-document-interface application with multiple open documents),
+or if you are constructing your toplevel windows yourself (e.g. using
+#GtkBuilder), use gtk_application_create_window() or
+gtk_application_add_window() instead.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The default #GtkWindow for this application</doc>
+          <type name="Window" c:type="GtkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_windows"
+              c:identifier="gtk_application_get_windows"
+              version="3.0">
+        <doc xml:whitespace="preserve">Retrieves the list of windows previously registered with
+gtk_application_create_window() or gtk_application_add_window().
+to the list of #GtkWindow&lt;!-- --&gt;s registered by this application,
+or %NULL. The returned #GSList is owned by the #GtkApplication
+and it should not be modified or freed directly.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A pointer</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Window"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="quit" c:identifier="gtk_application_quit" version="3.0">
+        <doc xml:whitespace="preserve">Request the application exit.  This function invokes
+g_application_quit_with_data(), which normally will
+in turn cause @app to emit #GtkApplication::quit.
+To control an application's quit behavior (for example, to ask for
+files to be saved), connect to the #GtkApplication::quit signal
+handler.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="run" c:identifier="gtk_application_run" version="3.0">
+        <doc xml:whitespace="preserve">Runs the main loop; see g_application_run().
+The default implementation for #GtkApplication uses gtk_main().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_action_group"
+              c:identifier="gtk_application_set_action_group"
+              version="3.0">
+        <doc xml:whitespace="preserve">Set @group as this application's global action group.
+This will ensure the operating system interface uses
+these actions as follows:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;In GNOME 2 this exposes the actions for scripting.&lt;/listitem&gt;
+&lt;listitem&gt;In GNOME 3, this function populates the application menu.&lt;/listitem&gt;
+&lt;listitem&gt;In Windows prior to version 7, this function does nothing.&lt;/listitem&gt;
+&lt;listitem&gt;In Windows 7, this function adds "Tasks" to the Jump List.&lt;/listitem&gt;
+&lt;listitem&gt;In Mac OS X, this function extends the Dock menu.&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+It is an error to call this function more than once.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkActionGroup</doc>
+            <type name="ActionGroup" c:type="GtkActionGroup*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent">
+        <type name="Gio.Application" c:type="GApplication"/>
+      </field>
+      <field name="priv">
+        <type name="ApplicationPrivate" c:type="GtkApplicationPrivate*"/>
+      </field>
+      <glib:signal name="action" version="3.0">
+        <doc xml:whitespace="preserve">This signal is emitted when an action is activated. The action name
+is passed as the first argument, but also as signal detail, so it
+is possible to connect to this signal for individual actions.
+See also the #GApplication::action-with-data signal which may in
+turn trigger this signal.
+The signal is never emitted for disabled actions.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The name of the activated action</doc>
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="activated" version="3.0">
+        <doc xml:whitespace="preserve">This signal is emitted when a non-primary process for a given
+application is invoked while your application is running; for
+example, when a file browser launches your program to open a
+file.  The raw operating system arguments are passed in the
+variant @arguments.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GLib.Variant"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="quit" version="3.0">
+        <doc xml:whitespace="preserve">This signal is emitted when a quit is initiated.  See also
+the #GApplication::quit-with-data signal which may in
+turn trigger this signal.
+The default handler for this signal exits the mainloop of the
+application. It is possible to override the default handler
+by simply returning %TRUE from a callback, e.g.:
+|[
+static gboolean
+my_application_quit (GtkApplication *application)
+{
+/&amp;ast; if some_condition is TRUE, do not quit &amp;ast;/
+if (some_condition)
+return TRUE;
+/&amp;ast; this will cause the application to quit &amp;ast;
+return FALSE;
+}
+g_signal_connect (application, "quit",
+G_CALLBACK (my_application_quit),
+NULL);
+]|
+signal emission</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the signal has been handled, %FALSE to continue</doc>
+          <type name="gboolean"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ApplicationClass"
+            c:type="GtkApplicationClass"
+            glib:is-gtype-struct-for="Application">
+      <field name="parent_class">
+        <type name="Gio.ApplicationClass" c:type="GApplicationClass"/>
+      </field>
+      <field name="create_window">
+        <callback name="create_window">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the newly created application #GtkWindow</doc>
+            <type name="Window" c:type="GtkWindow*"/>
+          </return-value>
+          <parameters>
+            <parameter name="app" transfer-ownership="none">
+              <type name="Application" c:type="GtkApplication*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activated">
+        <callback name="activated">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="app" transfer-ownership="none">
+              <type name="Application" c:type="GtkApplication*"/>
+            </parameter>
+            <parameter name="args" transfer-ownership="none">
+              <type name="GLib.Variant" c:type="GVariant*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="action">
+        <callback name="action">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="app" transfer-ownership="none">
+              <type name="Application" c:type="GtkApplication*"/>
+            </parameter>
+            <parameter name="action_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="quit">
+        <callback name="quit">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="app" transfer-ownership="none">
+              <type name="Application" c:type="GtkApplication*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved5" introspectable="0">
+        <callback name="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved6" introspectable="0">
+        <callback name="_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved7" introspectable="0">
+        <callback name="_gtk_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved8" introspectable="0">
+        <callback name="_gtk_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved9" introspectable="0">
+        <callback name="_gtk_reserved9">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved10" introspectable="0">
+        <callback name="_gtk_reserved10">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ApplicationPrivate"
+            c:type="GtkApplicationPrivate"
+            disguised="1">
+    </record>
+    <record name="Arg" c:type="GtkArg">
+      <doc xml:whitespace="preserve">This is a structure that we use to pass in typed values (and names).</doc>
+      <field name="type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <union name="d" c:type="d">
+        <field name="char_data" writable="1">
+          <type name="gchar" c:type="gchar"/>
+        </field>
+        <field name="uchar_data" writable="1">
+          <type name="guint8" c:type="guchar"/>
+        </field>
+        <field name="bool_data" writable="1">
+          <type name="gboolean" c:type="gboolean"/>
+        </field>
+        <field name="int_data" writable="1">
+          <type name="gint" c:type="gint"/>
+        </field>
+        <field name="uint_data" writable="1">
+          <type name="guint" c:type="guint"/>
+        </field>
+        <field name="long_data" writable="1">
+          <type name="glong" c:type="glong"/>
+        </field>
+        <field name="ulong_data" writable="1">
+          <type name="gulong" c:type="gulong"/>
+        </field>
+        <field name="float_data" writable="1">
+          <type name="gfloat" c:type="gfloat"/>
+        </field>
+        <field name="double_data" writable="1">
+          <type name="gdouble" c:type="gdouble"/>
+        </field>
+        <field name="string_data" writable="1">
+          <type name="utf8" c:type="gchar*"/>
+        </field>
+        <field name="object_data" writable="1">
+          <type name="Object" c:type="GtkObject*"/>
+        </field>
+        <field name="pointer_data" writable="1">
+          <type name="gpointer" c:type="gpointer"/>
+        </field>
+        <record name="signal_data" c:type="signal_data">
+          <field name="f" writable="1">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </field>
+          <field name="d" writable="1">
+            <type name="gpointer" c:type="gpointer"/>
+          </field>
+        </record>
+      </union>
+    </record>
+    <class name="Arrow"
+           c:symbol-prefix="arrow"
+           c:type="GtkArrow"
+           parent="Misc"
+           glib:type-name="GtkArrow"
+           glib:get-type="gtk_arrow_get_type"
+           glib:type-struct="ArrowClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_arrow_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkArrow widget.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new #GtkArrow widget.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="arrow_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid #GtkArrowType.</doc>
+            <type name="ArrowType" c:type="GtkArrowType"/>
+          </parameter>
+          <parameter name="shadow_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid #GtkShadowType.</doc>
+            <type name="ShadowType" c:type="GtkShadowType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set" c:identifier="gtk_arrow_set">
+        <doc xml:whitespace="preserve">Sets the direction and style of the #GtkArrow, @arrow.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="arrow_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid #GtkArrowType.</doc>
+            <type name="ArrowType" c:type="GtkArrowType"/>
+          </parameter>
+          <parameter name="shadow_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid #GtkShadowType.</doc>
+            <type name="ShadowType" c:type="GtkShadowType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="arrow-type" writable="1" transfer-ownership="none">
+        <type name="ArrowType"/>
+      </property>
+      <property name="shadow-type" writable="1" transfer-ownership="none">
+        <type name="ShadowType"/>
+      </property>
+      <field name="misc">
+        <type name="Misc" c:type="GtkMisc"/>
+      </field>
+      <field name="priv">
+        <type name="ArrowPrivate" c:type="GtkArrowPrivate*"/>
+      </field>
+    </class>
+    <record name="ArrowClass"
+            c:type="GtkArrowClass"
+            glib:is-gtype-struct-for="Arrow">
+      <field name="parent_class">
+        <type name="MiscClass" c:type="GtkMiscClass"/>
+      </field>
+    </record>
+    <enumeration name="ArrowPlacement"
+                 glib:type-name="GtkArrowPlacement"
+                 glib:get-type="gtk_arrow_placement_get_type"
+                 c:type="GtkArrowPlacement">
+      <member name="both"
+              value="0"
+              c:identifier="GTK_ARROWS_BOTH"
+              glib:nick="both"/>
+      <member name="start"
+              value="1"
+              c:identifier="GTK_ARROWS_START"
+              glib:nick="start"/>
+      <member name="end"
+              value="2"
+              c:identifier="GTK_ARROWS_END"
+              glib:nick="end"/>
+    </enumeration>
+    <record name="ArrowPrivate" c:type="GtkArrowPrivate" disguised="1">
+    </record>
+    <enumeration name="ArrowType"
+                 glib:type-name="GtkArrowType"
+                 glib:get-type="gtk_arrow_type_get_type"
+                 c:type="GtkArrowType">
+      <member name="up" value="0" c:identifier="GTK_ARROW_UP" glib:nick="up"/>
+      <member name="down"
+              value="1"
+              c:identifier="GTK_ARROW_DOWN"
+              glib:nick="down"/>
+      <member name="left"
+              value="2"
+              c:identifier="GTK_ARROW_LEFT"
+              glib:nick="left"/>
+      <member name="right"
+              value="3"
+              c:identifier="GTK_ARROW_RIGHT"
+              glib:nick="right"/>
+      <member name="none"
+              value="4"
+              c:identifier="GTK_ARROW_NONE"
+              glib:nick="none"/>
+    </enumeration>
+    <class name="AspectFrame"
+           c:symbol-prefix="aspect_frame"
+           c:type="GtkAspectFrame"
+           parent="Frame"
+           glib:type-name="GtkAspectFrame"
+           glib:get-type="gtk_aspect_frame_get_type"
+           glib:type-struct="AspectFrameClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_aspect_frame_new">
+        <doc xml:whitespace="preserve">Create a new #GtkAspectFrame.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new #GtkAspectFrame.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Label text.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="xalign" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Horizontal alignment of the child within the allocation of the #GtkAspectFrame. This ranges from 0.0 (left aligned) to 1.0 (right aligned)</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="yalign" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Vertical alignment of the child within the allocation of the #GtkAspectFrame. This ranges from 0.0 (left aligned) to 1.0 (right aligned)</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="ratio" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The desired aspect ratio.</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="obey_child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">If %TRUE, @ratio is ignored, and the aspect ratio is taken from the requistion of the child.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set" c:identifier="gtk_aspect_frame_set">
+        <doc xml:whitespace="preserve">Set parameters for an existing #GtkAspectFrame.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Horizontal alignment of the child within the allocation of the #GtkAspectFrame. This ranges from 0.0 (left aligned) to 1.0 (right aligned)</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="yalign" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Vertical alignment of the child within the allocation of the #GtkAspectFrame. This ranges from 0.0 (left aligned) to 1.0 (right aligned)</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="ratio" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The desired aspect ratio.</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="obey_child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">If %TRUE, @ratio is ignored, and the aspect ratio is taken from the requistion of the child.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="obey-child" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="ratio" writable="1" transfer-ownership="none">
+        <type name="gfloat"/>
+      </property>
+      <property name="xalign" writable="1" transfer-ownership="none">
+        <type name="gfloat"/>
+      </property>
+      <property name="yalign" writable="1" transfer-ownership="none">
+        <type name="gfloat"/>
+      </property>
+      <field name="frame">
+        <type name="Frame" c:type="GtkFrame"/>
+      </field>
+      <field name="priv">
+        <type name="AspectFramePrivate" c:type="GtkAspectFramePrivate*"/>
+      </field>
+    </class>
+    <record name="AspectFrameClass"
+            c:type="GtkAspectFrameClass"
+            glib:is-gtype-struct-for="AspectFrame">
+      <field name="parent_class">
+        <type name="FrameClass" c:type="GtkFrameClass"/>
+      </field>
+    </record>
+    <record name="AspectFramePrivate"
+            c:type="GtkAspectFramePrivate"
+            disguised="1">
+    </record>
+    <class name="Assistant"
+           c:symbol-prefix="assistant"
+           c:type="GtkAssistant"
+           parent="Window"
+           glib:type-name="GtkAssistant"
+           glib:get-type="gtk_assistant_get_type"
+           glib:type-struct="AssistantClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_assistant_new" version="2.10">
+        <doc xml:whitespace="preserve">Creates a new #GtkAssistant.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a newly created #GtkAssistant</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="add_action_widget"
+              c:identifier="gtk_assistant_add_action_widget"
+              version="2.10">
+        <doc xml:whitespace="preserve">Adds a widget to the action area of a #GtkAssistant.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkWidget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_page"
+              c:identifier="gtk_assistant_append_page"
+              version="2.10">
+        <doc xml:whitespace="preserve">Appends a page to the @assistant.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index (starting at 0) of the inserted page</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkWidget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="commit" c:identifier="gtk_assistant_commit" version="2.22">
+        <doc xml:whitespace="preserve">Erases the visited page history so the back button is not
+shown on the current page, and removes the cancel button
+from subsequent pages.
+Use this when the information provided up to the current
+page is hereafter deemed permanent and cannot be modified
+or undone.  For example, showing a progress page to track
+a long-running, unreversible operation after the user has
+clicked apply on a confirmation page.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_current_page"
+              c:identifier="gtk_assistant_get_current_page"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns the page number of the current page
+the @assistant, if the @assistant has no pages, -1 will be returned</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The index (starting from 0) of the current page in</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_n_pages"
+              c:identifier="gtk_assistant_get_n_pages"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns the number of pages in the @assistant</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of pages in the @assistant.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_nth_page"
+              c:identifier="gtk_assistant_get_nth_page"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns the child widget contained in page number @page_num.
+if @page_num is out of bounds.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The child widget, or %NULL</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The index of a page in the @assistant, or -1 to get the last page;</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_page_complete"
+              c:identifier="gtk_assistant_get_page_complete"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets whether @page is complete.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @page is complete.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a page of @assistant</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_page_header_image"
+              c:identifier="gtk_assistant_get_page_header_image"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the header image for @page.
+if there's no header image for the page.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the header image for @page, or %NULL</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a page of @assistant</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_page_side_image"
+              c:identifier="gtk_assistant_get_page_side_image"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the header image for @page.
+if there's no side image for the page.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the side image for @page, or %NULL</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a page of @assistant</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_page_title"
+              c:identifier="gtk_assistant_get_page_title"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the title for @page.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the title for @page.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a page of @assistant</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_page_type"
+              c:identifier="gtk_assistant_get_page_type"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the page type of @page.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the page type of @page.</doc>
+          <type name="AssistantPageType" c:type="GtkAssistantPageType"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a page of @assistant</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_page"
+              c:identifier="gtk_assistant_insert_page"
+              version="2.10">
+        <doc xml:whitespace="preserve">Inserts a page in the @assistant at a given position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index (starting from 0) of the inserted page</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkWidget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index (starting at 0) at which to insert the page, or -1 to append the page to the @assistant</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend_page"
+              c:identifier="gtk_assistant_prepend_page"
+              version="2.10">
+        <doc xml:whitespace="preserve">Prepends a page to the @assistant.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index (starting at 0) of the inserted page</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkWidget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_action_widget"
+              c:identifier="gtk_assistant_remove_action_widget"
+              version="2.10">
+        <doc xml:whitespace="preserve">Removes a widget from the action area of a #GtkAssistant.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkWidget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_current_page"
+              c:identifier="gtk_assistant_set_current_page"
+              version="2.10">
+        <doc xml:whitespace="preserve">Switches the page to @page_num. Note that this will only be necessary
+in custom buttons, as the @assistant flow can be set with
+gtk_assistant_set_forward_page_func().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">index of the page to switch to, starting from 0. If negative, the last page will be used. If greater than the number of pages in the @assistant, nothing will be done.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_forward_page_func"
+              c:identifier="gtk_assistant_set_forward_page_func"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the page forwarding function to be @page_func, this function will
+be used to determine what will be the next page when the user presses
+the forward button. Setting @page_func to %NULL will make the assistant
+to use the default forward function, which just goes to the next visible 
+page.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_func"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">the #GtkAssistantPageFunc, or %NULL to use the default one</doc>
+            <type name="AssistantPageFunc" c:type="GtkAssistantPageFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data for @page_func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">destroy notifier for @data</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_page_complete"
+              c:identifier="gtk_assistant_set_page_complete"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets whether @page contents are complete. This will make</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a page of @assistant</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="complete" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the completeness status of the page</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_page_header_image"
+              c:identifier="gtk_assistant_set_page_header_image"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets a header image for @page. This image is displayed in the header
+area of the assistant when @page is the current page.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a page of @assistant</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="pixbuf" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the new header image @page</doc>
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_page_side_image"
+              c:identifier="gtk_assistant_set_page_side_image"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets a header image for @page. This image is displayed in the side
+area of the assistant when @page is the current page.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a page of @assistant</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="pixbuf" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the new header image @page</doc>
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_page_title"
+              c:identifier="gtk_assistant_set_page_title"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets a title for @page. The title is displayed in the header
+area of the assistant when @page is the current page.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a page of @assistant</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="title" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new title for @page</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_page_type"
+              c:identifier="gtk_assistant_set_page_type"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the page type for @page. The page type determines the page
+behavior in the @assistant.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a page of @assistant</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new type for @page</doc>
+            <type name="AssistantPageType" c:type="GtkAssistantPageType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="update_buttons_state"
+              c:identifier="gtk_assistant_update_buttons_state"
+              version="2.10">
+        <doc xml:whitespace="preserve">Forces @assistant to recompute the buttons state.
+GTK+ automatically takes care of this in most situations, 
+e.g. when the user goes to a different page, or when the
+visibility or completeness of a page changes.
+One situation where it can be necessary to call this
+function is when changing a value on the current page
+affects the future page flow of the assistant.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="parent">
+        <type name="Window" c:type="GtkWindow"/>
+      </field>
+      <field name="priv">
+        <type name="AssistantPrivate" c:type="GtkAssistantPrivate*"/>
+      </field>
+      <glib:signal name="apply" version="2.10">
+        <doc xml:whitespace="preserve">The ::apply signal is emitted when the apply button is clicked. The default
+behavior of the #GtkAssistant is to switch to the page after the current
+page, unless the current page is the last one.
+A handler for the ::apply signal should carry out the actions for which
+the wizard has collected data. If the action takes a long time to complete,
+you might consider putting a page of type %GTK_ASSISTANT_PAGE_PROGRESS
+after the confirmation page and handle this operation within the
+#GtkAssistant::prepare signal of the progress page.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="cancel" version="2.10">
+        <doc xml:whitespace="preserve">The ::cancel signal is emitted when then the cancel button is clicked.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="close" version="2.10">
+        <doc xml:whitespace="preserve">The ::close signal is emitted either when the close button of
+a summary page is clicked, or when the apply button in the last
+page in the flow (of type %GTK_ASSISTANT_PAGE_CONFIRM) is clicked.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="prepare" version="2.10">
+        <doc xml:whitespace="preserve">The ::prepare signal is emitted when a new page is set as the assistant's
+current page, before making the new page visible. A handler for this signal
+can do any preparation which are necessary before showing @page.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the current page</doc>
+            <type name="Widget"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="AssistantClass"
+            c:type="GtkAssistantClass"
+            glib:is-gtype-struct-for="Assistant">
+      <field name="parent_class">
+        <type name="WindowClass" c:type="GtkWindowClass"/>
+      </field>
+      <field name="prepare">
+        <callback name="prepare">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="assistant" transfer-ownership="none">
+              <type name="Assistant" c:type="GtkAssistant*"/>
+            </parameter>
+            <parameter name="page" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="apply">
+        <callback name="apply">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="assistant" transfer-ownership="none">
+              <type name="Assistant" c:type="GtkAssistant*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close">
+        <callback name="close">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="assistant" transfer-ownership="none">
+              <type name="Assistant" c:type="GtkAssistant*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cancel">
+        <callback name="cancel">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="assistant" transfer-ownership="none">
+              <type name="Assistant" c:type="GtkAssistant*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved5" introspectable="0">
+        <callback name="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="AssistantPageFunc" c:type="GtkAssistantPageFunc">
+      <doc xml:whitespace="preserve">A function used by gtk_assistant_set_forward_page_func() to know which
+is the next page given a current one. It's called both for computing the
+next page when the user presses the "forward" button and for handling
+the behavior of the "last" button.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The next page number.</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="current_page" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The page number used to calculate the next page.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="AssistantPageType"
+                 glib:type-name="GtkAssistantPageType"
+                 glib:get-type="gtk_assistant_page_type_get_type"
+                 c:type="GtkAssistantPageType">
+      <doc xml:whitespace="preserve">An enum for determining the page role inside the #GtkAssistant. It's
+used to handle buttons sensitivity and visibility.
+Note that an assistant needs to end its page flow with a page of type
+%GTK_ASSISTANT_PAGE_CONFIRM, %GTK_ASSISTANT_PAGE_SUMMARY or
+%GTK_ASSISTANT_PAGE_PROGRESS to be correct.</doc>
+      <member name="content"
+              value="0"
+              c:identifier="GTK_ASSISTANT_PAGE_CONTENT"
+              glib:nick="content"/>
+      <member name="intro"
+              value="1"
+              c:identifier="GTK_ASSISTANT_PAGE_INTRO"
+              glib:nick="intro"/>
+      <member name="confirm"
+              value="2"
+              c:identifier="GTK_ASSISTANT_PAGE_CONFIRM"
+              glib:nick="confirm"/>
+      <member name="summary"
+              value="3"
+              c:identifier="GTK_ASSISTANT_PAGE_SUMMARY"
+              glib:nick="summary"/>
+      <member name="progress"
+              value="4"
+              c:identifier="GTK_ASSISTANT_PAGE_PROGRESS"
+              glib:nick="progress"/>
+    </enumeration>
+    <record name="AssistantPrivate" c:type="GtkAssistantPrivate" disguised="1">
+    </record>
+    <bitfield name="AttachOptions"
+              glib:type-name="GtkAttachOptions"
+              glib:get-type="gtk_attach_options_get_type"
+              c:type="GtkAttachOptions">
+      <member name="expand"
+              value="1"
+              c:identifier="GTK_EXPAND"
+              glib:nick="expand"/>
+      <member name="shrink"
+              value="2"
+              c:identifier="GTK_SHRINK"
+              glib:nick="shrink"/>
+      <member name="fill" value="4" c:identifier="GTK_FILL" glib:nick="fill"/>
+    </bitfield>
+    <constant name="BINARY_AGE" value="9008">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Bin"
+           c:symbol-prefix="bin"
+           c:type="GtkBin"
+           parent="Container"
+           abstract="1"
+           glib:type-name="GtkBin"
+           glib:get-type="gtk_bin_get_type"
+           glib:type-struct="BinClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <method name="get_child" c:identifier="gtk_bin_get_child">
+        <doc xml:whitespace="preserve">Gets the child of the #GtkBin, or %NULL if the bin contains
+no child widget. The returned widget does not have a reference
+added, so you do not need to unref it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">pointer to child of the #GtkBin</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <field name="container">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="priv">
+        <type name="BinPrivate" c:type="GtkBinPrivate*"/>
+      </field>
+    </class>
+    <record name="BinClass"
+            c:type="GtkBinClass"
+            glib:is-gtype-struct-for="Bin">
+      <field name="parent_class">
+        <type name="ContainerClass" c:type="GtkContainerClass"/>
+      </field>
+    </record>
+    <record name="BinPrivate" c:type="GtkBinPrivate" disguised="1">
+    </record>
+    <record name="BindingArg" c:type="GtkBindingArg">
+      <field name="arg_type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <union name="d" c:type="d">
+        <field name="long_data" writable="1">
+          <type name="glong" c:type="glong"/>
+        </field>
+        <field name="double_data" writable="1">
+          <type name="gdouble" c:type="gdouble"/>
+        </field>
+        <field name="string_data" writable="1">
+          <type name="utf8" c:type="gchar*"/>
+        </field>
+      </union>
+    </record>
+    <record name="BindingEntry" c:type="GtkBindingEntry">
+      <field name="keyval" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="modifiers" writable="1">
+        <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+      </field>
+      <field name="binding_set" writable="1">
+        <type name="BindingSet" c:type="GtkBindingSet*"/>
+      </field>
+      <field name="destroyed" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="in_emission" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="marks_unbound" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="set_next" writable="1">
+        <type name="BindingEntry" c:type="GtkBindingEntry*"/>
+      </field>
+      <field name="hash_next" writable="1">
+        <type name="BindingEntry" c:type="GtkBindingEntry*"/>
+      </field>
+      <field name="signals" writable="1">
+        <type name="BindingSignal" c:type="GtkBindingSignal*"/>
+      </field>
+    </record>
+    <record name="BindingSet" c:type="GtkBindingSet">
+      <field name="set_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="priority" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="widget_path_pspecs" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="widget_class_pspecs" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="class_branch_pspecs" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="entries" writable="1">
+        <type name="BindingEntry" c:type="GtkBindingEntry*"/>
+      </field>
+      <field name="current" writable="1">
+        <type name="BindingEntry" c:type="GtkBindingEntry*"/>
+      </field>
+      <field name="parsed" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <method name="activate" c:identifier="gtk_binding_set_activate">
+        <doc xml:whitespace="preserve">Find a key binding matching @keyval and @modifiers within</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a binding was found and activated</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="keyval" transfer-ownership="none">
+            <doc xml:whitespace="preserve">key value of the binding</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <doc xml:whitespace="preserve">key modifier of the binding</doc>
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">object to activate when binding found</doc>
+            <type name="Object" c:type="GtkObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_path" c:identifier="gtk_binding_set_add_path">
+        <doc xml:whitespace="preserve">This function is used internally by the GtkRC parsing mechanism to
+assign match patterns to #GtkBindingSet structures.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">path type the pattern applies to</doc>
+            <type name="PathType" c:type="GtkPathType"/>
+          </parameter>
+          <parameter name="path_pattern" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the actual match pattern</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">binding priority</doc>
+            <type name="PathPriorityType" c:type="GtkPathPriorityType"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="BindingSignal" c:type="GtkBindingSignal">
+      <field name="next" writable="1">
+        <type name="BindingSignal" c:type="GtkBindingSignal*"/>
+      </field>
+      <field name="signal_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="n_args" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="args" writable="1">
+        <type name="BindingArg" c:type="GtkBindingArg*"/>
+      </field>
+    </record>
+    <record name="Border"
+            c:type="GtkBorder"
+            glib:type-name="GtkBorder"
+            glib:get-type="gtk_border_get_type"
+            c:symbol-prefix="border">
+      <doc xml:whitespace="preserve">A struct that specifies a border around a rectangular area that can
+be of different width on each side.</doc>
+      <field name="left" writable="1">
+        <type name="gint16" c:type="gint16"/>
+      </field>
+      <field name="right" writable="1">
+        <type name="gint16" c:type="gint16"/>
+      </field>
+      <field name="top" writable="1">
+        <type name="gint16" c:type="gint16"/>
+      </field>
+      <field name="bottom" writable="1">
+        <type name="gint16" c:type="gint16"/>
+      </field>
+      <constructor name="new" c:identifier="gtk_border_new" version="2.14">
+        <doc xml:whitespace="preserve">Allocates a new #GtkBorder structure and initializes its elements to zero.
+freed with gtk_border_free()</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new empty #GtkBorder. The newly allocated #GtkBorder should be</doc>
+          <type name="Border" c:type="GtkBorder*"/>
+        </return-value>
+      </constructor>
+      <method name="copy" c:identifier="gtk_border_copy">
+        <doc xml:whitespace="preserve">Copies a #GtkBorder structure.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a copy of @border_.</doc>
+          <type name="Border" c:type="GtkBorder*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gtk_border_free">
+        <doc xml:whitespace="preserve">Frees a #GtkBorder structure.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="Box"
+           c:symbol-prefix="box"
+           c:type="GtkBox"
+           parent="Container"
+           glib:type-name="GtkBox"
+           glib:get-type="gtk_box_get_type"
+           glib:type-struct="BoxClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_box_new" version="3.0">
+        <doc xml:whitespace="preserve">Creates a new #GtkBox.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkBox.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the box' orientation.</doc>
+            <type name="Orientation" c:type="GtkOrientation"/>
+          </parameter>
+          <parameter name="homogeneous" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if all children are to be given equal space allocations.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of pixels to place by default between children.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_homogeneous" c:identifier="gtk_box_get_homogeneous">
+        <doc xml:whitespace="preserve">Returns whether the box is homogeneous (all children are the
+same size). See gtk_box_set_homogeneous().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the box is homogeneous.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_spacing" c:identifier="gtk_box_get_spacing">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_box_set_spacing().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">spacing between children</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="pack_end" c:identifier="gtk_box_pack_end">
+        <doc xml:whitespace="preserve">Adds @child to @box, packed with reference to the end of @box.  
+The @child is packed after (away from end of) any other child 
+packed with reference to the end of @box.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkWidget to be added to @box</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="expand" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the new child is to be given extra space allocated to @box. The extra space will be divided evenly between all children of @box that use this option</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="fill" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if space given to @child by the @expand option is actually allocated to @child, rather than just padding it.  This parameter has no effect if @expand is set to %FALSE.  A child is always allocated the full height of a #GtkHBox and the full width of a #GtkVBox.  This option affects the other dimension</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="padding" transfer-ownership="none">
+            <doc xml:whitespace="preserve">extra space in pixels to put between this child and its neighbors, over and above the global amount specified by #GtkBox:spacing property.  If @child is a widget at one of the reference ends of @box, then @padding pixels are also put between</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pack_start" c:identifier="gtk_box_pack_start">
+        <doc xml:whitespace="preserve">Adds @child to @box, packed with reference to the start of @box.
+The @child is packed after any other child packed with reference 
+to the start of @box.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkWidget to be added to @box</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="expand" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the new child is to be given extra space allocated to</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="fill" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if space given to @child by the @expand option is actually allocated to @child, rather than just padding it.  This parameter has no effect if @expand is set to %FALSE.  A child is always allocated the full height of a #GtkHBox and the full width of a #GtkVBox. This option affects the other dimension</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="padding" transfer-ownership="none">
+            <doc xml:whitespace="preserve">extra space in pixels to put between this child and its neighbors, over and above the global amount specified by #GtkBox:spacing property.  If @child is a widget at one of the reference ends of @box, then @padding pixels are also put between</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_child_packing"
+              c:identifier="gtk_box_query_child_packing">
+        <doc xml:whitespace="preserve">Obtains information about how @child is packed into @box.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkWidget of the child to query</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="expand" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer to return location for #GtkBox:expand child property</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="fill" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer to return location for #GtkBox:fill child property</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="padding" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer to return location for #GtkBox:padding child property</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="pack_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer to return location for #GtkBox:pack-type child property</doc>
+            <type name="PackType" c:type="GtkPackType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reorder_child" c:identifier="gtk_box_reorder_child">
+        <doc xml:whitespace="preserve">Moves @child to a new @position in the list of @box children.  
+The list is the &lt;structfield&gt;children&lt;/structfield&gt; field of
+#GtkBox-struct, and contains both widgets packed #GTK_PACK_START 
+as well as widgets packed #GTK_PACK_END, in the order that these 
+widgets were added to @box.
+A widget's position in the @box children list determines where 
+the widget is packed into @box.  A child widget at some position 
+in the list will be packed just after all other widgets of the 
+same packing type that appear earlier in the list.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkWidget to move</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new position for @child in the list of children of @box, starting from 0. If negative, indicates the end of the list</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_child_packing"
+              c:identifier="gtk_box_set_child_packing">
+        <doc xml:whitespace="preserve">Sets the way @child is packed into @box.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkWidget of the child to set</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="expand" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new value of the #GtkBox:expand child property</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="fill" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new value of the #GtkBox:fill child property</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="padding" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new value of the #GtkBox:padding child property</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="pack_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new value of the #GtkBox:pack-type child property</doc>
+            <type name="PackType" c:type="GtkPackType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_homogeneous" c:identifier="gtk_box_set_homogeneous">
+        <doc xml:whitespace="preserve">Sets the #GtkBox:homogeneous property of @box, controlling 
+whether or not all children of @box are given equal space 
+in the box.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="homogeneous" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a boolean value, %TRUE to create equal allotments, %FALSE for variable allotments</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_spacing" c:identifier="gtk_box_set_spacing">
+        <doc xml:whitespace="preserve">Sets the #GtkBox:spacing property of @box, which is the 
+number of pixels to place between children of @box.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of pixels to put between children</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="homogeneous" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="spacing" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <field name="container">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="priv">
+        <type name="BoxPrivate" c:type="GtkBoxPrivate*"/>
+      </field>
+    </class>
+    <record name="BoxClass"
+            c:type="GtkBoxClass"
+            glib:is-gtype-struct-for="Box">
+      <field name="parent_class">
+        <type name="ContainerClass" c:type="GtkContainerClass"/>
+      </field>
+    </record>
+    <record name="BoxPrivate" c:type="GtkBoxPrivate" disguised="1">
+    </record>
+    <interface name="Buildable"
+               c:symbol-prefix="buildable"
+               c:type="GtkBuildable"
+               glib:type-name="GtkBuildable"
+               glib:get-type="gtk_buildable_get_type"
+               glib:type-struct="BuildableIface">
+      <virtual-method name="add_child" invoker="add_child" version="2.12">
+        <doc xml:whitespace="preserve">Adds a child to @buildable. @type is an optional string
+describing how the child should be added.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkBuilder</doc>
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">child to add</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">kind of child or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="construct_child"
+                      invoker="construct_child"
+                      version="2.12">
+        <doc xml:whitespace="preserve">Constructs a child of @buildable with the name @name.
+#GtkBuilder calls this function if a "constructor" has been
+specified in the UI definition.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the constructed child</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GtkBuilder used to construct this object</doc>
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of child to construct</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="custom_finished"
+                      invoker="custom_finished"
+                      version="2.12">
+        <doc xml:whitespace="preserve">This is similar to gtk_buildable_parser_finished() but is
+called once for each custom tag handled by the @buildable.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkBuilder</doc>
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="child" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">child object or %NULL for non-child tags</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="tagname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the tag</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data created in custom_tag_start</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="custom_tag_end"
+                      invoker="custom_tag_end"
+                      version="2.12">
+        <doc xml:whitespace="preserve">This is called at the end of each custom element handled by 
+the buildable.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GtkBuilder used to construct this object</doc>
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="child" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">child object or %NULL for non-child tags</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="tagname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of tag</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data that will be passed in to parser functions</doc>
+            <type name="gpointer" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="custom_tag_start"
+                      invoker="custom_tag_start"
+                      version="2.12">
+        <doc xml:whitespace="preserve">This is called for each unknown element under &amp;lt;child&amp;gt;.
+if it doesn't.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a object has a custom implementation, %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkBuilder used to construct this object</doc>
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="child" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">child object or %NULL for non-child tags</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="tagname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of tag</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="parser" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMarkupParser structure to fill in</doc>
+            <type name="GLib.MarkupParser" c:type="GMarkupParser*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for user data that will be passed in to parser functions</doc>
+            <type name="gpointer" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_internal_child"
+                      invoker="get_internal_child"
+                      version="2.12">
+        <doc xml:whitespace="preserve">Get the internal child called @childname of the @buildable object.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the internal child of the buildable object</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkBuilder</doc>
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="childname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of child</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_name" invoker="get_name" version="2.12">
+        <doc xml:whitespace="preserve">Gets the name of the @buildable object. 
+#GtkBuilder sets the name based on the the 
+&lt;link linkend="BUILDER-UI"&gt;GtkBuilder UI definition&lt;/link&gt; 
+used to construct the @buildable.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name set with gtk_buildable_set_name()</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="parser_finished"
+                      invoker="parser_finished"
+                      version="2.12">
+        <doc xml:whitespace="preserve">Called when the builder finishes the parsing of a 
+&lt;link linkend="BUILDER-UI"&gt;GtkBuilder UI definition&lt;/link&gt;. 
+Note that this will be called once for each time 
+gtk_builder_add_from_file() or gtk_builder_add_from_string() 
+is called on a builder.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkBuilder</doc>
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_buildable_property"
+                      invoker="set_buildable_property"
+                      version="2.12">
+        <doc xml:whitespace="preserve">Sets the property name @name to @value on the @buildable object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkBuilder</doc>
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of property</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_name" invoker="set_name" version="2.12">
+        <doc xml:whitespace="preserve">Sets the name of the @buildable object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_child"
+              c:identifier="gtk_buildable_add_child"
+              version="2.12">
+        <doc xml:whitespace="preserve">Adds a child to @buildable. @type is an optional string
+describing how the child should be added.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkBuilder</doc>
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">child to add</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">kind of child or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="construct_child"
+              c:identifier="gtk_buildable_construct_child"
+              version="2.12">
+        <doc xml:whitespace="preserve">Constructs a child of @buildable with the name @name.
+#GtkBuilder calls this function if a "constructor" has been
+specified in the UI definition.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the constructed child</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GtkBuilder used to construct this object</doc>
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of child to construct</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="custom_finished"
+              c:identifier="gtk_buildable_custom_finished"
+              version="2.12">
+        <doc xml:whitespace="preserve">This is similar to gtk_buildable_parser_finished() but is
+called once for each custom tag handled by the @buildable.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkBuilder</doc>
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="child" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">child object or %NULL for non-child tags</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="tagname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the tag</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data created in custom_tag_start</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="custom_tag_end"
+              c:identifier="gtk_buildable_custom_tag_end"
+              version="2.12">
+        <doc xml:whitespace="preserve">This is called at the end of each custom element handled by 
+the buildable.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GtkBuilder used to construct this object</doc>
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="child" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">child object or %NULL for non-child tags</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="tagname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of tag</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data that will be passed in to parser functions</doc>
+            <type name="gpointer" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="custom_tag_start"
+              c:identifier="gtk_buildable_custom_tag_start"
+              version="2.12">
+        <doc xml:whitespace="preserve">This is called for each unknown element under &amp;lt;child&amp;gt;.
+if it doesn't.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a object has a custom implementation, %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkBuilder used to construct this object</doc>
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="child" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">child object or %NULL for non-child tags</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="tagname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of tag</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="parser" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GMarkupParser structure to fill in</doc>
+            <type name="GLib.MarkupParser" c:type="GMarkupParser*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for user data that will be passed in to parser functions</doc>
+            <type name="gpointer" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_internal_child"
+              c:identifier="gtk_buildable_get_internal_child"
+              version="2.12">
+        <doc xml:whitespace="preserve">Get the internal child called @childname of the @buildable object.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the internal child of the buildable object</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkBuilder</doc>
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="childname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of child</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_name"
+              c:identifier="gtk_buildable_get_name"
+              version="2.12">
+        <doc xml:whitespace="preserve">Gets the name of the @buildable object. 
+#GtkBuilder sets the name based on the the 
+&lt;link linkend="BUILDER-UI"&gt;GtkBuilder UI definition&lt;/link&gt; 
+used to construct the @buildable.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name set with gtk_buildable_set_name()</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="parser_finished"
+              c:identifier="gtk_buildable_parser_finished"
+              version="2.12">
+        <doc xml:whitespace="preserve">Called when the builder finishes the parsing of a 
+&lt;link linkend="BUILDER-UI"&gt;GtkBuilder UI definition&lt;/link&gt;. 
+Note that this will be called once for each time 
+gtk_builder_add_from_file() or gtk_builder_add_from_string() 
+is called on a builder.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkBuilder</doc>
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_buildable_property"
+              c:identifier="gtk_buildable_set_buildable_property"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets the property name @name to @value on the @buildable object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkBuilder</doc>
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of property</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_name"
+              c:identifier="gtk_buildable_set_name"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets the name of the @buildable object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="BuildableIface"
+            c:type="GtkBuildableIface"
+            glib:is-gtype-struct-for="Buildable">
+      <doc xml:whitespace="preserve">The GtkBuildableIface interface contains method that are
+necessary to allow #GtkBuilder to construct an object from
+a GtkBuilder UI definition.</doc>
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="set_name">
+        <callback name="set_name">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="buildable" transfer-ownership="none">
+              <type name="Buildable" c:type="GtkBuildable*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">name to set</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_name">
+        <callback name="get_name">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name set with gtk_buildable_set_name()</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="buildable" transfer-ownership="none">
+              <type name="Buildable" c:type="GtkBuildable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_child">
+        <callback name="add_child">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="buildable" transfer-ownership="none">
+              <type name="Buildable" c:type="GtkBuildable*"/>
+            </parameter>
+            <parameter name="builder" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GtkBuilder</doc>
+              <type name="Builder" c:type="GtkBuilder*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <doc xml:whitespace="preserve">child to add</doc>
+              <type name="GObject.Object" c:type="GObject*"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">kind of child or %NULL</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_buildable_property">
+        <callback name="set_buildable_property">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="buildable" transfer-ownership="none">
+              <type name="Buildable" c:type="GtkBuildable*"/>
+            </parameter>
+            <parameter name="builder" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GtkBuilder</doc>
+              <type name="Builder" c:type="GtkBuilder*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">name of property</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">value of property</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="construct_child">
+        <callback name="construct_child">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the constructed child</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </return-value>
+          <parameters>
+            <parameter name="buildable" transfer-ownership="none">
+              <type name="Buildable" c:type="GtkBuildable*"/>
+            </parameter>
+            <parameter name="builder" transfer-ownership="none">
+              <doc xml:whitespace="preserve">#GtkBuilder used to construct this object</doc>
+              <type name="Builder" c:type="GtkBuilder*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">name of child to construct</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="custom_tag_start">
+        <callback name="custom_tag_start">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if a object has a custom implementation, %FALSE</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="buildable" transfer-ownership="none">
+              <type name="Buildable" c:type="GtkBuildable*"/>
+            </parameter>
+            <parameter name="builder" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GtkBuilder used to construct this object</doc>
+              <type name="Builder" c:type="GtkBuilder*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">child object or %NULL for non-child tags</doc>
+              <type name="GObject.Object" c:type="GObject*"/>
+            </parameter>
+            <parameter name="tagname" transfer-ownership="none">
+              <doc xml:whitespace="preserve">name of tag</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="parser" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GMarkupParser structure to fill in</doc>
+              <type name="GLib.MarkupParser" c:type="GMarkupParser*"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <doc xml:whitespace="preserve">return location for user data that will be passed in to parser functions</doc>
+              <type name="gpointer" c:type="gpointer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="custom_tag_end">
+        <callback name="custom_tag_end">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="buildable" transfer-ownership="none">
+              <type name="Buildable" c:type="GtkBuildable*"/>
+            </parameter>
+            <parameter name="builder" transfer-ownership="none">
+              <doc xml:whitespace="preserve">#GtkBuilder used to construct this object</doc>
+              <type name="Builder" c:type="GtkBuilder*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">child object or %NULL for non-child tags</doc>
+              <type name="GObject.Object" c:type="GObject*"/>
+            </parameter>
+            <parameter name="tagname" transfer-ownership="none">
+              <doc xml:whitespace="preserve">name of tag</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <doc xml:whitespace="preserve">user data that will be passed in to parser functions</doc>
+              <type name="gpointer" c:type="gpointer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="custom_finished">
+        <callback name="custom_finished">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="buildable" transfer-ownership="none">
+              <type name="Buildable" c:type="GtkBuildable*"/>
+            </parameter>
+            <parameter name="builder" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GtkBuilder</doc>
+              <type name="Builder" c:type="GtkBuilder*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">child object or %NULL for non-child tags</doc>
+              <type name="GObject.Object" c:type="GObject*"/>
+            </parameter>
+            <parameter name="tagname" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the tag</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <doc xml:whitespace="preserve">user data created in custom_tag_start</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parser_finished">
+        <callback name="parser_finished">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="buildable" transfer-ownership="none">
+              <type name="Buildable" c:type="GtkBuildable*"/>
+            </parameter>
+            <parameter name="builder" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GtkBuilder</doc>
+              <type name="Builder" c:type="GtkBuilder*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_internal_child">
+        <callback name="get_internal_child">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the internal child of the buildable object</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </return-value>
+          <parameters>
+            <parameter name="buildable" transfer-ownership="none">
+              <type name="Buildable" c:type="GtkBuildable*"/>
+            </parameter>
+            <parameter name="builder" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GtkBuilder</doc>
+              <type name="Builder" c:type="GtkBuilder*"/>
+            </parameter>
+            <parameter name="childname" transfer-ownership="none">
+              <doc xml:whitespace="preserve">name of child</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="Builder"
+           c:symbol-prefix="builder"
+           c:type="GtkBuilder"
+           parent="GObject.Object"
+           glib:type-name="GtkBuilder"
+           glib:get-type="gtk_builder_get_type"
+           glib:type-struct="BuilderClass">
+      <constructor name="new" c:identifier="gtk_builder_new" version="2.12">
+        <doc xml:whitespace="preserve">Creates a new builder object.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkBuilder object</doc>
+          <type name="Builder" c:type="GtkBuilder*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="get_type_from_name"
+                      invoker="get_type_from_name"
+                      version="2.12">
+        <doc xml:whitespace="preserve">Looks up a type by name, using the virtual function that 
+#GtkBuilder has for that purpose. This is mainly used when
+implementing the #GtkBuildable interface on a type.
+if no type was found</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType found for @type_name or #G_TYPE_INVALID</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="type_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">type name to lookup</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_from_file"
+              c:identifier="gtk_builder_add_from_file"
+              version="2.12"
+              throws="1">
+        <doc xml:whitespace="preserve">Parses a file containing a &lt;link linkend="BUILDER-UI"&gt;GtkBuilder 
+UI definition&lt;/link&gt; and merges it with the current contents of @builder. 
+Upon errors 0 will be returned and @error will be assigned a
+#GError from the #GTK_BUILDER_ERROR, #G_MARKUP_ERROR or #G_FILE_ERROR 
+domain.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A positive value on success, 0 if an error occurred</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the file to parse</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_from_string"
+              c:identifier="gtk_builder_add_from_string"
+              version="2.12"
+              throws="1">
+        <doc xml:whitespace="preserve">Parses a string containing a &lt;link linkend="BUILDER-UI"&gt;GtkBuilder 
+UI definition&lt;/link&gt; and merges it with the current contents of @builder. 
+Upon errors 0 will be returned and @error will be assigned a
+#GError from the #GTK_BUILDER_ERROR or #G_MARKUP_ERROR domain.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A positive value on success, 0 if an error occurred</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the string to parse</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of @buffer (may be -1 if @buffer is nul-terminated)</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_objects_from_file"
+              c:identifier="gtk_builder_add_objects_from_file"
+              version="2.14"
+              throws="1">
+        <doc xml:whitespace="preserve">Parses a file containing a &lt;link linkend="BUILDER-UI"&gt;GtkBuilder 
+UI definition&lt;/link&gt; building only the requested objects and merges
+them with the current contents of @builder. 
+Upon errors 0 will be returned and @error will be assigned a
+#GError from the #GTK_BUILDER_ERROR, #G_MARKUP_ERROR or #G_FILE_ERROR 
+domain.
+&lt;note&gt;&lt;para&gt;
+If you are adding an object that depends on an object that is not 
+its child (for instance a #GtkTreeView that depends on its
+#GtkTreeModel), you have to explicitely list all of them in @object_ids. 
+&lt;/para&gt;&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A positive value on success, 0 if an error occurred</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the file to parse</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="object_ids" transfer-ownership="none">
+            <doc xml:whitespace="preserve">nul-terminated array of objects to build</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_objects_from_string"
+              c:identifier="gtk_builder_add_objects_from_string"
+              version="2.14"
+              throws="1">
+        <doc xml:whitespace="preserve">Parses a string containing a &lt;link linkend="BUILDER-UI"&gt;GtkBuilder 
+UI definition&lt;/link&gt; building only the requested objects and merges
+them with the current contents of @builder. 
+Upon errors 0 will be returned and @error will be assigned a
+#GError from the #GTK_BUILDER_ERROR or #G_MARKUP_ERROR domain.
+&lt;note&gt;&lt;para&gt;
+If you are adding an object that depends on an object that is not 
+its child (for instance a #GtkTreeView that depends on its
+#GtkTreeModel), you have to explicitely list all of them in @object_ids. 
+&lt;/para&gt;&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A positive value on success, 0 if an error occurred</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the string to parse</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of @buffer (may be -1 if @buffer is nul-terminated)</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="object_ids" transfer-ownership="none">
+            <doc xml:whitespace="preserve">nul-terminated array of objects to build</doc>
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_signals"
+              c:identifier="gtk_builder_connect_signals"
+              version="2.12">
+        <doc xml:whitespace="preserve">This method is a simpler variation of gtk_builder_connect_signals_full().
+It uses #GModule's introspective features (by opening the module %NULL) 
+to look at the application's symbol table. From here it tries to match
+the signal handler names given in the interface description with
+symbols in the application and connects the signals.
+Note that this function will not work correctly if #GModule is not
+supported on the platform.
+When compiling applications for Windows, you must declare signal callbacks
+with #G_MODULE_EXPORT, or they will not be put in the symbol table.
+On Linux and Unices, this is not necessary; applications should instead
+be compiled with the -Wl,--export-dynamic CFLAGS, and linked against
+gmodule-export-2.0.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to a structure sent in as user data to all signals</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_signals_full"
+              c:identifier="gtk_builder_connect_signals_full"
+              version="2.12">
+        <doc xml:whitespace="preserve">This function can be thought of the interpreted language binding
+version of gtk_builder_connect_signals(), except that it does not
+require GModule to function correctly.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">the function used to connect the signals</doc>
+            <type name="BuilderConnectFunc" c:type="GtkBuilderConnectFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">arbitrary data that will be passed to the connection function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_object"
+              c:identifier="gtk_builder_get_object"
+              version="2.12">
+        <doc xml:whitespace="preserve">Gets the object named @name. Note that this function does not
+increment the reference count of the returned object. 
+it could not be found in the object tree.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object named @name or %NULL if</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of object to get</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_objects"
+              c:identifier="gtk_builder_get_objects"
+              version="2.12">
+        <doc xml:whitespace="preserve">Gets all objects that have been constructed by @builder. Note that 
+this function does not increment the reference counts of the returned
+objects.
+constructed by the #GtkBuilder instance. It should be freed by
+g_slist_free()</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a newly-allocated #GSList containing all the objects</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="GObject.Object"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_translation_domain"
+              c:identifier="gtk_builder_get_translation_domain"
+              version="2.12">
+        <doc xml:whitespace="preserve">Gets the translation domain of @builder.
+by the builder object and must not be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the translation domain. This string is owned</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_type_from_name"
+              c:identifier="gtk_builder_get_type_from_name"
+              version="2.12">
+        <doc xml:whitespace="preserve">Looks up a type by name, using the virtual function that 
+#GtkBuilder has for that purpose. This is mainly used when
+implementing the #GtkBuildable interface on a type.
+if no type was found</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType found for @type_name or #G_TYPE_INVALID</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="type_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">type name to lookup</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_translation_domain"
+              c:identifier="gtk_builder_set_translation_domain"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets the translation domain of @builder. 
+See #GtkBuilder:translation-domain.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="domain" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the translation domain or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="value_from_string"
+              c:identifier="gtk_builder_value_from_string"
+              version="2.12"
+              throws="1">
+        <doc xml:whitespace="preserve">This function demarshals a value from a string. This function
+calls g_value_init() on the @value argument, so it need not be
+initialised beforehand.
+This function can handle char, uchar, boolean, int, uint, long,
+ulong, enum, flags, float, double, string, #GdkColor and
+#GtkAdjustment type values. Support for #GtkWidget type values is
+still to come.
+Upon errors %FALSE will be returned and @error will be assigned a
+#GError from the #GTK_BUILDER_ERROR domain.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GParamSpec for the property</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+          <parameter name="string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the string representation of the value</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GValue to store the result in</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="value_from_string_type"
+              c:identifier="gtk_builder_value_from_string_type"
+              version="2.12"
+              throws="1">
+        <doc xml:whitespace="preserve">Like gtk_builder_value_from_string(), this function demarshals 
+a value from a string, but takes a #GType instead of #GParamSpec.
+This function calls g_value_init() on the @value argument, so it 
+need not be initialised beforehand.
+Upon errors %FALSE will be returned and @error will be assigned a
+#GError from the #GTK_BUILDER_ERROR domain.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GType of the value</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the string representation of the value</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GValue to store the result in</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="translation-domain"
+                writable="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="BuilderPrivate" c:type="GtkBuilderPrivate*"/>
+      </field>
+    </class>
+    <record name="BuilderClass"
+            c:type="GtkBuilderClass"
+            glib:is-gtype-struct-for="Builder">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_type_from_name">
+        <callback name="get_type_from_name">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GType found for @type_name or #G_TYPE_INVALID</doc>
+            <type name="GType" c:type="GType"/>
+          </return-value>
+          <parameters>
+            <parameter name="builder" transfer-ownership="none">
+              <type name="Builder" c:type="GtkBuilder*"/>
+            </parameter>
+            <parameter name="type_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">type name to lookup</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved5" introspectable="0">
+        <callback name="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved6" introspectable="0">
+        <callback name="_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved7" introspectable="0">
+        <callback name="_gtk_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved8" introspectable="0">
+        <callback name="_gtk_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="BuilderConnectFunc"
+              c:type="GtkBuilderConnectFunc"
+              version="2.12">
+      <doc xml:whitespace="preserve">This is the signature of a function used to connect signals.  It is used
+by the gtk_builder_connect_signals() and gtk_builder_connect_signals_full()
+methods.  It is mainly intended for interpreted language bindings, but
+could be useful where the programmer wants more control over the signal
+connection process.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="builder" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkBuilder</doc>
+          <type name="Builder" c:type="GtkBuilder*"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">object to connect a signal to</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="signal_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the signal</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="handler_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the handler</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="connect_object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObject, if non-%NULL, use g_signal_connect_object()</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GConnectFlags to use</doc>
+          <type name="GObject.ConnectFlags" c:type="GConnectFlags"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="6">
+          <doc xml:whitespace="preserve">user data</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="BuilderError"
+                 glib:type-name="GtkBuilderError"
+                 glib:get-type="gtk_builder_error_get_type"
+                 c:type="GtkBuilderError"
+                 glib:error-quark="gtk_builder_error_quark">
+      <doc xml:whitespace="preserve">Error codes that identify various errors that can occur while using
+#GtkBuilder.</doc>
+      <member name="invalid_type_function"
+              value="0"
+              c:identifier="GTK_BUILDER_ERROR_INVALID_TYPE_FUNCTION"
+              glib:nick="invalid-type-function"/>
+      <member name="unhandled_tag"
+              value="1"
+              c:identifier="GTK_BUILDER_ERROR_UNHANDLED_TAG"
+              glib:nick="unhandled-tag"/>
+      <member name="missing_attribute"
+              value="2"
+              c:identifier="GTK_BUILDER_ERROR_MISSING_ATTRIBUTE"
+              glib:nick="missing-attribute"/>
+      <member name="invalid_attribute"
+              value="3"
+              c:identifier="GTK_BUILDER_ERROR_INVALID_ATTRIBUTE"
+              glib:nick="invalid-attribute"/>
+      <member name="invalid_tag"
+              value="4"
+              c:identifier="GTK_BUILDER_ERROR_INVALID_TAG"
+              glib:nick="invalid-tag"/>
+      <member name="missing_property_value"
+              value="5"
+              c:identifier="GTK_BUILDER_ERROR_MISSING_PROPERTY_VALUE"
+              glib:nick="missing-property-value"/>
+      <member name="invalid_value"
+              value="6"
+              c:identifier="GTK_BUILDER_ERROR_INVALID_VALUE"
+              glib:nick="invalid-value"/>
+      <member name="version_mismatch"
+              value="7"
+              c:identifier="GTK_BUILDER_ERROR_VERSION_MISMATCH"
+              glib:nick="version-mismatch"/>
+      <member name="duplicate_id"
+              value="8"
+              c:identifier="GTK_BUILDER_ERROR_DUPLICATE_ID"
+              glib:nick="duplicate-id"/>
+    </enumeration>
+    <record name="BuilderPrivate" c:type="GtkBuilderPrivate" disguised="1">
+    </record>
+    <class name="Button"
+           c:symbol-prefix="button"
+           c:type="GtkButton"
+           parent="Bin"
+           glib:type-name="GtkButton"
+           glib:get-type="gtk_button_get_type"
+           glib:type-struct="ButtonClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Activatable"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_button_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkButton widget. To add a child widget to the button,
+use gtk_container_add().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The newly created #GtkButton widget.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_stock"
+                   c:identifier="gtk_button_new_from_stock">
+        <doc xml:whitespace="preserve">Creates a new #GtkButton containing the image and text from a stock item.
+Some stock ids have preprocessor macros like #GTK_STOCK_OK and
+#GTK_STOCK_APPLY.
+If @stock_id is unknown, then it will be treated as a mnemonic
+label (as for gtk_button_new_with_mnemonic()).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkButton</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the stock item</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_label"
+                   c:identifier="gtk_button_new_with_label">
+        <doc xml:whitespace="preserve">Creates a #GtkButton widget with a #GtkLabel child containing the given
+text.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The newly created #GtkButton widget.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The text you want the #GtkLabel to hold.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_mnemonic"
+                   c:identifier="gtk_button_new_with_mnemonic">
+        <doc xml:whitespace="preserve">Creates a new #GtkButton containing a label.
+If characters in @label are preceded by an underscore, they are underlined.
+If you need a literal underscore character in a label, use '__' (two 
+underscores). The first underlined character represents a keyboard 
+accelerator called a mnemonic.
+Pressing Alt and that key activates the button.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkButton</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The text of the button, with an underscore in front of the mnemonic character</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="clicked" c:identifier="gtk_button_clicked">
+        <doc xml:whitespace="preserve">Emits a #GtkButton::clicked signal to the given #GtkButton.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="enter"
+              c:identifier="gtk_button_enter"
+              deprecated="Use the #GtkWidget::enter-notify-event signal."
+              deprecated-version="2.20">
+        <doc xml:whitespace="preserve">Emits a #GtkButton::enter signal to the given #GtkButton.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_alignment"
+              c:identifier="gtk_button_get_alignment"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the alignment of the child in the button.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for horizontal alignment</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="yalign" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for vertical alignment</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_event_window"
+              c:identifier="gtk_button_get_event_window"
+              version="2.22">
+        <doc xml:whitespace="preserve">Returns the button's event window if it is realized, %NULL otherwise.
+This function should be rarely needed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">@button's event window.</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_focus_on_click"
+              c:identifier="gtk_button_get_focus_on_click"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether the button grabs focus when it is clicked with the mouse.
+See gtk_button_set_focus_on_click().
+the mouse.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the button grabs focus when it is clicked with</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_image"
+              c:identifier="gtk_button_get_image"
+              version="2.6">
+        <doc xml:whitespace="preserve">Gets the widget that is currenty set as the image of @button.
+This may have been explicitly set by gtk_button_set_image()
+or constructed by gtk_button_new_from_stock().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget or %NULL in case there is no image</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_image_position"
+              c:identifier="gtk_button_get_image_position"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the position of the image relative to the text 
+inside the button.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the position</doc>
+          <type name="PositionType" c:type="GtkPositionType"/>
+        </return-value>
+      </method>
+      <method name="get_label" c:identifier="gtk_button_get_label">
+        <doc xml:whitespace="preserve">Fetches the text from the label of the button, as set by
+gtk_button_set_label(). If the label text has not 
+been set the return value will be %NULL. This will be the 
+case if you create an empty button with gtk_button_new() to 
+use as a container.
+by the widget and must not be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The text of the label widget. This string is owned</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_relief" c:identifier="gtk_button_get_relief">
+        <doc xml:whitespace="preserve">Returns the current relief style of the given #GtkButton.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The current #GtkReliefStyle</doc>
+          <type name="ReliefStyle" c:type="GtkReliefStyle"/>
+        </return-value>
+      </method>
+      <method name="get_use_stock" c:identifier="gtk_button_get_use_stock">
+        <doc xml:whitespace="preserve">Returns whether the button label is a stock item.
+select a stock item instead of being
+used directly as the label text.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the button label is used to</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_use_underline"
+              c:identifier="gtk_button_get_use_underline">
+        <doc xml:whitespace="preserve">Returns whether an embedded underline in the button label indicates a
+mnemonic. See gtk_button_set_use_underline ().
+indicates the mnemonic accelerator keys.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if an embedded underline in the button label</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="leave"
+              c:identifier="gtk_button_leave"
+              deprecated="Use the #GtkWidget::leave-notify-event signal."
+              deprecated-version="2.20">
+        <doc xml:whitespace="preserve">Emits a #GtkButton::leave signal to the given #GtkButton.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="pressed"
+              c:identifier="gtk_button_pressed"
+              deprecated="Use the #GtkWidget::button-press-event signal."
+              deprecated-version="2.20">
+        <doc xml:whitespace="preserve">Emits a #GtkButton::pressed signal to the given #GtkButton.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="released"
+              c:identifier="gtk_button_released"
+              deprecated="Use the #GtkWidget::button-release-event signal."
+              deprecated-version="2.20">
+        <doc xml:whitespace="preserve">Emits a #GtkButton::released signal to the given #GtkButton.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_alignment"
+              c:identifier="gtk_button_set_alignment"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the alignment of the child. This property has no effect unless 
+the child is a #GtkMisc or a #GtkAligment.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the horizontal position of the child, 0.0 is left aligned, 1.0 is right aligned</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="yalign" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the vertical position of the child, 0.0 is top aligned, 1.0 is bottom aligned</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_focus_on_click"
+              c:identifier="gtk_button_set_focus_on_click"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets whether the button will grab focus when it is clicked with the mouse.
+Making mouse clicks not grab focus is useful in places like toolbars where
+you don't want the keyboard focus removed from the main area of the
+application.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="focus_on_click" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the button grabs focus when clicked with the mouse</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_image"
+              c:identifier="gtk_button_set_image"
+              version="2.6">
+        <doc xml:whitespace="preserve">Set the image of @button to the given widget. Note that
+it depends on the #GtkSettings:gtk-button-images setting whether the
+image will be displayed or not, you don't have to call
+gtk_widget_show() on @image yourself.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="image" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a widget to set as the image for the button</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_image_position"
+              c:identifier="gtk_button_set_image_position"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the position of the image relative to the text 
+inside the button.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position</doc>
+            <type name="PositionType" c:type="GtkPositionType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_label" c:identifier="gtk_button_set_label">
+        <doc xml:whitespace="preserve">Sets the text of the label of the button to @str. This text is
+also used to select the stock item if gtk_button_set_use_stock()
+is used.
+This will also clear any previously set labels.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_relief" c:identifier="gtk_button_set_relief">
+        <doc xml:whitespace="preserve">Sets the relief style of the edges of the given #GtkButton widget.
+Three styles exist, GTK_RELIEF_NORMAL, GTK_RELIEF_HALF, GTK_RELIEF_NONE.
+The default style is, as one can guess, GTK_RELIEF_NORMAL.
+&lt;!-- FIXME: put pictures of each style --&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="newstyle" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The GtkReliefStyle as described above.</doc>
+            <type name="ReliefStyle" c:type="GtkReliefStyle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_stock" c:identifier="gtk_button_set_use_stock">
+        <doc xml:whitespace="preserve">If %TRUE, the label set on the button is used as a
+stock id to select the stock item for the button.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_stock" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the button should use a stock item</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_underline"
+              c:identifier="gtk_button_set_use_underline">
+        <doc xml:whitespace="preserve">If true, an underline in the text of the button label indicates
+the next character should be used for the mnemonic accelerator key.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_underline" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if underlines in the text indicate mnemonics</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="focus-on-click" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="image" writable="1" transfer-ownership="none">
+        <type name="Widget"/>
+      </property>
+      <property name="image-position"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The position of the image relative to the text inside the button.</doc>
+        <type name="PositionType"/>
+      </property>
+      <property name="label"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="relief" writable="1" transfer-ownership="none">
+        <type name="ReliefStyle"/>
+      </property>
+      <property name="use-stock"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="use-underline"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="xalign"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If the child of the button is a #GtkMisc or #GtkAlignment, this property 
+can be used to control it's horizontal alignment. 0.0 is left aligned, 
+1.0 is right aligned.</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="yalign"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If the child of the button is a #GtkMisc or #GtkAlignment, this property 
+can be used to control it's vertical alignment. 0.0 is top aligned, 
+1.0 is bottom aligned.</doc>
+        <type name="gfloat"/>
+      </property>
+      <field name="bin">
+        <type name="Bin" c:type="GtkBin"/>
+      </field>
+      <field name="event_window">
+        <type name="Gdk.Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="label_text">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="activate_timeout">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="constructed" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="in_button" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="button_down" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="relief" bits="2">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="use_underline" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="use_stock" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="depressed" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="depress_on_activate" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="focus_on_click" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <glib:signal name="activate">
+        <doc xml:whitespace="preserve">The ::activate signal on GtkButton is an action signal and
+emitting it causes the button to animate press then release. 
+Applications should never connect to this signal, but use the
+#GtkButton::clicked signal.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="clicked">
+        <doc xml:whitespace="preserve">Emitted when the button has been activated (pressed and released).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="enter"
+                   deprecated="Use the #GtkWidget::enter-notify-event signal."
+                   deprecated-version="2.8">
+        <doc xml:whitespace="preserve">Emitted when the pointer enters the button.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="leave"
+                   deprecated="Use the #GtkWidget::leave-notify-event signal."
+                   deprecated-version="2.8">
+        <doc xml:whitespace="preserve">Emitted when the pointer leaves the button.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="pressed"
+                   deprecated="Use the #GtkWidget::button-press-event signal."
+                   deprecated-version="2.8">
+        <doc xml:whitespace="preserve">Emitted when the button is pressed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="released"
+                   deprecated="Use the #GtkWidget::button-release-event signal."
+                   deprecated-version="2.8">
+        <doc xml:whitespace="preserve">Emitted when the button is released.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <class name="ButtonBox"
+           c:symbol-prefix="button_box"
+           c:type="GtkButtonBox"
+           parent="Box"
+           glib:type-name="GtkButtonBox"
+           glib:get-type="gtk_button_box_get_type"
+           glib:type-struct="ButtonBoxClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_button_box_new" version="3.0">
+        <doc xml:whitespace="preserve">Creates a new #GtkButtonBox.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkButtonBox.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the box' orientation.</doc>
+            <type name="Orientation" c:type="GtkOrientation"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_child_secondary"
+              c:identifier="gtk_button_box_get_child_secondary"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether @child should appear in a secondary group of children.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @child should appear in a secondary group of children.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a child of @widget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_layout" c:identifier="gtk_button_box_get_layout">
+        <doc xml:whitespace="preserve">Retrieves the method being used to arrange the buttons in a button box.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the method used to lay out buttons in @widget.</doc>
+          <type name="ButtonBoxStyle" c:type="GtkButtonBoxStyle"/>
+        </return-value>
+      </method>
+      <method name="set_child_secondary"
+              c:identifier="gtk_button_box_set_child_secondary">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="is_secondary" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layout" c:identifier="gtk_button_box_set_layout">
+        <doc xml:whitespace="preserve">Changes the way buttons are arranged in their container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layout_style" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new layout style</doc>
+            <type name="ButtonBoxStyle" c:type="GtkButtonBoxStyle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="layout-style" writable="1" transfer-ownership="none">
+        <type name="ButtonBoxStyle"/>
+      </property>
+      <field name="box">
+        <type name="Box" c:type="GtkBox"/>
+      </field>
+      <field name="priv">
+        <type name="ButtonBoxPrivate" c:type="GtkButtonBoxPrivate*"/>
+      </field>
+    </class>
+    <record name="ButtonBoxClass"
+            c:type="GtkButtonBoxClass"
+            glib:is-gtype-struct-for="ButtonBox">
+      <field name="parent_class">
+        <type name="BoxClass" c:type="GtkBoxClass"/>
+      </field>
+    </record>
+    <record name="ButtonBoxPrivate" c:type="GtkButtonBoxPrivate" disguised="1">
+    </record>
+    <enumeration name="ButtonBoxStyle"
+                 glib:type-name="GtkButtonBoxStyle"
+                 glib:get-type="gtk_button_box_style_get_type"
+                 c:type="GtkButtonBoxStyle">
+      <member name="spread"
+              value="1"
+              c:identifier="GTK_BUTTONBOX_SPREAD"
+              glib:nick="spread"/>
+      <member name="edge"
+              value="2"
+              c:identifier="GTK_BUTTONBOX_EDGE"
+              glib:nick="edge"/>
+      <member name="start"
+              value="3"
+              c:identifier="GTK_BUTTONBOX_START"
+              glib:nick="start"/>
+      <member name="end"
+              value="4"
+              c:identifier="GTK_BUTTONBOX_END"
+              glib:nick="end"/>
+      <member name="center"
+              value="5"
+              c:identifier="GTK_BUTTONBOX_CENTER"
+              glib:nick="center"/>
+    </enumeration>
+    <record name="ButtonClass"
+            c:type="GtkButtonClass"
+            glib:is-gtype-struct-for="Button">
+      <field name="parent_class">
+        <type name="BinClass" c:type="GtkBinClass"/>
+      </field>
+      <field name="pressed">
+        <callback name="pressed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="button" transfer-ownership="none">
+              <type name="Button" c:type="GtkButton*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="released">
+        <callback name="released">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="button" transfer-ownership="none">
+              <type name="Button" c:type="GtkButton*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clicked">
+        <callback name="clicked">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="button" transfer-ownership="none">
+              <type name="Button" c:type="GtkButton*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="enter">
+        <callback name="enter">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="button" transfer-ownership="none">
+              <type name="Button" c:type="GtkButton*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="leave">
+        <callback name="leave">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="button" transfer-ownership="none">
+              <type name="Button" c:type="GtkButton*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate">
+        <callback name="activate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="button" transfer-ownership="none">
+              <type name="Button" c:type="GtkButton*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="ButtonsType"
+                 glib:type-name="GtkButtonsType"
+                 glib:get-type="gtk_buttons_type_get_type"
+                 c:type="GtkButtonsType">
+      <doc xml:whitespace="preserve">Prebuilt sets of buttons for the dialog. If
+none of these choices are appropriate, simply use %GTK_BUTTONS_NONE
+then call gtk_dialog_add_buttons().
+&lt;note&gt;
+Please note that %GTK_BUTTONS_OK, %GTK_BUTTONS_YES_NO
+and %GTK_BUTTONS_OK_CANCEL are discouraged by the
+&lt;ulink url="http://library.gnome.org/devel/hig-book/stable/"&gt;GNOME HIG&lt;/ulink&gt;.
+&lt;/note&gt;</doc>
+      <member name="none"
+              value="0"
+              c:identifier="GTK_BUTTONS_NONE"
+              glib:nick="none"/>
+      <member name="ok"
+              value="1"
+              c:identifier="GTK_BUTTONS_OK"
+              glib:nick="ok"/>
+      <member name="close"
+              value="2"
+              c:identifier="GTK_BUTTONS_CLOSE"
+              glib:nick="close"/>
+      <member name="cancel"
+              value="3"
+              c:identifier="GTK_BUTTONS_CANCEL"
+              glib:nick="cancel"/>
+      <member name="yes_no"
+              value="4"
+              c:identifier="GTK_BUTTONS_YES_NO"
+              glib:nick="yes-no"/>
+      <member name="ok_cancel"
+              value="5"
+              c:identifier="GTK_BUTTONS_OK_CANCEL"
+              glib:nick="ok-cancel"/>
+    </enumeration>
+    <class name="Calendar"
+           c:symbol-prefix="calendar"
+           c:type="GtkCalendar"
+           parent="Widget"
+           glib:type-name="GtkCalendar"
+           glib:get-type="gtk_calendar_get_type"
+           glib:type-struct="CalendarClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_calendar_new">
+        <doc xml:whitespace="preserve">Creates a new calendar, with the current date being selected.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a newly #GtkCalendar widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="clear_marks" c:identifier="gtk_calendar_clear_marks">
+        <doc xml:whitespace="preserve">Remove all visual markers.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_date" c:identifier="gtk_calendar_get_date">
+        <doc xml:whitespace="preserve">Obtains the selected date from a #GtkCalendar.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="year" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store the year number, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="month" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store the month number (between 0 and 11), or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="day" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store the day number (between 1 and 31), or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_day_is_marked"
+              c:identifier="gtk_calendar_get_day_is_marked"
+              version="3.0">
+        <doc xml:whitespace="preserve">Returns if the @day of the @calendar is already marked.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the day is marked.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="day" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the day number between 1 and 31.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_detail_height_rows"
+              c:identifier="gtk_calendar_get_detail_height_rows"
+              version="2.14">
+        <doc xml:whitespace="preserve">Queries the height of detail cells, in rows.
+See #GtkCalendar:detail-width-chars.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The height of detail cells, in rows.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_detail_width_chars"
+              c:identifier="gtk_calendar_get_detail_width_chars"
+              version="2.14">
+        <doc xml:whitespace="preserve">Queries the width of detail cells, in characters.
+See #GtkCalendar:detail-width-chars.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The width of detail cells, in characters.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_display_options"
+              c:identifier="gtk_calendar_get_display_options"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the current display options of @calendar.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the display options.</doc>
+          <type name="CalendarDisplayOptions"
+                c:type="GtkCalendarDisplayOptions"/>
+        </return-value>
+      </method>
+      <method name="mark_day" c:identifier="gtk_calendar_mark_day">
+        <doc xml:whitespace="preserve">Places a visual marker on a particular day.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="day" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the day number to mark between 1 and 31.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_day" c:identifier="gtk_calendar_select_day">
+        <doc xml:whitespace="preserve">Selects a day from the current month.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="day" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the day number between 1 and 31, or 0 to unselect the currently selected day.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_month" c:identifier="gtk_calendar_select_month">
+        <doc xml:whitespace="preserve">Shifts the calendar to a different month.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="month" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a month number between 0 and 11.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="year" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the year the month is in.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_detail_func"
+              c:identifier="gtk_calendar_set_detail_func"
+              version="2.14">
+        <doc xml:whitespace="preserve">Installs a function which provides Pango markup with detail information
+for each day. Examples for such details are holidays or appointments. That
+information is shown below each day when #GtkCalendar:show-details is set.
+A tooltip containing with full detail information is provided, if the entire
+text should not fit into the details area, or if #GtkCalendar:show-details
+is not set.
+The size of the details area can be restricted by setting the
+#GtkCalendar:detail-width-chars and #GtkCalendar:detail-height-rows
+properties.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">a function providing details for each day.</doc>
+            <type name="CalendarDetailFunc" c:type="GtkCalendarDetailFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to @func invokations.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">a function for releasing @data.</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_detail_height_rows"
+              c:identifier="gtk_calendar_set_detail_height_rows"
+              version="2.14">
+        <doc xml:whitespace="preserve">Updates the height of detail cells.
+See #GtkCalendar:detail-height-rows.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rows" transfer-ownership="none">
+            <doc xml:whitespace="preserve">detail height in rows.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_detail_width_chars"
+              c:identifier="gtk_calendar_set_detail_width_chars"
+              version="2.14">
+        <doc xml:whitespace="preserve">Updates the width of detail cells.
+See #GtkCalendar:detail-width-chars.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">detail width in characters.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_display_options"
+              c:identifier="gtk_calendar_set_display_options"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets display options (whether to display the heading and the month  
+headings).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the display options to set</doc>
+            <type name="CalendarDisplayOptions"
+                  c:type="GtkCalendarDisplayOptions"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unmark_day" c:identifier="gtk_calendar_unmark_day">
+        <doc xml:whitespace="preserve">Removes the visual marker from a particular day.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="day" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the day number to unmark between 1 and 31.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="day" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The selected day (as a number between 1 and 31, or 0 
+to unselect the currently selected day).
+This property gets initially set to the current day.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="detail-height-rows"
+                version="2.14"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Height of a detail cell, in rows.
+A value of 0 allows any width. See gtk_calendar_set_detail_func().</doc>
+        <type name="gint"/>
+      </property>
+      <property name="detail-width-chars"
+                version="2.14"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Width of a detail cell, in characters.
+A value of 0 allows any width. See gtk_calendar_set_detail_func().</doc>
+        <type name="gint"/>
+      </property>
+      <property name="month" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The selected month (as a number between 0 and 11). 
+This property gets initially set to the current month.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="no-month-change"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Determines whether the selected month can be changed.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="show-day-names"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Determines whether day names are displayed.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="show-details"
+                version="2.14"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Determines whether details are shown directly in the widget, or if they are
+available only as tooltip. When this property is set days with details are
+marked.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="show-heading"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Determines whether a heading is displayed.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="show-week-numbers"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Determines whether week numbers are displayed.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="year" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The selected year. 
+This property gets initially set to the current year.</doc>
+        <type name="gint"/>
+      </property>
+      <field name="widget">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="priv">
+        <type name="CalendarPrivate" c:type="GtkCalendarPrivate*"/>
+      </field>
+      <glib:signal name="day-selected">
+        <doc xml:whitespace="preserve">Emitted when the user selects a day.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="day-selected-double-click">
+        <doc xml:whitespace="preserve">Emitted when the user double-clicks a day.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="month-changed">
+        <doc xml:whitespace="preserve">Emitted when the user clicks a button to change the selected month on a
+calendar.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="next-month">
+        <doc xml:whitespace="preserve">Emitted when the user switched to the next month.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="next-year">
+        <doc xml:whitespace="preserve">Emitted when user switched to the next year.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="prev-month">
+        <doc xml:whitespace="preserve">Emitted when the user switched to the previous month.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="prev-year">
+        <doc xml:whitespace="preserve">Emitted when user switched to the previous year.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="CalendarClass"
+            c:type="GtkCalendarClass"
+            glib:is-gtype-struct-for="Calendar">
+      <field name="parent_class">
+        <type name="WidgetClass" c:type="GtkWidgetClass"/>
+      </field>
+      <field name="month_changed">
+        <callback name="month_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="calendar" transfer-ownership="none">
+              <type name="Calendar" c:type="GtkCalendar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="day_selected">
+        <callback name="day_selected">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="calendar" transfer-ownership="none">
+              <type name="Calendar" c:type="GtkCalendar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="day_selected_double_click">
+        <callback name="day_selected_double_click">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="calendar" transfer-ownership="none">
+              <type name="Calendar" c:type="GtkCalendar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="prev_month">
+        <callback name="prev_month">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="calendar" transfer-ownership="none">
+              <type name="Calendar" c:type="GtkCalendar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="next_month">
+        <callback name="next_month">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="calendar" transfer-ownership="none">
+              <type name="Calendar" c:type="GtkCalendar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="prev_year">
+        <callback name="prev_year">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="calendar" transfer-ownership="none">
+              <type name="Calendar" c:type="GtkCalendar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="next_year">
+        <callback name="next_year">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="calendar" transfer-ownership="none">
+              <type name="Calendar" c:type="GtkCalendar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <callback name="CalendarDetailFunc"
+              c:type="GtkCalendarDetailFunc"
+              version="2.14">
+      <doc xml:whitespace="preserve">This kind of functions provide Pango markup with detail information for the
+specified day. Examples for such details are holidays or appointments. The
+function returns %NULL when no information is available.
+for the specified day, or %NULL.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">Newly allocated string with Pango markup with details</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="calendar" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkCalendar.</doc>
+          <type name="Calendar" c:type="GtkCalendar*"/>
+        </parameter>
+        <parameter name="year" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the year for which details are needed.</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="month" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the month for which details are needed.</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="day" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the day of @month for which details are needed.</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="4">
+          <doc xml:whitespace="preserve">the data passed with gtk_calendar_set_detail_func().</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="CalendarDisplayOptions"
+              glib:type-name="GtkCalendarDisplayOptions"
+              glib:get-type="gtk_calendar_display_options_get_type"
+              c:type="GtkCalendarDisplayOptions">
+      <doc xml:whitespace="preserve">These options can be used to influence the display and behaviour of a #GtkCalendar.</doc>
+      <member name="show_heading"
+              value="1"
+              c:identifier="GTK_CALENDAR_SHOW_HEADING"
+              glib:nick="show-heading"/>
+      <member name="show_day_names"
+              value="2"
+              c:identifier="GTK_CALENDAR_SHOW_DAY_NAMES"
+              glib:nick="show-day-names"/>
+      <member name="no_month_change"
+              value="4"
+              c:identifier="GTK_CALENDAR_NO_MONTH_CHANGE"
+              glib:nick="no-month-change"/>
+      <member name="show_week_numbers"
+              value="8"
+              c:identifier="GTK_CALENDAR_SHOW_WEEK_NUMBERS"
+              glib:nick="show-week-numbers"/>
+      <member name="show_details"
+              value="32"
+              c:identifier="GTK_CALENDAR_SHOW_DETAILS"
+              glib:nick="show-details"/>
+    </bitfield>
+    <record name="CalendarPrivate" c:type="GtkCalendarPrivate" disguised="1">
+    </record>
+    <callback name="Callback" c:type="GtkCallback">
+      <doc xml:whitespace="preserve">The type of the callback functions used for e.g. iterating over
+the children of a container, see gtk_container_foreach().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the widget to operate on</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user-supplied data</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="CallbackMarshal" c:type="GtkCallbackMarshal">
+      <doc xml:whitespace="preserve">Defines a function pointer.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GtkObject*</doc>
+          <type name="Object" c:type="GtkObject*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#gpointer</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="n_args" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#guint</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="args" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GtkArg*</doc>
+          <type name="Arg" c:type="GtkArg*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <interface name="CellEditable"
+               c:symbol-prefix="cell_editable"
+               c:type="GtkCellEditable"
+               glib:type-name="GtkCellEditable"
+               glib:get-type="gtk_cell_editable_get_type"
+               glib:type-struct="CellEditableIface">
+      <prerequisite name="Widget"/>
+      <virtual-method name="start_editing" invoker="start_editing">
+        <doc xml:whitespace="preserve">Begins editing on a @cell_editable. @event is the #GdkEvent that began 
+the editing process. It may be %NULL, in the instance that editing was 
+initiated through programatic means.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A #GdkEvent, or %NULL</doc>
+            <type name="Gdk.Event" c:type="GdkEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="editing_done"
+              c:identifier="gtk_cell_editable_editing_done">
+        <doc xml:whitespace="preserve">Emits the #GtkCellEditable::editing-done signal.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="remove_widget"
+              c:identifier="gtk_cell_editable_remove_widget">
+        <doc xml:whitespace="preserve">Emits the #GtkCellEditable::remove-widget signal.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="start_editing"
+              c:identifier="gtk_cell_editable_start_editing">
+        <doc xml:whitespace="preserve">Begins editing on a @cell_editable. @event is the #GdkEvent that began 
+the editing process. It may be %NULL, in the instance that editing was 
+initiated through programatic means.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A #GdkEvent, or %NULL</doc>
+            <type name="Gdk.Event" c:type="GdkEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="editing-canceled"
+                version="2.20"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Indicates whether editing on the cell has been canceled.</doc>
+        <type name="gboolean"/>
+      </property>
+      <glib:signal name="editing-done">
+        <doc xml:whitespace="preserve">This signal is a sign for the cell renderer to update its
+value from the @cell_editable.
+Implementations of #GtkCellEditable are responsible for
+emitting this signal when they are done editing, e.g.
+#GtkEntry is emitting it when the user presses Enter.
+gtk_cell_editable_editing_done() is a convenience method
+for emitting #GtkCellEditable::editing-done.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="remove-widget">
+        <doc xml:whitespace="preserve">This signal is meant to indicate that the cell is finished
+editing, and the widget may now be destroyed.
+Implementations of #GtkCellEditable are responsible for
+emitting this signal when they are done editing. It must
+be emitted after the #GtkCellEditable::editing-done signal,
+to give the cell renderer a chance to update the cell's value
+before the widget is removed.
+gtk_cell_editable_remove_widget() is a convenience method
+for emitting #GtkCellEditable::remove-widget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </interface>
+    <record name="CellEditableIface"
+            c:type="GtkCellEditableIface"
+            glib:is-gtype-struct-for="CellEditable">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="editing_done">
+        <callback name="editing_done">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cell_editable" transfer-ownership="none">
+              <type name="CellEditable" c:type="GtkCellEditable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_widget">
+        <callback name="remove_widget">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cell_editable" transfer-ownership="none">
+              <type name="CellEditable" c:type="GtkCellEditable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="start_editing">
+        <callback name="start_editing">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cell_editable" transfer-ownership="none">
+              <type name="CellEditable" c:type="GtkCellEditable*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">A #GdkEvent, or %NULL</doc>
+              <type name="Gdk.Event" c:type="GdkEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <interface name="CellLayout"
+               c:symbol-prefix="cell_layout"
+               c:type="GtkCellLayout"
+               glib:type-name="GtkCellLayout"
+               glib:get-type="gtk_cell_layout_get_type"
+               glib:type-struct="CellLayoutIface">
+      <virtual-method name="add_attribute"
+                      invoker="add_attribute"
+                      version="2.4">
+        <doc xml:whitespace="preserve">Adds an attribute mapping to the list in @cell_layout. The @column is the
+column of the model to get a value from, and the @attribute is the
+parameter on @cell to be set from the value. So for example if column 2
+of the model contains strings, you could have the "text" attribute of a
+#GtkCellRendererText get its values from column 2.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkCellRenderer.</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An attribute on the renderer.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The column position on the model to get the attribute from.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="clear" invoker="clear" version="2.4">
+        <doc xml:whitespace="preserve">Unsets all the mappings on all renderers on @cell_layout and
+removes all renderers from @cell_layout.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="clear_attributes"
+                      invoker="clear_attributes"
+                      version="2.4">
+        <doc xml:whitespace="preserve">Clears all existing attributes previously set with
+gtk_cell_layout_set_attributes().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkCellRenderer to clear the attribute mapping on.</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_cells" invoker="get_cells" version="2.12">
+        <doc xml:whitespace="preserve">Returns the cell renderers which have been added to @cell_layout.
+renderers has been newly allocated and should be freed with
+g_list_free() when no longer needed.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a list of cell renderers. The list, but not the</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="CellRenderer"/>
+          </type>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="pack_end" invoker="pack_end" version="2.4">
+        <doc xml:whitespace="preserve">Adds the @cell to the end of @cell_layout. If @expand is %FALSE, then the
+divided evenly between cells for which @expand is %TRUE.
+Note that reusing the same cell renderer is not supported.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkCellRenderer.</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter name="expand" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if @cell is to be given extra space allocated to @cell_layout.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="pack_start" invoker="pack_start" version="2.4">
+        <doc xml:whitespace="preserve">Packs the @cell into the beginning of @cell_layout. If @expand is %FALSE,
+then the @cell is allocated no more space than it needs. Any unused space
+is divided evenly between cells for which @expand is %TRUE.
+Note that reusing the same cell renderer is not supported.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkCellRenderer.</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter name="expand" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if @cell is to be given extra space allocated to @cell_layout.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="reorder" invoker="reorder" version="2.4">
+        <doc xml:whitespace="preserve">Re-inserts @cell at @position. Note that @cell has already to be packed
+into @cell_layout for this to function properly.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkCellRenderer to reorder.</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">New position to insert @cell at.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_cell_data_func"
+                      invoker="set_cell_data_func"
+                      version="2.4">
+        <doc xml:whitespace="preserve">Sets the #GtkCellLayoutDataFunc to use for @cell_layout. This function
+is used instead of the standard attributes mapping for setting the
+column value, and should set the value of @cell_layout's cell renderer(s)
+as appropriate. @func may be %NULL to remove and older one.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkCellRenderer.</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <doc xml:whitespace="preserve">The #GtkCellLayoutDataFunc to use.</doc>
+            <type name="CellLayoutDataFunc" c:type="GtkCellLayoutDataFunc"/>
+          </parameter>
+          <parameter name="func_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The user data for @func.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">The destroy notification for @func_data.</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_attribute"
+              c:identifier="gtk_cell_layout_add_attribute"
+              version="2.4">
+        <doc xml:whitespace="preserve">Adds an attribute mapping to the list in @cell_layout. The @column is the
+column of the model to get a value from, and the @attribute is the
+parameter on @cell to be set from the value. So for example if column 2
+of the model contains strings, you could have the "text" attribute of a
+#GtkCellRendererText get its values from column 2.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkCellRenderer.</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An attribute on the renderer.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The column position on the model to get the attribute from.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear" c:identifier="gtk_cell_layout_clear" version="2.4">
+        <doc xml:whitespace="preserve">Unsets all the mappings on all renderers on @cell_layout and
+removes all renderers from @cell_layout.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="clear_attributes"
+              c:identifier="gtk_cell_layout_clear_attributes"
+              version="2.4">
+        <doc xml:whitespace="preserve">Clears all existing attributes previously set with
+gtk_cell_layout_set_attributes().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkCellRenderer to clear the attribute mapping on.</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cells"
+              c:identifier="gtk_cell_layout_get_cells"
+              version="2.12">
+        <doc xml:whitespace="preserve">Returns the cell renderers which have been added to @cell_layout.
+renderers has been newly allocated and should be freed with
+g_list_free() when no longer needed.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a list of cell renderers. The list, but not the</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="CellRenderer"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="pack_end"
+              c:identifier="gtk_cell_layout_pack_end"
+              version="2.4">
+        <doc xml:whitespace="preserve">Adds the @cell to the end of @cell_layout. If @expand is %FALSE, then the
+divided evenly between cells for which @expand is %TRUE.
+Note that reusing the same cell renderer is not supported.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkCellRenderer.</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter name="expand" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if @cell is to be given extra space allocated to @cell_layout.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pack_start"
+              c:identifier="gtk_cell_layout_pack_start"
+              version="2.4">
+        <doc xml:whitespace="preserve">Packs the @cell into the beginning of @cell_layout. If @expand is %FALSE,
+then the @cell is allocated no more space than it needs. Any unused space
+is divided evenly between cells for which @expand is %TRUE.
+Note that reusing the same cell renderer is not supported.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkCellRenderer.</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter name="expand" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if @cell is to be given extra space allocated to @cell_layout.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reorder"
+              c:identifier="gtk_cell_layout_reorder"
+              version="2.4">
+        <doc xml:whitespace="preserve">Re-inserts @cell at @position. Note that @cell has already to be packed
+into @cell_layout for this to function properly.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkCellRenderer to reorder.</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">New position to insert @cell at.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attributes"
+              c:identifier="gtk_cell_layout_set_attributes"
+              version="2.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the attributes in list as the attributes of @cell_layout. The
+attributes should be in attribute/column order, as in
+gtk_cell_layout_add_attribute(). All existing attributes are removed, and
+replaced with the new attributes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkCellRenderer.</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cell_data_func"
+              c:identifier="gtk_cell_layout_set_cell_data_func"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the #GtkCellLayoutDataFunc to use for @cell_layout. This function
+is used instead of the standard attributes mapping for setting the
+column value, and should set the value of @cell_layout's cell renderer(s)
+as appropriate. @func may be %NULL to remove and older one.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkCellRenderer.</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <doc xml:whitespace="preserve">The #GtkCellLayoutDataFunc to use.</doc>
+            <type name="CellLayoutDataFunc" c:type="GtkCellLayoutDataFunc"/>
+          </parameter>
+          <parameter name="func_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The user data for @func.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">The destroy notification for @func_data.</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <callback name="CellLayoutDataFunc" c:type="GtkCellLayoutDataFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cell_layout" transfer-ownership="none">
+          <type name="CellLayout" c:type="GtkCellLayout*"/>
+        </parameter>
+        <parameter name="cell" transfer-ownership="none">
+          <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+        </parameter>
+        <parameter name="tree_model" transfer-ownership="none">
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </parameter>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="TreeIter" c:type="GtkTreeIter*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="CellLayoutIface"
+            c:type="GtkCellLayoutIface"
+            glib:is-gtype-struct-for="CellLayout">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="pack_start">
+        <callback name="pack_start">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cell_layout" transfer-ownership="none">
+              <type name="CellLayout" c:type="GtkCellLayout*"/>
+            </parameter>
+            <parameter name="cell" transfer-ownership="none">
+              <doc xml:whitespace="preserve">A #GtkCellRenderer.</doc>
+              <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+            </parameter>
+            <parameter name="expand" transfer-ownership="none">
+              <doc xml:whitespace="preserve">%TRUE if @cell is to be given extra space allocated to @cell_layout.</doc>
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pack_end">
+        <callback name="pack_end">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cell_layout" transfer-ownership="none">
+              <type name="CellLayout" c:type="GtkCellLayout*"/>
+            </parameter>
+            <parameter name="cell" transfer-ownership="none">
+              <doc xml:whitespace="preserve">A #GtkCellRenderer.</doc>
+              <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+            </parameter>
+            <parameter name="expand" transfer-ownership="none">
+              <doc xml:whitespace="preserve">%TRUE if @cell is to be given extra space allocated to @cell_layout.</doc>
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clear">
+        <callback name="clear">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cell_layout" transfer-ownership="none">
+              <type name="CellLayout" c:type="GtkCellLayout*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_attribute">
+        <callback name="add_attribute">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cell_layout" transfer-ownership="none">
+              <type name="CellLayout" c:type="GtkCellLayout*"/>
+            </parameter>
+            <parameter name="cell" transfer-ownership="none">
+              <doc xml:whitespace="preserve">A #GtkCellRenderer.</doc>
+              <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+            </parameter>
+            <parameter name="attribute" transfer-ownership="none">
+              <doc xml:whitespace="preserve">An attribute on the renderer.</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The column position on the model to get the attribute from.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_cell_data_func">
+        <callback name="set_cell_data_func">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cell_layout" transfer-ownership="none">
+              <type name="CellLayout" c:type="GtkCellLayout*"/>
+            </parameter>
+            <parameter name="cell" transfer-ownership="none">
+              <doc xml:whitespace="preserve">A #GtkCellRenderer.</doc>
+              <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+            </parameter>
+            <parameter name="func"
+                       transfer-ownership="none"
+                       scope="notified"
+                       closure="3"
+                       destroy="4">
+              <doc xml:whitespace="preserve">The #GtkCellLayoutDataFunc to use.</doc>
+              <type name="CellLayoutDataFunc" c:type="GtkCellLayoutDataFunc"/>
+            </parameter>
+            <parameter name="func_data" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The user data for @func.</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+            <parameter name="destroy" transfer-ownership="none" scope="async">
+              <doc xml:whitespace="preserve">The destroy notification for @func_data.</doc>
+              <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clear_attributes">
+        <callback name="clear_attributes">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cell_layout" transfer-ownership="none">
+              <type name="CellLayout" c:type="GtkCellLayout*"/>
+            </parameter>
+            <parameter name="cell" transfer-ownership="none">
+              <doc xml:whitespace="preserve">A #GtkCellRenderer to clear the attribute mapping on.</doc>
+              <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="reorder">
+        <callback name="reorder">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cell_layout" transfer-ownership="none">
+              <type name="CellLayout" c:type="GtkCellLayout*"/>
+            </parameter>
+            <parameter name="cell" transfer-ownership="none">
+              <doc xml:whitespace="preserve">A #GtkCellRenderer to reorder.</doc>
+              <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+            </parameter>
+            <parameter name="position" transfer-ownership="none">
+              <doc xml:whitespace="preserve">New position to insert @cell at.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_cells">
+        <callback name="get_cells">
+          <return-value transfer-ownership="container">
+            <doc xml:whitespace="preserve">a list of cell renderers. The list, but not the</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="CellRenderer"/>
+            </type>
+          </return-value>
+          <parameters>
+            <parameter name="cell_layout" transfer-ownership="none">
+              <type name="CellLayout" c:type="GtkCellLayout*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="CellRenderer"
+           c:symbol-prefix="cell_renderer"
+           c:type="GtkCellRenderer"
+           parent="Object"
+           abstract="1"
+           glib:type-name="GtkCellRenderer"
+           glib:get-type="gtk_cell_renderer_get_type"
+           glib:type-struct="CellRendererClass">
+      <implements name="CellSizeRequest"/>
+      <virtual-method name="activate" invoker="activate">
+        <doc xml:whitespace="preserve">Passes an activate event to the cell renderer for possible processing.  
+Some cell renderers may use events; for example, #GtkCellRendererToggle 
+toggles when it gets a mouse click.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event was consumed/handled</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkEvent</doc>
+            <type name="Gdk.Event" c:type="GdkEvent*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">widget that received the event</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">widget-dependent string representation of the event location; e.g. for #GtkTreeView, a string representation of #GtkTreePath</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="background_area" transfer-ownership="none">
+            <doc xml:whitespace="preserve">background area as passed to gtk_cell_renderer_render()</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="cell_area" transfer-ownership="none">
+            <doc xml:whitespace="preserve">cell area as passed to gtk_cell_renderer_render()</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">render flags</doc>
+            <type name="CellRendererState" c:type="GtkCellRendererState"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_size"
+                      invoker="get_size"
+                      deprecated="Use gtk_cell_size_request_get_size() instead."
+                      deprecated-version="3.0">
+        <doc xml:whitespace="preserve">Obtains the width and height needed to render the cell. Used by view 
+widgets to determine the appropriate size for the cell_area passed to
+gtk_cell_renderer_render().  If @cell_area is not %NULL, fills in the
+x and y offsets (if set) of the cell relative to this location. 
+Please note that the values set in @width and @height, as well as those 
+in @x_offset and @y_offset are inclusive of the xpad and ypad properties.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the widget the renderer is rendering to</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="cell_area" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">The area a cell will be allocated, or %NULL</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="x_offset" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to return x offset of cell relative to @cell_area, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y_offset" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to return y offset of cell relative to @cell_area, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to return width needed to render a cell, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to return height needed to render a cell, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="render" invoker="render">
+        <doc xml:whitespace="preserve">Invokes the virtual render function of the #GtkCellRenderer. The three
+passed-in rectangles are areas of @window. Most renderers will draw within
+should be honored with respect to @cell_area. @background_area includes the
+blank space around the cell, and also the area containing the tree expander;
+so the @background_area rectangles for all cells tile to cover the entire</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkDrawable to draw to</doc>
+            <type name="Gdk.Drawable" c:type="GdkDrawable*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the widget owning @window</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="background_area" transfer-ownership="none">
+            <doc xml:whitespace="preserve">entire cell area (including tree expanders and maybe padding on the sides)</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="cell_area" transfer-ownership="none">
+            <doc xml:whitespace="preserve">area normally rendered by a cell renderer</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="expose_area" transfer-ownership="none">
+            <doc xml:whitespace="preserve">area that actually needs updating</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags that affect rendering</doc>
+            <type name="CellRendererState" c:type="GtkCellRendererState"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="start_editing" invoker="start_editing">
+        <doc xml:whitespace="preserve">Passes an activate event to the cell renderer for possible processing.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A new #GtkCellEditable, or %NULL</doc>
+          <type name="CellEditable" c:type="GtkCellEditable*"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkEvent</doc>
+            <type name="Gdk.Event" c:type="GdkEvent*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">widget that received the event</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">widget-dependent string representation of the event location; e.g. for #GtkTreeView, a string representation of #GtkTreePath</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="background_area" transfer-ownership="none">
+            <doc xml:whitespace="preserve">background area as passed to gtk_cell_renderer_render()</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="cell_area" transfer-ownership="none">
+            <doc xml:whitespace="preserve">cell area as passed to gtk_cell_renderer_render()</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">render flags</doc>
+            <type name="CellRendererState" c:type="GtkCellRendererState"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="activate" c:identifier="gtk_cell_renderer_activate">
+        <doc xml:whitespace="preserve">Passes an activate event to the cell renderer for possible processing.  
+Some cell renderers may use events; for example, #GtkCellRendererToggle 
+toggles when it gets a mouse click.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event was consumed/handled</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkEvent</doc>
+            <type name="Gdk.Event" c:type="GdkEvent*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">widget that received the event</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">widget-dependent string representation of the event location; e.g. for #GtkTreeView, a string representation of #GtkTreePath</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="background_area" transfer-ownership="none">
+            <doc xml:whitespace="preserve">background area as passed to gtk_cell_renderer_render()</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="cell_area" transfer-ownership="none">
+            <doc xml:whitespace="preserve">cell area as passed to gtk_cell_renderer_render()</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">render flags</doc>
+            <type name="CellRendererState" c:type="GtkCellRendererState"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_alignment"
+              c:identifier="gtk_cell_renderer_get_alignment"
+              version="2.18">
+        <doc xml:whitespace="preserve">Fills in @xalign and @yalign with the appropriate values of @cell.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to fill in with the x alignment of the cell, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="yalign" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to fill in with the y alignment of the cell, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fixed_size"
+              c:identifier="gtk_cell_renderer_get_fixed_size">
+        <doc xml:whitespace="preserve">Fills in @width and @height with the appropriate size of @cell.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to fill in with the fixed width of the cell, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to fill in with the fixed height of the cell, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_padding"
+              c:identifier="gtk_cell_renderer_get_padding"
+              version="2.18">
+        <doc xml:whitespace="preserve">Fills in @xpad and @ypad with the appropriate values of @cell.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xpad" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to fill in with the x padding of the cell, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="ypad" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to fill in with the y padding of the cell, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sensitive"
+              c:identifier="gtk_cell_renderer_get_sensitive"
+              version="2.18">
+        <doc xml:whitespace="preserve">Returns the cell renderer's sensitivity.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the cell renderer is sensitive</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_size"
+              c:identifier="gtk_cell_renderer_get_size"
+              deprecated="Use gtk_cell_size_request_get_size() instead."
+              deprecated-version="3.0">
+        <doc xml:whitespace="preserve">Obtains the width and height needed to render the cell. Used by view 
+widgets to determine the appropriate size for the cell_area passed to
+gtk_cell_renderer_render().  If @cell_area is not %NULL, fills in the
+x and y offsets (if set) of the cell relative to this location. 
+Please note that the values set in @width and @height, as well as those 
+in @x_offset and @y_offset are inclusive of the xpad and ypad properties.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the widget the renderer is rendering to</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="cell_area" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">The area a cell will be allocated, or %NULL</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="x_offset" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to return x offset of cell relative to @cell_area, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y_offset" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to return y offset of cell relative to @cell_area, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to return width needed to render a cell, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to return height needed to render a cell, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_visible"
+              c:identifier="gtk_cell_renderer_get_visible"
+              version="2.18">
+        <doc xml:whitespace="preserve">Returns the cell renderer's visibility.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the cell renderer is visible</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="render" c:identifier="gtk_cell_renderer_render">
+        <doc xml:whitespace="preserve">Invokes the virtual render function of the #GtkCellRenderer. The three
+passed-in rectangles are areas of @window. Most renderers will draw within
+should be honored with respect to @cell_area. @background_area includes the
+blank space around the cell, and also the area containing the tree expander;
+so the @background_area rectangles for all cells tile to cover the entire</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkDrawable to draw to</doc>
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the widget owning @window</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="background_area" transfer-ownership="none">
+            <doc xml:whitespace="preserve">entire cell area (including tree expanders and maybe padding on the sides)</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="cell_area" transfer-ownership="none">
+            <doc xml:whitespace="preserve">area normally rendered by a cell renderer</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="expose_area" transfer-ownership="none">
+            <doc xml:whitespace="preserve">area that actually needs updating</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags that affect rendering</doc>
+            <type name="CellRendererState" c:type="GtkCellRendererState"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alignment"
+              c:identifier="gtk_cell_renderer_set_alignment"
+              version="2.18">
+        <doc xml:whitespace="preserve">Sets the renderer's alignment within its available space.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x alignment of the cell renderer</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="yalign" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y alignment of the cell renderer</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fixed_size"
+              c:identifier="gtk_cell_renderer_set_fixed_size">
+        <doc xml:whitespace="preserve">Sets the renderer size to be explicit, independent of the properties set.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the width of the cell renderer, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the height of the cell renderer, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_padding"
+              c:identifier="gtk_cell_renderer_set_padding"
+              version="2.18">
+        <doc xml:whitespace="preserve">Sets the renderer's padding.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xpad" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x padding of the cell renderer</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="ypad" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y padding of the cell renderer</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sensitive"
+              c:identifier="gtk_cell_renderer_set_sensitive"
+              version="2.18">
+        <doc xml:whitespace="preserve">Sets the cell renderer's sensitivity.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sensitive" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the sensitivity of the cell</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_visible"
+              c:identifier="gtk_cell_renderer_set_visible"
+              version="2.18">
+        <doc xml:whitespace="preserve">Sets the cell renderer's visibility.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the visibility of the cell</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start_editing"
+              c:identifier="gtk_cell_renderer_start_editing">
+        <doc xml:whitespace="preserve">Passes an activate event to the cell renderer for possible processing.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A new #GtkCellEditable, or %NULL</doc>
+          <type name="CellEditable" c:type="GtkCellEditable*"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkEvent</doc>
+            <type name="Gdk.Event" c:type="GdkEvent*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">widget that received the event</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">widget-dependent string representation of the event location; e.g. for #GtkTreeView, a string representation of #GtkTreePath</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="background_area" transfer-ownership="none">
+            <doc xml:whitespace="preserve">background area as passed to gtk_cell_renderer_render()</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="cell_area" transfer-ownership="none">
+            <doc xml:whitespace="preserve">cell area as passed to gtk_cell_renderer_render()</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">render flags</doc>
+            <type name="CellRendererState" c:type="GtkCellRendererState"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="stop_editing"
+              c:identifier="gtk_cell_renderer_stop_editing"
+              version="2.6">
+        <doc xml:whitespace="preserve">Informs the cell renderer that the editing is stopped.
+If @canceled is %TRUE, the cell renderer will emit the 
+#GtkCellRenderer::editing-canceled signal. 
+This function should be called by cell renderer implementations 
+in response to the #GtkCellEditable::editing-done signal of 
+#GtkCellEditable.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="canceled" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the editing has been canceled</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="cell-background"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="cell-background-gdk"
+                writable="1"
+                transfer-ownership="none">
+        <type name="Gdk.Color"/>
+      </property>
+      <property name="cell-background-set"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="editing" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="height" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="is-expanded" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="is-expander" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="mode" writable="1" transfer-ownership="none">
+        <type name="CellRendererMode"/>
+      </property>
+      <property name="sensitive" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="visible" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="width" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="xalign" writable="1" transfer-ownership="none">
+        <type name="gfloat"/>
+      </property>
+      <property name="xpad" writable="1" transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <property name="yalign" writable="1" transfer-ownership="none">
+        <type name="gfloat"/>
+      </property>
+      <property name="ypad" writable="1" transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <field name="parent">
+        <type name="Object" c:type="GtkObject"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="CellRendererPrivate" c:type="GtkCellRendererPrivate*"/>
+      </field>
+      <glib:signal name="editing-canceled" version="2.4">
+        <doc xml:whitespace="preserve">This signal gets emitted when the user cancels the process of editing a
+cell.  For example, an editable cell renderer could be written to cancel
+editing when the user presses Escape.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="editing-started" version="2.6">
+        <doc xml:whitespace="preserve">This signal gets emitted when a cell starts to be edited.
+The intended use of this signal is to do special setup
+on @editable, e.g. adding a #GtkEntryCompletion or setting
+up additional columns in a #GtkComboBox.
+Note that GTK+ doesn't guarantee that cell renderers will
+continue to use the same kind of widget for editing in future
+releases, therefore you should check the type of @editable
+before doing any specific setup, as in the following example:
+|[
+static void
+text_editing_started (GtkCellRenderer *cell,
+GtkCellEditable *editable,
+const gchar     *path,
+gpointer         data)
+{
+if (GTK_IS_ENTRY (editable)) 
+{
+GtkEntry *entry = GTK_ENTRY (editable);
+/&amp;ast; ... create a GtkEntryCompletion &amp;ast;/
+gtk_entry_set_completion (entry, completion);
+}
+}
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkCellEditable</doc>
+            <type name="CellEditable"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the path identifying the edited cell</doc>
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <class name="CellRendererAccel"
+           c:symbol-prefix="cell_renderer_accel"
+           c:type="GtkCellRendererAccel"
+           parent="CellRendererText"
+           glib:type-name="GtkCellRendererAccel"
+           glib:get-type="gtk_cell_renderer_accel_get_type"
+           glib:type-struct="CellRendererAccelClass">
+      <implements name="CellSizeRequest"/>
+      <constructor name="new"
+                   c:identifier="gtk_cell_renderer_accel_new"
+                   version="2.10">
+        <doc xml:whitespace="preserve">Creates a new #GtkCellRendererAccel.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new cell renderer</doc>
+          <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+        </return-value>
+      </constructor>
+      <property name="accel-key"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The keyval of the accelerator.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="accel-mode"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Determines if the edited accelerators are GTK+ accelerators. If
+they are, consumed modifiers are suppressed, only accelerators
+accepted by GTK+ are allowed, and the accelerators are rendered
+in the same way as they are in menus.</doc>
+        <type name="CellRendererAccelMode"/>
+      </property>
+      <property name="accel-mods"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The modifier mask of the accelerator.</doc>
+        <type name="Gdk.ModifierType"/>
+      </property>
+      <property name="keycode"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The hardware keycode of the accelerator. Note that the hardware keycode is
+only relevant if the key does not have a keyval. Normally, the keyboard
+configuration should assign keyvals to all keys.</doc>
+        <type name="guint"/>
+      </property>
+      <field name="parent">
+        <type name="CellRendererText" c:type="GtkCellRendererText"/>
+      </field>
+      <field name="priv">
+        <type name="CellRendererAccelPrivate"
+              c:type="GtkCellRendererAccelPrivate*"/>
+      </field>
+      <glib:signal name="accel-cleared" version="2.10">
+        <doc xml:whitespace="preserve">Gets emitted when the user has removed the accelerator.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the path identifying the row of the edited cell</doc>
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="accel-edited" version="2.10">
+        <doc xml:whitespace="preserve">Gets emitted when the user has selected a new accelerator.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the path identifying the row of the edited cell</doc>
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new accelerator keyval</doc>
+            <type name="guint"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new acclerator modifier mask</doc>
+            <type name="Gdk.ModifierType"/>
+          </parameter>
+          <parameter name="p2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the keycode of the new accelerator</doc>
+            <type name="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="CellRendererAccelClass"
+            c:type="GtkCellRendererAccelClass"
+            glib:is-gtype-struct-for="CellRendererAccel">
+      <field name="parent_class">
+        <type name="CellRendererTextClass" c:type="GtkCellRendererTextClass"/>
+      </field>
+      <field name="accel_edited">
+        <callback name="accel_edited">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="accel" transfer-ownership="none">
+              <type name="CellRendererAccel" c:type="GtkCellRendererAccel*"/>
+            </parameter>
+            <parameter name="path_string" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="accel_key" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="accel_mods" transfer-ownership="none">
+              <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+            </parameter>
+            <parameter name="hardware_keycode" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="accel_cleared">
+        <callback name="accel_cleared">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="accel" transfer-ownership="none">
+              <type name="CellRendererAccel" c:type="GtkCellRendererAccel*"/>
+            </parameter>
+            <parameter name="path_string" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved0" introspectable="0">
+        <callback name="_gtk_reserved0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="CellRendererAccelMode"
+                 glib:type-name="GtkCellRendererAccelMode"
+                 glib:get-type="gtk_cell_renderer_accel_mode_get_type"
+                 c:type="GtkCellRendererAccelMode">
+      <member name="gtk"
+              value="0"
+              c:identifier="GTK_CELL_RENDERER_ACCEL_MODE_GTK"
+              glib:nick="gtk"/>
+      <member name="other"
+              value="1"
+              c:identifier="GTK_CELL_RENDERER_ACCEL_MODE_OTHER"
+              glib:nick="other"/>
+    </enumeration>
+    <record name="CellRendererAccelPrivate"
+            c:type="GtkCellRendererAccelPrivate"
+            disguised="1">
+    </record>
+    <record name="CellRendererClass"
+            c:type="GtkCellRendererClass"
+            glib:is-gtype-struct-for="CellRenderer">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GtkObjectClass"/>
+      </field>
+      <field name="get_size">
+        <callback name="get_size">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cell" transfer-ownership="none">
+              <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the widget the renderer is rendering to</doc>
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="cell_area"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">The area a cell will be allocated, or %NULL</doc>
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="x_offset"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">location to return x offset of cell relative to @cell_area, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="y_offset"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">location to return y offset of cell relative to @cell_area, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">location to return width needed to render a cell, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">location to return height needed to render a cell, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="render">
+        <callback name="render">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cell" transfer-ownership="none">
+              <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GdkDrawable to draw to</doc>
+              <type name="Gdk.Drawable" c:type="GdkDrawable*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the widget owning @window</doc>
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="background_area" transfer-ownership="none">
+              <doc xml:whitespace="preserve">entire cell area (including tree expanders and maybe padding on the sides)</doc>
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="cell_area" transfer-ownership="none">
+              <doc xml:whitespace="preserve">area normally rendered by a cell renderer</doc>
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="expose_area" transfer-ownership="none">
+              <doc xml:whitespace="preserve">area that actually needs updating</doc>
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">flags that affect rendering</doc>
+              <type name="CellRendererState" c:type="GtkCellRendererState"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate">
+        <callback name="activate">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the event was consumed/handled</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="cell" transfer-ownership="none">
+              <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GdkEvent</doc>
+              <type name="Gdk.Event" c:type="GdkEvent*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <doc xml:whitespace="preserve">widget that received the event</doc>
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <doc xml:whitespace="preserve">widget-dependent string representation of the event location; e.g. for #GtkTreeView, a string representation of #GtkTreePath</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="background_area" transfer-ownership="none">
+              <doc xml:whitespace="preserve">background area as passed to gtk_cell_renderer_render()</doc>
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="cell_area" transfer-ownership="none">
+              <doc xml:whitespace="preserve">cell area as passed to gtk_cell_renderer_render()</doc>
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">render flags</doc>
+              <type name="CellRendererState" c:type="GtkCellRendererState"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="start_editing">
+        <callback name="start_editing">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">A new #GtkCellEditable, or %NULL</doc>
+            <type name="CellEditable" c:type="GtkCellEditable*"/>
+          </return-value>
+          <parameters>
+            <parameter name="cell" transfer-ownership="none">
+              <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GdkEvent</doc>
+              <type name="Gdk.Event" c:type="GdkEvent*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <doc xml:whitespace="preserve">widget that received the event</doc>
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <doc xml:whitespace="preserve">widget-dependent string representation of the event location; e.g. for #GtkTreeView, a string representation of #GtkTreePath</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="background_area" transfer-ownership="none">
+              <doc xml:whitespace="preserve">background area as passed to gtk_cell_renderer_render()</doc>
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="cell_area" transfer-ownership="none">
+              <doc xml:whitespace="preserve">cell area as passed to gtk_cell_renderer_render()</doc>
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">render flags</doc>
+              <type name="CellRendererState" c:type="GtkCellRendererState"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="editing_canceled">
+        <callback name="editing_canceled">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cell" transfer-ownership="none">
+              <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="editing_started">
+        <callback name="editing_started">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cell" transfer-ownership="none">
+              <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+            </parameter>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="CellEditable" c:type="GtkCellEditable*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="CellRendererCombo"
+           c:symbol-prefix="cell_renderer_combo"
+           c:type="GtkCellRendererCombo"
+           parent="CellRendererText"
+           glib:type-name="GtkCellRendererCombo"
+           glib:get-type="gtk_cell_renderer_combo_get_type"
+           glib:type-struct="CellRendererComboClass">
+      <implements name="CellSizeRequest"/>
+      <constructor name="new"
+                   c:identifier="gtk_cell_renderer_combo_new"
+                   version="2.6">
+        <doc xml:whitespace="preserve">Creates a new #GtkCellRendererCombo. 
+Adjust how text is drawn using object properties. 
+Object properties can be set globally (with g_object_set()). 
+Also, with #GtkTreeViewColumn, you can bind a property to a value 
+in a #GtkTreeModel. For example, you can bind the "text" property 
+on the cell renderer to a string value in the model, thus rendering 
+a different string in each row of the #GtkTreeView.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new cell renderer</doc>
+          <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+        </return-value>
+      </constructor>
+      <property name="has-entry" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="model"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Holds a tree model containing the possible values for the combo box. 
+Use the text_column property to specify the column holding the values.</doc>
+        <type name="TreeModel"/>
+      </property>
+      <property name="text-column"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Specifies the model column which holds the possible values for the 
+combo box. 
+Note that this refers to the model specified in the model property, 
+&lt;emphasis&gt;not&lt;/emphasis&gt; the model backing the tree view to which 
+this cell renderer is attached.
+#GtkCellRendererCombo automatically adds a text cell renderer for 
+this column to its combo box.</doc>
+        <type name="gint"/>
+      </property>
+      <field name="parent">
+        <type name="CellRendererText" c:type="GtkCellRendererText"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="CellRendererComboPrivate"
+              c:type="GtkCellRendererComboPrivate*"/>
+      </field>
+      <glib:signal name="changed" version="2.14">
+        <doc xml:whitespace="preserve">This signal is emitted each time after the user selected an item in
+the combo box, either by using the mouse or the arrow keys.  Contrary
+to GtkComboBox, GtkCellRendererCombo::changed is not emitted for
+changes made to a selected item in the entry.  The argument @new_iter
+corresponds to the newly selected item in the combo box and it is relative
+to the GtkTreeModel set via the model property on GtkCellRendererCombo.
+Note that as soon as you change the model displayed in the tree view,
+the tree view will immediately cease the editing operating.  This
+means that you most probably want to refrain from changing the model
+until the combo cell renderer emits the edited or editing_canceled signal.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string of the path identifying the edited cell (relative to the tree view model)</doc>
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new iter selected in the combo box (relative to the combo box model)</doc>
+            <type name="TreeIter"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="CellRendererComboClass"
+            c:type="GtkCellRendererComboClass"
+            glib:is-gtype-struct-for="CellRendererCombo">
+      <field name="parent">
+        <type name="CellRendererTextClass" c:type="GtkCellRendererTextClass"/>
+      </field>
+    </record>
+    <record name="CellRendererComboPrivate"
+            c:type="GtkCellRendererComboPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="CellRendererMode"
+                 glib:type-name="GtkCellRendererMode"
+                 glib:get-type="gtk_cell_renderer_mode_get_type"
+                 c:type="GtkCellRendererMode">
+      <member name="inert"
+              value="0"
+              c:identifier="GTK_CELL_RENDERER_MODE_INERT"
+              glib:nick="inert"/>
+      <member name="activatable"
+              value="1"
+              c:identifier="GTK_CELL_RENDERER_MODE_ACTIVATABLE"
+              glib:nick="activatable"/>
+      <member name="editable"
+              value="2"
+              c:identifier="GTK_CELL_RENDERER_MODE_EDITABLE"
+              glib:nick="editable"/>
+    </enumeration>
+    <class name="CellRendererPixbuf"
+           c:symbol-prefix="cell_renderer_pixbuf"
+           c:type="GtkCellRendererPixbuf"
+           parent="CellRenderer"
+           glib:type-name="GtkCellRendererPixbuf"
+           glib:get-type="gtk_cell_renderer_pixbuf_get_type"
+           glib:type-struct="CellRendererPixbufClass">
+      <implements name="CellSizeRequest"/>
+      <constructor name="new" c:identifier="gtk_cell_renderer_pixbuf_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkCellRendererPixbuf. Adjust rendering
+parameters using object properties. Object properties can be set
+globally (with g_object_set()). Also, with #GtkTreeViewColumn, you
+can bind a property to a value in a #GtkTreeModel. For example, you
+can bind the "pixbuf" property on the cell renderer to a pixbuf value
+in the model, thus rendering a different image in each row of the
+#GtkTreeView.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new cell renderer</doc>
+          <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+        </return-value>
+      </constructor>
+      <property name="follow-state"
+                version="2.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Specifies whether the rendered pixbuf should be colorized
+according to the #GtkCellRendererState.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="gicon"
+                version="2.14"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The GIcon representing the icon to display.
+If the icon theme is changed, the image will be updated
+automatically.</doc>
+        <type name="Gio.Icon"/>
+      </property>
+      <property name="icon-name"
+                version="2.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The name of the themed icon to display.
+This property only has an effect if not overridden by "stock_id" 
+or "pixbuf" properties.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="pixbuf" writable="1" transfer-ownership="none">
+        <type name="GdkPixbuf.Pixbuf"/>
+      </property>
+      <property name="pixbuf-expander-closed"
+                writable="1"
+                transfer-ownership="none">
+        <type name="GdkPixbuf.Pixbuf"/>
+      </property>
+      <property name="pixbuf-expander-open"
+                writable="1"
+                transfer-ownership="none">
+        <type name="GdkPixbuf.Pixbuf"/>
+      </property>
+      <property name="stock-detail" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="stock-id" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="stock-size" writable="1" transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <field name="parent">
+        <type name="CellRenderer" c:type="GtkCellRenderer"/>
+      </field>
+      <field name="priv">
+        <type name="CellRendererPixbufPrivate"
+              c:type="GtkCellRendererPixbufPrivate*"/>
+      </field>
+    </class>
+    <record name="CellRendererPixbufClass"
+            c:type="GtkCellRendererPixbufClass"
+            glib:is-gtype-struct-for="CellRendererPixbuf">
+      <field name="parent_class">
+        <type name="CellRendererClass" c:type="GtkCellRendererClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="CellRendererPixbufPrivate"
+            c:type="GtkCellRendererPixbufPrivate"
+            disguised="1">
+    </record>
+    <record name="CellRendererPrivate"
+            c:type="GtkCellRendererPrivate"
+            disguised="1">
+    </record>
+    <class name="CellRendererProgress"
+           c:symbol-prefix="cell_renderer_progress"
+           c:type="GtkCellRendererProgress"
+           parent="CellRenderer"
+           glib:type-name="GtkCellRendererProgress"
+           glib:get-type="gtk_cell_renderer_progress_get_type"
+           glib:type-struct="CellRendererProgressClass">
+      <implements name="CellSizeRequest"/>
+      <implements name="Orientable"/>
+      <constructor name="new"
+                   c:identifier="gtk_cell_renderer_progress_new"
+                   version="2.6">
+        <doc xml:whitespace="preserve">Creates a new #GtkCellRendererProgress.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new cell renderer</doc>
+          <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+        </return-value>
+      </constructor>
+      <property name="inverted" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="pulse"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Setting this to a non-negative value causes the cell renderer to
+enter "activity mode", where a block bounces back and forth to 
+indicate that some progress is made, without specifying exactly how
+much.
+Each increment of the property causes the block to move by a little 
+bit.
+To indicate that the activity has not started yet, set the property
+to zero. To indicate completion, set the property to %G_MAXINT.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="text"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The "text" property determines the label which will be drawn
+over the progress bar. Setting this property to %NULL causes the default 
+label to be displayed. Setting this property to an empty string causes 
+no label to be displayed.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="text-xalign"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The "text-xalign" property controls the horizontal alignment of the
+text in the progress bar.  Valid values range from 0 (left) to 1
+(right).  Reserved for RTL layouts.</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="text-yalign"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The "text-yalign" property controls the vertical alignment of the
+text in the progress bar.  Valid values range from 0 (top) to 1
+(bottom).</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="value"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The "value" property determines the percentage to which the
+progress bar will be "filled in".</doc>
+        <type name="gint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="CellRenderer" c:type="GtkCellRenderer"/>
+      </field>
+      <field name="priv">
+        <type name="CellRendererProgressPrivate"
+              c:type="GtkCellRendererProgressPrivate*"/>
+      </field>
+    </class>
+    <record name="CellRendererProgressClass"
+            c:type="GtkCellRendererProgressClass"
+            glib:is-gtype-struct-for="CellRendererProgress">
+      <field name="parent_class">
+        <type name="CellRendererClass" c:type="GtkCellRendererClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="CellRendererProgressPrivate"
+            c:type="GtkCellRendererProgressPrivate"
+            disguised="1">
+    </record>
+    <class name="CellRendererSpin"
+           c:symbol-prefix="cell_renderer_spin"
+           c:type="GtkCellRendererSpin"
+           parent="CellRendererText"
+           glib:type-name="GtkCellRendererSpin"
+           glib:get-type="gtk_cell_renderer_spin_get_type"
+           glib:type-struct="CellRendererSpinClass">
+      <implements name="CellSizeRequest"/>
+      <constructor name="new"
+                   c:identifier="gtk_cell_renderer_spin_new"
+                   version="2.10">
+        <doc xml:whitespace="preserve">Creates a new #GtkCellRendererSpin.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkCellRendererSpin</doc>
+          <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+        </return-value>
+      </constructor>
+      <property name="adjustment"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The adjustment that holds the value of the spinbutton. 
+This must be non-%NULL for the cell renderer to be editable.</doc>
+        <type name="Adjustment"/>
+      </property>
+      <property name="climb-rate"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The acceleration rate when you hold down a button.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="digits"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The number of decimal places to display.</doc>
+        <type name="guint"/>
+      </property>
+      <field name="parent">
+        <type name="CellRendererText" c:type="GtkCellRendererText"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="CellRendererSpinPrivate"
+              c:type="GtkCellRendererSpinPrivate*"/>
+      </field>
+    </class>
+    <record name="CellRendererSpinClass"
+            c:type="GtkCellRendererSpinClass"
+            glib:is-gtype-struct-for="CellRendererSpin">
+      <field name="parent">
+        <type name="CellRendererTextClass" c:type="GtkCellRendererTextClass"/>
+      </field>
+    </record>
+    <record name="CellRendererSpinPrivate"
+            c:type="GtkCellRendererSpinPrivate"
+            disguised="1">
+    </record>
+    <class name="CellRendererSpinner"
+           c:symbol-prefix="cell_renderer_spinner"
+           c:type="GtkCellRendererSpinner"
+           parent="CellRenderer"
+           glib:type-name="GtkCellRendererSpinner"
+           glib:get-type="gtk_cell_renderer_spinner_get_type"
+           glib:type-struct="CellRendererSpinnerClass">
+      <implements name="CellSizeRequest"/>
+      <constructor name="new" c:identifier="gtk_cell_renderer_spinner_new">
+        <return-value transfer-ownership="none">
+          <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+        </return-value>
+      </constructor>
+      <property name="active" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="pulse"
+                version="2.20"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Pulse of the spinner. Increment this value to draw the next frame of the
+spinner animation. Usually, you would update this value in a timeout.
+The #GtkSpinner widget draws one full cycle of the animation per second by default.
+You can learn about the number of frames used by the theme
+by looking at the #GtkSpinner:num-steps style property and the duration
+of the cycle by looking at #GtkSpinner:cycle-duration.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="size"
+                version="2.20"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GtkIconSize value that specifies the size of the rendered spinner.</doc>
+        <type name="IconSize"/>
+      </property>
+      <field name="parent">
+        <type name="CellRenderer" c:type="GtkCellRenderer"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="CellRendererSpinnerPrivate"
+              c:type="GtkCellRendererSpinnerPrivate*"/>
+      </field>
+    </class>
+    <record name="CellRendererSpinnerClass"
+            c:type="GtkCellRendererSpinnerClass"
+            glib:is-gtype-struct-for="CellRendererSpinner">
+      <field name="parent_class">
+        <type name="CellRendererClass" c:type="GtkCellRendererClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="CellRendererSpinnerPrivate"
+            c:type="GtkCellRendererSpinnerPrivate"
+            disguised="1">
+    </record>
+    <bitfield name="CellRendererState"
+              glib:type-name="GtkCellRendererState"
+              glib:get-type="gtk_cell_renderer_state_get_type"
+              c:type="GtkCellRendererState">
+      <member name="selected"
+              value="1"
+              c:identifier="GTK_CELL_RENDERER_SELECTED"
+              glib:nick="selected"/>
+      <member name="prelit"
+              value="2"
+              c:identifier="GTK_CELL_RENDERER_PRELIT"
+              glib:nick="prelit"/>
+      <member name="insensitive"
+              value="4"
+              c:identifier="GTK_CELL_RENDERER_INSENSITIVE"
+              glib:nick="insensitive"/>
+      <member name="sorted"
+              value="8"
+              c:identifier="GTK_CELL_RENDERER_SORTED"
+              glib:nick="sorted"/>
+      <member name="focused"
+              value="16"
+              c:identifier="GTK_CELL_RENDERER_FOCUSED"
+              glib:nick="focused"/>
+    </bitfield>
+    <class name="CellRendererText"
+           c:symbol-prefix="cell_renderer_text"
+           c:type="GtkCellRendererText"
+           parent="CellRenderer"
+           glib:type-name="GtkCellRendererText"
+           glib:get-type="gtk_cell_renderer_text_get_type"
+           glib:type-struct="CellRendererTextClass">
+      <implements name="CellSizeRequest"/>
+      <constructor name="new" c:identifier="gtk_cell_renderer_text_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkCellRendererText. Adjust how text is drawn using
+object properties. Object properties can be
+set globally (with g_object_set()). Also, with #GtkTreeViewColumn,
+you can bind a property to a value in a #GtkTreeModel. For example,
+you can bind the "text" property on the cell renderer to a string
+value in the model, thus rendering a different string in each row
+of the #GtkTreeView</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new cell renderer</doc>
+          <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+        </return-value>
+      </constructor>
+      <method name="set_fixed_height_from_font"
+              c:identifier="gtk_cell_renderer_text_set_fixed_height_from_font">
+        <doc xml:whitespace="preserve">Sets the height of a renderer to explicitly be determined by the "font" and
+"y_pad" property set on it.  Further changes in these properties do not
+affect the height, so they must be accompanied by a subsequent call to this
+function.  Using this function is unflexible, and should really only be used
+if calculating the size of a cell is too slow (ie, a massive number of cells
+displayed).  If @number_of_rows is -1, then the fixed height is unset, and
+the height is determined by the properties again.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="number_of_rows" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Number of rows of text each cell renderer is allocated, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="align-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="alignment"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Specifies how to align the lines of text with respect to each other. 
+Note that this property describes how to align the lines of text in 
+case there are several of them. The "xalign" property of #GtkCellRenderer, 
+on the other hand, sets the horizontal alignment of the whole text.</doc>
+        <type name="Pango.Alignment"/>
+      </property>
+      <property name="attributes" writable="1" transfer-ownership="none">
+        <type name="Pango.AttrList"/>
+      </property>
+      <property name="background"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="background-gdk" writable="1" transfer-ownership="none">
+        <type name="Gdk.Color"/>
+      </property>
+      <property name="background-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="editable" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="editable-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="ellipsize"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Specifies the preferred place to ellipsize the string, if the cell renderer 
+does not have enough room to display the entire string. Setting it to 
+%PANGO_ELLIPSIZE_NONE turns off ellipsizing. See the wrap-width property
+for another way of making the text fit into a given width.</doc>
+        <type name="Pango.EllipsizeMode"/>
+      </property>
+      <property name="ellipsize-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="family" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="family-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="font" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="font-desc" writable="1" transfer-ownership="none">
+        <type name="Pango.FontDescription"/>
+      </property>
+      <property name="foreground"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="foreground-gdk" writable="1" transfer-ownership="none">
+        <type name="Gdk.Color"/>
+      </property>
+      <property name="foreground-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="language" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="language-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="markup"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="max-width-chars"
+                version="3.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The desired maximum width of the cell, in characters. If this property 
+is set to -1, the width will be calculated automatically.
+For cell renderers that ellipsize or wrap text; this property
+controls the maximum reported width of the cell. The
+cell should not receive any greater allocation unless it is
+set to expand in its #GtkCellLayout and all of the cell's siblings
+have received their natural width.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="rise" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="rise-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="scale" writable="1" transfer-ownership="none">
+        <type name="gdouble"/>
+      </property>
+      <property name="scale-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="single-paragraph-mode"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="size" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="size-points" writable="1" transfer-ownership="none">
+        <type name="gdouble"/>
+      </property>
+      <property name="size-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="stretch" writable="1" transfer-ownership="none">
+        <type name="Pango.Stretch"/>
+      </property>
+      <property name="stretch-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="strikethrough" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="strikethrough-set"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="style" writable="1" transfer-ownership="none">
+        <type name="Pango.Style"/>
+      </property>
+      <property name="style-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="text" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="underline" writable="1" transfer-ownership="none">
+        <type name="Pango.Underline"/>
+      </property>
+      <property name="underline-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="variant" writable="1" transfer-ownership="none">
+        <type name="Pango.Variant"/>
+      </property>
+      <property name="variant-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="weight" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="weight-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="width-chars"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The desired width of the cell, in characters. If this property is set to
+-1, the width will be calculated automatically, otherwise the cell will
+request either 3 characters or the property value, whichever is greater.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="wrap-mode"
+                version="2.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Specifies how to break the string into multiple lines, if the cell 
+renderer does not have enough room to display the entire string. 
+This property has no effect unless the wrap-width property is set.</doc>
+        <type name="Pango.WrapMode"/>
+      </property>
+      <property name="wrap-width"
+                version="2.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Specifies the minimum width at which the text is wrapped. The wrap-mode property can 
+be used to influence at what character positions the line breaks can be placed.
+Setting wrap-width to -1 turns wrapping off.</doc>
+        <type name="gint"/>
+      </property>
+      <field name="parent">
+        <type name="CellRenderer" c:type="GtkCellRenderer"/>
+      </field>
+      <field name="priv">
+        <type name="CellRendererTextPrivate"
+              c:type="GtkCellRendererTextPrivate*"/>
+      </field>
+      <glib:signal name="edited">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="CellRendererTextClass"
+            c:type="GtkCellRendererTextClass"
+            glib:is-gtype-struct-for="CellRendererText">
+      <field name="parent_class">
+        <type name="CellRendererClass" c:type="GtkCellRendererClass"/>
+      </field>
+      <field name="edited">
+        <callback name="edited">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cell_renderer_text" transfer-ownership="none">
+              <type name="CellRendererText" c:type="GtkCellRendererText*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="new_text" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="CellRendererTextPrivate"
+            c:type="GtkCellRendererTextPrivate"
+            disguised="1">
+    </record>
+    <class name="CellRendererToggle"
+           c:symbol-prefix="cell_renderer_toggle"
+           c:type="GtkCellRendererToggle"
+           parent="CellRenderer"
+           glib:type-name="GtkCellRendererToggle"
+           glib:get-type="gtk_cell_renderer_toggle_get_type"
+           glib:type-struct="CellRendererToggleClass">
+      <implements name="CellSizeRequest"/>
+      <constructor name="new" c:identifier="gtk_cell_renderer_toggle_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkCellRendererToggle. Adjust rendering
+parameters using object properties. Object properties can be set
+globally (with g_object_set()). Also, with #GtkTreeViewColumn, you
+can bind a property to a value in a #GtkTreeModel. For example, you
+can bind the "active" property on the cell renderer to a boolean value
+in the model, thus causing the check button to reflect the state of
+the model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new cell renderer</doc>
+          <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+        </return-value>
+      </constructor>
+      <method name="get_activatable"
+              c:identifier="gtk_cell_renderer_toggle_get_activatable"
+              version="2.18">
+        <doc xml:whitespace="preserve">Returns whether the cell renderer is activatable. See
+gtk_cell_renderer_toggle_set_activatable().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the cell renderer is activatable.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_active"
+              c:identifier="gtk_cell_renderer_toggle_get_active">
+        <doc xml:whitespace="preserve">Returns whether the cell renderer is active. See
+gtk_cell_renderer_toggle_set_active().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the cell renderer is active.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_radio"
+              c:identifier="gtk_cell_renderer_toggle_get_radio">
+        <doc xml:whitespace="preserve">Returns whether we're rendering radio toggles rather than checkboxes.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if we're rendering radio toggles rather than checkboxes</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_activatable"
+              c:identifier="gtk_cell_renderer_toggle_set_activatable"
+              version="2.18">
+        <doc xml:whitespace="preserve">Makes the cell renderer activatable.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value to set.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_active"
+              c:identifier="gtk_cell_renderer_toggle_set_active">
+        <doc xml:whitespace="preserve">Activates or deactivates a cell renderer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value to set.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_radio"
+              c:identifier="gtk_cell_renderer_toggle_set_radio">
+        <doc xml:whitespace="preserve">If @radio is %TRUE, the cell renderer renders a radio toggle
+(i.e. a toggle in a group of mutually-exclusive toggles).
+If %FALSE, it renders a check toggle (a standalone boolean option).
+This can be set globally for the cell renderer, or changed just
+before rendering each cell in the model (for #GtkTreeView, you set
+up a per-row setting using #GtkTreeViewColumn to associate model
+columns with cell renderer properties).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="radio" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to make the toggle look like a radio button</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="activatable" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="active" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="inconsistent" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="indicator-size" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="radio" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="parent">
+        <type name="CellRenderer" c:type="GtkCellRenderer"/>
+      </field>
+      <field name="priv">
+        <type name="CellRendererTogglePrivate"
+              c:type="GtkCellRendererTogglePrivate*"/>
+      </field>
+      <glib:signal name="toggled">
+        <doc xml:whitespace="preserve">The ::toggled signal is emitted when the cell is toggled.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">string representation of #GtkTreePath describing the event location</doc>
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="CellRendererToggleClass"
+            c:type="GtkCellRendererToggleClass"
+            glib:is-gtype-struct-for="CellRendererToggle">
+      <field name="parent_class">
+        <type name="CellRendererClass" c:type="GtkCellRendererClass"/>
+      </field>
+      <field name="toggled">
+        <callback name="toggled">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cell_renderer_toggle" transfer-ownership="none">
+              <type name="CellRendererToggle" c:type="GtkCellRendererToggle*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="CellRendererTogglePrivate"
+            c:type="GtkCellRendererTogglePrivate"
+            disguised="1">
+    </record>
+    <interface name="CellSizeRequest"
+               c:symbol-prefix="cell_size_request"
+               c:type="GtkCellSizeRequest"
+               glib:type-name="GtkCellSizeRequest"
+               glib:get-type="gtk_cell_size_request_get_type"
+               glib:type-struct="CellSizeRequestIface">
+      <prerequisite name="CellRenderer"/>
+      <virtual-method name="get_height" invoker="get_height" version="3.0">
+        <doc xml:whitespace="preserve">Retreives a renderer's natural size when rendered to @widget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkWidget this cell will be rendering to</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="minimum_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the minimum size, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="natural_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the natural size, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_height_for_width"
+                      invoker="get_height_for_width"
+                      version="3.0">
+        <doc xml:whitespace="preserve">Retreives a cell renderers's minimum and natural height if it were rendered to</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkWidget this cell will be rendering to</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size which is available for allocation</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="minimum_height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location for storing the minimum size, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="natural_height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location for storing the preferred size, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_request_mode"
+                      invoker="get_request_mode"
+                      version="3.0">
+        <doc xml:whitespace="preserve">Gets whether the cell renderer prefers a height-for-width layout
+or a width-for-height layout.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GtkSizeRequestMode preferred by this renderer.</doc>
+          <type name="SizeRequestMode" c:type="GtkSizeRequestMode"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_width" invoker="get_width" version="3.0">
+        <doc xml:whitespace="preserve">Retreives a renderer's natural size when rendered to @widget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkWidget this cell will be rendering to</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="minimum_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the minimum size, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="natural_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the natural size, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_width_for_height"
+                      invoker="get_width_for_height"
+                      version="3.0">
+        <doc xml:whitespace="preserve">Retreives a cell renderers's minimum and natural width if it were rendered to</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkWidget this cell will be rendering to</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size which is available for allocation</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="minimum_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location for storing the minimum size, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="natural_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location for storing the preferred size, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_height"
+              c:identifier="gtk_cell_size_request_get_height"
+              version="3.0">
+        <doc xml:whitespace="preserve">Retreives a renderer's natural size when rendered to @widget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkWidget this cell will be rendering to</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="minimum_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the minimum size, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="natural_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the natural size, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_height_for_width"
+              c:identifier="gtk_cell_size_request_get_height_for_width"
+              version="3.0">
+        <doc xml:whitespace="preserve">Retreives a cell renderers's minimum and natural height if it were rendered to</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkWidget this cell will be rendering to</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size which is available for allocation</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="minimum_height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location for storing the minimum size, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="natural_height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location for storing the preferred size, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_request_mode"
+              c:identifier="gtk_cell_size_request_get_request_mode"
+              version="3.0">
+        <doc xml:whitespace="preserve">Gets whether the cell renderer prefers a height-for-width layout
+or a width-for-height layout.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GtkSizeRequestMode preferred by this renderer.</doc>
+          <type name="SizeRequestMode" c:type="GtkSizeRequestMode"/>
+        </return-value>
+      </method>
+      <method name="get_size"
+              c:identifier="gtk_cell_size_request_get_size"
+              version="3.0">
+        <doc xml:whitespace="preserve">Retrieves the minimum and natural size of a cell taking
+into account the widget's preference for height-for-width management.
+If request_natural is specified, the non-contextual natural value will
+be used to make the contextual request; otherwise the minimum will be used.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkWidget this cell will be rendering to</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="minimum_size"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location for storing the minimum size, or %NULL</doc>
+            <type name="Requisition" c:type="GtkRequisition*"/>
+          </parameter>
+          <parameter name="natural_size"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location for storing the natural size, or %NULL</doc>
+            <type name="Requisition" c:type="GtkRequisition*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_width"
+              c:identifier="gtk_cell_size_request_get_width"
+              version="3.0">
+        <doc xml:whitespace="preserve">Retreives a renderer's natural size when rendered to @widget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkWidget this cell will be rendering to</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="minimum_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the minimum size, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="natural_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the natural size, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_width_for_height"
+              c:identifier="gtk_cell_size_request_get_width_for_height"
+              version="3.0">
+        <doc xml:whitespace="preserve">Retreives a cell renderers's minimum and natural width if it were rendered to</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkWidget this cell will be rendering to</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size which is available for allocation</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="minimum_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location for storing the minimum size, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="natural_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location for storing the preferred size, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="CellSizeRequestIface"
+            c:type="GtkCellSizeRequestIface"
+            glib:is-gtype-struct-for="CellSizeRequest">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_request_mode">
+        <callback name="get_request_mode">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkSizeRequestMode preferred by this renderer.</doc>
+            <type name="SizeRequestMode" c:type="GtkSizeRequestMode"/>
+          </return-value>
+          <parameters>
+            <parameter name="cell" transfer-ownership="none">
+              <type name="CellSizeRequest" c:type="GtkCellSizeRequest*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_width">
+        <callback name="get_width">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cell" transfer-ownership="none">
+              <type name="CellSizeRequest" c:type="GtkCellSizeRequest*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the #GtkWidget this cell will be rendering to</doc>
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="minimum_size" transfer-ownership="none">
+              <doc xml:whitespace="preserve">location to store the minimum size, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="natural_size" transfer-ownership="none">
+              <doc xml:whitespace="preserve">location to store the natural size, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_height_for_width">
+        <callback name="get_height_for_width">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cell" transfer-ownership="none">
+              <type name="CellSizeRequest" c:type="GtkCellSizeRequest*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the #GtkWidget this cell will be rendering to</doc>
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the size which is available for allocation</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="minimum_height" transfer-ownership="none">
+              <doc xml:whitespace="preserve">location for storing the minimum size, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="natural_height" transfer-ownership="none">
+              <doc xml:whitespace="preserve">location for storing the preferred size, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_height">
+        <callback name="get_height">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cell" transfer-ownership="none">
+              <type name="CellSizeRequest" c:type="GtkCellSizeRequest*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the #GtkWidget this cell will be rendering to</doc>
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="minimum_size" transfer-ownership="none">
+              <doc xml:whitespace="preserve">location to store the minimum size, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="natural_size" transfer-ownership="none">
+              <doc xml:whitespace="preserve">location to store the natural size, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_width_for_height">
+        <callback name="get_width_for_height">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cell" transfer-ownership="none">
+              <type name="CellSizeRequest" c:type="GtkCellSizeRequest*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the #GtkWidget this cell will be rendering to</doc>
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the size which is available for allocation</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="minimum_width" transfer-ownership="none">
+              <doc xml:whitespace="preserve">location for storing the minimum size, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="natural_width" transfer-ownership="none">
+              <doc xml:whitespace="preserve">location for storing the preferred size, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="CellView"
+           c:symbol-prefix="cell_view"
+           c:type="GtkCellView"
+           parent="Widget"
+           glib:type-name="GtkCellView"
+           glib:get-type="gtk_cell_view_get_type"
+           glib:type-struct="CellViewClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="CellLayout"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_cell_view_new" version="2.6">
+        <doc xml:whitespace="preserve">Creates a new #GtkCellView widget.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A newly created #GtkCellView widget.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_markup"
+                   c:identifier="gtk_cell_view_new_with_markup"
+                   version="2.6">
+        <doc xml:whitespace="preserve">Creates a new #GtkCellView widget, adds a #GtkCellRendererText 
+to it, and makes it show @markup. The text can be
+marked up with the &lt;link linkend="PangoMarkupFormat"&gt;Pango text 
+markup language&lt;/link&gt;.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A newly created #GtkCellView widget.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="markup" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text to display in the cell view</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_pixbuf"
+                   c:identifier="gtk_cell_view_new_with_pixbuf"
+                   version="2.6">
+        <doc xml:whitespace="preserve">Creates a new #GtkCellView widget, adds a #GtkCellRendererPixbuf 
+to it, and makes its show @pixbuf.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A newly created #GtkCellView widget.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the image to display in the cell view</doc>
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_text"
+                   c:identifier="gtk_cell_view_new_with_text"
+                   version="2.6">
+        <doc xml:whitespace="preserve">Creates a new #GtkCellView widget, adds a #GtkCellRendererText 
+to it, and makes its show @text.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A newly created #GtkCellView widget.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text to display in the cell view</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_desired_height_for_width_of_row"
+              c:identifier="gtk_cell_view_get_desired_height_for_width_of_row"
+              version="3.0">
+        <doc xml:whitespace="preserve">Sets @minimum_size and @natural_size to the height desired by @cell_view 
+if it were allocated a width of @avail_size to display the model row 
+pointed to by @path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTreePath</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="avail_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">available width</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="minimum_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the minimum height</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="natural_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the natural height</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_desired_width_of_row"
+              c:identifier="gtk_cell_view_get_desired_width_of_row"
+              version="3.0">
+        <doc xml:whitespace="preserve">Sets @minimum_size and @natural_size to the width desired by @cell_view 
+to display the model row pointed to by @path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTreePath</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="minimum_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the minimum size</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="natural_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the natural size</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_displayed_row"
+              c:identifier="gtk_cell_view_get_displayed_row"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns a #GtkTreePath referring to the currently 
+displayed row. If no row is currently displayed, 
+%NULL is returned.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the currently displayed row or %NULL</doc>
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+      </method>
+      <method name="get_model"
+              c:identifier="gtk_cell_view_get_model"
+              version="2.16">
+        <doc xml:whitespace="preserve">Returns the model for @cell_view. If no model is used %NULL is
+returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkTreeModel used or %NULL</doc>
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </return-value>
+      </method>
+      <method name="get_size_of_row"
+              c:identifier="gtk_cell_view_get_size_of_row"
+              version="2.6"
+              deprecated="Use gtk_cell_view_get_desired_width_of_row() and"
+              deprecated-version="3.0">
+        <doc xml:whitespace="preserve">Sets @requisition to the size needed by @cell_view to display 
+the model row pointed to by @path.
+gtk_cell_view_get_desired_height_for_width_of_row() instead.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTreePath</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="requisition" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the size</doc>
+            <type name="Requisition" c:type="GtkRequisition*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_background_color"
+              c:identifier="gtk_cell_view_set_background_color"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the background color of @view.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new background color</doc>
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_displayed_row"
+              c:identifier="gtk_cell_view_set_displayed_row"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the row of the model that is currently displayed
+by the #GtkCellView. If the path is unset, then the
+contents of the cellview "stick" at their last value;
+this is not normally a desired result, but may be
+a needed intermediate state if say, the model for
+the #GtkCellView becomes temporarily empty.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkTreePath or %NULL to unset.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_model"
+              c:identifier="gtk_cell_view_set_model"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the model for @cell_view.  If @cell_view already has a model
+set, it will remove it before setting the new model.  If @model is
+%NULL, then it will unset the old model.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="model" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkTreeModel</doc>
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="background"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="background-gdk" writable="1" transfer-ownership="none">
+        <type name="Gdk.Color"/>
+      </property>
+      <property name="background-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="model" writable="1" transfer-ownership="none">
+        <type name="TreeModel"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="priv">
+        <type name="CellViewPrivate" c:type="GtkCellViewPrivate*"/>
+      </field>
+    </class>
+    <record name="CellViewClass"
+            c:type="GtkCellViewClass"
+            glib:is-gtype-struct-for="CellView">
+      <field name="parent_class">
+        <type name="WidgetClass" c:type="GtkWidgetClass"/>
+      </field>
+    </record>
+    <record name="CellViewPrivate" c:type="GtkCellViewPrivate" disguised="1">
+    </record>
+    <class name="CheckButton"
+           c:symbol-prefix="check_button"
+           c:type="GtkCheckButton"
+           parent="ToggleButton"
+           glib:type-name="GtkCheckButton"
+           glib:get-type="gtk_check_button_get_type"
+           glib:type-struct="CheckButtonClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Activatable"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_check_button_new">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_label"
+                   c:identifier="gtk_check_button_new_with_label">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_mnemonic"
+                   c:identifier="gtk_check_button_new_with_mnemonic">
+        <doc xml:whitespace="preserve">Creates a new #GtkCheckButton containing a label. The label
+will be created using gtk_label_new_with_mnemonic(), so underscores
+in @label indicate the mnemonic for the check button.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkCheckButton</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The text of the button, with an underscore in front of the mnemonic character</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="draw_indicator">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <field name="toggle_button">
+        <type name="ToggleButton" c:type="GtkToggleButton"/>
+      </field>
+    </class>
+    <record name="CheckButtonClass"
+            c:type="GtkCheckButtonClass"
+            glib:is-gtype-struct-for="CheckButton">
+      <field name="parent_class">
+        <type name="ToggleButtonClass" c:type="GtkToggleButtonClass"/>
+      </field>
+      <field name="draw_indicator">
+        <callback name="draw_indicator">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="check_button" transfer-ownership="none">
+              <type name="CheckButton" c:type="GtkCheckButton*"/>
+            </parameter>
+            <parameter name="area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="CheckMenuItem"
+           c:symbol-prefix="check_menu_item"
+           c:type="GtkCheckMenuItem"
+           parent="MenuItem"
+           glib:type-name="GtkCheckMenuItem"
+           glib:get-type="gtk_check_menu_item_get_type"
+           glib:type-struct="CheckMenuItemClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Activatable"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_check_menu_item_new">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_label"
+                   c:identifier="gtk_check_menu_item_new_with_label">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_mnemonic"
+                   c:identifier="gtk_check_menu_item_new_with_mnemonic">
+        <doc xml:whitespace="preserve">Creates a new #GtkCheckMenuItem containing a label. The label
+will be created using gtk_label_new_with_mnemonic(), so underscores
+in @label indicate the mnemonic for the menu item.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkCheckMenuItem</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The text of the button, with an underscore in front of the mnemonic character</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="draw_indicator">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_active" c:identifier="gtk_check_menu_item_get_active">
+        <doc xml:whitespace="preserve">Returns whether the check menu item is active. See
+gtk_check_menu_item_set_active ().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the menu item is checked.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_draw_as_radio"
+              c:identifier="gtk_check_menu_item_get_draw_as_radio"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether @check_menu_item looks like a #GtkRadioMenuItem</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Whether @check_menu_item looks like a #GtkRadioMenuItem</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_inconsistent"
+              c:identifier="gtk_check_menu_item_get_inconsistent">
+        <doc xml:whitespace="preserve">Retrieves the value set by gtk_check_menu_item_set_inconsistent().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if inconsistent</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_active" c:identifier="gtk_check_menu_item_set_active">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_active" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_draw_as_radio"
+              c:identifier="gtk_check_menu_item_set_draw_as_radio"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets whether @check_menu_item is drawn like a #GtkRadioMenuItem</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="draw_as_radio" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether @check_menu_item is drawn like a #GtkRadioMenuItem</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_inconsistent"
+              c:identifier="gtk_check_menu_item_set_inconsistent">
+        <doc xml:whitespace="preserve">If the user has selected a range of elements (such as some text or
+spreadsheet cells) that are affected by a boolean setting, and the
+current values in that range are inconsistent, you may want to
+display the check in an "in between" state. This function turns on
+"in between" display.  Normally you would turn off the inconsistent
+state again if the user explicitly selects a setting. This has to be
+done manually, gtk_check_menu_item_set_inconsistent() only affects
+visual appearance, it doesn't affect the semantics of the widget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to display an "inconsistent" third state check</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="toggled" c:identifier="gtk_check_menu_item_toggled">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="active" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="draw-as-radio" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="inconsistent" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="menu_item">
+        <type name="MenuItem" c:type="GtkMenuItem"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="CheckMenuItemPrivate" c:type="GtkCheckMenuItemPrivate*"/>
+      </field>
+      <glib:signal name="toggled">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="CheckMenuItemClass"
+            c:type="GtkCheckMenuItemClass"
+            glib:is-gtype-struct-for="CheckMenuItem">
+      <field name="parent_class">
+        <type name="MenuItemClass" c:type="GtkMenuItemClass"/>
+      </field>
+      <field name="toggled">
+        <callback name="toggled">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="check_menu_item" transfer-ownership="none">
+              <type name="CheckMenuItem" c:type="GtkCheckMenuItem*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_indicator">
+        <callback name="draw_indicator">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="check_menu_item" transfer-ownership="none">
+              <type name="CheckMenuItem" c:type="GtkCheckMenuItem*"/>
+            </parameter>
+            <parameter name="area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="CheckMenuItemPrivate"
+            c:type="GtkCheckMenuItemPrivate"
+            disguised="1">
+    </record>
+    <class name="Clipboard"
+           c:symbol-prefix="clipboard"
+           c:type="GtkClipboard"
+           parent="GObject.Object"
+           glib:type-name="GtkClipboard"
+           glib:get-type="gtk_clipboard_get_type">
+      <function name="get" c:identifier="gtk_clipboard_get">
+        <doc xml:whitespace="preserve">Returns the clipboard object for the given selection.
+See gtk_clipboard_get_for_display() for complete details.
+already exists, a new one will be created. Once a clipboard
+object has been created, it is persistent and, since it is
+owned by GTK+, must not be freed or unreffed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the appropriate clipboard object. If no clipboard</doc>
+          <type name="Clipboard" c:type="GtkClipboard*"/>
+        </return-value>
+        <parameters>
+          <parameter name="selection" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkAtom which identifies the clipboard to use</doc>
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_for_display"
+                c:identifier="gtk_clipboard_get_for_display"
+                version="2.2">
+        <doc xml:whitespace="preserve">Returns the clipboard object for the given selection.
+Cut/copy/paste menu items and keyboard shortcuts should use
+the default clipboard, returned by passing %GDK_SELECTION_CLIPBOARD for @selection.
+(%GDK_NONE is supported as a synonym for GDK_SELECTION_CLIPBOARD
+for backwards compatibility reasons.)
+The currently-selected object or text should be provided on the clipboard
+identified by #GDK_SELECTION_PRIMARY. Cut/copy/paste menu items
+conceptually copy the contents of the #GDK_SELECTION_PRIMARY clipboard
+to the default clipboard, i.e. they copy the selection to what the
+user sees as the clipboard.
+(Passing #GDK_NONE is the same as using &lt;literal&gt;gdk_atom_intern
+("CLIPBOARD", FALSE)&lt;/literal&gt;. See &lt;ulink
+url="http://www.freedesktop.org/Standards/clipboards-spec"&gt;
+http://www.freedesktop.org/Standards/clipboards-spec&lt;/ulink&gt;
+for a detailed discussion of the "CLIPBOARD" vs. "PRIMARY"
+selections under the X window system. On Win32 the
+#GDK_SELECTION_PRIMARY clipboard is essentially ignored.)
+It's possible to have arbitrary named clipboards; if you do invent
+new clipboards, you should prefix the selection name with an
+underscore (because the ICCCM requires that nonstandard atoms are
+underscore-prefixed), and namespace it as well. For example,
+if your application called "Foo" has a special-purpose
+clipboard, you might call it "_FOO_SPECIAL_CLIPBOARD".
+clipboard already exists, a new one will
+be created. Once a clipboard object has
+been created, it is persistent and, since
+it is owned by GTK+, must not be freed or
+unrefd.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the appropriate clipboard object. If no</doc>
+          <type name="Clipboard" c:type="GtkClipboard*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the display for which the clipboard is to be retrieved or created</doc>
+            <type name="Gdk.Display" c:type="GdkDisplay*"/>
+          </parameter>
+          <parameter name="selection" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkAtom which identifies the clipboard to use.</doc>
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="clear" c:identifier="gtk_clipboard_clear">
+        <doc xml:whitespace="preserve">Clears the contents of the clipboard. Generally this should only
+be called between the time you call gtk_clipboard_set_with_owner()
+or gtk_clipboard_set_with_data(),
+and when the @clear_func you supplied is called. Otherwise, the
+clipboard may be owned by someone else.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_display"
+              c:identifier="gtk_clipboard_get_display"
+              version="2.2">
+        <doc xml:whitespace="preserve">Gets the #GdkDisplay associated with @clipboard</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkDisplay associated with @clipboard</doc>
+          <type name="Gdk.Display" c:type="GdkDisplay*"/>
+        </return-value>
+      </method>
+      <method name="get_owner" c:identifier="gtk_clipboard_get_owner">
+        <doc xml:whitespace="preserve">If the clipboard contents callbacks were set with
+gtk_clipboard_set_with_owner(), and the gtk_clipboard_set_with_data() or
+gtk_clipboard_clear() has not subsequently called, returns the owner set
+by gtk_clipboard_set_with_owner().
+otherwise %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the owner of the clipboard, if any;</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+      </method>
+      <method name="request_contents"
+              c:identifier="gtk_clipboard_request_contents">
+        <doc xml:whitespace="preserve">Requests the contents of clipboard as the given target.
+When the results of the result are later received the supplied callback
+will be called.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="target" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an atom representing the form into which the clipboard owner should convert the selection.</doc>
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="2">
+            <doc xml:whitespace="preserve">A function to call when the results are received (or the retrieval fails). If the retrieval fails the length field of</doc>
+            <type name="ClipboardReceivedFunc"
+                  c:type="GtkClipboardReceivedFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="request_image"
+              c:identifier="gtk_clipboard_request_image"
+              version="2.6">
+        <doc xml:whitespace="preserve">Requests the contents of the clipboard as image. When the image is
+later received, it will be converted to a #GdkPixbuf, and
+The @pixbuf parameter to @callback will contain the resulting
+#GdkPixbuf if the request succeeded, or %NULL if it failed. This
+could happen for various reasons, in particular if the clipboard
+was empty or if the contents of the clipboard could not be
+converted into an image.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="1">
+            <doc xml:whitespace="preserve">a function to call when the image is received, or the retrieval fails. (It will always be called one way or the other.)</doc>
+            <type name="ClipboardImageReceivedFunc"
+                  c:type="GtkClipboardImageReceivedFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="request_rich_text"
+              c:identifier="gtk_clipboard_request_rich_text"
+              version="2.10">
+        <doc xml:whitespace="preserve">Requests the contents of the clipboard as rich text. When the rich
+text is later received, @callback will be called.
+The @text parameter to @callback will contain the resulting rich
+text if the request succeeded, or %NULL if it failed. The @length
+parameter will contain @text's length. This function can fail for
+various reasons, in particular if the clipboard was empty or if the
+contents of the clipboard could not be converted into rich text form.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextBuffer</doc>
+            <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="2">
+            <doc xml:whitespace="preserve">a function to call when the text is received, or the retrieval fails. (It will always be called one way or the other.)</doc>
+            <type name="ClipboardRichTextReceivedFunc"
+                  c:type="GtkClipboardRichTextReceivedFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="request_targets"
+              c:identifier="gtk_clipboard_request_targets"
+              version="2.4">
+        <doc xml:whitespace="preserve">Requests the contents of the clipboard as list of supported targets.
+When the list is later received, @callback will be called.
+The @targets parameter to @callback will contain the resulting targets if
+the request succeeded, or %NULL if it failed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="1">
+            <doc xml:whitespace="preserve">a function to call when the targets are received, or the retrieval fails. (It will always be called one way or the other.)</doc>
+            <type name="ClipboardTargetsReceivedFunc"
+                  c:type="GtkClipboardTargetsReceivedFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="request_text" c:identifier="gtk_clipboard_request_text">
+        <doc xml:whitespace="preserve">Requests the contents of the clipboard as text. When the text is
+later received, it will be converted to UTF-8 if necessary, and
+The @text parameter to @callback will contain the resulting text if
+the request succeeded, or %NULL if it failed. This could happen for
+various reasons, in particular if the clipboard was empty or if the
+contents of the clipboard could not be converted into text form.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="1">
+            <doc xml:whitespace="preserve">a function to call when the text is received, or the retrieval fails. (It will always be called one way or the other.)</doc>
+            <type name="ClipboardTextReceivedFunc"
+                  c:type="GtkClipboardTextReceivedFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="request_uris"
+              c:identifier="gtk_clipboard_request_uris"
+              version="2.14">
+        <doc xml:whitespace="preserve">Requests the contents of the clipboard as URIs. When the URIs are
+later received @callback will be called.
+The @uris parameter to @callback will contain the resulting array of
+URIs if the request succeeded, or %NULL if it failed. This could happen
+for various reasons, in particular if the clipboard was empty or if the
+contents of the clipboard could not be converted into URI form.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="1">
+            <doc xml:whitespace="preserve">a function to call when the URIs are received, or the retrieval fails. (It will always be called one way or the other.)</doc>
+            <type name="ClipboardURIReceivedFunc"
+                  c:type="GtkClipboardURIReceivedFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_can_store"
+              c:identifier="gtk_clipboard_set_can_store"
+              version="2.6">
+        <doc xml:whitespace="preserve">Hints that the clipboard data should be stored somewhere when the
+application exits or when gtk_clipboard_store () is called.
+This value is reset when the clipboard owner changes.
+Where the clipboard data is stored is platform dependent,
+see gdk_display_store_clipboard () for more information.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="targets" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">array containing information about which forms should be stored or %NULL to indicate that all forms should be stored.</doc>
+            <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+          </parameter>
+          <parameter name="n_targets" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of elements in @targets</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_image"
+              c:identifier="gtk_clipboard_set_image"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the contents of the clipboard to the given #GdkPixbuf. 
+GTK+ will take responsibility for responding for requests 
+for the image, and for converting the image into the 
+requested format.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkPixbuf</doc>
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_text" c:identifier="gtk_clipboard_set_text">
+        <doc xml:whitespace="preserve">Sets the contents of the clipboard to the given UTF-8 string. GTK+ will
+make a copy of the text and take responsibility for responding
+for requests for the text, and for converting the text into
+the requested format.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a UTF-8 string.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">length of @text, in bytes, or -1, in which case the length will be determined with &lt;function&gt;strlen()&lt;/function&gt;.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_with_data" c:identifier="gtk_clipboard_set_with_data">
+        <doc xml:whitespace="preserve">Virtually sets the contents of the specified clipboard by providing
+a list of supported formats for the clipboard data and a function
+to call to get the actual data when it is requested.
+If setting the clipboard data failed the provided callback
+functions will be ignored.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if setting the clipboard data succeeded.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="targets" transfer-ownership="none">
+            <doc xml:whitespace="preserve">array containing information about the available forms for the clipboard data</doc>
+            <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+          </parameter>
+          <parameter name="n_targets" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of elements in @targets</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="get_func" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">function to call to get the actual clipboard data</doc>
+            <type name="ClipboardGetFunc" c:type="GtkClipboardGetFunc"/>
+          </parameter>
+          <parameter name="clear_func"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="4">
+            <doc xml:whitespace="preserve">when the clipboard contents are set again, this function will be called, and @get_func will not be subsequently called.</doc>
+            <type name="ClipboardClearFunc" c:type="GtkClipboardClearFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @get_func and @clear_func.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_with_owner"
+              c:identifier="gtk_clipboard_set_with_owner">
+        <doc xml:whitespace="preserve">Virtually sets the contents of the specified clipboard by providing
+a list of supported formats for the clipboard data and a function
+to call to get the actual data when it is requested.
+The difference between this function and gtk_clipboard_set_with_data()
+is that instead of an generic @user_data pointer, a #GObject is passed
+in.
+If setting the clipboard data failed the provided callback
+functions will be ignored.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if setting the clipboard data succeeded.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="targets" transfer-ownership="none">
+            <doc xml:whitespace="preserve">array containing information about the available forms for the clipboard data</doc>
+            <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+          </parameter>
+          <parameter name="n_targets" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of elements in @targets</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="get_func" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">function to call to get the actual clipboard data</doc>
+            <type name="ClipboardGetFunc" c:type="GtkClipboardGetFunc"/>
+          </parameter>
+          <parameter name="clear_func" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">when the clipboard contents are set again, this function will be called, and @get_func will not be subsequently called</doc>
+            <type name="ClipboardClearFunc" c:type="GtkClipboardClearFunc"/>
+          </parameter>
+          <parameter name="owner" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an object that "owns" the data. This object will be passed to the callbacks when called</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="store" c:identifier="gtk_clipboard_store" version="2.6">
+        <doc xml:whitespace="preserve">Stores the current clipboard data somewhere so that it will stay
+around after the application has quit.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="wait_for_contents"
+              c:identifier="gtk_clipboard_wait_for_contents">
+        <doc xml:whitespace="preserve">Requests the contents of the clipboard using the given target.
+This function waits for the data to be received using the main 
+loop, so events, timeouts, etc, may be dispatched during the wait.
+if retrieving the given target failed. If non-%NULL,
+this value must be freed with gtk_selection_data_free() 
+when you are finished with it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly-allocated #GtkSelectionData object or %NULL</doc>
+          <type name="SelectionData" c:type="GtkSelectionData*"/>
+        </return-value>
+        <parameters>
+          <parameter name="target" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an atom representing the form into which the clipboard owner should convert the selection.</doc>
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wait_for_image"
+              c:identifier="gtk_clipboard_wait_for_image"
+              version="2.6">
+        <doc xml:whitespace="preserve">Requests the contents of the clipboard as image and converts
+the result to a #GdkPixbuf. This function waits for
+the data to be received using the main loop, so events,
+timeouts, etc, may be dispatched during the wait.
+object which must be disposed with g_object_unref(), or
+%NULL if retrieving the selection data failed. (This could
+happen for various reasons, in particular if the clipboard
+was empty or if the contents of the clipboard could not be
+converted into an image.)</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly-allocated #GdkPixbuf</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="wait_for_rich_text"
+              c:identifier="gtk_clipboard_wait_for_rich_text"
+              version="2.10">
+        <doc xml:whitespace="preserve">Requests the contents of the clipboard as rich text.  This function
+waits for the data to be received using the main loop, so events,
+timeouts, etc, may be dispatched during the wait.
+be freed with g_free(), or %NULL if retrieving
+the selection data failed. (This could happen
+for various reasons, in particular if the
+clipboard was empty or if the contents of the
+clipboard could not be converted into text form.)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a newly-allocated binary block of data which must</doc>
+          <type name="guint8" c:type="guint8*"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextBuffer</doc>
+            <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the format of the returned data</doc>
+            <type name="Gdk.Atom" c:type="GdkAtom*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the length of the returned data</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wait_for_targets"
+              c:identifier="gtk_clipboard_wait_for_targets">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="targets" transfer-ownership="none">
+            <type name="Gdk.Atom" c:type="GdkAtom**"/>
+          </parameter>
+          <parameter name="n_targets" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wait_for_text" c:identifier="gtk_clipboard_wait_for_text">
+        <doc xml:whitespace="preserve">Requests the contents of the clipboard as text and converts
+the result to UTF-8 if necessary. This function waits for
+the data to be received using the main loop, so events,
+timeouts, etc, may be dispatched during the wait.
+be freed with g_free(), or %NULL if retrieving
+the selection data failed. (This could happen
+for various reasons, in particular if the
+clipboard was empty or if the contents of the
+clipboard could not be converted into text form.)</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly-allocated UTF-8 string which must</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="wait_for_uris"
+              c:identifier="gtk_clipboard_wait_for_uris"
+              version="2.14">
+        <doc xml:whitespace="preserve">Requests the contents of the clipboard as URIs. This function waits
+for the data to be received using the main loop, so events,
+timeouts, etc, may be dispatched during the wait.
+%NULL-terminated array of strings which must
+be freed with g_strfreev(), or %NULL if
+retrieving the selection data failed. (This
+could happen for various reasons, in particular
+if the clipboard was empty or if the contents of
+the clipboard could not be converted into URI form.)</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly-allocated</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="wait_is_image_available"
+              c:identifier="gtk_clipboard_wait_is_image_available"
+              version="2.6">
+        <doc xml:whitespace="preserve">Test to see if there is an image available to be pasted
+This is done by requesting the TARGETS atom and checking
+if it contains any of the supported image targets. This function 
+waits for the data to be received using the main loop, so events, 
+timeouts, etc, may be dispatched during the wait.
+This function is a little faster than calling
+gtk_clipboard_wait_for_image() since it doesn't need to retrieve
+the actual image data.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE is there is an image available, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="wait_is_rich_text_available"
+              c:identifier="gtk_clipboard_wait_is_rich_text_available"
+              version="2.10">
+        <doc xml:whitespace="preserve">Test to see if there is rich text available to be pasted
+This is done by requesting the TARGETS atom and checking
+if it contains any of the supported rich text targets. This function
+waits for the data to be received using the main loop, so events,
+timeouts, etc, may be dispatched during the wait.
+This function is a little faster than calling
+gtk_clipboard_wait_for_rich_text() since it doesn't need to retrieve
+the actual text.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE is there is rich text available, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextBuffer</doc>
+            <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wait_is_target_available"
+              c:identifier="gtk_clipboard_wait_is_target_available"
+              version="2.6">
+        <doc xml:whitespace="preserve">Checks if a clipboard supports pasting data of a given type. This
+function can be used to determine if a "Paste" menu item should be
+insensitive or not.
+If you want to see if there's text available on the clipboard, use
+gtk_clipboard_wait_is_text_available () instead.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the target is available, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="target" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GdkAtom indicating which target to look for.</doc>
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wait_is_text_available"
+              c:identifier="gtk_clipboard_wait_is_text_available">
+        <doc xml:whitespace="preserve">Test to see if there is text available to be pasted
+This is done by requesting the TARGETS atom and checking
+if it contains any of the supported text targets. This function 
+waits for the data to be received using the main loop, so events, 
+timeouts, etc, may be dispatched during the wait.
+This function is a little faster than calling
+gtk_clipboard_wait_for_text() since it doesn't need to retrieve
+the actual text.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE is there is text available, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="wait_is_uris_available"
+              c:identifier="gtk_clipboard_wait_is_uris_available"
+              version="2.14">
+        <doc xml:whitespace="preserve">Test to see if there is a list of URIs available to be pasted
+This is done by requesting the TARGETS atom and checking
+if it contains the URI targets. This function
+waits for the data to be received using the main loop, so events, 
+timeouts, etc, may be dispatched during the wait.
+This function is a little faster than calling
+gtk_clipboard_wait_for_uris() since it doesn't need to retrieve
+the actual URI data.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE is there is an URI list available, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <glib:signal name="owner-change" version="2.6">
+        <doc xml:whitespace="preserve">The ::owner-change signal is emitted when GTK+ receives an
+event that indicates that the ownership of the selection 
+associated with @clipboard has changed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the @GdkEventOwnerChange event</doc>
+            <type name="Gdk.Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <callback name="ClipboardClearFunc" c:type="GtkClipboardClearFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="clipboard" transfer-ownership="none">
+          <type name="Clipboard" c:type="GtkClipboard*"/>
+        </parameter>
+        <parameter name="user_data_or_owner" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ClipboardGetFunc" c:type="GtkClipboardGetFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="clipboard" transfer-ownership="none">
+          <type name="Clipboard" c:type="GtkClipboard*"/>
+        </parameter>
+        <parameter name="selection_data" transfer-ownership="none">
+          <type name="SelectionData" c:type="GtkSelectionData*"/>
+        </parameter>
+        <parameter name="info" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="user_data_or_owner" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ClipboardImageReceivedFunc"
+              c:type="GtkClipboardImageReceivedFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="clipboard" transfer-ownership="none">
+          <type name="Clipboard" c:type="GtkClipboard*"/>
+        </parameter>
+        <parameter name="pixbuf" transfer-ownership="none">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ClipboardReceivedFunc" c:type="GtkClipboardReceivedFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="clipboard" transfer-ownership="none">
+          <type name="Clipboard" c:type="GtkClipboard*"/>
+        </parameter>
+        <parameter name="selection_data" transfer-ownership="none">
+          <type name="SelectionData" c:type="GtkSelectionData*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ClipboardRichTextReceivedFunc"
+              c:type="GtkClipboardRichTextReceivedFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="clipboard" transfer-ownership="none">
+          <type name="Clipboard" c:type="GtkClipboard*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <type name="guint8" c:type="guint8*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ClipboardTargetsReceivedFunc"
+              c:type="GtkClipboardTargetsReceivedFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="clipboard" transfer-ownership="none">
+          <type name="Clipboard" c:type="GtkClipboard*"/>
+        </parameter>
+        <parameter name="atoms" transfer-ownership="none">
+          <type name="Gdk.Atom" c:type="GdkAtom*"/>
+        </parameter>
+        <parameter name="n_atoms" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ClipboardTextReceivedFunc"
+              c:type="GtkClipboardTextReceivedFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="clipboard" transfer-ownership="none">
+          <type name="Clipboard" c:type="GtkClipboard*"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ClipboardURIReceivedFunc"
+              c:type="GtkClipboardURIReceivedFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="clipboard" transfer-ownership="none">
+          <type name="Clipboard" c:type="GtkClipboard*"/>
+        </parameter>
+        <parameter name="uris" transfer-ownership="none">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="ColorButton"
+           c:symbol-prefix="color_button"
+           c:type="GtkColorButton"
+           parent="Button"
+           glib:type-name="GtkColorButton"
+           glib:get-type="gtk_color_button_get_type"
+           glib:type-struct="ColorButtonClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Activatable"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new"
+                   c:identifier="gtk_color_button_new"
+                   version="2.4">
+        <doc xml:whitespace="preserve">Creates a new color button. This returns a widget in the form of
+a small button containing a swatch representing the current selected 
+color. When the button is clicked, a color-selection dialog will open, 
+allowing the user to select a color. The swatch will be updated to reflect 
+the new color when the user finishes.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new color button.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_color"
+                   c:identifier="gtk_color_button_new_with_color"
+                   version="2.4">
+        <doc xml:whitespace="preserve">Creates a new color button.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new color button.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GdkColor to set the current color with.</doc>
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_alpha"
+              c:identifier="gtk_color_button_get_alpha"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the current alpha value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an integer between 0 and 65535.</doc>
+          <type name="guint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <method name="get_color"
+              c:identifier="gtk_color_button_get_color"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets @color to be the current color in the #GtkColorButton widget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkColor to fill in with the current color.</doc>
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_title"
+              c:identifier="gtk_color_button_get_title"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the title of the color selection dialog.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">An internal string, do not free the return value</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_use_alpha"
+              c:identifier="gtk_color_button_get_use_alpha"
+              version="2.4">
+        <doc xml:whitespace="preserve">Does the color selection dialog use the alpha channel?</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the color sample uses alpha channel, %FALSE if not.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_alpha"
+              c:identifier="gtk_color_button_set_alpha"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the current opacity to be @alpha.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an integer between 0 and 65535.</doc>
+            <type name="guint16" c:type="guint16"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_color"
+              c:identifier="gtk_color_button_set_color"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the current color to be @color.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GdkColor to set the current color with.</doc>
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_title"
+              c:identifier="gtk_color_button_set_title"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the title for the color selection dialog.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <doc xml:whitespace="preserve">String containing new window title.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_alpha"
+              c:identifier="gtk_color_button_set_use_alpha"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets whether or not the color button should use the alpha channel.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if color button should use alpha channel, %FALSE if not.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="alpha"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The selected opacity value (0 fully transparent, 65535 fully opaque).</doc>
+        <type name="guint"/>
+      </property>
+      <property name="color"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The selected color.</doc>
+        <type name="Gdk.Color"/>
+      </property>
+      <property name="title"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The title of the color selection dialog</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="use-alpha"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If this property is set to %TRUE, the color swatch on the button is rendered against a 
+checkerboard background to show its opacity and the opacity slider is displayed in the 
+color selection dialog.</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="button">
+        <type name="Button" c:type="GtkButton"/>
+      </field>
+      <field name="priv">
+        <type name="ColorButtonPrivate" c:type="GtkColorButtonPrivate*"/>
+      </field>
+      <glib:signal name="color-set" version="2.4">
+        <doc xml:whitespace="preserve">The ::color-set signal is emitted when the user selects a color. 
+When handling this signal, use gtk_color_button_get_color() and 
+gtk_color_button_get_alpha() to find out which color was just selected.
+Note that this signal is only emitted when the &lt;emphasis&gt;user&lt;/emphasis&gt;
+changes the color. If you need to react to programmatic color changes
+as well, use the notify::color signal.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ColorButtonClass"
+            c:type="GtkColorButtonClass"
+            glib:is-gtype-struct-for="ColorButton">
+      <field name="parent_class">
+        <type name="ButtonClass" c:type="GtkButtonClass"/>
+      </field>
+      <field name="color_set">
+        <callback name="color_set">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cp" transfer-ownership="none">
+              <type name="ColorButton" c:type="GtkColorButton*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ColorButtonPrivate"
+            c:type="GtkColorButtonPrivate"
+            disguised="1">
+    </record>
+    <class name="ColorSelection"
+           c:symbol-prefix="color_selection"
+           c:type="GtkColorSelection"
+           parent="VBox"
+           glib:type-name="GtkColorSelection"
+           glib:get-type="gtk_color_selection_get_type"
+           glib:type-struct="ColorSelectionClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_color_selection_new">
+        <doc xml:whitespace="preserve">Creates a new GtkColorSelection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkColorSelection</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <function name="palette_from_string"
+                c:identifier="gtk_color_selection_palette_from_string">
+        <doc xml:whitespace="preserve">Parses a color palette string; the string is a colon-separated
+list of color names readable by gdk_color_parse().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a palette was successfully parsed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string encoding a color palette.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="colors" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for allocated array of #GdkColor.</doc>
+            <type name="Gdk.Color" c:type="GdkColor**"/>
+          </parameter>
+          <parameter name="n_colors" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for length of array.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="palette_to_string"
+                c:identifier="gtk_color_selection_palette_to_string">
+        <doc xml:whitespace="preserve">Encodes a palette as a string, useful for persistent storage.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">allocated string encoding the palette.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="colors" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of colors.</doc>
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+          <parameter name="n_colors" transfer-ownership="none">
+            <doc xml:whitespace="preserve">length of the array.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="set_change_palette_with_screen_hook"
+                c:identifier="gtk_color_selection_set_change_palette_with_screen_hook"
+                version="2.2"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Installs a global function to be called whenever the user tries to
+modify the palette in a color selection. This function should save
+the new palette contents, and update the GtkSettings property
+"gtk-color-palette" so all GtkColorSelection widgets will be modified.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the previous change palette hook (that was replaced).</doc>
+          <type name="ColorSelectionChangePaletteWithScreenFunc"
+                c:type="GtkColorSelectionChangePaletteWithScreenFunc"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a function to call when the custom palette needs saving.</doc>
+            <type name="ColorSelectionChangePaletteWithScreenFunc"
+                  c:type="GtkColorSelectionChangePaletteWithScreenFunc"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_current_alpha"
+              c:identifier="gtk_color_selection_get_current_alpha">
+        <doc xml:whitespace="preserve">Returns the current alpha value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an integer between 0 and 65535.</doc>
+          <type name="guint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <method name="get_current_color"
+              c:identifier="gtk_color_selection_get_current_color">
+        <doc xml:whitespace="preserve">Sets @color to be the current color in the GtkColorSelection widget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkColor to fill in with the current color.</doc>
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_has_opacity_control"
+              c:identifier="gtk_color_selection_get_has_opacity_control">
+        <doc xml:whitespace="preserve">Determines whether the colorsel has an opacity control.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @colorsel has an opacity control.  %FALSE if it does't.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_has_palette"
+              c:identifier="gtk_color_selection_get_has_palette">
+        <doc xml:whitespace="preserve">Determines whether the color selector has a color palette.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the selector has a palette.  %FALSE if it hasn't.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_previous_alpha"
+              c:identifier="gtk_color_selection_get_previous_alpha">
+        <doc xml:whitespace="preserve">Returns the previous alpha value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an integer between 0 and 65535.</doc>
+          <type name="guint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <method name="get_previous_color"
+              c:identifier="gtk_color_selection_get_previous_color">
+        <doc xml:whitespace="preserve">Fills @color in with the original color value.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkColor to fill in with the original color value.</doc>
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_adjusting"
+              c:identifier="gtk_color_selection_is_adjusting">
+        <doc xml:whitespace="preserve">Gets the current state of the @colorsel.
+if the selection has stopped.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the user is currently dragging a color around, and %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_current_alpha"
+              c:identifier="gtk_color_selection_set_current_alpha">
+        <doc xml:whitespace="preserve">Sets the current opacity to be @alpha.  The first time this is called, it will
+also set the original opacity to be @alpha too.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an integer between 0 and 65535.</doc>
+            <type name="guint16" c:type="guint16"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_current_color"
+              c:identifier="gtk_color_selection_set_current_color">
+        <doc xml:whitespace="preserve">Sets the current color to be @color.  The first time this is called, it will
+also set the original color to be @color too.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GdkColor to set the current color with.</doc>
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_has_opacity_control"
+              c:identifier="gtk_color_selection_set_has_opacity_control">
+        <doc xml:whitespace="preserve">Sets the @colorsel to use or not use opacity.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="has_opacity" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if @colorsel can set the opacity, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_has_palette"
+              c:identifier="gtk_color_selection_set_has_palette">
+        <doc xml:whitespace="preserve">Shows and hides the palette based upon the value of @has_palette.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="has_palette" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if palette is to be visible, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_previous_alpha"
+              c:identifier="gtk_color_selection_set_previous_alpha">
+        <doc xml:whitespace="preserve">Sets the 'previous' alpha to be @alpha.  This function should be called with
+some hesitations, as it might seem confusing to have that alpha change.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an integer between 0 and 65535.</doc>
+            <type name="guint16" c:type="guint16"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_previous_color"
+              c:identifier="gtk_color_selection_set_previous_color">
+        <doc xml:whitespace="preserve">Sets the 'previous' color to be @color.  This function should be called with
+some hesitations, as it might seem confusing to have that color change.
+Calling gtk_color_selection_set_current_color() will also set this color the first
+time it is called.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkColor to set the previous color with.</doc>
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="current-alpha" writable="1" transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <property name="current-color" writable="1" transfer-ownership="none">
+        <type name="Gdk.Color"/>
+      </property>
+      <property name="has-opacity-control"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="has-palette" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="VBox" c:type="GtkVBox"/>
+      </field>
+      <field name="private_data">
+        <type name="ColorSelectionPrivate" c:type="GtkColorSelectionPrivate*"/>
+      </field>
+      <glib:signal name="color-changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <callback name="ColorSelectionChangePaletteFunc"
+              c:type="GtkColorSelectionChangePaletteFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="colors" transfer-ownership="none">
+          <type name="Gdk.Color" c:type="GdkColor*"/>
+        </parameter>
+        <parameter name="n_colors" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ColorSelectionChangePaletteWithScreenFunc"
+              c:type="GtkColorSelectionChangePaletteWithScreenFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="screen" transfer-ownership="none">
+          <type name="Gdk.Screen" c:type="GdkScreen*"/>
+        </parameter>
+        <parameter name="colors" transfer-ownership="none">
+          <type name="Gdk.Color" c:type="GdkColor*"/>
+        </parameter>
+        <parameter name="n_colors" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="ColorSelectionClass"
+            c:type="GtkColorSelectionClass"
+            glib:is-gtype-struct-for="ColorSelection">
+      <field name="parent_class">
+        <type name="VBoxClass" c:type="GtkVBoxClass"/>
+      </field>
+      <field name="color_changed">
+        <callback name="color_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="color_selection" transfer-ownership="none">
+              <type name="ColorSelection" c:type="GtkColorSelection*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="ColorSelectionDialog"
+           c:symbol-prefix="color_selection_dialog"
+           c:type="GtkColorSelectionDialog"
+           parent="Dialog"
+           glib:type-name="GtkColorSelectionDialog"
+           glib:get-type="gtk_color_selection_dialog_get_type"
+           glib:type-struct="ColorSelectionDialogClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_color_selection_dialog_new">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_color_selection"
+              c:identifier="gtk_color_selection_dialog_get_color_selection"
+              version="2.14">
+        <doc xml:whitespace="preserve">Retrieves the #GtkColorSelection widget embedded in the dialog.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the embedded #GtkColorSelection</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <property name="cancel-button" transfer-ownership="none">
+        <type name="Widget"/>
+      </property>
+      <property name="color-selection" transfer-ownership="none">
+        <type name="Widget"/>
+      </property>
+      <property name="help-button" transfer-ownership="none">
+        <type name="Widget"/>
+      </property>
+      <property name="ok-button" transfer-ownership="none">
+        <type name="Widget"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Dialog" c:type="GtkDialog"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="ColorSelectionDialogPrivate"
+              c:type="GtkColorSelectionDialogPrivate*"/>
+      </field>
+    </class>
+    <record name="ColorSelectionDialogClass"
+            c:type="GtkColorSelectionDialogClass"
+            glib:is-gtype-struct-for="ColorSelectionDialog">
+      <field name="parent_class">
+        <type name="DialogClass" c:type="GtkDialogClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ColorSelectionDialogPrivate"
+            c:type="GtkColorSelectionDialogPrivate"
+            disguised="1">
+    </record>
+    <record name="ColorSelectionPrivate"
+            c:type="GtkColorSelectionPrivate"
+            disguised="1">
+    </record>
+    <class name="ComboBox"
+           c:symbol-prefix="combo_box"
+           c:type="GtkComboBox"
+           parent="Bin"
+           glib:type-name="GtkComboBox"
+           glib:get-type="gtk_combo_box_get_type"
+           glib:type-struct="ComboBoxClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="CellEditable"/>
+      <implements name="CellLayout"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_combo_box_new" version="2.4">
+        <doc xml:whitespace="preserve">Creates a new empty #GtkComboBox.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A new #GtkComboBox.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_text"
+                   c:identifier="gtk_combo_box_new_text"
+                   version="2.4">
+        <doc xml:whitespace="preserve">Convenience function which constructs a new text combo box, which is a
+#GtkComboBox just displaying strings. If you use this function to create
+a text combo box, you should only manipulate its data source with the
+gtk_combo_box_insert_text(), gtk_combo_box_prepend_text() and
+gtk_combo_box_remove_text().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A new text combo box.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_model"
+                   c:identifier="gtk_combo_box_new_with_model"
+                   version="2.4">
+        <doc xml:whitespace="preserve">Creates a new #GtkComboBox with the model initialized to @model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A new #GtkComboBox.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="model" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreeModel.</doc>
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="get_active_text"
+                      invoker="get_active_text"
+                      version="2.6">
+        <doc xml:whitespace="preserve">Returns the currently active string in @combo_box or %NULL if none
+is selected.  Note that you can only use this function with combo
+boxes constructed with gtk_combo_box_new_text() and with
+#GtkComboBoxEntry&lt;!-- --&gt;s.
+Must be freed with g_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated string containing the currently active text.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <method name="append_text"
+              c:identifier="gtk_combo_box_append_text"
+              version="2.4">
+        <doc xml:whitespace="preserve">Appends @string to the list of strings stored in @combo_box. Note that
+you can only use this function with combo boxes constructed with
+gtk_combo_box_new_text().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_active"
+              c:identifier="gtk_combo_box_get_active"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the index of the currently active item, or -1 if there's no
+active item. If the model is a non-flat treemodel, and the active item 
+is not an immediate child of the root of the tree, this function returns 
+&lt;literal&gt;gtk_tree_path_get_indices (path)[0]&lt;/literal&gt;, where 
+&lt;literal&gt;path&lt;/literal&gt; is the #GtkTreePath of the active item.
+or -1 if there's no active item.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">An integer which is the index of the currently active item,</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_active_iter"
+              c:identifier="gtk_combo_box_get_active_iter"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets @iter to point to the current active item, if it exists.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if @iter was set</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">The uninitialized #GtkTreeIter</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_active_text"
+              c:identifier="gtk_combo_box_get_active_text"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the currently active string in @combo_box or %NULL if none
+is selected.  Note that you can only use this function with combo
+boxes constructed with gtk_combo_box_new_text() and with
+#GtkComboBoxEntry&lt;!-- --&gt;s.
+Must be freed with g_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated string containing the currently active text.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_add_tearoffs"
+              c:identifier="gtk_combo_box_get_add_tearoffs">
+        <doc xml:whitespace="preserve">Gets the current value of the :add-tearoffs property.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current value of the :add-tearoffs property.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_button_sensitivity"
+              c:identifier="gtk_combo_box_get_button_sensitivity"
+              version="2.14">
+        <doc xml:whitespace="preserve">Returns whether the combo box sets the dropdown button
+sensitive or not when there are no items in the model.
+is sensitive when the model is empty, %GTK_SENSITIVITY_OFF
+if the button is always insensitive or
+%GTK_SENSITIVITY_AUTO if it is only sensitive as long as
+the model has one item to be selected.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%GTK_SENSITIVITY_ON if the dropdown button</doc>
+          <type name="SensitivityType" c:type="GtkSensitivityType"/>
+        </return-value>
+      </method>
+      <method name="get_column_span_column"
+              c:identifier="gtk_combo_box_get_column_span_column"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the column with column span information for @combo_box.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the column span column.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_focus_on_click"
+              c:identifier="gtk_combo_box_get_focus_on_click"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns whether the combo box grabs focus when it is clicked 
+with the mouse. See gtk_combo_box_set_focus_on_click().
+clicked with the mouse.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the combo box grabs focus when it is</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_model"
+              c:identifier="gtk_combo_box_get_model"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the #GtkTreeModel which is acting as data source for @combo_box.
+during construction.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GtkTreeModel which was passed</doc>
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </return-value>
+      </method>
+      <method name="get_popup_accessible"
+              c:identifier="gtk_combo_box_get_popup_accessible"
+              version="2.6">
+        <doc xml:whitespace="preserve">Gets the accessible object corresponding to the combo box's popup.
+This function is mostly intended for use by accessibility technologies;
+applications should have little use for it.
+to the combo box's popup.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the accessible object corresponding</doc>
+          <type name="Atk.Object" c:type="AtkObject*"/>
+        </return-value>
+      </method>
+      <method name="get_row_separator_func"
+              c:identifier="gtk_combo_box_get_row_separator_func"
+              version="2.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns the current row separator function.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the current row separator function.</doc>
+          <type name="TreeViewRowSeparatorFunc"
+                c:type="GtkTreeViewRowSeparatorFunc"/>
+        </return-value>
+      </method>
+      <method name="get_row_span_column"
+              c:identifier="gtk_combo_box_get_row_span_column"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the column with row span information for @combo_box.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the row span column.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_title"
+              c:identifier="gtk_combo_box_get_title"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the current title of the menu in tearoff mode. See
+gtk_combo_box_set_add_tearoffs().
+string which must not be freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the menu's title in tearoff mode. This is an internal copy of the</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_wrap_width"
+              c:identifier="gtk_combo_box_get_wrap_width"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the wrap width which is used to determine the number of columns 
+for the popup menu. If the wrap width is larger than 1, the combo box 
+is in table mode.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the wrap width.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="insert_text"
+              c:identifier="gtk_combo_box_insert_text"
+              version="2.4">
+        <doc xml:whitespace="preserve">Inserts @string at @position in the list of strings stored in @combo_box.
+Note that you can only use this function with combo boxes constructed
+with gtk_combo_box_new_text().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An index to insert @text</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="popdown"
+              c:identifier="gtk_combo_box_popdown"
+              version="2.4">
+        <doc xml:whitespace="preserve">Hides the menu or dropdown list of @combo_box.
+This function is mostly intended for use by accessibility technologies;
+applications should have little use for it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="popup" c:identifier="gtk_combo_box_popup" version="2.4">
+        <doc xml:whitespace="preserve">Pops up the menu or dropdown list of @combo_box. 
+This function is mostly intended for use by accessibility technologies;
+applications should have little use for it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="popup_for_device"
+              c:identifier="gtk_combo_box_popup_for_device"
+              version="3.0">
+        <doc xml:whitespace="preserve">Pops up the menu or dropdown list of @combo_box, the popup window
+will be grabbed so only @device and its associated pointer/keyboard
+are the only #GdkDevice&lt;!-- --&gt;s able to send events to it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkDevice</doc>
+            <type name="Gdk.Device" c:type="GdkDevice*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend_text"
+              c:identifier="gtk_combo_box_prepend_text"
+              version="2.4">
+        <doc xml:whitespace="preserve">Prepends @string to the list of strings stored in @combo_box. Note that
+you can only use this function with combo boxes constructed with
+gtk_combo_box_new_text().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_text"
+              c:identifier="gtk_combo_box_remove_text"
+              version="2.4">
+        <doc xml:whitespace="preserve">Removes the string at @position from @combo_box. Note that you can only use
+this function with combo boxes constructed with gtk_combo_box_new_text().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Index of the item to remove</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_active"
+              c:identifier="gtk_combo_box_set_active"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the active item of @combo_box to be the item at @index.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An index in the model passed during construction, or -1 to have no active item</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_active_iter"
+              c:identifier="gtk_combo_box_set_active_iter"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the current active item to be the one referenced by @iter, or
+unsets the active item if @iter is %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">The #GtkTreeIter, or %NULL</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_add_tearoffs"
+              c:identifier="gtk_combo_box_set_add_tearoffs"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets whether the popup menu should have a tearoff 
+menu item.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="add_tearoffs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to add tearoff menu items</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_button_sensitivity"
+              c:identifier="gtk_combo_box_set_button_sensitivity"
+              version="2.14">
+        <doc xml:whitespace="preserve">Sets whether the dropdown button of the combo box should be
+always sensitive (%GTK_SENSITIVITY_ON), never sensitive (%GTK_SENSITIVITY_OFF)
+or only if there is at least one item to display (%GTK_SENSITIVITY_AUTO).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sensitivity" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specify the sensitivity of the dropdown button</doc>
+            <type name="SensitivityType" c:type="GtkSensitivityType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_column_span_column"
+              c:identifier="gtk_combo_box_set_column_span_column"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the column with column span information for @combo_box to be
+how many columns an item should span.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column_span" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A column in the model passed during construction</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_focus_on_click"
+              c:identifier="gtk_combo_box_set_focus_on_click"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets whether the combo box will grab focus when it is clicked with 
+the mouse. Making mouse clicks not grab focus is useful in places 
+like toolbars where you don't want the keyboard focus removed from 
+the main area of the application.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="focus_on_click" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the combo box grabs focus when clicked with the mouse</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_model"
+              c:identifier="gtk_combo_box_set_model"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the model used by @combo_box to be @model. Will unset a previously set
+model (if applicable). If model is %NULL, then it will unset the model.
+Note that this function does not clear the cell renderers, you have to 
+call gtk_cell_layout_clear() yourself if you need to set up different 
+cell renderers for the new model.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="model" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A #GtkTreeModel</doc>
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_row_separator_func"
+              c:identifier="gtk_combo_box_set_row_separator_func"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the row separator function, which is used to determine
+whether a row should be drawn as a separator. If the row separator
+function is %NULL, no separators are drawn. This is the default value.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">a #GtkTreeViewRowSeparatorFunc</doc>
+            <type name="TreeViewRowSeparatorFunc"
+                  c:type="GtkTreeViewRowSeparatorFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">user data to pass to @func, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="async">
+            <doc xml:whitespace="preserve">destroy notifier for @data, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_row_span_column"
+              c:identifier="gtk_combo_box_set_row_span_column"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the column with row span information for @combo_box to be @row_span.
+The row span column contains integers which indicate how many rows
+an item should span.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row_span" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A column in the model passed during construction.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_title"
+              c:identifier="gtk_combo_box_set_title"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the menu's title in tearoff mode.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a title for the menu in tearoff mode</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_wrap_width"
+              c:identifier="gtk_combo_box_set_wrap_width"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the wrap width of @combo_box to be @width. The wrap width is basically
+the preferred number of columns when you want the popup to be layed out
+in a table.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Preferred number of columns</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="active"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The item which is currently active. If the model is a non-flat treemodel,
+and the active item is not an immediate child of the root of the tree,
+this property has the value 
+&lt;literal&gt;gtk_tree_path_get_indices (path)[0]&lt;/literal&gt;,
+where &lt;literal&gt;path&lt;/literal&gt; is the #GtkTreePath of the active item.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="add-tearoffs"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The add-tearoffs property controls whether generated menus 
+have tearoff menu items. 
+Note that this only affects menu style combo boxes.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="button-sensitivity"
+                version="2.14"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the dropdown button is sensitive when
+the model is empty.</doc>
+        <type name="SensitivityType"/>
+      </property>
+      <property name="column-span-column"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If this is set to a non-negative value, it must be the index of a column 
+of type %G_TYPE_INT in the model. 
+The values of that column are used to determine how many columns a value 
+in the list will span.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="focus-on-click" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="has-frame"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The has-frame property controls whether a frame
+is drawn around the entry.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="model"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The model from which the combo box takes the values shown
+in the list.</doc>
+        <type name="TreeModel"/>
+      </property>
+      <property name="popup-shown" version="2.10" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the combo boxes dropdown is popped up. 
+Note that this property is mainly useful, because
+it allows you to connect to notify::popup-shown.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="row-span-column"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If this is set to a non-negative value, it must be the index of a column 
+of type %G_TYPE_INT in the model. 
+The values of that column are used to determine how many rows a value in 
+the list will span. Therefore, the values in the model column pointed to 
+by this property must be greater than zero and not larger than wrap-width.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="tearoff-title"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A title that may be displayed by the window manager 
+when the popup is torn-off.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="wrap-width"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If wrap-width is set to a positive value, the list will be
+displayed in multiple columns, the number of columns is
+determined by wrap-width.</doc>
+        <type name="gint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Bin" c:type="GtkBin"/>
+      </field>
+      <field name="priv">
+        <type name="ComboBoxPrivate" c:type="GtkComboBoxPrivate*"/>
+      </field>
+      <glib:signal name="changed" version="2.4">
+        <doc xml:whitespace="preserve">The changed signal is emitted when the active
+item is changed. The can be due to the user selecting
+a different item from the list, or due to a 
+call to gtk_combo_box_set_active_iter().
+It will also be emitted while typing into a GtkComboBoxEntry, 
+as well as when selecting an item from the GtkComboBoxEntry's list.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="move-active" version="2.12">
+        <doc xml:whitespace="preserve">The ::move-active signal is a 
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted to move the active selection.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkScrollType</doc>
+            <type name="ScrollType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="popdown" version="2.12">
+        <doc xml:whitespace="preserve">The ::popdown signal is a 
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt; 
+which gets emitted to popdown the combo box list.
+The default bindings for this signal are Alt+Up and Escape.</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="popup" version="2.12">
+        <doc xml:whitespace="preserve">The ::popup signal is a 
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted to popup the combo box list.
+The default binding for this signal is Alt+Down.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ComboBoxClass"
+            c:type="GtkComboBoxClass"
+            glib:is-gtype-struct-for="ComboBox">
+      <field name="parent_class">
+        <type name="BinClass" c:type="GtkBinClass"/>
+      </field>
+      <field name="changed">
+        <callback name="changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="combo_box" transfer-ownership="none">
+              <type name="ComboBox" c:type="GtkComboBox*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_active_text">
+        <callback name="get_active_text">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a newly allocated string containing the currently active text.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="combo_box" transfer-ownership="none">
+              <type name="ComboBox" c:type="GtkComboBox*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved0" introspectable="0">
+        <callback name="_gtk_reserved0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="ComboBoxEntry"
+           c:symbol-prefix="combo_box_entry"
+           c:type="GtkComboBoxEntry"
+           parent="ComboBox"
+           glib:type-name="GtkComboBoxEntry"
+           glib:get-type="gtk_combo_box_entry_get_type"
+           glib:type-struct="ComboBoxEntryClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="CellEditable"/>
+      <implements name="CellLayout"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new"
+                   c:identifier="gtk_combo_box_entry_new"
+                   version="2.4">
+        <doc xml:whitespace="preserve">Creates a new #GtkComboBoxEntry which has a #GtkEntry as child. After
+construction, you should set a model using gtk_combo_box_set_model() and a
+text column using gtk_combo_box_entry_set_text_column().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A new #GtkComboBoxEntry.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_text"
+                   c:identifier="gtk_combo_box_entry_new_text"
+                   version="2.4">
+        <doc xml:whitespace="preserve">Convenience function which constructs a new editable text combo box, which 
+is a #GtkComboBoxEntry just displaying strings. If you use this function to
+create a text combo box, you should only manipulate its data source with
+gtk_combo_box_insert_text(), gtk_combo_box_prepend_text() and
+gtk_combo_box_remove_text().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A new text #GtkComboBoxEntry.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_model"
+                   c:identifier="gtk_combo_box_entry_new_with_model"
+                   version="2.4">
+        <doc xml:whitespace="preserve">Creates a new #GtkComboBoxEntry which has a #GtkEntry as child and a list
+of strings as popup. You can get the #GtkEntry from a #GtkComboBoxEntry
+using GTK_ENTRY (GTK_BIN (combo_box_entry)-&gt;child). To add and remove
+strings from the list, just modify @model using its data manipulation
+API.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A new #GtkComboBoxEntry.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="model" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreeModel.</doc>
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+          <parameter name="text_column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A column in @model to get the strings from.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_text_column"
+              c:identifier="gtk_combo_box_entry_get_text_column"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the column which @entry_box is using to get the strings from.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A column in the data source model of @entry_box.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_text_column"
+              c:identifier="gtk_combo_box_entry_set_text_column"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the model column which @entry_box should use to get strings from
+to be @text_column.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text_column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A column in @model to get the strings from.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="text-column" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="ComboBox" c:type="GtkComboBox"/>
+      </field>
+      <field name="priv">
+        <type name="ComboBoxEntryPrivate" c:type="GtkComboBoxEntryPrivate*"/>
+      </field>
+    </class>
+    <record name="ComboBoxEntryClass"
+            c:type="GtkComboBoxEntryClass"
+            glib:is-gtype-struct-for="ComboBoxEntry">
+      <field name="parent_class">
+        <type name="ComboBoxClass" c:type="GtkComboBoxClass"/>
+      </field>
+      <field name="_gtk_reserved0" introspectable="0">
+        <callback name="_gtk_reserved0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ComboBoxEntryPrivate"
+            c:type="GtkComboBoxEntryPrivate"
+            disguised="1">
+    </record>
+    <record name="ComboBoxPrivate" c:type="GtkComboBoxPrivate" disguised="1">
+    </record>
+    <class name="Container"
+           c:symbol-prefix="container"
+           c:type="GtkContainer"
+           parent="Widget"
+           abstract="1"
+           glib:type-name="GtkContainer"
+           glib:get-type="gtk_container_get_type"
+           glib:type-struct="ContainerClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <virtual-method name="child_type" invoker="child_type">
+        <doc xml:whitespace="preserve">Returns the type of the children supported by the container.
+Note that this may return %G_TYPE_NONE to indicate that no more
+children can be added, e.g. for a #GtkPaned which already has two 
+children.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GType.</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="composite_name">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="forall" introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="include_internals" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none" closure="2">
+            <type name="Callback" c:type="GtkCallback"/>
+          </parameter>
+          <parameter name="callback_data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_child_property">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="property_id" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_child_property">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="property_id" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add" c:identifier="gtk_container_add">
+        <doc xml:whitespace="preserve">Adds @widget to @container. Typically used for simple containers
+such as #GtkWindow, #GtkFrame, or #GtkButton; for more complicated
+layout containers such as #GtkBox or #GtkTable, this function will
+pick default packing parameters that may not be correct.  So
+consider functions such as gtk_box_pack_start() and
+gtk_table_attach() as an alternative to gtk_container_add() in
+those cases. A widget may be added to only one container at a time;
+you can't place the same widget inside two different containers.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a widget to be placed inside @container</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_with_properties"
+              c:identifier="gtk_container_add_with_properties"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds @widget to @container, setting child properties at the same time.
+See gtk_container_add() and gtk_container_child_set() for more details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a widget to be placed inside @container</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="first_prop_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first child property to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="check_resize" c:identifier="gtk_container_check_resize">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="child_get"
+              c:identifier="gtk_container_child_get"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the values of one or more child properties for @child and @container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a widget which is a child of @container</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="first_prop_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first property to get</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_get_property"
+              c:identifier="gtk_container_child_get_property">
+        <doc xml:whitespace="preserve">Gets the value of a child property for @child and @container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a widget which is a child of @container</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property to get</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a location to return the value</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_get_valist"
+              c:identifier="gtk_container_child_get_valist"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the values of one or more child properties for @child and @container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a widget which is a child of @container</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first property to get</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="var_args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the first property, followed optionally by more name/return location pairs, followed by %NULL</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_set"
+              c:identifier="gtk_container_child_set"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets one or more child properties for @child and @container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a widget which is a child of @container</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="first_prop_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first property to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_set_property"
+              c:identifier="gtk_container_child_set_property">
+        <doc xml:whitespace="preserve">Sets a child property for @child and @container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a widget which is a child of @container</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value to set the property to</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_set_valist"
+              c:identifier="gtk_container_child_set_valist"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets one or more child properties for @child and @container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a widget which is a child of @container</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first property to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="var_args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a %NULL-terminated list of property names and values, starting with @first_prop_name</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_type" c:identifier="gtk_container_child_type">
+        <doc xml:whitespace="preserve">Returns the type of the children supported by the container.
+Note that this may return %G_TYPE_NONE to indicate that no more
+children can be added, e.g. for a #GtkPaned which already has two 
+children.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GType.</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="forall"
+              c:identifier="gtk_container_forall"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Invokes @callback on each child of @container, including children
+that are considered "internal" (implementation details of the
+container). "Internal" children generally weren't added by the user
+of the container, but were added by the container implementation
+itself.  Most applications should use gtk_container_foreach(),
+rather than gtk_container_forall().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">a callback</doc>
+            <type name="Callback" c:type="GtkCallback"/>
+          </parameter>
+          <parameter name="callback_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">callback user data</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach" c:identifier="gtk_container_foreach">
+        <doc xml:whitespace="preserve">Invokes @callback on each non-internal child of @container. See
+gtk_container_forall() for details on what constitutes an
+"internal" child.  Most applications should use
+gtk_container_foreach(), rather than gtk_container_forall().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">a callback</doc>
+            <type name="Callback" c:type="GtkCallback"/>
+          </parameter>
+          <parameter name="callback_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">callback user data</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_border_width"
+              c:identifier="gtk_container_get_border_width">
+        <doc xml:whitespace="preserve">Retrieves the border width of the container. See
+gtk_container_set_border_width().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current border width</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_children" c:identifier="gtk_container_get_children">
+        <doc xml:whitespace="preserve">Returns the container's non-internal children. See
+gtk_container_forall() for details on what constitutes an "internal" child.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a newly-allocated list of the container's non-internal children.</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Widget"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_focus_chain"
+              c:identifier="gtk_container_get_focus_chain">
+        <doc xml:whitespace="preserve">Retrieves the focus chain of the container, if one has been
+set explicitly. If no focus chain has been explicitly
+set, GTK+ computes the focus chain based on the positions
+of the children. In that case, GTK+ stores %NULL in
+has been set explicitly.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the focus chain of the container</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="focusable_widgets"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="container">
+            <doc xml:whitespace="preserve">location to store the focus chain of the container, or %NULL. You should free this list using g_list_free() when you are done with it, however no additional reference count is added to the individual widgets in the focus chain.</doc>
+            <type name="GLib.List" c:type="GList**">
+              <type name="Widget"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_focus_child"
+              c:identifier="gtk_container_get_focus_child"
+              version="2.14"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns the current focus child widget inside @container. This is not the
+currently focused widget. That can be obtained by calling
+gtk_window_get_focus().
+the @conatiner is focussed, or %NULL if none is set.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">The child widget which will recieve the focus inside @container when</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_focus_hadjustment"
+              c:identifier="gtk_container_get_focus_hadjustment">
+        <doc xml:whitespace="preserve">Retrieves the horizontal focus adjustment for the container. See
+gtk_container_set_focus_hadjustment ().
+none has been set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the horizontal focus adjustment, or %NULL if</doc>
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="get_focus_vadjustment"
+              c:identifier="gtk_container_get_focus_vadjustment">
+        <doc xml:whitespace="preserve">Retrieves the vertical focus adjustment for the container. See
+gtk_container_set_focus_vadjustment().
+none has been set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the vertical focus adjustment, or %NULL if</doc>
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="get_resize_mode"
+              c:identifier="gtk_container_get_resize_mode">
+        <doc xml:whitespace="preserve">Returns the resize mode for the container. See
+gtk_container_set_resize_mode ().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current resize mode</doc>
+          <type name="ResizeMode" c:type="GtkResizeMode"/>
+        </return-value>
+      </method>
+      <method name="propagate_expose"
+              c:identifier="gtk_container_propagate_expose">
+        <doc xml:whitespace="preserve">When a container receives an expose event, it must send synthetic
+expose events to all children that don't have their own #GdkWindows.
+This function provides a convenient way of doing this. A container,
+when it receives an expose event, calls gtk_container_propagate_expose() 
+once for each child, passing in the event the container received.
+gtk_container_propagate_expose() takes care of deciding whether
+an expose event needs to be sent to the child, intersecting
+the event's area with the child area, and sending the event.
+In most cases, a container can simply either simply inherit the
+#GtkWidget::expose implementation from #GtkContainer, or, do some drawing 
+and then chain to the ::expose implementation from #GtkContainer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a child of @container</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a expose event sent to container</doc>
+            <type name="Gdk.EventExpose" c:type="GdkEventExpose*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove" c:identifier="gtk_container_remove">
+        <doc xml:whitespace="preserve">Removes @widget from @container. @widget must be inside @container.
+Note that @container will own a reference to @widget, and that this
+may be the last reference held; so removing a widget from its
+container can destroy that widget. If you want to use @widget
+again, you need to add a reference to it while it's not inside
+a container, using g_object_ref(). If you don't want to use @widget
+again it's usually more efficient to simply destroy it directly
+using gtk_widget_destroy() since this will remove it from the
+container and help break any circular reference count cycles.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a current child of @container</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="resize_children"
+              c:identifier="gtk_container_resize_children">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_border_width"
+              c:identifier="gtk_container_set_border_width">
+        <doc xml:whitespace="preserve">Sets the border width of the container.
+The border width of a container is the amount of space to leave
+around the outside of the container. The only exception to this is
+#GtkWindow; because toplevel windows can't leave space outside,
+they leave the space inside. The border is added on all sides of
+the container. To add space to only one side, one approach is to
+create a #GtkAlignment widget, call gtk_widget_set_size_request()
+to give it a size, and place it on the side of the container as
+a spacer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="border_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">amount of blank space to leave &lt;emphasis&gt;outside&lt;/emphasis&gt; the container. Valid values are in the range 0-65535 pixels.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_focus_chain"
+              c:identifier="gtk_container_set_focus_chain">
+        <doc xml:whitespace="preserve">Sets a focus chain, overriding the one computed automatically by GTK+.
+In principle each widget in the chain should be a descendant of the 
+container, but this is not enforced by this method, since it's allowed 
+to set the focus chain before you pack the widgets, or have a widget 
+in the chain that isn't always packed. The necessary checks are done 
+when the focus chain is actually traversed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="focusable_widgets" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new focus chain</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="Widget"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_focus_child"
+              c:identifier="gtk_container_set_focus_child">
+        <doc xml:whitespace="preserve">Sets, or unsets if @child is %NULL, the focused child of @container.
+This function emits the GtkContainer::set_focus_child signal of
+default behaviour by overriding the class closure of this signal.
+This is function is mostly meant to be used by widgets. Applications can use
+gtk_widget_grab_focus() to manualy set the focus to a specific widget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkWidget, or %NULL</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_focus_hadjustment"
+              c:identifier="gtk_container_set_focus_hadjustment">
+        <doc xml:whitespace="preserve">Hooks up an adjustment to focus handling in a container, so when a child 
+of the container is focused, the adjustment is scrolled to show that 
+widget. This function sets the horizontal alignment. 
+See gtk_scrolled_window_get_hadjustment() for a typical way of obtaining 
+the adjustment and gtk_container_set_focus_vadjustment() for setting
+the vertical adjustment.
+The adjustments have to be in pixel units and in the same coordinate 
+system as the allocation for immediate children of the container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an adjustment which should be adjusted when the focus is moved among the descendents of @container</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_focus_vadjustment"
+              c:identifier="gtk_container_set_focus_vadjustment">
+        <doc xml:whitespace="preserve">Hooks up an adjustment to focus handling in a container, so when a 
+child of the container is focused, the adjustment is scrolled to 
+show that widget. This function sets the vertical alignment. See 
+gtk_scrolled_window_get_vadjustment() for a typical way of obtaining 
+the adjustment and gtk_container_set_focus_hadjustment() for setting
+the horizontal adjustment.
+The adjustments have to be in pixel units and in the same coordinate 
+system as the allocation for immediate children of the container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an adjustment which should be adjusted when the focus is moved among the descendents of @container</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_reallocate_redraws"
+              c:identifier="gtk_container_set_reallocate_redraws">
+        <doc xml:whitespace="preserve">Sets the @reallocate_redraws flag of the container to the given value.
+Containers requesting reallocation redraws get automatically
+redrawn if any of their children changed allocation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="needs_redraws" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new value for the container's @reallocate_redraws flag</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_resize_mode"
+              c:identifier="gtk_container_set_resize_mode">
+        <doc xml:whitespace="preserve">Sets the resize mode for the container.
+The resize mode of a container determines whether a resize request 
+will be passed to the container's parent, queued for later execution
+or executed immediately.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="resize_mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new resize mode</doc>
+            <type name="ResizeMode" c:type="GtkResizeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_focus_chain"
+              c:identifier="gtk_container_unset_focus_chain">
+        <doc xml:whitespace="preserve">Removes a focus chain explicitly set with gtk_container_set_focus_chain().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="border-width" writable="1" transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <property name="child"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <type name="Widget"/>
+      </property>
+      <property name="resize-mode" writable="1" transfer-ownership="none">
+        <type name="ResizeMode"/>
+      </property>
+      <field name="widget">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="priv">
+        <type name="ContainerPrivate" c:type="GtkContainerPrivate*"/>
+      </field>
+      <glib:signal name="add">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Widget"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="check-resize">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="remove">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Widget"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="set-focus-child">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Widget"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ContainerClass"
+            c:type="GtkContainerClass"
+            glib:is-gtype-struct-for="Container">
+      <field name="parent_class">
+        <type name="WidgetClass" c:type="GtkWidgetClass"/>
+      </field>
+      <field name="handle_border_width" bits="1">
+        <type name="guint" c:type="unsigned"/>
+      </field>
+      <field name="add">
+        <callback name="add">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="GtkContainer*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove">
+        <callback name="remove">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="GtkContainer*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="check_resize">
+        <callback name="check_resize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="GtkContainer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="forall" introspectable="0">
+        <callback name="forall" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="GtkContainer*"/>
+            </parameter>
+            <parameter name="include_internals" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none" closure="3">
+              <type name="Callback" c:type="GtkCallback"/>
+            </parameter>
+            <parameter name="callback_data" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_focus_child">
+        <callback name="set_focus_child">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="GtkContainer*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="child_type">
+        <callback name="child_type">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GType.</doc>
+            <type name="GType" c:type="GType"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="GtkContainer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="composite_name">
+        <callback name="composite_name">
+          <return-value transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="GtkContainer*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_child_property">
+        <callback name="set_child_property">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="GtkContainer*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="property_id" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_child_property">
+        <callback name="get_child_property">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="GtkContainer*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="property_id" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <method name="handle_border_width"
+              c:identifier="gtk_container_class_handle_border_width">
+        <doc xml:whitespace="preserve">Modifies a subclass of #GtkContainerClass to automatically add and
+remove the border-width setting on GtkContainer.  This allows the
+subclass to ignore the border width in its size request and
+allocate methods. The intent is for a subclass to invoke this
+in its class_init function.
+gtk_container_class_handle_border_width() is necessary because it
+would break API too badly to make this behavior the default. So
+subclasses must "opt in" to the parent class handling border_width
+for them.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="install_child_property"
+              c:identifier="gtk_container_class_install_child_property">
+        <doc xml:whitespace="preserve">Installs a child property on a container class.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id for the property</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GParamSpec for the property</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="ContainerPrivate" c:type="GtkContainerPrivate" disguised="1">
+    </record>
+    <enumeration name="CornerType"
+                 glib:type-name="GtkCornerType"
+                 glib:get-type="gtk_corner_type_get_type"
+                 c:type="GtkCornerType">
+      <member name="top_left"
+              value="0"
+              c:identifier="GTK_CORNER_TOP_LEFT"
+              glib:nick="top-left"/>
+      <member name="bottom_left"
+              value="1"
+              c:identifier="GTK_CORNER_BOTTOM_LEFT"
+              glib:nick="bottom-left"/>
+      <member name="top_right"
+              value="2"
+              c:identifier="GTK_CORNER_TOP_RIGHT"
+              glib:nick="top-right"/>
+      <member name="bottom_right"
+              value="3"
+              c:identifier="GTK_CORNER_BOTTOM_RIGHT"
+              glib:nick="bottom-right"/>
+    </enumeration>
+    <bitfield name="DebugFlag"
+              glib:type-name="GtkDebugFlag"
+              glib:get-type="gtk_debug_flag_get_type"
+              c:type="GtkDebugFlag">
+      <member name="misc"
+              value="1"
+              c:identifier="GTK_DEBUG_MISC"
+              glib:nick="misc"/>
+      <member name="plugsocket"
+              value="2"
+              c:identifier="GTK_DEBUG_PLUGSOCKET"
+              glib:nick="plugsocket"/>
+      <member name="text"
+              value="4"
+              c:identifier="GTK_DEBUG_TEXT"
+              glib:nick="text"/>
+      <member name="tree"
+              value="8"
+              c:identifier="GTK_DEBUG_TREE"
+              glib:nick="tree"/>
+      <member name="updates"
+              value="16"
+              c:identifier="GTK_DEBUG_UPDATES"
+              glib:nick="updates"/>
+      <member name="keybindings"
+              value="32"
+              c:identifier="GTK_DEBUG_KEYBINDINGS"
+              glib:nick="keybindings"/>
+      <member name="multihead"
+              value="64"
+              c:identifier="GTK_DEBUG_MULTIHEAD"
+              glib:nick="multihead"/>
+      <member name="modules"
+              value="128"
+              c:identifier="GTK_DEBUG_MODULES"
+              glib:nick="modules"/>
+      <member name="geometry"
+              value="256"
+              c:identifier="GTK_DEBUG_GEOMETRY"
+              glib:nick="geometry"/>
+      <member name="icontheme"
+              value="512"
+              c:identifier="GTK_DEBUG_ICONTHEME"
+              glib:nick="icontheme"/>
+      <member name="printing"
+              value="1024"
+              c:identifier="GTK_DEBUG_PRINTING"
+              glib:nick="printing"/>
+      <member name="builder"
+              value="2048"
+              c:identifier="GTK_DEBUG_BUILDER"
+              glib:nick="builder"/>
+      <member name="size_request"
+              value="4096"
+              c:identifier="GTK_DEBUG_SIZE_REQUEST"
+              glib:nick="size-request"/>
+    </bitfield>
+    <enumeration name="DeleteType"
+                 glib:type-name="GtkDeleteType"
+                 glib:get-type="gtk_delete_type_get_type"
+                 c:type="GtkDeleteType">
+      <member name="chars"
+              value="0"
+              c:identifier="GTK_DELETE_CHARS"
+              glib:nick="chars"/>
+      <member name="word_ends"
+              value="1"
+              c:identifier="GTK_DELETE_WORD_ENDS"
+              glib:nick="word-ends"/>
+      <member name="words"
+              value="2"
+              c:identifier="GTK_DELETE_WORDS"
+              glib:nick="words"/>
+      <member name="display_lines"
+              value="3"
+              c:identifier="GTK_DELETE_DISPLAY_LINES"
+              glib:nick="display-lines"/>
+      <member name="display_line_ends"
+              value="4"
+              c:identifier="GTK_DELETE_DISPLAY_LINE_ENDS"
+              glib:nick="display-line-ends"/>
+      <member name="paragraph_ends"
+              value="5"
+              c:identifier="GTK_DELETE_PARAGRAPH_ENDS"
+              glib:nick="paragraph-ends"/>
+      <member name="paragraphs"
+              value="6"
+              c:identifier="GTK_DELETE_PARAGRAPHS"
+              glib:nick="paragraphs"/>
+      <member name="whitespace"
+              value="7"
+              c:identifier="GTK_DELETE_WHITESPACE"
+              glib:nick="whitespace"/>
+    </enumeration>
+    <bitfield name="DestDefaults"
+              glib:type-name="GtkDestDefaults"
+              glib:get-type="gtk_dest_defaults_get_type"
+              c:type="GtkDestDefaults">
+      <member name="motion"
+              value="1"
+              c:identifier="GTK_DEST_DEFAULT_MOTION"
+              glib:nick="motion"/>
+      <member name="highlight"
+              value="2"
+              c:identifier="GTK_DEST_DEFAULT_HIGHLIGHT"
+              glib:nick="highlight"/>
+      <member name="drop"
+              value="4"
+              c:identifier="GTK_DEST_DEFAULT_DROP"
+              glib:nick="drop"/>
+      <member name="all"
+              value="7"
+              c:identifier="GTK_DEST_DEFAULT_ALL"
+              glib:nick="all"/>
+    </bitfield>
+    <class name="Dialog"
+           c:symbol-prefix="dialog"
+           c:type="GtkDialog"
+           parent="Window"
+           glib:type-name="GtkDialog"
+           glib:get-type="gtk_dialog_get_type"
+           glib:type-struct="DialogClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_dialog_new">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_buttons"
+                   c:identifier="gtk_dialog_new_with_buttons"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #GtkDialog with title @title (or %NULL for the default
+title; see gtk_window_set_title()) and transient parent @parent (or
+%NULL for none; see gtk_window_set_transient_for()). The @flags
+argument can be used to make the dialog modal (#GTK_DIALOG_MODAL)
+and/or to have it destroyed along with its transient parent
+(#GTK_DIALOG_DESTROY_WITH_PARENT). After @flags, button
+text/response ID pairs should be listed, with a %NULL pointer ending
+the list. Button text can be either a stock ID such as
+#GTK_STOCK_OK, or some arbitrary text. A response ID can be
+any positive number, or one of the values in the #GtkResponseType
+enumeration. If the user clicks one of these dialog buttons,
+#GtkDialog will emit the #GtkDialog::response signal with the corresponding
+response ID. If a #GtkDialog receives the #GtkWidget::delete-event signal, 
+it will emit ::response with a response ID of #GTK_RESPONSE_DELETE_EVENT.
+However, destroying a dialog does not emit the ::response signal;
+so be careful relying on ::response when using the 
+#GTK_DIALOG_DESTROY_WITH_PARENT flag. Buttons are from left to right,
+so the first button in the list will be the leftmost button in the dialog.
+Here's a simple example:
+|[
+GtkWidget *dialog = gtk_dialog_new_with_buttons ("My dialog",
+main_app_window,
+GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
+GTK_STOCK_OK,
+GTK_RESPONSE_ACCEPT,
+GTK_STOCK_CANCEL,
+GTK_RESPONSE_REJECT,
+NULL);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkDialog</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">Title of the dialog, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">Transient parent of the dialog, or %NULL</doc>
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">from #GtkDialogFlags</doc>
+            <type name="DialogFlags" c:type="GtkDialogFlags"/>
+          </parameter>
+          <parameter name="first_button_text"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">stock ID or text to go in first button, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add_action_widget"
+              c:identifier="gtk_dialog_add_action_widget">
+        <doc xml:whitespace="preserve">Adds an activatable widget to the action area of a #GtkDialog,
+connecting a signal handler that will emit the #GtkDialog::response 
+signal on the dialog when the widget is activated. The widget is 
+appended to the end of the dialog's action area. If you want to add a
+non-activatable widget, simply pack it into the @action_area field 
+of the #GtkDialog struct.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an activatable widget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="response_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">response ID for @child</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_button" c:identifier="gtk_dialog_add_button">
+        <doc xml:whitespace="preserve">Adds a button with the given text (or a stock button, if @button_text is a
+stock ID) and sets things up so that clicking the button will emit the
+#GtkDialog::response signal with the given @response_id. The button is 
+appended to the end of the dialog's action area. The button widget is 
+returned, but usually you don't need it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the button widget that was added</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="button_text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">text of button, or stock ID</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="response_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">response ID for the button</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_buttons"
+              c:identifier="gtk_dialog_add_buttons"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds more buttons, same as calling gtk_dialog_add_button()
+repeatedly.  The variable argument list should be %NULL-terminated
+as with gtk_dialog_new_with_buttons(). Each button must have both
+text and response ID.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_button_text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">button text or stock ID</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_action_area"
+              c:identifier="gtk_dialog_get_action_area"
+              version="2.14">
+        <doc xml:whitespace="preserve">Returns the action area of @dialog.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the action area.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_content_area"
+              c:identifier="gtk_dialog_get_content_area"
+              version="2.14">
+        <doc xml:whitespace="preserve">Returns the content area of @dialog.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the content area #GtkVBox.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_response_for_widget"
+              c:identifier="gtk_dialog_get_response_for_widget"
+              version="2.8">
+        <doc xml:whitespace="preserve">Gets the response id of a widget in the action area
+of a dialog.
+if @widget doesn't have a response id set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the response id of @widget, or %GTK_RESPONSE_NONE</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a widget in the action area of @dialog</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_widget_for_response"
+              c:identifier="gtk_dialog_get_widget_for_response"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets the widget button that uses the given response ID in the action area
+of a dialog.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the @widget button that uses the given @response_id, or %NULL.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="response_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the response ID used by the @dialog widget</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="response" c:identifier="gtk_dialog_response">
+        <doc xml:whitespace="preserve">Emits the #GtkDialog::response signal with the given response ID. 
+Used to indicate that the user has responded to the dialog in some way;
+typically either you or gtk_dialog_run() will be monitoring the
+::response signal and take appropriate action.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="response_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">response ID</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="run" c:identifier="gtk_dialog_run">
+        <doc xml:whitespace="preserve">Blocks in a recursive main loop until the @dialog either emits the
+#GtkDialog::response signal, or is destroyed. If the dialog is 
+destroyed during the call to gtk_dialog_run(), gtk_dialog_run() returns 
+#GTK_RESPONSE_NONE. Otherwise, it returns the response ID from the 
+::response signal emission.
+Before entering the recursive main loop, gtk_dialog_run() calls
+gtk_widget_show() on the dialog for you. Note that you still
+need to show any children of the dialog yourself.
+During gtk_dialog_run(), the default behavior of #GtkWidget::delete-event 
+is disabled; if the dialog receives ::delete_event, it will not be
+destroyed as windows usually are, and gtk_dialog_run() will return
+#GTK_RESPONSE_DELETE_EVENT. Also, during gtk_dialog_run() the dialog 
+will be modal. You can force gtk_dialog_run() to return at any time by
+calling gtk_dialog_response() to emit the ::response signal. Destroying 
+the dialog during gtk_dialog_run() is a very bad idea, because your 
+post-run code won't know whether the dialog was destroyed or not.
+After gtk_dialog_run() returns, you are responsible for hiding or
+destroying the dialog if you wish to do so.
+Typical usage of this function might be:
+|[
+gint result = gtk_dialog_run (GTK_DIALOG (dialog));
+switch (result)
+{
+case GTK_RESPONSE_ACCEPT:
+do_application_specific_something ();
+break;
+default:
+do_nothing_since_dialog_was_cancelled ();
+break;
+}
+gtk_widget_destroy (dialog);
+]|
+Note that even though the recursive main loop gives the effect of a
+modal dialog (it prevents the user from interacting with other 
+windows in the same window group while the dialog is run), callbacks 
+such as timeouts, IO channel watches, DND drops, etc, &lt;emphasis&gt;will&lt;/emphasis&gt; 
+be triggered during a gtk_dialog_run() call.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">response ID</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_alternative_button_order"
+              c:identifier="gtk_dialog_set_alternative_button_order"
+              version="2.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets an alternative button order. If the 
+#GtkSettings:gtk-alternative-button-order setting is set to %TRUE, 
+the dialog buttons are reordered according to the order of the 
+response ids passed to this function.
+By default, GTK+ dialogs use the button order advocated by the Gnome 
+&lt;ulink url="http://developer.gnome.org/projects/gup/hig/2.0/"&gt;Human 
+Interface Guidelines&lt;/ulink&gt; with the affirmative button at the far 
+right, and the cancel button left of it. But the builtin GTK+ dialogs
+and #GtkMessageDialog&lt;!-- --&gt;s do provide an alternative button order,
+which is more suitable on some platforms, e.g. Windows.
+Use this function after adding all the buttons to your dialog, as the 
+following example shows:
+|[
+cancel_button = gtk_dialog_add_button (GTK_DIALOG (dialog),
+GTK_STOCK_CANCEL,
+GTK_RESPONSE_CANCEL);
+ok_button = gtk_dialog_add_button (GTK_DIALOG (dialog),
+GTK_STOCK_OK,
+GTK_RESPONSE_OK);
+gtk_widget_grab_default (ok_button);
+help_button = gtk_dialog_add_button (GTK_DIALOG (dialog),
+GTK_STOCK_HELP,
+GTK_RESPONSE_HELP);
+gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog),
+GTK_RESPONSE_OK,
+GTK_RESPONSE_CANCEL,
+GTK_RESPONSE_HELP,
+-1);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_response_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a response id used by one @dialog's buttons</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alternative_button_order_from_array"
+              c:identifier="gtk_dialog_set_alternative_button_order_from_array"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets an alternative button order. If the 
+#GtkSettings:gtk-alternative-button-order setting is set to %TRUE, 
+the dialog buttons are reordered according to the order of the 
+response ids in @new_order.
+See gtk_dialog_set_alternative_button_order() for more information.
+This function is for use by language bindings.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_params" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of response ids in @new_order</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="new_order" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of response ids of @dialog's buttons</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_default_response"
+              c:identifier="gtk_dialog_set_default_response">
+        <doc xml:whitespace="preserve">Sets the last widget in the dialog's action area with the given @response_id
+as the default widget for the dialog. Pressing "Enter" normally activates
+the default widget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="response_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a response ID</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_response_sensitive"
+              c:identifier="gtk_dialog_set_response_sensitive">
+        <doc xml:whitespace="preserve">Calls &lt;literal&gt;gtk_widget_set_sensitive (widget, @setting)&lt;/literal&gt; 
+for each widget in the dialog's action area with the given @response_id.
+A convenient way to sensitize/desensitize dialog buttons.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="response_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a response ID</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE for sensitive</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="window">
+        <type name="Window" c:type="GtkWindow"/>
+      </field>
+      <field name="priv">
+        <type name="DialogPrivate" c:type="GtkDialogPrivate*"/>
+      </field>
+      <glib:signal name="close">
+        <doc xml:whitespace="preserve">The ::close signal is a 
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted when the user uses a keybinding to close
+the dialog.
+The default binding for this signal is the Escape key.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="response">
+        <doc xml:whitespace="preserve">Emitted when an action widget is clicked, the dialog receives a 
+delete event, or the application programmer calls gtk_dialog_response(). 
+On a delete event, the response ID is #GTK_RESPONSE_DELETE_EVENT. 
+Otherwise, it depends on which action widget was clicked.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the response ID</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="DialogClass"
+            c:type="GtkDialogClass"
+            glib:is-gtype-struct-for="Dialog">
+      <field name="parent_class">
+        <type name="WindowClass" c:type="GtkWindowClass"/>
+      </field>
+      <field name="response">
+        <callback name="response">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="dialog" transfer-ownership="none">
+              <type name="Dialog" c:type="GtkDialog*"/>
+            </parameter>
+            <parameter name="response_id" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close">
+        <callback name="close">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="dialog" transfer-ownership="none">
+              <type name="Dialog" c:type="GtkDialog*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <bitfield name="DialogFlags"
+              glib:type-name="GtkDialogFlags"
+              glib:get-type="gtk_dialog_flags_get_type"
+              c:type="GtkDialogFlags">
+      <member name="modal"
+              value="1"
+              c:identifier="GTK_DIALOG_MODAL"
+              glib:nick="modal"/>
+      <member name="destroy_with_parent"
+              value="2"
+              c:identifier="GTK_DIALOG_DESTROY_WITH_PARENT"
+              glib:nick="destroy-with-parent"/>
+    </bitfield>
+    <record name="DialogPrivate" c:type="GtkDialogPrivate" disguised="1">
+    </record>
+    <enumeration name="DirectionType"
+                 glib:type-name="GtkDirectionType"
+                 glib:get-type="gtk_direction_type_get_type"
+                 c:type="GtkDirectionType">
+      <member name="tab_forward"
+              value="0"
+              c:identifier="GTK_DIR_TAB_FORWARD"
+              glib:nick="tab-forward"/>
+      <member name="tab_backward"
+              value="1"
+              c:identifier="GTK_DIR_TAB_BACKWARD"
+              glib:nick="tab-backward"/>
+      <member name="up" value="2" c:identifier="GTK_DIR_UP" glib:nick="up"/>
+      <member name="down"
+              value="3"
+              c:identifier="GTK_DIR_DOWN"
+              glib:nick="down"/>
+      <member name="left"
+              value="4"
+              c:identifier="GTK_DIR_LEFT"
+              glib:nick="left"/>
+      <member name="right"
+              value="5"
+              c:identifier="GTK_DIR_RIGHT"
+              glib:nick="right"/>
+    </enumeration>
+    <enumeration name="DragResult"
+                 glib:type-name="GtkDragResult"
+                 glib:get-type="gtk_drag_result_get_type"
+                 c:type="GtkDragResult">
+      <member name="success"
+              value="0"
+              c:identifier="GTK_DRAG_RESULT_SUCCESS"
+              glib:nick="success"/>
+      <member name="no_target"
+              value="1"
+              c:identifier="GTK_DRAG_RESULT_NO_TARGET"
+              glib:nick="no-target"/>
+      <member name="user_cancelled"
+              value="2"
+              c:identifier="GTK_DRAG_RESULT_USER_CANCELLED"
+              glib:nick="user-cancelled"/>
+      <member name="timeout_expired"
+              value="3"
+              c:identifier="GTK_DRAG_RESULT_TIMEOUT_EXPIRED"
+              glib:nick="timeout-expired"/>
+      <member name="grab_broken"
+              value="4"
+              c:identifier="GTK_DRAG_RESULT_GRAB_BROKEN"
+              glib:nick="grab-broken"/>
+      <member name="error"
+              value="5"
+              c:identifier="GTK_DRAG_RESULT_ERROR"
+              glib:nick="error"/>
+    </enumeration>
+    <class name="DrawingArea"
+           c:symbol-prefix="drawing_area"
+           c:type="GtkDrawingArea"
+           parent="Widget"
+           glib:type-name="GtkDrawingArea"
+           glib:get-type="gtk_drawing_area_get_type"
+           glib:type-struct="DrawingAreaClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_drawing_area_new">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <field name="widget">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="draw_data">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </class>
+    <record name="DrawingAreaClass"
+            c:type="GtkDrawingAreaClass"
+            glib:is-gtype-struct-for="DrawingArea">
+      <field name="parent_class">
+        <type name="WidgetClass" c:type="GtkWidgetClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <interface name="Editable"
+               c:symbol-prefix="editable"
+               c:type="GtkEditable"
+               glib:type-name="GtkEditable"
+               glib:get-type="gtk_editable_get_type"
+               glib:type-struct="EditableInterface">
+      <virtual-method name="do_delete_text">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="do_insert_text">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_chars" invoker="get_chars">
+        <doc xml:whitespace="preserve">Retrieves a sequence of characters. The characters that are retrieved 
+are those characters at positions from @start_pos up to, but not 
+including @end_pos. If @end_pos is negative, then the the characters 
+retrieved are those characters from @start_pos to the end of the text.
+Note that positions are specified in characters, not bytes.
+string. This string is allocated by the #GtkEditable
+implementation and should be freed by the caller.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the contents of the widget as a</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start of text</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">end of text</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_position" invoker="get_position">
+        <doc xml:whitespace="preserve">Retrieves the current position of the cursor relative to the start
+of the content of the editable. 
+Note that this position is in characters, not in bytes.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the cursor position</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_selection_bounds"
+                      invoker="get_selection_bounds">
+        <doc xml:whitespace="preserve">Retrieves the selection bound of the editable. start_pos will be filled
+with the start of the selection and @end_pos with end. If no text was
+selected both will be identical and %FALSE will be returned.
+Note that positions are specified in characters, not bytes.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if an area is selected, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the starting position, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_pos"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the end position, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_position" invoker="set_position">
+        <doc xml:whitespace="preserve">Sets the cursor position in the editable to the given value.
+The cursor is displayed before the character with the given (base 0) 
+index in the contents of the editable. The value must be less than or 
+equal to the number of characters in the editable. A value of -1 
+indicates that the position should be set after the last character 
+of the editable. Note that @position is in characters, not in bytes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position of the cursor</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_selection_bounds">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="copy_clipboard" c:identifier="gtk_editable_copy_clipboard">
+        <doc xml:whitespace="preserve">Copies the contents of the currently selected content in the editable and
+puts it on the clipboard.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="cut_clipboard" c:identifier="gtk_editable_cut_clipboard">
+        <doc xml:whitespace="preserve">Removes the contents of the currently selected content in the editable and
+puts it on the clipboard.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="delete_selection"
+              c:identifier="gtk_editable_delete_selection">
+        <doc xml:whitespace="preserve">Deletes the currently selected text of the editable.
+This call doesn't do anything if there is no selected text.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="delete_text" c:identifier="gtk_editable_delete_text">
+        <doc xml:whitespace="preserve">Deletes a sequence of characters. The characters that are deleted are 
+those characters at positions from @start_pos up to, but not including 
+are those from @start_pos to the end of the text.
+Note that the positions are specified in characters, not bytes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">end position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_chars" c:identifier="gtk_editable_get_chars">
+        <doc xml:whitespace="preserve">Retrieves a sequence of characters. The characters that are retrieved 
+are those characters at positions from @start_pos up to, but not 
+including @end_pos. If @end_pos is negative, then the the characters 
+retrieved are those characters from @start_pos to the end of the text.
+Note that positions are specified in characters, not bytes.
+string. This string is allocated by the #GtkEditable
+implementation and should be freed by the caller.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the contents of the widget as a</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start of text</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">end of text</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_editable" c:identifier="gtk_editable_get_editable">
+        <doc xml:whitespace="preserve">Retrieves whether @editable is editable. See
+gtk_editable_set_editable().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @editable is editable.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_position" c:identifier="gtk_editable_get_position">
+        <doc xml:whitespace="preserve">Retrieves the current position of the cursor relative to the start
+of the content of the editable. 
+Note that this position is in characters, not in bytes.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the cursor position</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_selection_bounds"
+              c:identifier="gtk_editable_get_selection_bounds">
+        <doc xml:whitespace="preserve">Retrieves the selection bound of the editable. start_pos will be filled
+with the start of the selection and @end_pos with end. If no text was
+selected both will be identical and %FALSE will be returned.
+Note that positions are specified in characters, not bytes.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if an area is selected, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the starting position, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_pos"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the end position, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_text" c:identifier="gtk_editable_insert_text">
+        <doc xml:whitespace="preserve">Inserts @new_text_length bytes of @new_text into the contents of the
+widget, at position @position.
+Note that the position is in characters, not in bytes. 
+The function updates @position to point after the newly inserted text.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text to append</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="new_text_length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of the text in bytes, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="position"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location of the position text will be inserted at</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="paste_clipboard"
+              c:identifier="gtk_editable_paste_clipboard">
+        <doc xml:whitespace="preserve">Pastes the content of the clipboard to the current position of the
+cursor in the editable.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="select_region" c:identifier="gtk_editable_select_region">
+        <doc xml:whitespace="preserve">Selects a region of text. The characters that are selected are 
+those characters at positions from @start_pos up to, but not 
+including @end_pos. If @end_pos is negative, then the the 
+characters selected are those characters from @start_pos to 
+the end of the text.
+Note that positions are specified in characters, not bytes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start of region</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">end of region</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_editable" c:identifier="gtk_editable_set_editable">
+        <doc xml:whitespace="preserve">Determines if the user can edit the text in the editable
+widget or not.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_editable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the user is allowed to edit the text in the widget</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_position" c:identifier="gtk_editable_set_position">
+        <doc xml:whitespace="preserve">Sets the cursor position in the editable to the given value.
+The cursor is displayed before the character with the given (base 0) 
+index in the contents of the editable. The value must be less than or 
+equal to the number of characters in the editable. A value of -1 
+indicates that the position should be set after the last character 
+of the editable. Note that @position is in characters, not in bytes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position of the cursor</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="changed">
+        <doc xml:whitespace="preserve">The ::changed signal is emitted at the end of a single
+user-visible operation on the contents of the #GtkEditable.
+E.g., a paste operation that replaces the contents of the
+selection will cause only one signal emission (even though it
+is implemented by first deleting the selection, then inserting
+the new content, and may cause multiple ::notify::text signals
+to be emitted).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="delete-text">
+        <doc xml:whitespace="preserve">This signal is emitted when text is deleted from
+the widget by the user. The default handler for
+this signal will normally be responsible for deleting
+the text, so by connecting to this signal and then
+stopping the signal with g_signal_stop_emission(), it
+is possible to modify the range of deleted text, or
+prevent it from being deleted entirely. The @start_pos
+and @end_pos parameters are interpreted as for
+gtk_editable_delete_text().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the starting position</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the end position</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="insert-text">
+        <doc xml:whitespace="preserve">This signal is emitted when text is inserted into
+the widget by the user. The default handler for
+this signal will normally be responsible for inserting
+the text, so by connecting to this signal and then
+stopping the signal with g_signal_stop_emission(), it
+is possible to modify the inserted text, or prevent
+it from being inserted entirely.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new text to insert</doc>
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of the new text, in bytes, or -1 if new_text is nul-terminated</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position, in characters, at which to insert the new text. this is an in-out parameter. After the signal emission is finished, it should point after the newly inserted text.</doc>
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="EditableInterface"
+            c:type="GtkEditableInterface"
+            glib:is-gtype-struct-for="Editable">
+      <field name="base_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="insert_text">
+        <callback name="insert_text">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="Editable" c:type="GtkEditable*"/>
+            </parameter>
+            <parameter name="text" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="length" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="position" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delete_text">
+        <callback name="delete_text">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="Editable" c:type="GtkEditable*"/>
+            </parameter>
+            <parameter name="start_pos" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="end_pos" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="changed">
+        <callback name="changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="Editable" c:type="GtkEditable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="do_insert_text">
+        <callback name="do_insert_text">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="Editable" c:type="GtkEditable*"/>
+            </parameter>
+            <parameter name="text" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="length" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="position" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="do_delete_text">
+        <callback name="do_delete_text">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="Editable" c:type="GtkEditable*"/>
+            </parameter>
+            <parameter name="start_pos" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="end_pos" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_chars">
+        <callback name="get_chars">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to the contents of the widget as a</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="Editable" c:type="GtkEditable*"/>
+            </parameter>
+            <parameter name="start_pos" transfer-ownership="none">
+              <doc xml:whitespace="preserve">start of text</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="end_pos" transfer-ownership="none">
+              <doc xml:whitespace="preserve">end of text</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_selection_bounds">
+        <callback name="set_selection_bounds">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="Editable" c:type="GtkEditable*"/>
+            </parameter>
+            <parameter name="start_pos" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="end_pos" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_selection_bounds">
+        <callback name="get_selection_bounds">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if an area is selected, %FALSE otherwise</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="Editable" c:type="GtkEditable*"/>
+            </parameter>
+            <parameter name="start_pos"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">location to store the starting position, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="end_pos"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">location to store the end position, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_position">
+        <callback name="set_position">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="Editable" c:type="GtkEditable*"/>
+            </parameter>
+            <parameter name="position" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the position of the cursor</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_position">
+        <callback name="get_position">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the cursor position</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="Editable" c:type="GtkEditable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="Entry"
+           c:symbol-prefix="entry"
+           c:type="GtkEntry"
+           parent="Widget"
+           glib:type-name="GtkEntry"
+           glib:get-type="gtk_entry_get_type"
+           glib:type-struct="EntryClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="CellEditable"/>
+      <implements name="Editable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_entry_new">
+        <doc xml:whitespace="preserve">Creates a new entry.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkEntry.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_buffer"
+                   c:identifier="gtk_entry_new_with_buffer"
+                   version="2.18">
+        <doc xml:whitespace="preserve">Creates a new entry with the specified text buffer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkEntry</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The buffer to use for the new #GtkEntry.</doc>
+            <type name="EntryBuffer" c:type="GtkEntryBuffer*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="get_text_area_size">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_activates_default"
+              c:identifier="gtk_entry_get_activates_default">
+        <doc xml:whitespace="preserve">Retrieves the value set by gtk_entry_set_activates_default().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the entry will activate the default widget</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_alignment"
+              c:identifier="gtk_entry_get_alignment"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_entry_set_alignment().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the alignment</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_buffer"
+              c:identifier="gtk_entry_get_buffer"
+              version="2.18">
+        <doc xml:whitespace="preserve">Get the #GtkEntryBuffer object which holds the text for
+this widget.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GtkEntryBuffer object.</doc>
+          <type name="EntryBuffer" c:type="GtkEntryBuffer*"/>
+        </return-value>
+      </method>
+      <method name="get_completion"
+              c:identifier="gtk_entry_get_completion"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the auxiliary completion object currently in use by @entry.
+in use by @entry.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The auxiliary completion object currently</doc>
+          <type name="EntryCompletion" c:type="GtkEntryCompletion*"/>
+        </return-value>
+      </method>
+      <method name="get_current_icon_drag_source"
+              c:identifier="gtk_entry_get_current_icon_drag_source"
+              version="2.16">
+        <doc xml:whitespace="preserve">Returns the index of the icon which is the source of the current
+DND operation, or -1.
+This function is meant to be used in a #GtkWidget::drag-data-get
+callback.
+DND operation, or -1.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">index of the icon which is the source of the current</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_cursor_hadjustment"
+              c:identifier="gtk_entry_get_cursor_hadjustment"
+              version="2.12">
+        <doc xml:whitespace="preserve">Retrieves the horizontal cursor adjustment for the entry. 
+See gtk_entry_set_cursor_hadjustment().
+if none has been set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the horizontal cursor adjustment, or %NULL</doc>
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="get_has_frame" c:identifier="gtk_entry_get_has_frame">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_entry_set_has_frame().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the entry has a beveled frame</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_icon_activatable"
+              c:identifier="gtk_entry_get_icon_activatable"
+              version="2.16">
+        <doc xml:whitespace="preserve">Returns whether the icon is activatable.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the icon is activatable.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Icon position</doc>
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_at_pos"
+              c:identifier="gtk_entry_get_icon_at_pos"
+              version="2.16">
+        <doc xml:whitespace="preserve">Finds the icon at the given position and return its index.
+If @x, @y doesn't lie inside an icon, -1 is returned.
+This function is intended for use in a #GtkWidget::query-tooltip
+signal handler.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index of the icon at the given position, or -1</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate of the position to find</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate of the position to find</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_gicon"
+              c:identifier="gtk_entry_get_icon_gicon"
+              version="2.16">
+        <doc xml:whitespace="preserve">Retrieves the #GIcon used for the icon, or %NULL if there is
+no icon or if the icon was set by some other method (e.g., by
+stock, pixbuf, or icon name).
+or if the icon is not a #GIcon</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GIcon, or %NULL if no icon is set</doc>
+          <type name="Gio.Icon" c:type="GIcon*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Icon position</doc>
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_name"
+              c:identifier="gtk_entry_get_icon_name"
+              version="2.16">
+        <doc xml:whitespace="preserve">Retrieves the icon name used for the icon, or %NULL if there is
+no icon or if the icon was set by some other method (e.g., by
+pixbuf, stock or gicon).
+wasn't set from an icon name</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">An icon name, or %NULL if no icon is set or if the icon</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Icon position</doc>
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_pixbuf"
+              c:identifier="gtk_entry_get_icon_pixbuf"
+              version="2.16">
+        <doc xml:whitespace="preserve">Retrieves the image used for the icon.
+Unlike the other methods of setting and getting icon data, this
+method will work regardless of whether the icon was set using a
+#GdkPixbuf, a #GIcon, a stock item, or an icon name.
+set for this position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GdkPixbuf, or %NULL if no icon is</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Icon position</doc>
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_sensitive"
+              c:identifier="gtk_entry_get_icon_sensitive"
+              version="2.16">
+        <doc xml:whitespace="preserve">Returns whether the icon appears sensitive or insensitive.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the icon is sensitive.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Icon position</doc>
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_stock"
+              c:identifier="gtk_entry_get_icon_stock"
+              version="2.16">
+        <doc xml:whitespace="preserve">Retrieves the stock id used for the icon, or %NULL if there is
+no icon or if the icon was set by some other method (e.g., by
+pixbuf, icon name or gicon).
+wasn't set from a stock id</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A stock id, or %NULL if no icon is set or if the icon</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Icon position</doc>
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_storage_type"
+              c:identifier="gtk_entry_get_icon_storage_type"
+              version="2.16">
+        <doc xml:whitespace="preserve">Gets the type of representation being used by the icon
+to store image data. If the icon has no image data,
+the return value will be %GTK_IMAGE_EMPTY.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">image representation being used</doc>
+          <type name="ImageType" c:type="GtkImageType"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Icon position</doc>
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_tooltip_markup"
+              c:identifier="gtk_entry_get_icon_tooltip_markup"
+              version="2.16">
+        <doc xml:whitespace="preserve">Gets the contents of the tooltip on the icon at the specified 
+position in @entry.
+with g_free() when done.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the tooltip text, or %NULL. Free the returned string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the icon position</doc>
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_tooltip_text"
+              c:identifier="gtk_entry_get_icon_tooltip_text"
+              version="2.16">
+        <doc xml:whitespace="preserve">Gets the contents of the tooltip on the icon at the specified 
+position in @entry.
+with g_free() when done.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the tooltip text, or %NULL. Free the returned string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the icon position</doc>
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_window"
+              c:identifier="gtk_entry_get_icon_window"
+              version="2.20">
+        <doc xml:whitespace="preserve">Returns the #GdkWindow which contains the entry's icon at
+entry in an expose-event callback because it enables the callback
+to distinguish between the text window and entry's icon windows.
+See also gtk_entry_get_text_window().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the entry's icon window at @icon_pos.</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Icon position</doc>
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_inner_border"
+              c:identifier="gtk_entry_get_inner_border"
+              version="2.10">
+        <doc xml:whitespace="preserve">This function returns the entry's #GtkEntry:inner-border property. See
+gtk_entry_set_inner_border() for more information.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the entry's #GtkBorder, or %NULL if none was set.</doc>
+          <type name="Border" c:type="GtkBorder*"/>
+        </return-value>
+      </method>
+      <method name="get_invisible_char"
+              c:identifier="gtk_entry_get_invisible_char"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Retrieves the character displayed in place of the real characters
+for entries with visibility set to false. See gtk_entry_set_invisible_char().
+show invisible text at all.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current invisible char, or 0, if the entry does not</doc>
+          <type name="gunichar" c:type="gunichar"/>
+        </return-value>
+      </method>
+      <method name="get_layout" c:identifier="gtk_entry_get_layout">
+        <doc xml:whitespace="preserve">Gets the #PangoLayout used to display the entry.
+The layout is useful to e.g. convert text positions to
+pixel positions, in combination with gtk_entry_get_layout_offsets().
+The returned layout is owned by the entry and must not be 
+modified or freed by the caller.
+Keep in mind that the layout text may contain a preedit string, so
+gtk_entry_layout_index_to_text_index() and
+gtk_entry_text_index_to_layout_index() are needed to convert byte
+indices in the layout to byte indices in the entry contents.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #PangoLayout for this entry</doc>
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </return-value>
+      </method>
+      <method name="get_layout_offsets"
+              c:identifier="gtk_entry_get_layout_offsets">
+        <doc xml:whitespace="preserve">Obtains the position of the #PangoLayout used to render text
+in the entry, in widget coordinates. Useful if you want to line
+up the text in an entry with some other text, e.g. when using the
+entry to implement editable cells in a sheet widget.
+Also useful to convert mouse events into coordinates inside the
+#PangoLayout, e.g. to take some action if some part of the entry text
+is clicked.
+Note that as the user scrolls around in the entry the offsets will
+change; you'll need to connect to the "notify::scroll-offset"
+signal to track this. Remember when using the #PangoLayout
+functions you need to convert to and from pixels using
+PANGO_PIXELS() or #PANGO_SCALE.
+Keep in mind that the layout text may contain a preedit string, so
+gtk_entry_layout_index_to_text_index() and
+gtk_entry_text_index_to_layout_index() are needed to convert byte
+indices in the layout to byte indices in the entry contents.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store X offset of layout, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store Y offset of layout, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_max_length" c:identifier="gtk_entry_get_max_length">
+        <doc xml:whitespace="preserve">Retrieves the maximum allowed length of the text in
+This is equivalent to:
+&lt;informalexample&gt;&lt;programlisting&gt;
+gtk_entry_buffer_get_max_length (gtk_entry_get_buffer (entry));
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+in #GtkEntry, or 0 if there is no maximum.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the maximum allowed number of characters</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_overwrite_mode"
+              c:identifier="gtk_entry_get_overwrite_mode"
+              version="2.14">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_entry_set_overwrite_mode().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the text is overwritten when typing.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_progress_fraction"
+              c:identifier="gtk_entry_get_progress_fraction"
+              version="2.16">
+        <doc xml:whitespace="preserve">Returns the current fraction of the task that's been completed.
+See gtk_entry_set_progress_fraction().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a fraction from 0.0 to 1.0</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_progress_pulse_step"
+              c:identifier="gtk_entry_get_progress_pulse_step"
+              version="2.16">
+        <doc xml:whitespace="preserve">Retrieves the pulse step set with gtk_entry_set_progress_pulse_step().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a fraction from 0.0 to 1.0</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_text" c:identifier="gtk_entry_get_text">
+        <doc xml:whitespace="preserve">Retrieves the contents of the entry widget.
+See also gtk_editable_get_chars().
+This is equivalent to:
+&lt;informalexample&gt;&lt;programlisting&gt;
+gtk_entry_buffer_get_text (gtk_entry_get_buffer (entry));
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+string. This string points to internally allocated
+storage in the widget and must not be freed, modified or
+stored.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the contents of the widget as a</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_text_length"
+              c:identifier="gtk_entry_get_text_length"
+              version="2.14">
+        <doc xml:whitespace="preserve">Retrieves the current length of the text in
+This is equivalent to:
+&lt;informalexample&gt;&lt;programlisting&gt;
+gtk_entry_buffer_get_length (gtk_entry_get_buffer (entry));
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+in #GtkEntry, or 0 if there are none.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current number of characters</doc>
+          <type name="guint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <method name="get_text_window"
+              c:identifier="gtk_entry_get_text_window"
+              version="2.20">
+        <doc xml:whitespace="preserve">Returns the #GdkWindow which contains the text. This function is
+useful when drawing something to the entry in an expose-event
+callback because it enables the callback to distinguish between
+the text window and entry's icon windows.
+See also gtk_entry_get_icon_window().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the entry's text window.</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_visibility" c:identifier="gtk_entry_get_visibility">
+        <doc xml:whitespace="preserve">Retrieves whether the text in @entry is visible. See
+gtk_entry_set_visibility().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the text is currently visible</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_width_chars" c:identifier="gtk_entry_get_width_chars">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_entry_set_width_chars().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of chars to request space for, or negative if unset</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="im_context_filter_keypress"
+              c:identifier="gtk_entry_im_context_filter_keypress"
+              version="2.22">
+        <doc xml:whitespace="preserve">Allow the #GtkEntry input method to internally handle key press
+and release events. If this function returns %TRUE, then no further
+processing should be done for this key event. See
+gtk_im_context_filter_keypress().
+Note that you are expected to call this function from your handler
+when overriding key event handling. This is needed in the case when
+you need to insert your own key handling between the input method
+and the default key event handling of the #GtkEntry.
+See gtk_text_view_reset_im_context() for an example of use.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the input method handled the key event.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the key event</doc>
+            <type name="Gdk.EventKey" c:type="GdkEventKey*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="layout_index_to_text_index"
+              c:identifier="gtk_entry_layout_index_to_text_index">
+        <doc xml:whitespace="preserve">Converts from a position in the entry contents (returned
+by gtk_entry_get_text()) to a position in the
+entry's #PangoLayout (returned by gtk_entry_get_layout(),
+with text retrieved via pango_layout_get_text()).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">byte index into the entry contents</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="layout_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">byte index into the entry layout text</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="progress_pulse"
+              c:identifier="gtk_entry_progress_pulse"
+              version="2.16">
+        <doc xml:whitespace="preserve">Indicates that some progress is made, but you don't know how much.
+Causes the entry's progress indicator to enter "activity mode,"
+where a block bounces back and forth. Each call to
+gtk_entry_progress_pulse() causes the block to move by a little bit
+(the amount of movement per pulse is determined by
+gtk_entry_set_progress_pulse_step()).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="reset_im_context"
+              c:identifier="gtk_entry_reset_im_context"
+              version="2.22">
+        <doc xml:whitespace="preserve">Reset the input method context of the entry if needed.
+This can be necessary in the case where modifying the buffer
+would confuse on-going input method behavior.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_activates_default"
+              c:identifier="gtk_entry_set_activates_default">
+        <doc xml:whitespace="preserve">If @setting is %TRUE, pressing Enter in the @entry will activate the default
+widget for the window containing the entry. This usually means that
+the dialog box containing the entry will be closed, since the default
+widget is usually one of the dialog buttons.
+(For experts: if @setting is %TRUE, the entry calls
+gtk_window_activate_default() on the window containing the entry, in
+the default handler for the #GtkWidget::activate signal.)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to activate window's default widget on Enter keypress</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alignment"
+              c:identifier="gtk_entry_set_alignment"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the alignment for the contents of the entry. This controls
+the horizontal positioning of the contents when the displayed
+text is shorter than the width of the entry.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The horizontal alignment, from 0 (left) to 1 (right). Reversed for RTL layouts</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_buffer"
+              c:identifier="gtk_entry_set_buffer"
+              version="2.18">
+        <doc xml:whitespace="preserve">Set the #GtkEntryBuffer object which holds the text for
+this widget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkEntryBuffer</doc>
+            <type name="EntryBuffer" c:type="GtkEntryBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_completion"
+              c:identifier="gtk_entry_set_completion"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets @completion to be the auxiliary completion object to use with @entry.
+All further configuration of the completion mechanism is done on</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="completion"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">The #GtkEntryCompletion or %NULL</doc>
+            <type name="EntryCompletion" c:type="GtkEntryCompletion*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor_hadjustment"
+              c:identifier="gtk_entry_set_cursor_hadjustment"
+              version="2.12">
+        <doc xml:whitespace="preserve">Hooks up an adjustment to the cursor position in an entry, so that when 
+the cursor is moved, the adjustment is scrolled to show that position. 
+See gtk_scrolled_window_get_hadjustment() for a typical way of obtaining 
+the adjustment.
+The adjustment has to be in pixel units and in the same coordinate system 
+as the entry.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an adjustment which should be adjusted when the cursor is moved, or %NULL</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_has_frame" c:identifier="gtk_entry_set_has_frame">
+        <doc xml:whitespace="preserve">Sets whether the entry has a beveled frame around it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new value</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_activatable"
+              c:identifier="gtk_entry_set_icon_activatable"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets whether the icon is activatable.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Icon position</doc>
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+          <parameter name="activatable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the icon should be activatable</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_drag_source"
+              c:identifier="gtk_entry_set_icon_drag_source"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets up the icon at the given position so that GTK+ will start a drag
+operation when the user clicks and drags the icon.
+To handle the drag operation, you need to connect to the usual
+#GtkWidget::drag-data-get (or possibly #GtkWidget::drag-data-delete)
+signal, and use gtk_entry_get_current_icon_drag_source() in
+your signal handler to find out if the drag was started from
+an icon.
+By default, GTK+ uses the icon as the drag icon. You can use the 
+#GtkWidget::drag-begin signal to set a different icon. Note that you 
+have to use g_signal_connect_after() to ensure that your signal handler
+gets executed after the default handler.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">icon position</doc>
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+          <parameter name="target_list" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the targets (data formats) in which the data can be provided</doc>
+            <type name="TargetList" c:type="GtkTargetList*"/>
+          </parameter>
+          <parameter name="actions" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a bitmask of the allowed drag actions</doc>
+            <type name="Gdk.DragAction" c:type="GdkDragAction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_from_gicon"
+              c:identifier="gtk_entry_set_icon_from_gicon"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets the icon shown in the entry at the specified position
+from the current icon theme.
+If the icon isn't known, a "broken image" icon will be displayed
+instead.
+If @icon is %NULL, no icon will be shown in the specified position.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The position at which to set the icon</doc>
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+          <parameter name="icon" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">The icon to set, or %NULL</doc>
+            <type name="Gio.Icon" c:type="GIcon*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_from_icon_name"
+              c:identifier="gtk_entry_set_icon_from_icon_name"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets the icon shown in the entry at the specified position
+from the current icon theme.
+If the icon name isn't known, a "broken image" icon will be displayed
+instead.
+If @icon_name is %NULL, no icon will be shown in the specified position.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The position at which to set the icon</doc>
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+          <parameter name="icon_name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">An icon name, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_from_pixbuf"
+              c:identifier="gtk_entry_set_icon_from_pixbuf"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets the icon shown in the specified position using a pixbuf.
+If @pixbuf is %NULL, no icon will be shown in the specified position.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Icon position</doc>
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+          <parameter name="pixbuf" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A #GdkPixbuf, or %NULL</doc>
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_from_stock"
+              c:identifier="gtk_entry_set_icon_from_stock"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets the icon shown in the entry at the specified position from
+a stock image.
+If @stock_id is %NULL, no icon will be shown in the specified position.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Icon position</doc>
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+          <parameter name="stock_id" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">The name of the stock item, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_sensitive"
+              c:identifier="gtk_entry_set_icon_sensitive"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets the sensitivity for the specified icon.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Icon position</doc>
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+          <parameter name="sensitive" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Specifies whether the icon should appear sensitive or insensitive</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_tooltip_markup"
+              c:identifier="gtk_entry_set_icon_tooltip_markup"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets @tooltip as the contents of the tooltip for the icon at
+the specified position. @tooltip is assumed to be marked up with
+the &lt;link linkend="PangoMarkupFormat"&gt;Pango text markup language&lt;/link&gt;.
+Use %NULL for @tooltip to remove an existing tooltip.
+See also gtk_widget_set_tooltip_markup() and 
+gtk_enty_set_icon_tooltip_text().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the icon position</doc>
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+          <parameter name="tooltip" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the contents of the tooltip for the icon, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_tooltip_text"
+              c:identifier="gtk_entry_set_icon_tooltip_text"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets @tooltip as the contents of the tooltip for the icon
+at the specified position.
+Use %NULL for @tooltip to remove an existing tooltip.
+See also gtk_widget_set_tooltip_text() and 
+gtk_entry_set_icon_tooltip_markup().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the icon position</doc>
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+          <parameter name="tooltip" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the contents of the tooltip for the icon, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_inner_border"
+              c:identifier="gtk_entry_set_inner_border"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets %entry's inner-border property to %border, or clears it if %NULL
+is passed. The inner-border is the area around the entry's text, but
+inside its frame.
+If set, this property overrides the inner-border style property.
+Overriding the style-provided border is useful when you want to do
+in-place editing of some text in a canvas or list widget, where
+pixel-exact positioning of the entry is important.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="border" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkBorder, or %NULL</doc>
+            <type name="Border" c:type="GtkBorder*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_invisible_char"
+              c:identifier="gtk_entry_set_invisible_char"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the character to use in place of the actual text when
+gtk_entry_set_visibility() has been called to set text visibility
+to %FALSE. i.e. this is the character used in "password mode" to
+show the user how many characters have been typed. By default, GTK+
+picks the best invisible char available in the current font. If you
+set the invisible char to 0, then the user will get no feedback
+at all; there will be no text on the screen as they type.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ch" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a Unicode character</doc>
+            <type name="gunichar" c:type="gunichar"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_max_length" c:identifier="gtk_entry_set_max_length">
+        <doc xml:whitespace="preserve">Sets the maximum allowed length of the contents of the widget. If
+the current contents are longer than the given length, then they
+will be truncated to fit.
+This is equivalent to:
+&lt;informalexample&gt;&lt;programlisting&gt;
+gtk_entry_buffer_set_max_length (gtk_entry_get_buffer (entry), max);
+&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="max" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the maximum length of the entry, or 0 for no maximum. (other than the maximum length of entries.) The value passed in will be clamped to the range 0-65536.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_overwrite_mode"
+              c:identifier="gtk_entry_set_overwrite_mode"
+              version="2.14">
+        <doc xml:whitespace="preserve">Sets whether the text is overwritten when typing in the #GtkEntry.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="overwrite" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new value</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_progress_fraction"
+              c:identifier="gtk_entry_set_progress_fraction"
+              version="2.16">
+        <doc xml:whitespace="preserve">Causes the entry's progress indicator to "fill in" the given
+fraction of the bar. The fraction should be between 0.0 and 1.0,
+inclusive.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fraction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">fraction of the task that's been completed</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_progress_pulse_step"
+              c:identifier="gtk_entry_set_progress_pulse_step"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets the fraction of total entry width to move the progress
+bouncing block for each call to gtk_entry_progress_pulse().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fraction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">fraction between 0.0 and 1.0</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_text" c:identifier="gtk_entry_set_text">
+        <doc xml:whitespace="preserve">Sets the text in the widget to the given
+value, replacing the current contents.
+See gtk_entry_buffer_set_text().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new text</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_visibility" c:identifier="gtk_entry_set_visibility">
+        <doc xml:whitespace="preserve">Sets whether the contents of the entry are visible or not. 
+When visibility is set to %FALSE, characters are displayed 
+as the invisible char, and will also appear that way when 
+the text in the entry widget is copied elsewhere.
+By default, GTK+ picks the best invisible character available
+in the current font, but it can be changed with
+gtk_entry_set_invisible_char().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the contents of the entry are displayed as plaintext</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_width_chars" c:identifier="gtk_entry_set_width_chars">
+        <doc xml:whitespace="preserve">Changes the size request of the entry to be about the right size
+for @n_chars characters. Note that it changes the size
+&lt;emphasis&gt;request&lt;/emphasis&gt;, the size can still be affected by
+how you pack the widget into containers. If @n_chars is -1, the
+size reverts to the default entry size.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width in chars</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="text_index_to_layout_index"
+              c:identifier="gtk_entry_text_index_to_layout_index">
+        <doc xml:whitespace="preserve">Converts from a position in the entry's #PangoLayout (returned by
+gtk_entry_get_layout()) to a position in the entry contents
+(returned by gtk_entry_get_text()).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">byte index into the entry layout text</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="text_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">byte index into the entry contents</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_invisible_char"
+              c:identifier="gtk_entry_unset_invisible_char"
+              version="2.16">
+        <doc xml:whitespace="preserve">Unsets the invisible char previously set with
+gtk_entry_set_invisible_char(). So that the
+default invisible char is used again.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="activates-default"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="buffer"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="EntryBuffer"/>
+      </property>
+      <property name="caps-lock-warning"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="cursor-position" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="editable" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="has-frame" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="im-module"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Which IM (input method) module should be used for this entry. 
+See #GtkIMContext.
+Setting this to a non-%NULL value overrides the
+system-wide IM module setting. See the GtkSettings 
+#GtkSettings:gtk-im-module property.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="inner-border"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Sets the text area's border between the text and the frame.</doc>
+        <type name="Border"/>
+      </property>
+      <property name="invisible-char"
+                version="2.18"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The invisible character is used when masking entry contents (in
+\"password mode\")"). When it is not explicitly set with the
+#GtkEntry::invisible-char property, GTK+ determines the character
+to use from a list of possible candidates, depending on availability
+in the current font.
+This style property allows the theme to prepend a character
+to the list of candidates.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="invisible-char-set"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the invisible char has been set for the #GtkEntry.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="max-length" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="overwrite-mode"
+                version="2.14"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If text is overwritten when typing in the #GtkEntry.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="primary-icon-activatable"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the primary icon is activatable.
+GTK+ emits the #GtkEntry::icon-press and #GtkEntry::icon-release 
+signals only on sensitive, activatable icons. 
+Sensitive, but non-activatable icons can be used for purely 
+informational purposes.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="primary-icon-gicon"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GIcon to use for the primary icon for the entry.</doc>
+        <type name="Gio.Icon"/>
+      </property>
+      <property name="primary-icon-name"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The icon name to use for the primary icon for the entry.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="primary-icon-pixbuf"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A pixbuf to use as the primary icon for the entry.</doc>
+        <type name="GdkPixbuf.Pixbuf"/>
+      </property>
+      <property name="primary-icon-sensitive"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the primary icon is sensitive.
+An insensitive icon appears grayed out. GTK+ does not emit the 
+#GtkEntry::icon-press and #GtkEntry::icon-release signals and 
+does not allow DND from insensitive icons.
+An icon should be set insensitive if the action that would trigger
+when clicked is currently not available.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="primary-icon-stock"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The stock id to use for the primary icon for the entry.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="primary-icon-storage-type"
+                version="2.16"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The representation which is used for the primary icon of the entry.</doc>
+        <type name="ImageType"/>
+      </property>
+      <property name="primary-icon-tooltip-markup"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The contents of the tooltip on the primary icon, which is marked up
+with the &lt;link linkend="PangoMarkupFormat"&gt;Pango text markup 
+language&lt;/link&gt;.
+Also see gtk_entry_set_icon_tooltip_markup().</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="primary-icon-tooltip-text"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The contents of the tooltip on the primary icon.
+Also see gtk_entry_set_icon_tooltip_text().</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="progress-fraction"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The current fraction of the task that's been completed.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="progress-pulse-step"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The fraction of total entry width to move the progress
+bouncing block for each call to gtk_entry_progress_pulse().</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="scroll-offset" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="secondary-icon-activatable"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the secondary icon is activatable.
+GTK+ emits the #GtkEntry::icon-press and #GtkEntry::icon-release 
+signals only on sensitive, activatable icons.
+Sensitive, but non-activatable icons can be used for purely 
+informational purposes.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="secondary-icon-gicon"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GIcon to use for the secondary icon for the entry.</doc>
+        <type name="Gio.Icon"/>
+      </property>
+      <property name="secondary-icon-name"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The icon name to use for the secondary icon for the entry.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="secondary-icon-pixbuf"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">An pixbuf to use as the secondary icon for the entry.</doc>
+        <type name="GdkPixbuf.Pixbuf"/>
+      </property>
+      <property name="secondary-icon-sensitive"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the secondary icon is sensitive.
+An insensitive icon appears grayed out. GTK+ does not emit the 
+#GtkEntry::icon-press and #GtkEntry::icon-release signals and 
+does not allow DND from insensitive icons.
+An icon should be set insensitive if the action that would trigger
+when clicked is currently not available.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="secondary-icon-stock"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The stock id to use for the secondary icon for the entry.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="secondary-icon-storage-type"
+                version="2.16"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The representation which is used for the secondary icon of the entry.</doc>
+        <type name="ImageType"/>
+      </property>
+      <property name="secondary-icon-tooltip-markup"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The contents of the tooltip on the secondary icon, which is marked up
+with the &lt;link linkend="PangoMarkupFormat"&gt;Pango text markup 
+language&lt;/link&gt;.
+Also see gtk_entry_set_icon_tooltip_markup().</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="secondary-icon-tooltip-text"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The contents of the tooltip on the secondary icon.
+Also see gtk_entry_set_icon_tooltip_text().</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="selection-bound" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="shadow-type"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Which kind of shadow to draw around the entry when 
+#GtkEntry:has-frame is set to %TRUE.</doc>
+        <type name="ShadowType"/>
+      </property>
+      <property name="text" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="text-length" version="2.14" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The length of the text in the #GtkEntry.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="truncate-multiline"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">When %TRUE, pasted multi-line text is truncated to the first line.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="visibility" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="width-chars" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="xalign"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The horizontal alignment, from 0 (left) to 1 (right). 
+Reversed for RTL layouts.</doc>
+        <type name="gfloat"/>
+      </property>
+      <field name="widget">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="editable" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="visible" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="overwrite_mode" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="in_drag" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="text_area">
+        <type name="Gdk.Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="im_context">
+        <type name="IMContext" c:type="GtkIMContext*"/>
+      </field>
+      <field name="popup_menu">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="current_pos">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="selection_bound">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="cached_layout">
+        <type name="Pango.Layout" c:type="PangoLayout*"/>
+      </field>
+      <field name="cache_includes_preedit" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="need_im_reset" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="has_frame" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="activates_default" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="cursor_visible" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="in_click" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="is_cell_renderer" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="editing_canceled" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="mouse_cursor_obscured" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="select_words" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="select_lines" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="resolved_dir" bits="4">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="truncate_multiline" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="button">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="blink_timeout">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="recompute_idle">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="scroll_offset">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="ascent">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="descent">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="x_text_size">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="x_n_bytes">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="preedit_length">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="preedit_cursor">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="dnd_position">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="drag_start_x">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="drag_start_y">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="invisible_char" introspectable="0">
+        <type name="gunichar" c:type="gunichar"/>
+      </field>
+      <field name="width_chars">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <glib:signal name="activate">
+        <doc xml:whitespace="preserve">A  &lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted when the user activates the entry.
+Applications should not connect to it, but may emit it with
+g_signal_emit_by_name() if they need to control activation 
+programmatically.
+The default bindings for this signal are all forms of the Enter key.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="backspace">
+        <doc xml:whitespace="preserve">The ::backspace signal is a
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted when the user asks for it.
+The default bindings for this signal are
+Backspace and Shift-Backspace.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="copy-clipboard">
+        <doc xml:whitespace="preserve">The ::copy-clipboard signal is a
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted to copy the selection to the clipboard.
+The default bindings for this signal are
+Ctrl-c and Ctrl-Insert.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="cut-clipboard">
+        <doc xml:whitespace="preserve">The ::cut-clipboard signal is a
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted to cut the selection to the clipboard.
+The default bindings for this signal are
+Ctrl-x and Shift-Delete.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="delete-from-cursor">
+        <doc xml:whitespace="preserve">The ::delete-from-cursor signal is a
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted when the user initiates a text deletion.
+If the @type is %GTK_DELETE_CHARS, GTK+ deletes the selection
+if there is one, otherwise it deletes the requested number
+of characters.
+The default bindings for this signal are
+Delete for deleting a character and Ctrl-Delete for
+deleting a word.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the granularity of the deletion, as a #GtkDeleteType</doc>
+            <type name="DeleteType"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of @type units to delete</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="icon-press" version="2.16">
+        <doc xml:whitespace="preserve">The ::icon-press signal is emitted when an activatable icon
+is clicked.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The position of the clicked icon</doc>
+            <type name="EntryIconPosition"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the button press event</doc>
+            <type name="Gdk.Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="icon-release" version="2.16">
+        <doc xml:whitespace="preserve">The ::icon-release signal is emitted on the button release from a
+mouse click over an activatable icon.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The position of the clicked icon</doc>
+            <type name="EntryIconPosition"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the button release event</doc>
+            <type name="Gdk.Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="insert-at-cursor">
+        <doc xml:whitespace="preserve">The ::insert-at-cursor signal is a
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted when the user initiates the insertion of a
+fixed string at the cursor.
+This signal has no default bindings.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the string to insert</doc>
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-cursor">
+        <doc xml:whitespace="preserve">The ::move-cursor signal is a
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted when the user initiates a cursor movement.
+If the cursor is not visible in @entry, this signal causes
+the viewport to be moved instead.
+Applications should not connect to it, but may emit it with
+g_signal_emit_by_name() if they need to control the cursor
+programmatically.
+The default bindings for this signal come in two variants,
+the variant with the Shift modifier extends the selection,
+the variant without the Shift modifer does not.
+There are too many key combinations to list them all here.
+&lt;itemizedlist&gt;
+&lt;listitem&gt;Arrow keys move by individual characters/lines&lt;/listitem&gt;
+&lt;listitem&gt;Ctrl-arrow key combinations move by words/paragraphs&lt;/listitem&gt;
+&lt;listitem&gt;Home/End keys move to the ends of the buffer&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the granularity of the move, as a #GtkMovementStep</doc>
+            <type name="MovementStep"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of @step units to move</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the move should extend the selection</doc>
+            <type name="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="paste-clipboard">
+        <doc xml:whitespace="preserve">The ::paste-clipboard signal is a
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted to paste the contents of the clipboard
+into the text view.
+The default bindings for this signal are
+Ctrl-v and Shift-Insert.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="populate-popup">
+        <doc xml:whitespace="preserve">The ::populate-popup signal gets emitted before showing the 
+context menu of the entry. 
+If you need to add items to the context menu, connect
+to this signal and append your menuitems to the @menu.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the menu that is being populated</doc>
+            <type name="Menu"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="preedit-changed" version="2.20">
+        <doc xml:whitespace="preserve">If an input method is used, the typed text will not immediately
+be committed to the buffer. So if you are interested in the text,
+connect to this signal.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the current preedit string</doc>
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="toggle-overwrite">
+        <doc xml:whitespace="preserve">The ::toggle-overwrite signal is a
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted to toggle the overwrite mode of the entry.
+The default bindings for this signal is Insert.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <class name="EntryBuffer"
+           c:symbol-prefix="entry_buffer"
+           c:type="GtkEntryBuffer"
+           parent="GObject.Object"
+           glib:type-name="GtkEntryBuffer"
+           glib:get-type="gtk_entry_buffer_get_type"
+           glib:type-struct="EntryBufferClass">
+      <constructor name="new"
+                   c:identifier="gtk_entry_buffer_new"
+                   version="2.18">
+        <doc xml:whitespace="preserve">Create a new GtkEntryBuffer object.
+Optionally, specify initial text to set in the buffer.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A new GtkEntryBuffer object.</doc>
+          <type name="EntryBuffer" c:type="GtkEntryBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="initial_chars"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">initial buffer text, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="n_initial_chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of characters in @initial_chars, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="delete_text" invoker="delete_text" version="2.18">
+        <doc xml:whitespace="preserve">Deletes a sequence of characters from the buffer. @n_chars characters are
+deleted starting at @position. If @n_chars is negative, then all characters
+until the end of the text are deleted.
+If @position or @n_chars are out of bounds, then they are coerced to sane
+values.
+Note that the positions are specified in characters, not bytes.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of characters deleted.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position at which to delete text</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="n_chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of characters to delete</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_length" invoker="get_length" version="2.18">
+        <doc xml:whitespace="preserve">Retrieves the length in characters of the buffer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of characters in the buffer.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_text">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_bytes" transfer-ownership="none">
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="insert_text" invoker="insert_text" version="2.18">
+        <doc xml:whitespace="preserve">Inserts @n_chars characters of @chars into the contents of the
+buffer, at position @position.
+If @n_chars is negative, then characters from chars will be inserted
+until a null-terminator is found. If @position or @n_chars are out of
+bounds, or the maximum buffer text length is exceeded, then they are
+coerced to sane values.
+Note that the position and length are in characters, not in bytes.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of characters actually inserted.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position at which to insert text.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text to insert into the buffer.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="n_chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of the text in characters, or -1</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="delete_text"
+              c:identifier="gtk_entry_buffer_delete_text"
+              version="2.18">
+        <doc xml:whitespace="preserve">Deletes a sequence of characters from the buffer. @n_chars characters are
+deleted starting at @position. If @n_chars is negative, then all characters
+until the end of the text are deleted.
+If @position or @n_chars are out of bounds, then they are coerced to sane
+values.
+Note that the positions are specified in characters, not bytes.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of characters deleted.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position at which to delete text</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="n_chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of characters to delete</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="emit_deleted_text"
+              c:identifier="gtk_entry_buffer_emit_deleted_text"
+              version="2.18">
+        <doc xml:whitespace="preserve">Used when subclassing #GtkEntryBuffer</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position at which text was deleted</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="n_chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of characters deleted</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="emit_inserted_text"
+              c:identifier="gtk_entry_buffer_emit_inserted_text"
+              version="2.18">
+        <doc xml:whitespace="preserve">Used when subclassing #GtkEntryBuffer</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position at which text was inserted</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">text that was inserted</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="n_chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of characters inserted</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bytes"
+              c:identifier="gtk_entry_buffer_get_bytes"
+              version="2.18">
+        <doc xml:whitespace="preserve">Retrieves the length in bytes of the buffer.
+See gtk_entry_buffer_get_length().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The byte length of the buffer.</doc>
+          <type name="gulong" c:type="gsize"/>
+        </return-value>
+      </method>
+      <method name="get_length"
+              c:identifier="gtk_entry_buffer_get_length"
+              version="2.18">
+        <doc xml:whitespace="preserve">Retrieves the length in characters of the buffer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of characters in the buffer.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_max_length"
+              c:identifier="gtk_entry_buffer_get_max_length"
+              version="2.18">
+        <doc xml:whitespace="preserve">Retrieves the maximum allowed length of the text in
+in #GtkEntryBuffer, or 0 if there is no maximum.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the maximum allowed number of characters</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_text"
+              c:identifier="gtk_entry_buffer_get_text"
+              version="2.18">
+        <doc xml:whitespace="preserve">Retrieves the contents of the buffer.
+The memory pointer returned by this call will not change
+unless this object emits a signal, or is finalized.
+string. This string points to internally allocated
+storage in the buffer and must not be freed, modified or
+stored.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the contents of the widget as a</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="insert_text"
+              c:identifier="gtk_entry_buffer_insert_text"
+              version="2.18">
+        <doc xml:whitespace="preserve">Inserts @n_chars characters of @chars into the contents of the
+buffer, at position @position.
+If @n_chars is negative, then characters from chars will be inserted
+until a null-terminator is found. If @position or @n_chars are out of
+bounds, or the maximum buffer text length is exceeded, then they are
+coerced to sane values.
+Note that the position and length are in characters, not in bytes.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of characters actually inserted.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position at which to insert text.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text to insert into the buffer.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="n_chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of the text in characters, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_max_length"
+              c:identifier="gtk_entry_buffer_set_max_length"
+              version="2.18">
+        <doc xml:whitespace="preserve">Sets the maximum allowed length of the contents of the buffer. If
+the current contents are longer than the given length, then they
+will be truncated to fit.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="max_length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the maximum length of the entry buffer, or 0 for no maximum. (other than the maximum length of entries.) The value passed in will be clamped to the range 0-65536.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_text"
+              c:identifier="gtk_entry_buffer_set_text"
+              version="2.18">
+        <doc xml:whitespace="preserve">Sets the text in the buffer.
+This is roughly equivalent to calling gtk_entry_buffer_delete_text()
+and gtk_entry_buffer_insert_text().
+Note that @n_chars is in characters, not in bytes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new text</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="n_chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of characters in @text, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="length" version="2.18" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The length (in characters) of the text in buffer.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="max-length"
+                version="2.18"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The maximum length (in characters) of the text in the buffer.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="text"
+                version="2.18"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The contents of the buffer.</doc>
+        <type name="utf8"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="EntryBufferPrivate" c:type="GtkEntryBufferPrivate*"/>
+      </field>
+      <glib:signal name="deleted-text" version="2.18">
+        <doc xml:whitespace="preserve">This signal is emitted after text is deleted from the buffer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position the text was deleted at.</doc>
+            <type name="guint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The number of characters that were deleted.</doc>
+            <type name="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="inserted-text" version="2.18">
+        <doc xml:whitespace="preserve">This signal is emitted after text is inserted into the buffer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position the text was inserted at.</doc>
+            <type name="guint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The text that was inserted.</doc>
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The number of characters that were inserted.</doc>
+            <type name="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="EntryBufferClass"
+            c:type="GtkEntryBufferClass"
+            glib:is-gtype-struct-for="EntryBuffer">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="inserted_text">
+        <callback name="inserted_text">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="EntryBuffer" c:type="GtkEntryBuffer*"/>
+            </parameter>
+            <parameter name="position" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="chars" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="n_chars" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="deleted_text">
+        <callback name="deleted_text">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="EntryBuffer" c:type="GtkEntryBuffer*"/>
+            </parameter>
+            <parameter name="position" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="n_chars" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_text">
+        <callback name="get_text">
+          <return-value transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="EntryBuffer" c:type="GtkEntryBuffer*"/>
+            </parameter>
+            <parameter name="n_bytes" transfer-ownership="none">
+              <type name="gulong" c:type="gsize*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_length">
+        <callback name="get_length">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">The number of characters in the buffer.</doc>
+            <type name="guint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="EntryBuffer" c:type="GtkEntryBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="insert_text">
+        <callback name="insert_text">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">The number of characters actually inserted.</doc>
+            <type name="guint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="EntryBuffer" c:type="GtkEntryBuffer*"/>
+            </parameter>
+            <parameter name="position" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the position at which to insert text.</doc>
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="chars" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the text to insert into the buffer.</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="n_chars" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the length of the text in characters, or -1</doc>
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delete_text">
+        <callback name="delete_text">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">The number of characters deleted.</doc>
+            <type name="guint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="EntryBuffer" c:type="GtkEntryBuffer*"/>
+            </parameter>
+            <parameter name="position" transfer-ownership="none">
+              <doc xml:whitespace="preserve">position at which to delete text</doc>
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="n_chars" transfer-ownership="none">
+              <doc xml:whitespace="preserve">number of characters to delete</doc>
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved0" introspectable="0">
+        <callback name="_gtk_reserved0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved5" introspectable="0">
+        <callback name="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="EntryBufferPrivate"
+            c:type="GtkEntryBufferPrivate"
+            disguised="1">
+    </record>
+    <record name="EntryClass"
+            c:type="GtkEntryClass"
+            glib:is-gtype-struct-for="Entry">
+      <field name="parent_class">
+        <type name="WidgetClass" c:type="GtkWidgetClass"/>
+      </field>
+      <field name="populate_popup">
+        <callback name="populate_popup">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="Entry" c:type="GtkEntry*"/>
+            </parameter>
+            <parameter name="menu" transfer-ownership="none">
+              <type name="Menu" c:type="GtkMenu*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate">
+        <callback name="activate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="Entry" c:type="GtkEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="move_cursor">
+        <callback name="move_cursor">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="Entry" c:type="GtkEntry*"/>
+            </parameter>
+            <parameter name="step" transfer-ownership="none">
+              <type name="MovementStep" c:type="GtkMovementStep"/>
+            </parameter>
+            <parameter name="count" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="extend_selection" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="insert_at_cursor">
+        <callback name="insert_at_cursor">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="Entry" c:type="GtkEntry*"/>
+            </parameter>
+            <parameter name="str" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delete_from_cursor">
+        <callback name="delete_from_cursor">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="Entry" c:type="GtkEntry*"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <type name="DeleteType" c:type="GtkDeleteType"/>
+            </parameter>
+            <parameter name="count" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="backspace">
+        <callback name="backspace">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="Entry" c:type="GtkEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cut_clipboard">
+        <callback name="cut_clipboard">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="Entry" c:type="GtkEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="copy_clipboard">
+        <callback name="copy_clipboard">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="Entry" c:type="GtkEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="paste_clipboard">
+        <callback name="paste_clipboard">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="Entry" c:type="GtkEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="toggle_overwrite">
+        <callback name="toggle_overwrite">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="Entry" c:type="GtkEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_text_area_size">
+        <callback name="get_text_area_size">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="Entry" c:type="GtkEntry*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="EntryCompletion"
+           c:symbol-prefix="entry_completion"
+           c:type="GtkEntryCompletion"
+           parent="GObject.Object"
+           glib:type-name="GtkEntryCompletion"
+           glib:get-type="gtk_entry_completion_get_type"
+           glib:type-struct="EntryCompletionClass">
+      <implements name="Buildable"/>
+      <implements name="CellLayout"/>
+      <constructor name="new"
+                   c:identifier="gtk_entry_completion_new"
+                   version="2.4">
+        <doc xml:whitespace="preserve">Creates a new #GtkEntryCompletion object.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly created #GtkEntryCompletion object.</doc>
+          <type name="EntryCompletion" c:type="GtkEntryCompletion*"/>
+        </return-value>
+      </constructor>
+      <method name="complete"
+              c:identifier="gtk_entry_completion_complete"
+              version="2.4">
+        <doc xml:whitespace="preserve">Requests a completion operation, or in other words a refiltering of the
+current list with completions, using the current key. The completion list
+view will be updated accordingly.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="delete_action"
+              c:identifier="gtk_entry_completion_delete_action"
+              version="2.4">
+        <doc xml:whitespace="preserve">Deletes the action at @index_ from @completion's action list.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The index of the item to Delete.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_completion_prefix"
+              c:identifier="gtk_entry_completion_get_completion_prefix"
+              version="2.12">
+        <doc xml:whitespace="preserve">Get the original text entered by the user that triggered
+the completion or %NULL if there's no completion ongoing.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the prefix for the current completion</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_entry"
+              c:identifier="gtk_entry_completion_get_entry"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the entry @completion has been attached to.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The entry @completion has been attached to.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_inline_completion"
+              c:identifier="gtk_entry_completion_get_inline_completion"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns whether the common prefix of the possible completions should
+be automatically inserted in the entry.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if inline completion is turned on</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_inline_selection"
+              c:identifier="gtk_entry_completion_get_inline_selection"
+              version="2.12">
+        <doc xml:whitespace="preserve">Returns %TRUE if inline-selection mode is turned on.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if inline-selection mode is on</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_minimum_key_length"
+              c:identifier="gtk_entry_completion_get_minimum_key_length"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the minimum key length as set for @completion.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The currently used minimum key length.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_model"
+              c:identifier="gtk_entry_completion_get_model"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the model the #GtkEntryCompletion is using as data source.
+Returns %NULL if the model is unset.
+is currently being used.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GtkTreeModel, or %NULL if none</doc>
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </return-value>
+      </method>
+      <method name="get_popup_completion"
+              c:identifier="gtk_entry_completion_get_popup_completion"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns whether the completions should be presented in a popup window.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if popup completion is turned on</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_popup_set_width"
+              c:identifier="gtk_entry_completion_get_popup_set_width"
+              version="2.8">
+        <doc xml:whitespace="preserve">Returns whether the  completion popup window will be resized to the 
+width of the entry.
+the entry</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the popup window will be resized to the width of</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_popup_single_match"
+              c:identifier="gtk_entry_completion_get_popup_single_match"
+              version="2.8">
+        <doc xml:whitespace="preserve">Returns whether the completion popup window will appear even if there is
+only a single match. 
+number of matches.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the popup window will appear regardless of the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_text_column"
+              c:identifier="gtk_entry_completion_get_text_column"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the column in the model of @completion to get strings from.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the column containing the strings</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="insert_action_markup"
+              c:identifier="gtk_entry_completion_insert_action_markup"
+              version="2.4">
+        <doc xml:whitespace="preserve">Inserts an action in @completion's action item list at position @index_
+with markup @markup.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The index of the item to insert.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="markup" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Markup of the item to insert.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_action_text"
+              c:identifier="gtk_entry_completion_insert_action_text"
+              version="2.4">
+        <doc xml:whitespace="preserve">Inserts an action in @completion's action item list at position @index_
+with text @text. If you want the action item to have markup, use
+gtk_entry_completion_insert_action_markup().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The index of the item to insert.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Text of the item to insert.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_prefix"
+              c:identifier="gtk_entry_completion_insert_prefix"
+              version="2.6">
+        <doc xml:whitespace="preserve">Requests a prefix insertion.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_inline_completion"
+              c:identifier="gtk_entry_completion_set_inline_completion"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets whether the common prefix of the possible completions should
+be automatically inserted in the entry.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="inline_completion" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to do inline completion</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_inline_selection"
+              c:identifier="gtk_entry_completion_set_inline_selection"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets whether it is possible to cycle through the possible completions
+inside the entry.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="inline_selection" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to do inline selection</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_match_func"
+              c:identifier="gtk_entry_completion_set_match_func"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the match function for @completion to be @func. The match function
+is used to determine if a row should or should not be in the completion
+list.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">The #GtkEntryCompletionMatchFunc to use.</doc>
+            <type name="EntryCompletionMatchFunc"
+                  c:type="GtkEntryCompletionMatchFunc"/>
+          </parameter>
+          <parameter name="func_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The user data for @func.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="func_notify"
+                     transfer-ownership="none"
+                     scope="async">
+            <doc xml:whitespace="preserve">Destroy notifier for @func_data.</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_minimum_key_length"
+              c:identifier="gtk_entry_completion_set_minimum_key_length"
+              version="2.4">
+        <doc xml:whitespace="preserve">Requires the length of the search key for @completion to be at least
+key takes a lot of time and will come up with meaningless results anyway
+(ie, a too large dataset).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The minimum length of the key in order to start completing.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_model"
+              c:identifier="gtk_entry_completion_set_model"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the model for a #GtkEntryCompletion. If @completion already has
+a model set, it will remove it before setting the new model.
+If model is %NULL, then it will unset the model.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="model" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">The #GtkTreeModel.</doc>
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_popup_completion"
+              c:identifier="gtk_entry_completion_set_popup_completion"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets whether the completions should be presented in a popup window.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="popup_completion" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to do popup completion</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_popup_set_width"
+              c:identifier="gtk_entry_completion_set_popup_set_width"
+              version="2.8">
+        <doc xml:whitespace="preserve">Sets whether the completion popup window will be resized to be the same
+width as the entry.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="popup_set_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to make the width of the popup the same as the entry</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_popup_single_match"
+              c:identifier="gtk_entry_completion_set_popup_single_match"
+              version="2.8">
+        <doc xml:whitespace="preserve">Sets whether the completion popup window will appear even if there is
+only a single match. You may want to set this to %FALSE if you
+are using &lt;link linkend="GtkEntryCompletion--inline-completion"&gt;inline
+completion&lt;/link&gt;.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="popup_single_match" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the popup should appear even for a single match</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_text_column"
+              c:identifier="gtk_entry_completion_set_text_column"
+              version="2.4">
+        <doc xml:whitespace="preserve">completion list with just strings. This function will set up @completion
+to have a list displaying all (and just) strings in the completion list,
+and to get those strings from @column in the model of @completion.
+This functions creates and adds a #GtkCellRendererText for the selected 
+column. If you need to set the text column, but don't want the cell 
+renderer, use g_object_set() to set the ::text_column property directly.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The column in the model of @completion to get strings from.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="inline-completion"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Determines whether the common prefix of the possible completions 
+should be inserted automatically in the entry. Note that this
+requires text-column to be set, even if you are using a custom
+match function.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="inline-selection"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Determines whether the possible completions on the popup
+will appear in the entry as you navigate through them.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="minimum-key-length"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="model" writable="1" transfer-ownership="none">
+        <type name="TreeModel"/>
+      </property>
+      <property name="popup-completion"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Determines whether the possible completions should be 
+shown in a popup window.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="popup-set-width"
+                version="2.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Determines whether the completions popup window will be
+resized to the width of the entry.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="popup-single-match"
+                version="2.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Determines whether the completions popup window will shown
+for a single possible completion. You probably want to set
+this to %FALSE if you are using 
+&lt;link linkend="GtkEntryCompletion--inline-completion"&gt;inline 
+completion&lt;/link&gt;.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="text-column"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The column of the model containing the strings.
+Note that the strings must be UTF-8.</doc>
+        <type name="gint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="EntryCompletionPrivate"
+              c:type="GtkEntryCompletionPrivate*"/>
+      </field>
+      <glib:signal name="action-activated" version="2.4">
+        <doc xml:whitespace="preserve">Gets emitted when an action is activated.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the activated action</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="cursor-on-match" version="2.12">
+        <doc xml:whitespace="preserve">Gets emitted when a match from the cursor is on a match
+of the list. The default behaviour is to replace the contents
+of the entry with the contents of the text column in the row
+pointed to by @iter.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the signal has been handled</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkTreeModel containing the matches</doc>
+            <type name="TreeModel"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTreeIter positioned at the selected match</doc>
+            <type name="TreeIter"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="insert-prefix" version="2.6">
+        <doc xml:whitespace="preserve">Gets emitted when the inline autocompletion is triggered.
+The default behaviour is to make the entry display the
+whole prefix and select the newly inserted part.
+Applications may connect to this signal in order to insert only a
+smaller part of the @prefix into the entry - e.g. the entry used in
+the #GtkFileChooser inserts only the part of the prefix up to the
+next '/'.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the signal has been handled</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the common prefix of all possible completions</doc>
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="match-selected" version="2.4">
+        <doc xml:whitespace="preserve">Gets emitted when a match from the list is selected.
+The default behaviour is to replace the contents of the
+entry with the contents of the text column in the row
+pointed to by @iter.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the signal has been handled</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkTreeModel containing the matches</doc>
+            <type name="TreeModel"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTreeIter positioned at the selected match</doc>
+            <type name="TreeIter"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="EntryCompletionClass"
+            c:type="GtkEntryCompletionClass"
+            glib:is-gtype-struct-for="EntryCompletion">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="match_selected">
+        <callback name="match_selected">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="completion" transfer-ownership="none">
+              <type name="EntryCompletion" c:type="GtkEntryCompletion*"/>
+            </parameter>
+            <parameter name="model" transfer-ownership="none">
+              <type name="TreeModel" c:type="GtkTreeModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="action_activated">
+        <callback name="action_activated">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="completion" transfer-ownership="none">
+              <type name="EntryCompletion" c:type="GtkEntryCompletion*"/>
+            </parameter>
+            <parameter name="index_" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="insert_prefix">
+        <callback name="insert_prefix">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="completion" transfer-ownership="none">
+              <type name="EntryCompletion" c:type="GtkEntryCompletion*"/>
+            </parameter>
+            <parameter name="prefix" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cursor_on_match">
+        <callback name="cursor_on_match">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="completion" transfer-ownership="none">
+              <type name="EntryCompletion" c:type="GtkEntryCompletion*"/>
+            </parameter>
+            <parameter name="model" transfer-ownership="none">
+              <type name="TreeModel" c:type="GtkTreeModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved0" introspectable="0">
+        <callback name="_gtk_reserved0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="EntryCompletionMatchFunc"
+              c:type="GtkEntryCompletionMatchFunc">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="completion" transfer-ownership="none">
+          <type name="EntryCompletion" c:type="GtkEntryCompletion*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="TreeIter" c:type="GtkTreeIter*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="EntryCompletionPrivate"
+            c:type="GtkEntryCompletionPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="EntryIconPosition"
+                 glib:type-name="GtkEntryIconPosition"
+                 glib:get-type="gtk_entry_icon_position_get_type"
+                 c:type="GtkEntryIconPosition">
+      <member name="primary"
+              value="0"
+              c:identifier="GTK_ENTRY_ICON_PRIMARY"
+              glib:nick="primary"/>
+      <member name="secondary"
+              value="1"
+              c:identifier="GTK_ENTRY_ICON_SECONDARY"
+              glib:nick="secondary"/>
+    </enumeration>
+    <class name="EventBox"
+           c:symbol-prefix="event_box"
+           c:type="GtkEventBox"
+           parent="Bin"
+           glib:type-name="GtkEventBox"
+           glib:get-type="gtk_event_box_get_type"
+           glib:type-struct="EventBoxClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_event_box_new">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="get_above_child"
+              c:identifier="gtk_event_box_get_above_child"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether the event box window is above or below the
+windows of its child. See gtk_event_box_set_above_child() for
+details.
+of its child.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event box window is above the window</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_visible_window"
+              c:identifier="gtk_event_box_get_visible_window"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether the event box has a visible window.
+See gtk_event_box_set_visible_window() for details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event box window is visible</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_above_child"
+              c:identifier="gtk_event_box_set_above_child"
+              version="2.4">
+        <doc xml:whitespace="preserve">Set whether the event box window is positioned above the windows of its child,
+as opposed to below it. If the window is above, all events inside the
+event box will go to the event box. If the window is below, events
+in windows of child widgets will first got to that widget, and then
+to its parents.
+The default is to keep the window below the child.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="above_child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the event box window is above the windows of its child</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_visible_window"
+              c:identifier="gtk_event_box_set_visible_window"
+              version="2.4">
+        <doc xml:whitespace="preserve">Set whether the event box uses a visible or invisible child
+window. The default is to use visible windows.
+In an invisible window event box, the window that the
+event box creates is a %GDK_INPUT_ONLY window, which 
+means that it is invisible and only serves to receive
+events.
+A visible window event box creates a visible (%GDK_INPUT_OUTPUT)
+window that acts as the parent window for all the widgets  
+contained in the event box.
+You should generally make your event box invisible if
+you just want to trap events. Creating a visible window
+may cause artifacts that are visible to the user, especially
+if the user is using a theme with gradients or pixmaps.
+The main reason to create a non input-only event box is if
+you want to set the background to a different color or
+draw on it.
+&lt;note&gt;&lt;para&gt;
+There is one unexpected issue for an invisible event box that has its
+window below the child. (See gtk_event_box_set_above_child().)
+Since the input-only window is not an ancestor window of any windows
+that descendent widgets of the event box create, events on these 
+windows aren't propagated up by the windowing system, but only by GTK+.
+The practical effect of this is if an event isn't in the event
+mask for the descendant window (see gtk_widget_add_events()),  
+it won't be received by the event box. 
+&lt;/para&gt;&lt;para&gt;
+This problem doesn't occur for visible event boxes, because in
+that case, the event box window is actually the ancestor of the
+descendant windows, not just at the same place on the screen.
+&lt;/para&gt;&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible_window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">boolean value</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="above-child" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="visible-window" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="bin">
+        <type name="Bin" c:type="GtkBin"/>
+      </field>
+    </class>
+    <record name="EventBoxClass"
+            c:type="GtkEventBoxClass"
+            glib:is-gtype-struct-for="EventBox">
+      <field name="parent_class">
+        <type name="BinClass" c:type="GtkBinClass"/>
+      </field>
+    </record>
+    <class name="Expander"
+           c:symbol-prefix="expander"
+           c:type="GtkExpander"
+           parent="Bin"
+           glib:type-name="GtkExpander"
+           glib:get-type="gtk_expander_get_type"
+           glib:type-struct="ExpanderClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_expander_new" version="2.4">
+        <doc xml:whitespace="preserve">Creates a new expander using @label as the text of the label.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkExpander widget.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text of the label</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_mnemonic"
+                   c:identifier="gtk_expander_new_with_mnemonic"
+                   version="2.4">
+        <doc xml:whitespace="preserve">Creates a new expander using @label as the text of the label.
+If characters in @label are preceded by an underscore, they are underlined.
+If you need a literal underscore character in a label, use '__' (two 
+underscores). The first underlined character represents a keyboard 
+accelerator called a mnemonic.
+Pressing Alt and that key activates the button.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkExpander widget.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the text of the label with an underscore in front of the mnemonic character</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_expanded"
+              c:identifier="gtk_expander_get_expanded"
+              version="2.4">
+        <doc xml:whitespace="preserve">Queries a #GtkExpander and returns its current state. Returns %TRUE
+if the child widget is revealed.
+See gtk_expander_set_expanded().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current state of the expander.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_label"
+              c:identifier="gtk_expander_get_label"
+              version="2.4">
+        <doc xml:whitespace="preserve">Fetches the text from a label widget including any embedded
+underlines indicating mnemonics and Pango markup, as set by
+gtk_expander_set_label(). If the label text has not been set the
+return value will be %NULL. This will be the case if you create an
+empty button with gtk_button_new() to use as a container.
+Note that this function behaved differently in versions prior to
+2.14 and used to return the label text stripped of embedded
+underlines indicating mnemonics and Pango markup. This problem can
+be avoided by fetching the label text directly from the label
+widget.
+by the widget and must not be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The text of the label widget. This string is owned</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_label_fill"
+              c:identifier="gtk_expander_get_label_fill"
+              version="2.22">
+        <doc xml:whitespace="preserve">Returns whether the label widget will fill all available horizontal
+space allocated to @expander.
+space</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the label widget will fill all available horizontal</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_label_widget"
+              c:identifier="gtk_expander_get_label_widget"
+              version="2.4">
+        <doc xml:whitespace="preserve">Retrieves the label widget for the frame. See
+gtk_expander_set_label_widget().
+or %NULL if there is none.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the label widget,</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_spacing"
+              c:identifier="gtk_expander_get_spacing"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_expander_set_spacing().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">spacing between the expander and child.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_use_markup"
+              c:identifier="gtk_expander_get_use_markup"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether the label's text is interpreted as marked up with
+the &lt;link linkend="PangoMarkupFormat"&gt;Pango text markup
+language&lt;/link&gt;. See gtk_expander_set_use_markup ().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the label's text will be parsed for markup</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_use_underline"
+              c:identifier="gtk_expander_get_use_underline"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether an embedded underline in the expander label indicates a
+mnemonic. See gtk_expander_set_use_underline().
+indicates the mnemonic accelerator keys.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if an embedded underline in the expander label</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_expanded"
+              c:identifier="gtk_expander_set_expanded"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the state of the expander. Set to %TRUE, if you want
+the child widget to be revealed, and %FALSE if you want the
+child widget to be hidden.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="expanded" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the child widget is revealed</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_label"
+              c:identifier="gtk_expander_set_label"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the text of the label of the expander to @label.
+This will also clear any previously set labels.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_label_fill"
+              c:identifier="gtk_expander_set_label_fill"
+              version="2.22">
+        <doc xml:whitespace="preserve">Sets whether the label widget should fill all available horizontal space
+allocated to @expander.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label_fill" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the label should should fill all available horizontal space</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_label_widget"
+              c:identifier="gtk_expander_set_label_widget"
+              version="2.4">
+        <doc xml:whitespace="preserve">Set the label widget for the expander. This is the widget
+that will appear embedded alongside the expander arrow.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label_widget"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the new label widget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_spacing"
+              c:identifier="gtk_expander_set_spacing"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the spacing field of @expander, which is the number of pixels to
+place between expander and the child.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">distance between the expander and child in pixels.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_markup"
+              c:identifier="gtk_expander_set_use_markup"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets whether the text of the label contains markup in &lt;link
+linkend="PangoMarkupFormat"&gt;Pango's text markup
+language&lt;/link&gt;. See gtk_label_set_markup().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_markup" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the label's text should be parsed for markup</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_underline"
+              c:identifier="gtk_expander_set_use_underline"
+              version="2.4">
+        <doc xml:whitespace="preserve">If true, an underline in the text of the expander label indicates
+the next character should be used for the mnemonic accelerator key.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_underline" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if underlines in the text indicate mnemonics</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="expanded"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="label"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="label-fill"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="label-widget" writable="1" transfer-ownership="none">
+        <type name="Widget"/>
+      </property>
+      <property name="spacing" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="use-markup"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="use-underline"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="bin">
+        <type name="Bin" c:type="GtkBin"/>
+      </field>
+      <field name="priv">
+        <type name="ExpanderPrivate" c:type="GtkExpanderPrivate*"/>
+      </field>
+      <glib:signal name="activate">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ExpanderClass"
+            c:type="GtkExpanderClass"
+            glib:is-gtype-struct-for="Expander">
+      <field name="parent_class">
+        <type name="BinClass" c:type="GtkBinClass"/>
+      </field>
+      <field name="activate">
+        <callback name="activate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="expander" transfer-ownership="none">
+              <type name="Expander" c:type="GtkExpander*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="ExpanderPrivate" c:type="GtkExpanderPrivate" disguised="1">
+    </record>
+    <enumeration name="ExpanderStyle"
+                 glib:type-name="GtkExpanderStyle"
+                 glib:get-type="gtk_expander_style_get_type"
+                 c:type="GtkExpanderStyle">
+      <member name="collapsed"
+              value="0"
+              c:identifier="GTK_EXPANDER_COLLAPSED"
+              glib:nick="collapsed"/>
+      <member name="semi_collapsed"
+              value="1"
+              c:identifier="GTK_EXPANDER_SEMI_COLLAPSED"
+              glib:nick="semi-collapsed"/>
+      <member name="semi_expanded"
+              value="2"
+              c:identifier="GTK_EXPANDER_SEMI_EXPANDED"
+              glib:nick="semi-expanded"/>
+      <member name="expanded"
+              value="3"
+              c:identifier="GTK_EXPANDER_EXPANDED"
+              glib:nick="expanded"/>
+    </enumeration>
+    <interface name="FileChooser"
+               c:symbol-prefix="file_chooser"
+               c:type="GtkFileChooser"
+               glib:type-name="GtkFileChooser"
+               glib:get-type="gtk_file_chooser_get_type">
+      <prerequisite name="Widget"/>
+      <method name="add_filter"
+              c:identifier="gtk_file_chooser_add_filter"
+              version="2.4">
+        <doc xml:whitespace="preserve">Adds @filter to the list of filters that the user can select between.
+When a filter is selected, only files that are passed by that
+filter are displayed. 
+Note that the @chooser takes ownership of the filter, so you have to 
+ref and sink it if you want to keep a reference.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkFileFilter</doc>
+            <type name="FileFilter" c:type="GtkFileFilter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_shortcut_folder"
+              c:identifier="gtk_file_chooser_add_shortcut_folder"
+              version="2.4"
+              throws="1">
+        <doc xml:whitespace="preserve">Adds a folder to be displayed with the shortcut folders in a file chooser.
+Note that shortcut folders do not get saved, as they are provided by the
+application.  For example, you can use this to add a
+"/usr/share/mydrawprogram/Clipart" folder to the volume list.
+otherwise.  In the latter case, the @error will be set as appropriate.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the folder could be added successfully, %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="folder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">filename of the folder to add</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_shortcut_folder_uri"
+              c:identifier="gtk_file_chooser_add_shortcut_folder_uri"
+              version="2.4"
+              throws="1">
+        <doc xml:whitespace="preserve">Adds a folder URI to be displayed with the shortcut folders in a file
+chooser.  Note that shortcut folders do not get saved, as they are provided
+by the application.  For example, you can use this to add a
+"file:///usr/share/mydrawprogram/Clipart" folder to the volume list.
+otherwise.  In the latter case, the @error will be set as appropriate.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the folder could be added successfully, %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">URI of the folder to add</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_action"
+              c:identifier="gtk_file_chooser_get_action"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the type of operation that the file chooser is performing; see
+gtk_file_chooser_set_action().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the action that the file selector is performing</doc>
+          <type name="FileChooserAction" c:type="GtkFileChooserAction"/>
+        </return-value>
+      </method>
+      <method name="get_create_folders"
+              c:identifier="gtk_file_chooser_get_create_folders"
+              version="2.18">
+        <doc xml:whitespace="preserve">Gets whether file choser will offer to create new folders.
+See gtk_file_chooser_set_create_folders().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the New Folder button should be displayed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_current_folder"
+              c:identifier="gtk_file_chooser_get_current_folder"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the current folder of @chooser as a local filename.
+See gtk_file_chooser_set_current_folder().
+Note that this is the folder that the file chooser is currently displaying
+(e.g. "/home/username/Documents"), which is &lt;emphasis&gt;not the same&lt;/emphasis&gt;
+as the currently-selected folder if the chooser is in
+%GTK_FILE_CHOOSER_SELECT_FOLDER mode
+(e.g. "/home/username/Documents/selected-folder/".  To get the
+currently-selected folder in that mode, use gtk_file_chooser_get_uri() as the
+usual way to get the selection.
+path cannot be represented as a local filename.  Free with g_free().  This
+function will also return %NULL if the file chooser was unable to load the
+last folder that was requested from it; for example, as would be for calling
+gtk_file_chooser_set_current_folder() on a nonexistent folder.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the full path of the current folder, or %NULL if the current</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_current_folder_file"
+              c:identifier="gtk_file_chooser_get_current_folder_file"
+              version="2.14">
+        <doc xml:whitespace="preserve">Gets the current folder of @chooser as #GFile.
+See gtk_file_chooser_get_current_folder_uri().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GFile for the current folder.</doc>
+          <type name="Gio.File" c:type="GFile*"/>
+        </return-value>
+      </method>
+      <method name="get_current_folder_uri"
+              c:identifier="gtk_file_chooser_get_current_folder_uri"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the current folder of @chooser as an URI.
+See gtk_file_chooser_set_current_folder_uri().
+Note that this is the folder that the file chooser is currently displaying
+(e.g. "file:///home/username/Documents"), which is &lt;emphasis&gt;not the same&lt;/emphasis&gt;
+as the currently-selected folder if the chooser is in
+%GTK_FILE_CHOOSER_SELECT_FOLDER mode
+(e.g. "file:///home/username/Documents/selected-folder/".  To get the
+currently-selected folder in that mode, use gtk_file_chooser_get_uri() as the
+usual way to get the selection.
+function will also return %NULL if the file chooser was unable to load the
+last folder that was requested from it; for example, as would be for calling
+gtk_file_chooser_set_current_folder_uri() on a nonexistent folder.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the URI for the current folder.  Free with g_free().  This</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_do_overwrite_confirmation"
+              c:identifier="gtk_file_chooser_get_do_overwrite_confirmation"
+              version="2.8">
+        <doc xml:whitespace="preserve">Queries whether a file chooser is set to confirm for overwriting when the user
+types a file name that already exists.
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the file chooser will present a confirmation dialog;</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_extra_widget"
+              c:identifier="gtk_file_chooser_get_extra_widget"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the current preview widget; see
+gtk_file_chooser_set_extra_widget().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current extra widget, or %NULL</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_file"
+              c:identifier="gtk_file_chooser_get_file"
+              version="2.14">
+        <doc xml:whitespace="preserve">Gets the #GFile for the currently selected file in
+the file selector. If multiple files are selected,
+one of the files will be returned at random.
+If the file chooser is in folder mode, this function returns the selected
+folder.
+use g_object_unref() to release it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a selected #GFile. You own the returned file;</doc>
+          <type name="Gio.File" c:type="GFile*"/>
+        </return-value>
+      </method>
+      <method name="get_filename"
+              c:identifier="gtk_file_chooser_get_filename"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the filename for the currently selected file in
+the file selector. If multiple files are selected,
+one of the filenames will be returned at random.
+If the file chooser is in folder mode, this function returns the selected
+folder.
+if no file is selected, or the selected file can't
+be represented with a local filename. Free with g_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The currently selected filename, or %NULL</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_filenames"
+              c:identifier="gtk_file_chooser_get_filenames"
+              version="2.4">
+        <doc xml:whitespace="preserve">Lists all the selected files and subfolders in the current folder of
+folder cannot be represented as local filenames they will be ignored. (See
+gtk_file_chooser_get_uris())
+files and subfolders in the current folder. Free the returned list
+with g_slist_free(), and the filenames with g_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSList containing the filenames of all selected</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_files"
+              c:identifier="gtk_file_chooser_get_files"
+              version="2.14">
+        <doc xml:whitespace="preserve">Lists all the selected files and subfolders in the current folder of @chooser
+as #GFile. An internal function, see gtk_file_chooser_get_uris().
+file and subfolder in the current folder.  Free the returned list
+with g_slist_free(), and the files with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSList containing a #GFile for each selected</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_filter"
+              c:identifier="gtk_file_chooser_get_filter"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the current filter; see gtk_file_chooser_set_filter().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current filter, or %NULL</doc>
+          <type name="FileFilter" c:type="GtkFileFilter*"/>
+        </return-value>
+      </method>
+      <method name="get_local_only"
+              c:identifier="gtk_file_chooser_get_local_only"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets whether only local files can be selected in the
+file selector. See gtk_file_chooser_set_local_only()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if only local files can be selected.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_preview_file"
+              c:identifier="gtk_file_chooser_get_preview_file"
+              version="2.14">
+        <doc xml:whitespace="preserve">Gets the #GFile that should be previewed in a custom preview
+Internal function, see gtk_file_chooser_get_preview_uri().
+or %NULL if no file is selected. Free with g_object_unref().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GFile for the file to preview,</doc>
+          <type name="Gio.File" c:type="GFile*"/>
+        </return-value>
+      </method>
+      <method name="get_preview_filename"
+              c:identifier="gtk_file_chooser_get_preview_filename"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the filename that should be previewed in a custom preview
+widget. See gtk_file_chooser_set_preview_widget().
+is selected, or if the selected file cannot be represented
+as a local filename. Free with g_free()</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the filename to preview, or %NULL if no file</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_preview_uri"
+              c:identifier="gtk_file_chooser_get_preview_uri"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the URI that should be previewed in a custom preview
+widget. See gtk_file_chooser_set_preview_widget().
+selected. Free with g_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the URI for the file to preview, or %NULL if no file is</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_preview_widget"
+              c:identifier="gtk_file_chooser_get_preview_widget"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the current preview widget; see
+gtk_file_chooser_set_preview_widget().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current preview widget, or %NULL</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_preview_widget_active"
+              c:identifier="gtk_file_chooser_get_preview_widget_active"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets whether the preview widget set by gtk_file_chooser_set_preview_widget()
+should be shown for the current filename. See
+gtk_file_chooser_set_preview_widget_active().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the preview widget is active for the current filename.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_select_multiple"
+              c:identifier="gtk_file_chooser_get_select_multiple"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets whether multiple files can be selected in the file
+selector. See gtk_file_chooser_set_select_multiple().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if multiple files can be selected.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_show_hidden"
+              c:identifier="gtk_file_chooser_get_show_hidden"
+              version="2.6">
+        <doc xml:whitespace="preserve">Gets whether hidden files and folders are displayed in the file selector.   
+See gtk_file_chooser_set_show_hidden().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if hidden files and folders are displayed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_uri"
+              c:identifier="gtk_file_chooser_get_uri"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the URI for the currently selected file in
+the file selector. If multiple files are selected,
+one of the filenames will be returned at random.
+If the file chooser is in folder mode, this function returns the selected
+folder.
+if no file is selected. Free with g_free()</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The currently selected URI, or %NULL</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_uris"
+              c:identifier="gtk_file_chooser_get_uris"
+              version="2.4">
+        <doc xml:whitespace="preserve">Lists all the selected files and subfolders in the current folder of
+files and subfolders in the current folder. Free the returned list
+with g_slist_free(), and the filenames with g_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSList containing the URIs of all selected</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_use_preview_label"
+              c:identifier="gtk_file_chooser_get_use_preview_label">
+        <doc xml:whitespace="preserve">Gets whether a stock label should be drawn with the name of the previewed
+file.  See gtk_file_chooser_set_use_preview_label().
+name of the previewed file, %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the file chooser is set to display a label with the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="list_filters"
+              c:identifier="gtk_file_chooser_list_filters"
+              version="2.4">
+        <doc xml:whitespace="preserve">Lists the current set of user-selectable filters; see
+gtk_file_chooser_add_filter(), gtk_file_chooser_remove_filter().
+user selectable filters. The contents of the list are
+owned by GTK+, but you must free the list itself with
+g_slist_free() when you are done with it.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a #GSList containing the current set of</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="list_shortcut_folder_uris"
+              c:identifier="gtk_file_chooser_list_shortcut_folder_uris"
+              version="2.4">
+        <doc xml:whitespace="preserve">Queries the list of shortcut folders in the file chooser, as set by
+gtk_file_chooser_add_shortcut_folder_uri().
+folders.  Free the returned list with g_slist_free(), and the URIs with
+g_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A list of folder URIs, or %NULL if there are no shortcut</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="list_shortcut_folders"
+              c:identifier="gtk_file_chooser_list_shortcut_folders"
+              version="2.4">
+        <doc xml:whitespace="preserve">Queries the list of shortcut folders in the file chooser, as set by
+gtk_file_chooser_add_shortcut_folder().
+folders.  Free the returned list with g_slist_free(), and the filenames with
+g_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A list of folder filenames, or %NULL if there are no shortcut</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="remove_filter"
+              c:identifier="gtk_file_chooser_remove_filter"
+              version="2.4">
+        <doc xml:whitespace="preserve">Removes @filter from the list of filters that the user can select between.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkFileFilter</doc>
+            <type name="FileFilter" c:type="GtkFileFilter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_shortcut_folder"
+              c:identifier="gtk_file_chooser_remove_shortcut_folder"
+              version="2.4"
+              throws="1">
+        <doc xml:whitespace="preserve">Removes a folder from a file chooser's list of shortcut folders.
+In the latter case, the @error will be set as appropriate.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation succeeds, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="folder" transfer-ownership="none">
+            <doc xml:whitespace="preserve">filename of the folder to remove</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_shortcut_folder_uri"
+              c:identifier="gtk_file_chooser_remove_shortcut_folder_uri"
+              version="2.4"
+              throws="1">
+        <doc xml:whitespace="preserve">Removes a folder URI from a file chooser's list of shortcut folders.
+In the latter case, the @error will be set as appropriate.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation succeeds, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">URI of the folder to remove</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_all"
+              c:identifier="gtk_file_chooser_select_all"
+              version="2.4">
+        <doc xml:whitespace="preserve">Selects all the files in the current folder of a file chooser.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="select_file"
+              c:identifier="gtk_file_chooser_select_file"
+              version="2.14"
+              throws="1">
+        <doc xml:whitespace="preserve">Selects the file referred to by @file. An internal function. See
+_gtk_file_chooser_select_uri().
+selected successfully, %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if both the folder could be changed and the path was</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the file to select</doc>
+            <type name="Gio.File" c:type="GFile*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_filename"
+              c:identifier="gtk_file_chooser_select_filename"
+              version="2.4">
+        <doc xml:whitespace="preserve">Selects a filename. If the file name isn't in the current
+folder of @chooser, then the current folder of @chooser will
+be changed to the folder containing @filename.
+selected successfully, %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if both the folder could be changed and the file was</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the filename to select</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_uri"
+              c:identifier="gtk_file_chooser_select_uri"
+              version="2.4">
+        <doc xml:whitespace="preserve">Selects the file to by @uri. If the URI doesn't refer to a
+file in the current folder of @chooser, then the current folder of
+selected successfully, %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if both the folder could be changed and the URI was</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the URI to select</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_action"
+              c:identifier="gtk_file_chooser_set_action"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the type of operation that the chooser is performing; the
+user interface is adapted to suit the selected action. For example,
+an option to create a new folder might be shown if the action is
+%GTK_FILE_CHOOSER_ACTION_SAVE but not if the action is
+%GTK_FILE_CHOOSER_ACTION_OPEN.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action that the file selector is performing</doc>
+            <type name="FileChooserAction" c:type="GtkFileChooserAction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_create_folders"
+              c:identifier="gtk_file_chooser_set_create_folders"
+              version="2.18">
+        <doc xml:whitespace="preserve">Sets whether file choser will offer to create new folders.
+This is only relevant if the action is not set to be 
+%GTK_FILE_CHOOSER_ACTION_OPEN.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="create_folders" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the New Folder button should be displayed</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_current_folder"
+              c:identifier="gtk_file_chooser_set_current_folder"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the current folder for @chooser from a local filename.
+The user will be shown the full contents of the current folder,
+plus user interface elements for navigating to other folders.
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the folder could be changed successfully, %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the full path of the new current folder</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_current_folder_file"
+              c:identifier="gtk_file_chooser_set_current_folder_file"
+              version="2.14"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets the current folder for @chooser from a #GFile.
+Internal function, see gtk_file_chooser_set_current_folder_uri().
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the folder could be changed successfully, %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GFile for the new folder</doc>
+            <type name="Gio.File" c:type="GFile*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_current_folder_uri"
+              c:identifier="gtk_file_chooser_set_current_folder_uri"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the current folder for @chooser from an URI.
+The user will be shown the full contents of the current folder,
+plus user interface elements for navigating to other folders.
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the folder could be changed successfully, %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the URI for the new current folder</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_current_name"
+              c:identifier="gtk_file_chooser_set_current_name"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the current name in the file selector, as if entered
+by the user. Note that the name passed in here is a UTF-8
+string rather than a filename. This function is meant for
+such uses as a suggested name in a "Save As..." dialog.
+If you want to preselect a particular existing file, you should use
+gtk_file_chooser_set_filename() or gtk_file_chooser_set_uri() instead.
+Please see the documentation for those functions for an example of using
+gtk_file_chooser_set_current_name() as well.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the filename to use, as a UTF-8 string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_do_overwrite_confirmation"
+              c:identifier="gtk_file_chooser_set_do_overwrite_confirmation"
+              version="2.8">
+        <doc xml:whitespace="preserve">Sets whether a file chooser in %GTK_FILE_CHOOSER_ACTION_SAVE mode will present
+a confirmation dialog if the user types a file name that already exists.  This
+is %FALSE by default.
+Regardless of this setting, the @chooser will emit the
+#GtkFileChooser::confirm-overwrite signal when appropriate.
+If all you need is the stock confirmation dialog, set this property to %TRUE.
+You can override the way confirmation is done by actually handling the
+#GtkFileChooser::confirm-overwrite signal; please refer to its documentation
+for the details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="do_overwrite_confirmation"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to confirm overwriting in save mode</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_extra_widget"
+              c:identifier="gtk_file_chooser_set_extra_widget"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets an application-supplied widget to provide extra options to the user.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="extra_widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">widget for extra options</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_file"
+              c:identifier="gtk_file_chooser_set_file"
+              version="2.14"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets @file as the current filename for the file chooser, by changing
+to the file's parent folder and actually selecting the file in list.  If
+the @chooser is in %GTK_FILE_CHOOSER_ACTION_SAVE mode, the file's base name
+will also appear in the dialog's file name entry.
+If the file name isn't in the current folder of @chooser, then the current
+folder of @chooser will be changed to the folder containing @filename. This
+is equivalent to a sequence of gtk_file_chooser_unselect_all() followed by
+gtk_file_chooser_select_filename().
+Note that the file must exist, or nothing will be done except
+for the directory change.
+If you are implementing a &lt;guimenuitem&gt;File/Save As...&lt;/guimenuitem&gt; dialog,
+you should use this function if you already have a file name to which the
+user may save; for example, when the user opens an existing file and then
+does &lt;guimenuitem&gt;File/Save As...&lt;/guimenuitem&gt; on it.  If you don't have
+a file name already &amp;mdash; for example, if the user just created a new
+file and is saving it for the first time, do not call this function.
+Instead, use something similar to this:
+|[
+if (document_is_new)
+{
+/&amp;ast; the user just created a new document &amp;ast;/
+gtk_file_chooser_set_current_folder_file (chooser, default_file_for_saving);
+gtk_file_chooser_set_current_name (chooser, "Untitled document");
+}
+else
+{
+/&amp;ast; the user edited an existing document &amp;ast;/
+gtk_file_chooser_set_file (chooser, existing_file);
+}
+]|
+selected successfully, %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if both the folder could be changed and the file was</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GFile to set as current</doc>
+            <type name="Gio.File" c:type="GFile*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_filename"
+              c:identifier="gtk_file_chooser_set_filename"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets @filename as the current filename for the file chooser, by changing
+to the file's parent folder and actually selecting the file in list.  If
+the @chooser is in %GTK_FILE_CHOOSER_ACTION_SAVE mode, the file's base name
+will also appear in the dialog's file name entry.
+If the file name isn't in the current folder of @chooser, then the current
+folder of @chooser will be changed to the folder containing @filename. This
+is equivalent to a sequence of gtk_file_chooser_unselect_all() followed by
+gtk_file_chooser_select_filename().
+Note that the file must exist, or nothing will be done except
+for the directory change.
+If you are implementing a &lt;guimenuitem&gt;File/Save As...&lt;/guimenuitem&gt; dialog,
+you should use this function if you already have a file name to which the 
+user may save; for example, when the user opens an existing file and then 
+does &lt;guimenuitem&gt;File/Save As...&lt;/guimenuitem&gt; on it.  If you don't have 
+a file name already &amp;mdash; for example, if the user just created a new 
+file and is saving it for the first time, do not call this function.  
+Instead, use something similar to this:
+|[
+if (document_is_new)
+{
+/&amp;ast; the user just created a new document &amp;ast;/
+gtk_file_chooser_set_current_folder (chooser, default_folder_for_saving);
+gtk_file_chooser_set_current_name (chooser, "Untitled document");
+}
+else
+{
+/&amp;ast; the user edited an existing document &amp;ast;/ 
+gtk_file_chooser_set_filename (chooser, existing_filename);
+}
+]|
+selected successfully, %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if both the folder could be changed and the file was</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the filename to set as current</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_filter"
+              c:identifier="gtk_file_chooser_set_filter"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the current filter; only the files that pass the
+filter will be displayed. If the user-selectable list of filters
+is non-empty, then the filter should be one of the filters
+in that list. Setting the current filter when the list of
+filters is empty is useful if you want to restrict the displayed
+set of files without letting the user change it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkFileFilter</doc>
+            <type name="FileFilter" c:type="GtkFileFilter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_local_only"
+              c:identifier="gtk_file_chooser_set_local_only"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets whether only local files can be selected in the
+file selector. If @local_only is %TRUE (the default),
+then the selected file are files are guaranteed to be
+accessible through the operating systems native file
+file system and therefore the application only
+needs to worry about the filename functions in
+#GtkFileChooser, like gtk_file_chooser_get_filename(),
+rather than the URI functions like
+gtk_file_chooser_get_uri(),</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="local_only" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if only local files can be selected</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_preview_widget"
+              c:identifier="gtk_file_chooser_set_preview_widget"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets an application-supplied widget to use to display a custom preview
+of the currently selected file. To implement a preview, after setting the
+preview widget, you connect to the #GtkFileChooser::update-preview
+signal, and call gtk_file_chooser_get_preview_filename() or
+gtk_file_chooser_get_preview_uri() on each change. If you can
+display a preview of the new file, update your widget and
+set the preview active using gtk_file_chooser_set_preview_widget_active().
+Otherwise, set the preview inactive.
+When there is no application-supplied preview widget, or the
+application-supplied preview widget is not active, the file chooser
+may display an internally generated preview of the current file or
+it may display no preview at all.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="preview_widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">widget for displaying preview.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_preview_widget_active"
+              c:identifier="gtk_file_chooser_set_preview_widget_active"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets whether the preview widget set by
+gtk_file_chooser_set_preview_widget() should be shown for the
+current filename. When @active is set to false, the file chooser
+may display an internally generated preview of the current file
+or it may display no preview at all. See
+gtk_file_chooser_set_preview_widget() for more details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="active" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to display the user-specified preview widget</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_select_multiple"
+              c:identifier="gtk_file_chooser_set_select_multiple"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets whether multiple files can be selected in the file selector.  This is
+only relevant if the action is set to be %GTK_FILE_CHOOSER_ACTION_OPEN or
+%GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="select_multiple" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if multiple files can be selected.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_show_hidden"
+              c:identifier="gtk_file_chooser_set_show_hidden"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets whether hidden files and folders are displayed in the file selector.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_hidden" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if hidden files and folders should be displayed.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_uri"
+              c:identifier="gtk_file_chooser_set_uri"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the file referred to by @uri as the current file for the file chooser,
+by changing to the URI's parent folder and actually selecting the URI in the
+list.  If the @chooser is %GTK_FILE_CHOOSER_ACTION_SAVE mode, the URI's base
+name will also appear in the dialog's file name entry.
+If the URI isn't in the current folder of @chooser, then the current folder
+of @chooser will be changed to the folder containing @uri. This is equivalent
+to a sequence of gtk_file_chooser_unselect_all() followed by
+gtk_file_chooser_select_uri().
+Note that the URI must exist, or nothing will be done except for the 
+directory change.
+If you are implementing a &lt;guimenuitem&gt;File/Save As...&lt;/guimenuitem&gt; dialog,
+you should use this function if you already have a file name to which the 
+user may save; for example, when the user opens an existing file and then 
+does &lt;guimenuitem&gt;File/Save As...&lt;/guimenuitem&gt; on it.  If you don't have 
+a file name already &amp;mdash; for example, if the user just created a new 
+file and is saving it for the first time, do not call this function.  
+Instead, use something similar to this:
+|[
+if (document_is_new)
+{
+/&amp;ast; the user just created a new document &amp;ast;/
+gtk_file_chooser_set_current_folder_uri (chooser, default_folder_for_saving);
+gtk_file_chooser_set_current_name (chooser, "Untitled document");
+}
+else
+{
+/&amp;ast; the user edited an existing document &amp;ast;/ 
+gtk_file_chooser_set_uri (chooser, existing_uri);
+}
+]|
+selected successfully, %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if both the folder could be changed and the URI was</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the URI to set as current</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_preview_label"
+              c:identifier="gtk_file_chooser_set_use_preview_label"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets whether the file chooser should display a stock label with the name of
+the file that is being previewed; the default is %TRUE.  Applications that
+want to draw the whole preview area themselves should set this to %FALSE and
+display the name themselves in their preview widget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to display a stock label with the name of the previewed file</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unselect_all"
+              c:identifier="gtk_file_chooser_unselect_all"
+              version="2.4">
+        <doc xml:whitespace="preserve">Unselects all the files in the current folder of a file chooser.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unselect_file"
+              c:identifier="gtk_file_chooser_unselect_file"
+              version="2.14">
+        <doc xml:whitespace="preserve">Unselects the file referred to by @file. If the file is not in the current
+directory, does not exist, or is otherwise not currently selected, does nothing.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="file" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GFile</doc>
+            <type name="Gio.File" c:type="GFile*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unselect_filename"
+              c:identifier="gtk_file_chooser_unselect_filename"
+              version="2.4">
+        <doc xml:whitespace="preserve">Unselects a currently selected filename. If the filename
+is not in the current directory, does not exist, or
+is otherwise not currently selected, does nothing.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the filename to unselect</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unselect_uri"
+              c:identifier="gtk_file_chooser_unselect_uri"
+              version="2.4">
+        <doc xml:whitespace="preserve">Unselects the file referred to by @uri. If the file
+is not in the current directory, does not exist, or
+is otherwise not currently selected, does nothing.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the URI to unselect</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="action" writable="1" transfer-ownership="none">
+        <type name="FileChooserAction"/>
+      </property>
+      <property name="create-folders"
+                version="2.18"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether a file chooser not in %GTK_FILE_CHOOSER_ACTION_OPEN mode
+will offer the user to create new folders.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="do-overwrite-confirmation"
+                version="2.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether a file chooser in %GTK_FILE_CHOOSER_ACTION_SAVE mode
+will present an overwrite confirmation dialog if the user
+selects a file name that already exists.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="extra-widget" writable="1" transfer-ownership="none">
+        <type name="Widget"/>
+      </property>
+      <property name="filter" writable="1" transfer-ownership="none">
+        <type name="FileFilter"/>
+      </property>
+      <property name="local-only" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="preview-widget" writable="1" transfer-ownership="none">
+        <type name="Widget"/>
+      </property>
+      <property name="preview-widget-active"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="select-multiple" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="show-hidden" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="use-preview-label"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <glib:signal name="confirm-overwrite" version="2.8">
+        <doc xml:whitespace="preserve">This signal gets emitted whenever it is appropriate to present a
+confirmation dialog when the user has selected a file name that
+already exists.  The signal only gets emitted when the file
+chooser is in %GTK_FILE_CHOOSER_ACTION_SAVE mode.
+Most applications just need to turn on the
+#GtkFileChooser:do-overwrite-confirmation property (or call the
+gtk_file_chooser_set_do_overwrite_confirmation() function), and
+they will automatically get a stock confirmation dialog.
+Applications which need to customize this behavior should do
+that, and also connect to the #GtkFileChooser::confirm-overwrite
+signal.
+A signal handler for this signal must return a
+#GtkFileChooserConfirmation value, which indicates the action to
+take.  If the handler determines that the user wants to select a
+different filename, it should return
+%GTK_FILE_CHOOSER_CONFIRMATION_SELECT_AGAIN.  If it determines
+that the user is satisfied with his choice of file name, it
+should return %GTK_FILE_CHOOSER_CONFIRMATION_ACCEPT_FILENAME.
+On the other hand, if it determines that the stock confirmation
+dialog should be used, it should return
+%GTK_FILE_CHOOSER_CONFIRMATION_CONFIRM. The following example
+illustrates this.
+&lt;example id="gtkfilechooser-confirmation"&gt;
+&lt;title&gt;Custom confirmation&lt;/title&gt;
+&lt;programlisting&gt;
+static GtkFileChooserConfirmation
+confirm_overwrite_callback (GtkFileChooser *chooser, gpointer data)
+{
+char *uri;
+uri = gtk_file_chooser_get_uri (chooser);
+if (is_uri_read_only (uri))
+{
+if (user_wants_to_replace_read_only_file (uri))
+return GTK_FILE_CHOOSER_CONFIRMATION_ACCEPT_FILENAME;
+else
+return GTK_FILE_CHOOSER_CONFIRMATION_SELECT_AGAIN;
+} else
+return GTK_FILE_CHOOSER_CONFIRMATION_CONFIRM; // fall back to the default dialog
+}
+...
+chooser = gtk_file_chooser_dialog_new (...);
+gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE);
+g_signal_connect (chooser, "confirm-overwrite",
+G_CALLBACK (confirm_overwrite_callback), NULL);
+if (gtk_dialog_run (chooser) == GTK_RESPONSE_ACCEPT)
+save_to_file (gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (chooser));
+gtk_widget_destroy (chooser);
+&lt;/programlisting&gt;
+&lt;/example&gt;
+action to take after emitting the signal.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkFileChooserConfirmation value that indicates which</doc>
+          <type name="FileChooserConfirmation"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="current-folder-changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="file-activated">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="selection-changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="update-preview">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </interface>
+    <enumeration name="FileChooserAction"
+                 glib:type-name="GtkFileChooserAction"
+                 glib:get-type="gtk_file_chooser_action_get_type"
+                 c:type="GtkFileChooserAction">
+      <doc xml:whitespace="preserve">Describes whether a #GtkFileChooser is being used to open existing files
+or to save to a possibly new file.</doc>
+      <member name="open"
+              value="0"
+              c:identifier="GTK_FILE_CHOOSER_ACTION_OPEN"
+              glib:nick="open"/>
+      <member name="save"
+              value="1"
+              c:identifier="GTK_FILE_CHOOSER_ACTION_SAVE"
+              glib:nick="save"/>
+      <member name="select_folder"
+              value="2"
+              c:identifier="GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER"
+              glib:nick="select-folder"/>
+      <member name="create_folder"
+              value="3"
+              c:identifier="GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER"
+              glib:nick="create-folder"/>
+    </enumeration>
+    <class name="FileChooserButton"
+           c:symbol-prefix="file_chooser_button"
+           c:type="GtkFileChooserButton"
+           parent="HBox"
+           glib:type-name="GtkFileChooserButton"
+           glib:get-type="gtk_file_chooser_button_get_type"
+           glib:type-struct="FileChooserButtonClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="FileChooser"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new"
+                   c:identifier="gtk_file_chooser_button_new"
+                   version="2.6">
+        <doc xml:whitespace="preserve">Creates a new file-selecting button widget.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new button widget.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the title of the browse dialog.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="action" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the open mode for the widget.</doc>
+            <type name="FileChooserAction" c:type="GtkFileChooserAction"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_dialog"
+                   c:identifier="gtk_file_chooser_button_new_with_dialog"
+                   version="2.6">
+        <doc xml:whitespace="preserve">Creates a #GtkFileChooserButton widget which uses @dialog as its
+file-picking window.
+Note that @dialog must be a #GtkDialog (or subclass) which
+implements the #GtkFileChooser interface and must not have
+%GTK_DIALOG_DESTROY_WITH_PARENT set.
+Also note that the dialog needs to have its confirmative button
+added with response %GTK_RESPONSE_ACCEPT or %GTK_RESPONSE_OK in
+order for the button to take over the file selected in the dialog.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new button widget.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="dialog" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the widget to use as dialog</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_focus_on_click"
+              c:identifier="gtk_file_chooser_button_get_focus_on_click"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns whether the button grabs focus when it is clicked with the mouse.
+See gtk_file_chooser_button_set_focus_on_click().
+the mouse.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the button grabs focus when it is clicked with</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_title"
+              c:identifier="gtk_file_chooser_button_get_title"
+              version="2.6">
+        <doc xml:whitespace="preserve">Retrieves the title of the browse dialog used by @button. The returned value
+should not be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the browse dialog's title.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_width_chars"
+              c:identifier="gtk_file_chooser_button_get_width_chars"
+              version="2.6">
+        <doc xml:whitespace="preserve">Retrieves the width in characters of the @button widget's entry and/or label.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an integer width (in characters) that the button will use to size itself.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_focus_on_click"
+              c:identifier="gtk_file_chooser_button_set_focus_on_click"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets whether the button will grab focus when it is clicked with the mouse.
+Making mouse clicks not grab focus is useful in places like toolbars where
+you don't want the keyboard focus removed from the main area of the
+application.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="focus_on_click" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the button grabs focus when clicked with the mouse</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_title"
+              c:identifier="gtk_file_chooser_button_set_title"
+              version="2.6">
+        <doc xml:whitespace="preserve">Modifies the @title of the browse dialog used by @button.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new browse dialog title.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_width_chars"
+              c:identifier="gtk_file_chooser_button_set_width_chars"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the width (in characters) that @button will use to @n_chars.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new width, in characters.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="dialog"
+                version="2.6"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Instance of the #GtkFileChooserDialog associated with the button.</doc>
+        <type name="FileChooser"/>
+      </property>
+      <property name="focus-on-click"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #GtkFileChooserButton button grabs focus when it is clicked
+with the mouse.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="title"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Title to put on the #GtkFileChooserDialog associated with the button.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="width-chars"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The width of the entry and label inside the button, in characters.</doc>
+        <type name="gint"/>
+      </property>
+      <field name="parent">
+        <type name="HBox" c:type="GtkHBox"/>
+      </field>
+      <field name="priv">
+        <type name="FileChooserButtonPrivate"
+              c:type="GtkFileChooserButtonPrivate*"/>
+      </field>
+      <glib:signal name="file-set" version="2.12">
+        <doc xml:whitespace="preserve">The ::file-set signal is emitted when the user selects a file.
+Note that this signal is only emitted when the &lt;emphasis&gt;user&lt;/emphasis&gt;
+changes the file.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="FileChooserButtonClass"
+            c:type="GtkFileChooserButtonClass"
+            glib:is-gtype-struct-for="FileChooserButton">
+      <field name="parent_class">
+        <type name="HBoxClass" c:type="GtkHBoxClass"/>
+      </field>
+      <field name="file_set">
+        <callback name="file_set">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="fc" transfer-ownership="none">
+              <type name="FileChooserButton" c:type="GtkFileChooserButton*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="__gtk_reserved1">
+        <type name="gpointer" c:type="void*"/>
+      </field>
+      <field name="__gtk_reserved2">
+        <type name="gpointer" c:type="void*"/>
+      </field>
+      <field name="__gtk_reserved3">
+        <type name="gpointer" c:type="void*"/>
+      </field>
+      <field name="__gtk_reserved4">
+        <type name="gpointer" c:type="void*"/>
+      </field>
+      <field name="__gtk_reserved5">
+        <type name="gpointer" c:type="void*"/>
+      </field>
+      <field name="__gtk_reserved6">
+        <type name="gpointer" c:type="void*"/>
+      </field>
+      <field name="__gtk_reserved7">
+        <type name="gpointer" c:type="void*"/>
+      </field>
+    </record>
+    <record name="FileChooserButtonPrivate"
+            c:type="GtkFileChooserButtonPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="FileChooserConfirmation"
+                 version="2.8"
+                 glib:type-name="GtkFileChooserConfirmation"
+                 glib:get-type="gtk_file_chooser_confirmation_get_type"
+                 c:type="GtkFileChooserConfirmation">
+      <doc xml:whitespace="preserve">Used as a return value of handlers for the
+#GtkFileChooser::confirm-overwrite signal of a #GtkFileChooser. This
+value determines whether the file chooser will present the stock
+confirmation dialog, accept the user's choice of a filename, or
+let the user choose another filename.</doc>
+      <member name="confirm"
+              value="0"
+              c:identifier="GTK_FILE_CHOOSER_CONFIRMATION_CONFIRM"
+              glib:nick="confirm"/>
+      <member name="accept_filename"
+              value="1"
+              c:identifier="GTK_FILE_CHOOSER_CONFIRMATION_ACCEPT_FILENAME"
+              glib:nick="accept-filename"/>
+      <member name="select_again"
+              value="2"
+              c:identifier="GTK_FILE_CHOOSER_CONFIRMATION_SELECT_AGAIN"
+              glib:nick="select-again"/>
+    </enumeration>
+    <class name="FileChooserDialog"
+           c:symbol-prefix="file_chooser_dialog"
+           c:type="GtkFileChooserDialog"
+           parent="Dialog"
+           glib:type-name="GtkFileChooserDialog"
+           glib:get-type="gtk_file_chooser_dialog_get_type"
+           glib:type-struct="FileChooserDialogClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="FileChooser"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new"
+                   c:identifier="gtk_file_chooser_dialog_new"
+                   version="2.4"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #GtkFileChooserDialog.  This function is analogous to
+gtk_dialog_new_with_buttons().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkFileChooserDialog</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">Title of the dialog, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">Transient parent of the dialog, or %NULL</doc>
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+          <parameter name="action" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Open or save mode for the dialog</doc>
+            <type name="FileChooserAction" c:type="GtkFileChooserAction"/>
+          </parameter>
+          <parameter name="first_button_text"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">stock ID or text to go in the first button, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <field name="parent_instance">
+        <type name="Dialog" c:type="GtkDialog"/>
+      </field>
+      <field name="priv">
+        <type name="FileChooserDialogPrivate"
+              c:type="GtkFileChooserDialogPrivate*"/>
+      </field>
+    </class>
+    <record name="FileChooserDialogClass"
+            c:type="GtkFileChooserDialogClass"
+            glib:is-gtype-struct-for="FileChooserDialog">
+      <field name="parent_class">
+        <type name="DialogClass" c:type="GtkDialogClass"/>
+      </field>
+    </record>
+    <record name="FileChooserDialogPrivate"
+            c:type="GtkFileChooserDialogPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="FileChooserError"
+                 glib:type-name="GtkFileChooserError"
+                 glib:get-type="gtk_file_chooser_error_get_type"
+                 c:type="GtkFileChooserError"
+                 glib:error-quark="gtk_file_chooser_error_quark">
+      <doc xml:whitespace="preserve">These identify the various errors that can occur while calling
+#GtkFileChooser functions.</doc>
+      <member name="nonexistent"
+              value="0"
+              c:identifier="GTK_FILE_CHOOSER_ERROR_NONEXISTENT"
+              glib:nick="nonexistent"/>
+      <member name="bad_filename"
+              value="1"
+              c:identifier="GTK_FILE_CHOOSER_ERROR_BAD_FILENAME"
+              glib:nick="bad-filename"/>
+      <member name="already_exists"
+              value="2"
+              c:identifier="GTK_FILE_CHOOSER_ERROR_ALREADY_EXISTS"
+              glib:nick="already-exists"/>
+      <member name="incomplete_hostname"
+              value="3"
+              c:identifier="GTK_FILE_CHOOSER_ERROR_INCOMPLETE_HOSTNAME"
+              glib:nick="incomplete-hostname"/>
+    </enumeration>
+    <class name="FileChooserWidget"
+           c:symbol-prefix="file_chooser_widget"
+           c:type="GtkFileChooserWidget"
+           parent="VBox"
+           glib:type-name="GtkFileChooserWidget"
+           glib:get-type="gtk_file_chooser_widget_get_type"
+           glib:type-struct="FileChooserWidgetClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="FileChooser"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new"
+                   c:identifier="gtk_file_chooser_widget_new"
+                   version="2.4">
+        <doc xml:whitespace="preserve">Creates a new #GtkFileChooserWidget.  This is a file chooser widget that can
+be embedded in custom windows, and it is the same widget that is used by
+#GtkFileChooserDialog.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkFileChooserWidget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Open or save mode for the widget</doc>
+            <type name="FileChooserAction" c:type="GtkFileChooserAction"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <field name="parent_instance">
+        <type name="VBox" c:type="GtkVBox"/>
+      </field>
+      <field name="priv">
+        <type name="FileChooserWidgetPrivate"
+              c:type="GtkFileChooserWidgetPrivate*"/>
+      </field>
+    </class>
+    <record name="FileChooserWidgetClass"
+            c:type="GtkFileChooserWidgetClass"
+            glib:is-gtype-struct-for="FileChooserWidget">
+      <field name="parent_class">
+        <type name="VBoxClass" c:type="GtkVBoxClass"/>
+      </field>
+    </record>
+    <record name="FileChooserWidgetPrivate"
+            c:type="GtkFileChooserWidgetPrivate"
+            disguised="1">
+    </record>
+    <class name="FileFilter"
+           c:symbol-prefix="file_filter"
+           c:type="GtkFileFilter"
+           parent="Object"
+           glib:type-name="GtkFileFilter"
+           glib:get-type="gtk_file_filter_get_type">
+      <constructor name="new" c:identifier="gtk_file_filter_new" version="2.4">
+        <doc xml:whitespace="preserve">Creates a new #GtkFileFilter with no rules added to it.
+Such a filter doesn't accept any files, so is not
+particularly useful until you add rules with
+gtk_file_filter_add_mime_type(), gtk_file_filter_add_pattern(),
+or gtk_file_filter_add_custom(). To create a filter
+that accepts any file, use:
+|[
+GtkFileFilter *filter = gtk_file_filter_new ();
+gtk_file_filter_add_pattern (filter, "*");
+]|</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkFileFilter</doc>
+          <type name="FileFilter" c:type="GtkFileFilter*"/>
+        </return-value>
+      </constructor>
+      <method name="add_custom"
+              c:identifier="gtk_file_filter_add_custom"
+              version="2.4">
+        <doc xml:whitespace="preserve">Adds rule to a filter that allows files based on a custom callback
+function. The bitfield @needed which is passed in provides information
+about what sorts of information that the filter function needs;
+this allows GTK+ to avoid retrieving expensive information when
+it isn't needed by the filter.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="needed" transfer-ownership="none">
+            <doc xml:whitespace="preserve">bitfield of flags indicating the information that the custom filter function needs.</doc>
+            <type name="FileFilterFlags" c:type="GtkFileFilterFlags"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <doc xml:whitespace="preserve">callback function; if the function returns %TRUE, then the file will be displayed.</doc>
+            <type name="FileFilterFunc" c:type="GtkFileFilterFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to @func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">function to call to free @data when it is no longer needed.</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_mime_type"
+              c:identifier="gtk_file_filter_add_mime_type"
+              version="2.4">
+        <doc xml:whitespace="preserve">Adds a rule allowing a given mime type to @filter.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mime_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of a MIME type</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_pattern"
+              c:identifier="gtk_file_filter_add_pattern"
+              version="2.4">
+        <doc xml:whitespace="preserve">Adds a rule allowing a shell style glob to a filter.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pattern" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a shell style glob</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_pixbuf_formats"
+              c:identifier="gtk_file_filter_add_pixbuf_formats"
+              version="2.6">
+        <doc xml:whitespace="preserve">Adds a rule allowing image files in the formats supported
+by GdkPixbuf.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="filter"
+              c:identifier="gtk_file_filter_filter"
+              version="2.4">
+        <doc xml:whitespace="preserve">Tests whether a file should be displayed according to @filter.
+The #GtkFileFilterInfo structure @filter_info should include
+the fields returned from gtk_file_filter_get_needed().
+This function will not typically be used by applications; it
+is intended principally for use in the implementation of
+#GtkFileChooser.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the file should be displayed</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter_info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkFileFilterInfo structure containing information about a file.</doc>
+            <type name="FileFilterInfo" c:type="GtkFileFilterInfo*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_name"
+              c:identifier="gtk_file_filter_get_name"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the human-readable name for the filter. See gtk_file_filter_set_name().
+or %NULL. This value is owned by GTK+ and must not
+be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The human-readable name of the filter,</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_needed"
+              c:identifier="gtk_file_filter_get_needed"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the fields that need to be filled in for the structure
+passed to gtk_file_filter_filter()
+This function will not typically be used by applications; it
+is intended principally for use in the implementation of
+#GtkFileChooser.
+calling gtk_file_filter_filter()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">bitfield of flags indicating needed fields when</doc>
+          <type name="FileFilterFlags" c:type="GtkFileFilterFlags"/>
+        </return-value>
+      </method>
+      <method name="set_name"
+              c:identifier="gtk_file_filter_set_name"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the human-readable name of the filter; this is the string
+that will be displayed in the file selector user interface if
+there is a selectable list of filters.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the human-readable-name for the filter, or %NULL to remove any existing name.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <bitfield name="FileFilterFlags"
+              glib:type-name="GtkFileFilterFlags"
+              glib:get-type="gtk_file_filter_flags_get_type"
+              c:type="GtkFileFilterFlags">
+      <member name="filename"
+              value="1"
+              c:identifier="GTK_FILE_FILTER_FILENAME"
+              glib:nick="filename"/>
+      <member name="uri"
+              value="2"
+              c:identifier="GTK_FILE_FILTER_URI"
+              glib:nick="uri"/>
+      <member name="display_name"
+              value="4"
+              c:identifier="GTK_FILE_FILTER_DISPLAY_NAME"
+              glib:nick="display-name"/>
+      <member name="mime_type"
+              value="8"
+              c:identifier="GTK_FILE_FILTER_MIME_TYPE"
+              glib:nick="mime-type"/>
+    </bitfield>
+    <callback name="FileFilterFunc" c:type="GtkFileFilterFunc">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="filter_info" transfer-ownership="none">
+          <type name="FileFilterInfo" c:type="GtkFileFilterInfo*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="FileFilterInfo" c:type="GtkFileFilterInfo">
+      <field name="contains" writable="1">
+        <type name="FileFilterFlags" c:type="GtkFileFilterFlags"/>
+      </field>
+      <field name="filename" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="uri" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="display_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="mime_type" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </record>
+    <class name="Fixed"
+           c:symbol-prefix="fixed"
+           c:type="GtkFixed"
+           parent="Container"
+           glib:type-name="GtkFixed"
+           glib:get-type="gtk_fixed_get_type"
+           glib:type-struct="FixedClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_fixed_new">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="move" c:identifier="gtk_fixed_move">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put" c:identifier="gtk_fixed_put">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="container">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="FixedPrivate" c:type="GtkFixedPrivate*"/>
+      </field>
+    </class>
+    <record name="FixedChild" c:type="GtkFixedChild">
+      <field name="widget" writable="1">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+    </record>
+    <record name="FixedClass"
+            c:type="GtkFixedClass"
+            glib:is-gtype-struct-for="Fixed">
+      <field name="parent_class">
+        <type name="ContainerClass" c:type="GtkContainerClass"/>
+      </field>
+    </record>
+    <record name="FixedPrivate" c:type="GtkFixedPrivate" disguised="1">
+    </record>
+    <class name="FontButton"
+           c:symbol-prefix="font_button"
+           c:type="GtkFontButton"
+           parent="Button"
+           glib:type-name="GtkFontButton"
+           glib:get-type="gtk_font_button_get_type"
+           glib:type-struct="FontButtonClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Activatable"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_font_button_new" version="2.4">
+        <doc xml:whitespace="preserve">Creates a new font picker widget.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new font picker widget.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_font"
+                   c:identifier="gtk_font_button_new_with_font"
+                   version="2.4">
+        <doc xml:whitespace="preserve">Creates a new font picker widget.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new font picker widget.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="fontname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Name of font to display in font selection dialog</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_font_name"
+              c:identifier="gtk_font_button_get_font_name"
+              version="2.4">
+        <doc xml:whitespace="preserve">Retrieves the name of the currently selected font. This name includes
+style and size information as well. If you want to render something
+with the font, use this string with pango_font_description_from_string() .
+If you're interested in peeking certain values (family name,
+style, size, weight) just query these properties from the
+#PangoFontDescription object.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an internal copy of the font name which must not be freed.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_show_size"
+              c:identifier="gtk_font_button_get_show_size"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether the font size will be shown in the label.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the font size will be shown in the label.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_show_style"
+              c:identifier="gtk_font_button_get_show_style"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether the name of the font style will be shown in the label.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the font style will be shown in the label.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_title"
+              c:identifier="gtk_font_button_get_title"
+              version="2.4">
+        <doc xml:whitespace="preserve">Retrieves the title of the font selection dialog.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an internal copy of the title string which must not be freed.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_use_font"
+              c:identifier="gtk_font_button_get_use_font"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether the selected font is used in the label.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the selected font is used in the label.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_use_size"
+              c:identifier="gtk_font_button_get_use_size"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether the selected size is used in the label.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the selected size is used in the label.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_font_name"
+              c:identifier="gtk_font_button_set_font_name"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets or updates the currently-displayed font in font picker dialog.
+font selection dialog exists, otherwise %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Return value of gtk_font_selection_dialog_set_font_name() if the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fontname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Name of font to display in font selection dialog</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_show_size"
+              c:identifier="gtk_font_button_set_show_size"
+              version="2.4">
+        <doc xml:whitespace="preserve">If @show_size is %TRUE, the font size will be displayed along with the name of the selected font.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if font size should be displayed in dialog.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_show_style"
+              c:identifier="gtk_font_button_set_show_style"
+              version="2.4">
+        <doc xml:whitespace="preserve">If @show_style is %TRUE, the font style will be displayed along with name of the selected font.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_style" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if font style should be displayed in label.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_title"
+              c:identifier="gtk_font_button_set_title"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the title for the font selection dialog.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing the font selection dialog title</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_font"
+              c:identifier="gtk_font_button_set_use_font"
+              version="2.4">
+        <doc xml:whitespace="preserve">If @use_font is %TRUE, the font name will be written using the selected font.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_font" transfer-ownership="none">
+            <doc xml:whitespace="preserve">If %TRUE, font name will be written using font chosen.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_size"
+              c:identifier="gtk_font_button_set_use_size"
+              version="2.4">
+        <doc xml:whitespace="preserve">If @use_size is %TRUE, the font name will be written using the selected size.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">If %TRUE, font name will be written using the selected size.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="font-name"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The name of the currently selected font.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="show-size"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If this property is set to %TRUE, the selected font size will be shown 
+in the label. For a more WYSIWYG way to show the selected size, see the 
+::use-size property.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="show-style"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If this property is set to %TRUE, the name of the selected font style 
+will be shown in the label. For a more WYSIWYG way to show the selected 
+style, see the ::use-font property.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="title"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The title of the font selection dialog.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="use-font"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If this property is set to %TRUE, the label will be drawn 
+in the selected font.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="use-size"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If this property is set to %TRUE, the label will be drawn 
+with the selected font size.</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="button">
+        <type name="Button" c:type="GtkButton"/>
+      </field>
+      <field name="priv">
+        <type name="FontButtonPrivate" c:type="GtkFontButtonPrivate*"/>
+      </field>
+      <glib:signal name="font-set" version="2.4">
+        <doc xml:whitespace="preserve">The ::font-set signal is emitted when the user selects a font. 
+When handling this signal, use gtk_font_button_get_font_name() 
+to find out which font was just selected.
+Note that this signal is only emitted when the &lt;emphasis&gt;user&lt;/emphasis&gt;
+changes the font. If you need to react to programmatic font changes
+as well, use the notify::font-name signal.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="FontButtonClass"
+            c:type="GtkFontButtonClass"
+            glib:is-gtype-struct-for="FontButton">
+      <field name="parent_class">
+        <type name="ButtonClass" c:type="GtkButtonClass"/>
+      </field>
+      <field name="font_set">
+        <callback name="font_set">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="gfp" transfer-ownership="none">
+              <type name="FontButton" c:type="GtkFontButton*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="FontButtonPrivate"
+            c:type="GtkFontButtonPrivate"
+            disguised="1">
+    </record>
+    <class name="FontSelection"
+           c:symbol-prefix="font_selection"
+           c:type="GtkFontSelection"
+           parent="VBox"
+           glib:type-name="GtkFontSelection"
+           glib:get-type="gtk_font_selection_get_type"
+           glib:type-struct="FontSelectionClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_font_selection_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkFontSelection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a n ew #GtkFontSelection</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="get_face"
+              c:identifier="gtk_font_selection_get_face"
+              version="2.14">
+        <doc xml:whitespace="preserve">Gets the #PangoFontFace representing the selected font group
+details (i.e. family, slant, weight, width, etc).
+selected font group details. The returned object is owned by</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #PangoFontFace representing the</doc>
+          <type name="Pango.FontFace" c:type="PangoFontFace*"/>
+        </return-value>
+      </method>
+      <method name="get_face_list"
+              c:identifier="gtk_font_selection_get_face_list"
+              version="2.14">
+        <doc xml:whitespace="preserve">This returns the #GtkTreeView which lists all styles available for
+the selected font. For example, 'Regular', 'Bold', etc.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GtkWidget that is part of @fontsel</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_family"
+              c:identifier="gtk_font_selection_get_family"
+              version="2.14">
+        <doc xml:whitespace="preserve">Gets the #PangoFontFamily representing the selected font family.
+selected font family. Font families are a collection of font
+faces. The returned object is owned by @fontsel and must not
+be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #PangoFontFamily representing the</doc>
+          <type name="Pango.FontFamily" c:type="PangoFontFamily*"/>
+        </return-value>
+      </method>
+      <method name="get_family_list"
+              c:identifier="gtk_font_selection_get_family_list"
+              version="2.14">
+        <doc xml:whitespace="preserve">This returns the #GtkTreeView that lists font families, for
+example, 'Sans', 'Serif', etc.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GtkWidget that is part of @fontsel</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_font_name"
+              c:identifier="gtk_font_selection_get_font_name">
+        <doc xml:whitespace="preserve">Gets the currently-selected font name. 
+Note that this can be a different string than what you set with 
+gtk_font_selection_set_font_name(), as the font selection widget may 
+normalize font names and thus return a string with a different structure. 
+For example, "Helvetica Italic Bold 12" could be normalized to 
+"Helvetica Bold Italic 12". Use pango_font_description_equal()
+if you want to compare two font descriptions.
+no font is selected. You must free this string with g_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A string with the name of the current font, or %NULL if</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_preview_entry"
+              c:identifier="gtk_font_selection_get_preview_entry"
+              version="2.14">
+        <doc xml:whitespace="preserve">This returns the #GtkEntry used to display the font as a preview.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GtkWidget that is part of @fontsel</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_preview_text"
+              c:identifier="gtk_font_selection_get_preview_text">
+        <doc xml:whitespace="preserve">Gets the text displayed in the preview area.
+This string is owned by the widget and should not be 
+modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the text displayed in the preview area.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_size"
+              c:identifier="gtk_font_selection_get_size"
+              version="2.14">
+        <doc xml:whitespace="preserve">The selected font size.
+or -1 if no font size is selected.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A n integer representing the selected font size,</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_size_entry"
+              c:identifier="gtk_font_selection_get_size_entry"
+              version="2.14">
+        <doc xml:whitespace="preserve">This returns the #GtkEntry used to allow the user to edit the font
+number manually instead of selecting it from the list of font sizes.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GtkWidget that is part of @fontsel</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_size_list"
+              c:identifier="gtk_font_selection_get_size_list"
+              version="2.14">
+        <doc xml:whitespace="preserve">This returns the #GtkTreeeView used to list font sizes.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GtkWidget that is part of @fontsel</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="set_font_name"
+              c:identifier="gtk_font_selection_set_font_name">
+        <doc xml:whitespace="preserve">Sets the currently-selected font. 
+Note that the @fontsel needs to know the screen in which it will appear 
+for this to work; this can be guaranteed by simply making sure that the 
+such font exists or if the @fontsel doesn't belong to a particular 
+screen yet.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the font could be set successfully; %FALSE if no</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fontname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a font name like "Helvetica 12" or "Times Bold 18"</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_preview_text"
+              c:identifier="gtk_font_selection_set_preview_text">
+        <doc xml:whitespace="preserve">Sets the text displayed in the preview area.
+The @text is used to show how the selected font looks.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text to display in the preview area</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="font-name" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="preview-text" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <field name="parent_instance">
+        <type name="VBox" c:type="GtkVBox"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="FontSelectionPrivate" c:type="GtkFontSelectionPrivate*"/>
+      </field>
+    </class>
+    <record name="FontSelectionClass"
+            c:type="GtkFontSelectionClass"
+            glib:is-gtype-struct-for="FontSelection">
+      <field name="parent_class">
+        <type name="VBoxClass" c:type="GtkVBoxClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="FontSelectionDialog"
+           c:symbol-prefix="font_selection_dialog"
+           c:type="GtkFontSelectionDialog"
+           parent="Dialog"
+           glib:type-name="GtkFontSelectionDialog"
+           glib:get-type="gtk_font_selection_dialog_get_type"
+           glib:type-struct="FontSelectionDialogClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_font_selection_dialog_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkFontSelectionDialog.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkFontSelectionDialog</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the title of the dialog window</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_cancel_button"
+              c:identifier="gtk_font_selection_dialog_get_cancel_button"
+              version="2.14">
+        <doc xml:whitespace="preserve">Gets the 'Cancel' button.
+for the 'Cancel' button.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GtkWidget used in the dialog</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_font_name"
+              c:identifier="gtk_font_selection_dialog_get_font_name">
+        <doc xml:whitespace="preserve">Gets the currently-selected font name.
+Note that this can be a different string than what you set with 
+gtk_font_selection_dialog_set_font_name(), as the font selection widget
+may normalize font names and thus return a string with a different 
+structure. For example, "Helvetica Italic Bold 12" could be normalized 
+to "Helvetica Bold Italic 12".  Use pango_font_description_equal()
+if you want to compare two font descriptions.
+font is selected. You must free this string with g_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A string with the name of the current font, or %NULL if no</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_font_selection"
+              c:identifier="gtk_font_selection_dialog_get_font_selection"
+              version="2.22">
+        <doc xml:whitespace="preserve">Retrieves the #GtkFontSelection widget embedded in the dialog.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the embedded #GtkFontSelection</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_ok_button"
+              c:identifier="gtk_font_selection_dialog_get_ok_button"
+              version="2.14">
+        <doc xml:whitespace="preserve">Gets the 'OK' button.
+for the 'OK' button.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GtkWidget used in the dialog</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_preview_text"
+              c:identifier="gtk_font_selection_dialog_get_preview_text">
+        <doc xml:whitespace="preserve">Gets the text displayed in the preview area.
+This string is owned by the widget and should not be 
+modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the text displayed in the preview area.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_font_name"
+              c:identifier="gtk_font_selection_dialog_set_font_name">
+        <doc xml:whitespace="preserve">Sets the currently selected font.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the font selected in @fsd is now the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fontname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a font name like "Helvetica 12" or "Times Bold 18"</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_preview_text"
+              c:identifier="gtk_font_selection_dialog_set_preview_text">
+        <doc xml:whitespace="preserve">Sets the text displayed in the preview area.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text to display in the preview area</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="Dialog" c:type="GtkDialog"/>
+      </field>
+      <field name="priv">
+        <type name="FontSelectionDialogPrivate"
+              c:type="GtkFontSelectionDialogPrivate*"/>
+      </field>
+    </class>
+    <record name="FontSelectionDialogClass"
+            c:type="GtkFontSelectionDialogClass"
+            glib:is-gtype-struct-for="FontSelectionDialog">
+      <field name="parent_class">
+        <type name="DialogClass" c:type="GtkDialogClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="FontSelectionDialogPrivate"
+            c:type="GtkFontSelectionDialogPrivate"
+            disguised="1">
+    </record>
+    <record name="FontSelectionPrivate"
+            c:type="GtkFontSelectionPrivate"
+            disguised="1">
+    </record>
+    <class name="Frame"
+           c:symbol-prefix="frame"
+           c:type="GtkFrame"
+           parent="Bin"
+           glib:type-name="GtkFrame"
+           glib:get-type="gtk_frame_get_type"
+           glib:type-struct="FrameClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_frame_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkFrame, with optional label @label.
+If @label is %NULL, the label is omitted.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkFrame widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text to use as the label of the frame</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="compute_child_allocation">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="allocation" transfer-ownership="none">
+            <type name="Allocation" c:type="GtkAllocation*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_label" c:identifier="gtk_frame_get_label">
+        <doc xml:whitespace="preserve">If the frame's label widget is a #GtkLabel, returns the
+text in the label widget. (The frame will have a #GtkLabel
+for the label widget if a non-%NULL argument was passed
+to gtk_frame_new().)
+was no label widget or the lable widget was not
+a #GtkLabel. This string is owned by GTK+ and
+must not be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the text in the label, or %NULL if there</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_label_align" c:identifier="gtk_frame_get_label_align">
+        <doc xml:whitespace="preserve">Retrieves the X and Y alignment of the frame's label. See
+gtk_frame_set_label_align().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store X alignment of frame's label, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="yalign" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store X alignment of frame's label, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_label_widget"
+              c:identifier="gtk_frame_get_label_widget">
+        <doc xml:whitespace="preserve">Retrieves the label widget for the frame. See
+gtk_frame_set_label_widget().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the label widget, or %NULL if there is none.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_shadow_type" c:identifier="gtk_frame_get_shadow_type">
+        <doc xml:whitespace="preserve">Retrieves the shadow type of the frame. See
+gtk_frame_set_shadow_type().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current shadow type of the frame.</doc>
+          <type name="ShadowType" c:type="GtkShadowType"/>
+        </return-value>
+      </method>
+      <method name="set_label" c:identifier="gtk_frame_set_label">
+        <doc xml:whitespace="preserve">Sets the text of the label. If @label is %NULL,
+the current label is removed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the text to use as the label of the frame</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_label_align" c:identifier="gtk_frame_set_label_align">
+        <doc xml:whitespace="preserve">Sets the alignment of the frame widget's label. The
+default values for a newly created frame are 0.0 and 0.5.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The position of the label along the top edge of the widget. A value of 0.0 represents left alignment; 1.0 represents right alignment.</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="yalign" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The y alignment of the label. A value of 0.0 aligns under the frame; 1.0 aligns above the frame. If the values are exactly 0.0 or 1.0 the gap in the frame won't be painted because the label will be completely above or below the frame.</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_label_widget"
+              c:identifier="gtk_frame_set_label_widget">
+        <doc xml:whitespace="preserve">Sets the label widget for the frame. This is the widget that
+will appear embedded in the top edge of the frame as a
+title.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label_widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new label widget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_shadow_type" c:identifier="gtk_frame_set_shadow_type">
+        <doc xml:whitespace="preserve">Sets the shadow type for @frame.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new #GtkShadowType</doc>
+            <type name="ShadowType" c:type="GtkShadowType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="label" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="label-widget" writable="1" transfer-ownership="none">
+        <type name="Widget"/>
+      </property>
+      <property name="label-xalign" writable="1" transfer-ownership="none">
+        <type name="gfloat"/>
+      </property>
+      <property name="label-yalign" writable="1" transfer-ownership="none">
+        <type name="gfloat"/>
+      </property>
+      <property name="shadow-type" writable="1" transfer-ownership="none">
+        <type name="ShadowType"/>
+      </property>
+      <field name="bin">
+        <type name="Bin" c:type="GtkBin"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="FramePrivate" c:type="GtkFramePrivate*"/>
+      </field>
+    </class>
+    <record name="FrameClass"
+            c:type="GtkFrameClass"
+            glib:is-gtype-struct-for="Frame">
+      <field name="parent_class">
+        <type name="BinClass" c:type="GtkBinClass"/>
+      </field>
+      <field name="compute_child_allocation">
+        <callback name="compute_child_allocation">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="frame" transfer-ownership="none">
+              <type name="Frame" c:type="GtkFrame*"/>
+            </parameter>
+            <parameter name="allocation" transfer-ownership="none">
+              <type name="Allocation" c:type="GtkAllocation*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="FramePrivate" c:type="GtkFramePrivate" disguised="1">
+    </record>
+    <callback name="Function" c:type="GtkFunction">
+      <doc xml:whitespace="preserve">Defines a function pointer.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">#gint</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#gpointer</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="HBox"
+           c:symbol-prefix="hbox"
+           c:type="GtkHBox"
+           parent="Box"
+           glib:type-name="GtkHBox"
+           glib:get-type="gtk_hbox_get_type"
+           glib:type-struct="HBoxClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_hbox_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkHBox.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkHBox.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="homogeneous" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if all children are to be given equal space allotments.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of pixels to place by default between children.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <field name="box">
+        <type name="Box" c:type="GtkBox"/>
+      </field>
+    </class>
+    <record name="HBoxClass"
+            c:type="GtkHBoxClass"
+            glib:is-gtype-struct-for="HBox">
+      <field name="parent_class">
+        <type name="BoxClass" c:type="GtkBoxClass"/>
+      </field>
+    </record>
+    <class name="HButtonBox"
+           c:symbol-prefix="hbutton_box"
+           c:type="GtkHButtonBox"
+           parent="ButtonBox"
+           glib:type-name="GtkHButtonBox"
+           glib:get-type="gtk_hbutton_box_get_type"
+           glib:type-struct="HButtonBoxClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_hbutton_box_new">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <field name="button_box">
+        <type name="ButtonBox" c:type="GtkButtonBox"/>
+      </field>
+    </class>
+    <record name="HButtonBoxClass"
+            c:type="GtkHButtonBoxClass"
+            glib:is-gtype-struct-for="HButtonBox">
+      <field name="parent_class">
+        <type name="ButtonBoxClass" c:type="GtkButtonBoxClass"/>
+      </field>
+    </record>
+    <class name="HPaned"
+           c:symbol-prefix="hpaned"
+           c:type="GtkHPaned"
+           parent="Paned"
+           glib:type-name="GtkHPaned"
+           glib:get-type="gtk_hpaned_get_type"
+           glib:type-struct="HPanedClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_hpaned_new">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <field name="paned">
+        <type name="Paned" c:type="GtkPaned"/>
+      </field>
+    </class>
+    <record name="HPanedClass"
+            c:type="GtkHPanedClass"
+            glib:is-gtype-struct-for="HPaned">
+      <field name="parent_class">
+        <type name="PanedClass" c:type="GtkPanedClass"/>
+      </field>
+    </record>
+    <class name="HRuler"
+           c:symbol-prefix="hruler"
+           c:type="GtkHRuler"
+           parent="Ruler"
+           glib:type-name="GtkHRuler"
+           glib:get-type="gtk_hruler_get_type"
+           glib:type-struct="HRulerClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_hruler_new">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <field name="ruler">
+        <type name="Ruler" c:type="GtkRuler"/>
+      </field>
+    </class>
+    <record name="HRulerClass"
+            c:type="GtkHRulerClass"
+            glib:is-gtype-struct-for="HRuler">
+      <field name="parent_class">
+        <type name="RulerClass" c:type="GtkRulerClass"/>
+      </field>
+    </record>
+    <class name="HSV"
+           c:symbol-prefix="hsv"
+           c:type="GtkHSV"
+           parent="Widget"
+           glib:type-name="GtkHSV"
+           glib:get-type="gtk_hsv_get_type"
+           glib:type-struct="HSVClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_hsv_new" version="2.14">
+        <doc xml:whitespace="preserve">Creates a new HSV color selector.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A newly-created HSV color selector.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <function name="to_rgb" c:identifier="gtk_hsv_to_rgb" version="2.14">
+        <doc xml:whitespace="preserve">Converts a color from HSV space to RGB.
+Input values must be in the [0.0, 1.0] range; 
+output values will be in the same range.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="h" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Hue</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="s" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Saturation</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="v" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="r" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Return value for the red component</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="g" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Return value for the green component</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="b" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Return value for the blue component</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_color" c:identifier="gtk_hsv_get_color" version="2.14">
+        <doc xml:whitespace="preserve">Queries the current color in an HSV color selector.
+Returned values will be in the [0.0, 1.0] range.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="h" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Return value for the hue</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="s" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Return value for the saturation</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="v" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Return value for the value</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_metrics"
+              c:identifier="gtk_hsv_get_metrics"
+              version="2.14">
+        <doc xml:whitespace="preserve">Queries the size and ring width of an HSV color selector.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Return value for the diameter of the hue ring</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="ring_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Return value for the width of the hue ring</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_adjusting"
+              c:identifier="gtk_hsv_is_adjusting"
+              version="2.14">
+        <doc xml:whitespace="preserve">An HSV color selector can be said to be adjusting if multiple rapid
+changes are being made to its value, for example, when the user is 
+adjusting the value with the mouse. This function queries whether 
+the HSV color selector is being adjusted or not.
+since they may be transitory, or %FALSE if they should consider
+the color value status to be final.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if clients can ignore changes to the color value,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_color" c:identifier="gtk_hsv_set_color" version="2.14">
+        <doc xml:whitespace="preserve">Sets the current color in an HSV color selector.
+Color component values must be in the [0.0, 1.0] range.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="h" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Hue</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="s" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Saturation</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="v" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_metrics"
+              c:identifier="gtk_hsv_set_metrics"
+              version="2.14">
+        <doc xml:whitespace="preserve">Sets the size and ring width of an HSV color selector.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Diameter for the hue ring</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="ring_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Width of the hue ring</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="HSVPrivate" c:type="GtkHSVPrivate*"/>
+      </field>
+      <glib:signal name="changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="move">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="DirectionType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="HSVClass"
+            c:type="GtkHSVClass"
+            glib:is-gtype-struct-for="HSV">
+      <field name="parent_class">
+        <type name="WidgetClass" c:type="GtkWidgetClass"/>
+      </field>
+      <field name="changed">
+        <callback name="changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="hsv" transfer-ownership="none">
+              <type name="HSV" c:type="GtkHSV*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="move">
+        <callback name="move">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="hsv" transfer-ownership="none">
+              <type name="HSV" c:type="GtkHSV*"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <type name="DirectionType" c:type="GtkDirectionType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="HSVPrivate" c:type="GtkHSVPrivate" disguised="1">
+    </record>
+    <class name="HScale"
+           c:symbol-prefix="hscale"
+           c:type="GtkHScale"
+           parent="Scale"
+           glib:type-name="GtkHScale"
+           glib:get-type="gtk_hscale_get_type"
+           glib:type-struct="HScaleClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_hscale_new">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment" transfer-ownership="none">
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_range"
+                   c:identifier="gtk_hscale_new_with_range">
+        <doc xml:whitespace="preserve">Creates a new horizontal scale widget that lets the user input a
+number between @min and @max (including @min and @max) with the
+increment @step.  @step must be nonzero; it's the distance the
+slider moves when using the arrow keys to adjust the scale value.
+Note that the way in which the precision is derived works best if @step
+is a power of ten. If the resulting precision is not suitable for your
+needs, use gtk_scale_set_digits() to correct it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkHScale</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="min" transfer-ownership="none">
+            <doc xml:whitespace="preserve">minimum value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="max" transfer-ownership="none">
+            <doc xml:whitespace="preserve">maximum value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="step" transfer-ownership="none">
+            <doc xml:whitespace="preserve">step increment (tick size) used with keyboard shortcuts</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <field name="scale">
+        <type name="Scale" c:type="GtkScale"/>
+      </field>
+    </class>
+    <record name="HScaleClass"
+            c:type="GtkHScaleClass"
+            glib:is-gtype-struct-for="HScale">
+      <field name="parent_class">
+        <type name="ScaleClass" c:type="GtkScaleClass"/>
+      </field>
+    </record>
+    <class name="HScrollbar"
+           c:symbol-prefix="hscrollbar"
+           c:type="GtkHScrollbar"
+           parent="Scrollbar"
+           glib:type-name="GtkHScrollbar"
+           glib:get-type="gtk_hscrollbar_get_type"
+           glib:type-struct="HScrollbarClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_hscrollbar_new">
+        <doc xml:whitespace="preserve">Creates a new horizontal scrollbar.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new #GtkHScrollbar</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the #GtkAdjustment to use, or %NULL to create a new adjustment</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <field name="scrollbar">
+        <type name="Scrollbar" c:type="GtkScrollbar"/>
+      </field>
+    </class>
+    <record name="HScrollbarClass"
+            c:type="GtkHScrollbarClass"
+            glib:is-gtype-struct-for="HScrollbar">
+      <field name="parent_class">
+        <type name="ScrollbarClass" c:type="GtkScrollbarClass"/>
+      </field>
+    </record>
+    <class name="HSeparator"
+           c:symbol-prefix="hseparator"
+           c:type="GtkHSeparator"
+           parent="Separator"
+           glib:type-name="GtkHSeparator"
+           glib:get-type="gtk_hseparator_get_type"
+           glib:type-struct="HSeparatorClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_hseparator_new">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <field name="separator">
+        <type name="Separator" c:type="GtkSeparator"/>
+      </field>
+    </class>
+    <record name="HSeparatorClass"
+            c:type="GtkHSeparatorClass"
+            glib:is-gtype-struct-for="HSeparator">
+      <field name="parent_class">
+        <type name="SeparatorClass" c:type="GtkSeparatorClass"/>
+      </field>
+    </record>
+    <class name="HandleBox"
+           c:symbol-prefix="handle_box"
+           c:type="GtkHandleBox"
+           parent="Bin"
+           glib:type-name="GtkHandleBox"
+           glib:get-type="gtk_handle_box_get_type"
+           glib:type-struct="HandleBoxClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_handle_box_new">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="get_child_detached"
+              c:identifier="gtk_handle_box_get_child_detached"
+              version="2.14">
+        <doc xml:whitespace="preserve">Whether the handlebox's child is currently detached.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the child is currently detached, otherwise %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_handle_position"
+              c:identifier="gtk_handle_box_get_handle_position">
+        <doc xml:whitespace="preserve">Gets the handle position of the handle box. See
+gtk_handle_box_set_handle_position().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current handle position.</doc>
+          <type name="PositionType" c:type="GtkPositionType"/>
+        </return-value>
+      </method>
+      <method name="get_shadow_type"
+              c:identifier="gtk_handle_box_get_shadow_type">
+        <doc xml:whitespace="preserve">Gets the type of shadow drawn around the handle box. See
+gtk_handle_box_set_shadow_type().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of shadow currently drawn around the handle box.</doc>
+          <type name="ShadowType" c:type="GtkShadowType"/>
+        </return-value>
+      </method>
+      <method name="get_snap_edge" c:identifier="gtk_handle_box_get_snap_edge">
+        <doc xml:whitespace="preserve">Gets the edge used for determining reattachment of the handle box. See
+gtk_handle_box_set_snap_edge().
+is determined (as per default) from the handle position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the edge used for determining reattachment, or (GtkPositionType)-1 if this</doc>
+          <type name="PositionType" c:type="GtkPositionType"/>
+        </return-value>
+      </method>
+      <method name="set_handle_position"
+              c:identifier="gtk_handle_box_set_handle_position">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="PositionType" c:type="GtkPositionType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_shadow_type"
+              c:identifier="gtk_handle_box_set_shadow_type">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="ShadowType" c:type="GtkShadowType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_snap_edge" c:identifier="gtk_handle_box_set_snap_edge">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="edge" transfer-ownership="none">
+            <type name="PositionType" c:type="GtkPositionType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="child-detached" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="handle-position" writable="1" transfer-ownership="none">
+        <type name="PositionType"/>
+      </property>
+      <property name="shadow-type" writable="1" transfer-ownership="none">
+        <type name="ShadowType"/>
+      </property>
+      <property name="snap-edge" writable="1" transfer-ownership="none">
+        <type name="PositionType"/>
+      </property>
+      <property name="snap-edge-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="bin">
+        <type name="Bin" c:type="GtkBin"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="HandleBoxPrivate" c:type="GtkHandleBoxPrivate*"/>
+      </field>
+      <glib:signal name="child-attached">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Widget"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="child-detached">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Widget"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="HandleBoxClass"
+            c:type="GtkHandleBoxClass"
+            glib:is-gtype-struct-for="HandleBox">
+      <field name="parent_class">
+        <type name="BinClass" c:type="GtkBinClass"/>
+      </field>
+      <field name="child_attached">
+        <callback name="child_attached">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="handle_box" transfer-ownership="none">
+              <type name="HandleBox" c:type="GtkHandleBox*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="child_detached">
+        <callback name="child_detached">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="handle_box" transfer-ownership="none">
+              <type name="HandleBox" c:type="GtkHandleBox*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="HandleBoxPrivate" c:type="GtkHandleBoxPrivate" disguised="1">
+    </record>
+    <class name="IMContext"
+           c:symbol-prefix="im_context"
+           c:type="GtkIMContext"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GtkIMContext"
+           glib:get-type="gtk_im_context_get_type"
+           glib:type-struct="IMContextClass">
+      <virtual-method name="filter_keypress" invoker="filter_keypress">
+        <doc xml:whitespace="preserve">Allow an input method to internally handle key press and release 
+events. If this function returns %TRUE, then no further processing
+should be done for this key event.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the input method handled the key event.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the key event</doc>
+            <type name="Gdk.EventKey" c:type="GdkEventKey*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="focus_in" invoker="focus_in">
+        <doc xml:whitespace="preserve">Notify the input method that the widget to which this
+input context corresponds has gained focus. The input method
+may, for example, change the displayed feedback to reflect
+this change.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="focus_out" invoker="focus_out">
+        <doc xml:whitespace="preserve">Notify the input method that the widget to which this
+input context corresponds has lost focus. The input method
+may, for example, change the displayed feedback or reset the contexts
+state to reflect this change.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_preedit_string" invoker="get_preedit_string">
+        <doc xml:whitespace="preserve">Retrieve the current preedit string for the input context,
+and a list of attributes to apply to the string.
+This string should be displayed inserted at the insertion
+point.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the retrieved string. The string retrieved must be freed with g_free ().</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="attrs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the retrieved attribute list. When you are done with this list, you must unreference it with pango_attr_list_unref().</doc>
+            <type name="Pango.AttrList" c:type="PangoAttrList**"/>
+          </parameter>
+          <parameter name="cursor_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store position of cursor (in characters) within the preedit string.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_surrounding" invoker="get_surrounding">
+        <doc xml:whitespace="preserve">Retrieves context around the insertion point. Input methods
+typically want context in order to constrain input text based on
+existing text; this is important for languages such as Thai where
+only some sequences of characters are allowed.
+This function is implemented by emitting the
+GtkIMContext::retrieve_surrounding signal on the input method; in
+response to this signal, a widget should provide as much context as
+is available, up to an entire paragraph, by calling
+gtk_im_context_set_surrounding(). Note that there is no obligation
+for a widget to respond to the ::retrieve_surrounding signal, so input
+methods must be prepared to function without context.
+you must free the result stored in *text.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if surrounding text was provided; in this case</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store a UTF-8 encoded string of text holding context around the insertion point. If the function returns %TRUE, then you must free the result stored in this location with g_free().</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="cursor_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store byte index of the insertion cursor within @text.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="reset" invoker="reset">
+        <doc xml:whitespace="preserve">Notify the input method that a change such as a change in cursor
+position has been made. This will typically cause the input
+method to clear the preedit state.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_client_window" invoker="set_client_window">
+        <doc xml:whitespace="preserve">Set the client window for the input context; this is the
+#GdkWindow in which the input appears. This window is
+used in order to correctly position status windows, and may
+also be used for purposes internal to the input method.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the client window. This may be %NULL to indicate that the previous client window no longer exists.</doc>
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_cursor_location" invoker="set_cursor_location">
+        <doc xml:whitespace="preserve">Notify the input method that a change in cursor 
+position has been made. The location is relative to the client
+window.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="area" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new location</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_surrounding" invoker="set_surrounding">
+        <doc xml:whitespace="preserve">Sets surrounding context around the insertion point and preedit
+string. This function is expected to be called in response to the
+GtkIMContext::retrieve_surrounding signal, and will likely have no
+effect if called at other times.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">text surrounding the insertion point, as UTF-8. the preedit string should not be included within</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of @text, or -1 if @text is nul-terminated</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="cursor_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the byte index of the insertion cursor within @text.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_use_preedit" invoker="set_use_preedit">
+        <doc xml:whitespace="preserve">Sets whether the IM context should use the preedit string
+to display feedback. If @use_preedit is FALSE (default
+is TRUE), then the IM context may use some other method to display
+feedback, such as displaying it in a child of the root window.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_preedit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the IM context should use the preedit string.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="delete_surrounding"
+              c:identifier="gtk_im_context_delete_surrounding">
+        <doc xml:whitespace="preserve">Asks the widget that the input context is attached to to delete
+characters around the cursor position by emitting the
+GtkIMContext::delete_surrounding signal. Note that @offset and @n_chars
+are in characters not in bytes which differs from the usage other
+places in #GtkIMContext.
+In order to use this function, you should first call
+gtk_im_context_get_surrounding() to get the current context, and
+call this function immediately afterwards to make sure that you
+know what you are deleting. You should also account for the fact
+that even if the signal was handled, the input context might not
+have deleted all the characters that were requested to be deleted.
+This function is used by an input method that wants to make
+subsitutions in the existing text in response to new input. It is
+not useful for applications.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the signal was handled.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">offset from cursor position in chars; a negative value means start before the cursor.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="n_chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of characters to delete.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="filter_keypress"
+              c:identifier="gtk_im_context_filter_keypress">
+        <doc xml:whitespace="preserve">Allow an input method to internally handle key press and release 
+events. If this function returns %TRUE, then no further processing
+should be done for this key event.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the input method handled the key event.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the key event</doc>
+            <type name="Gdk.EventKey" c:type="GdkEventKey*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="focus_in" c:identifier="gtk_im_context_focus_in">
+        <doc xml:whitespace="preserve">Notify the input method that the widget to which this
+input context corresponds has gained focus. The input method
+may, for example, change the displayed feedback to reflect
+this change.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="focus_out" c:identifier="gtk_im_context_focus_out">
+        <doc xml:whitespace="preserve">Notify the input method that the widget to which this
+input context corresponds has lost focus. The input method
+may, for example, change the displayed feedback or reset the contexts
+state to reflect this change.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_preedit_string"
+              c:identifier="gtk_im_context_get_preedit_string">
+        <doc xml:whitespace="preserve">Retrieve the current preedit string for the input context,
+and a list of attributes to apply to the string.
+This string should be displayed inserted at the insertion
+point.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the retrieved string. The string retrieved must be freed with g_free ().</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="attrs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the retrieved attribute list. When you are done with this list, you must unreference it with pango_attr_list_unref().</doc>
+            <type name="Pango.AttrList" c:type="PangoAttrList**"/>
+          </parameter>
+          <parameter name="cursor_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store position of cursor (in characters) within the preedit string.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_surrounding"
+              c:identifier="gtk_im_context_get_surrounding">
+        <doc xml:whitespace="preserve">Retrieves context around the insertion point. Input methods
+typically want context in order to constrain input text based on
+existing text; this is important for languages such as Thai where
+only some sequences of characters are allowed.
+This function is implemented by emitting the
+GtkIMContext::retrieve_surrounding signal on the input method; in
+response to this signal, a widget should provide as much context as
+is available, up to an entire paragraph, by calling
+gtk_im_context_set_surrounding(). Note that there is no obligation
+for a widget to respond to the ::retrieve_surrounding signal, so input
+methods must be prepared to function without context.
+you must free the result stored in *text.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if surrounding text was provided; in this case</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store a UTF-8 encoded string of text holding context around the insertion point. If the function returns %TRUE, then you must free the result stored in this location with g_free().</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="cursor_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store byte index of the insertion cursor within @text.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reset" c:identifier="gtk_im_context_reset">
+        <doc xml:whitespace="preserve">Notify the input method that a change such as a change in cursor
+position has been made. This will typically cause the input
+method to clear the preedit state.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_client_window"
+              c:identifier="gtk_im_context_set_client_window">
+        <doc xml:whitespace="preserve">Set the client window for the input context; this is the
+#GdkWindow in which the input appears. This window is
+used in order to correctly position status windows, and may
+also be used for purposes internal to the input method.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the client window. This may be %NULL to indicate that the previous client window no longer exists.</doc>
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor_location"
+              c:identifier="gtk_im_context_set_cursor_location">
+        <doc xml:whitespace="preserve">Notify the input method that a change in cursor 
+position has been made. The location is relative to the client
+window.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="area" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new location</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_surrounding"
+              c:identifier="gtk_im_context_set_surrounding">
+        <doc xml:whitespace="preserve">Sets surrounding context around the insertion point and preedit
+string. This function is expected to be called in response to the
+GtkIMContext::retrieve_surrounding signal, and will likely have no
+effect if called at other times.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">text surrounding the insertion point, as UTF-8. the preedit string should not be included within</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of @text, or -1 if @text is nul-terminated</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="cursor_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the byte index of the insertion cursor within @text.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_preedit"
+              c:identifier="gtk_im_context_set_use_preedit">
+        <doc xml:whitespace="preserve">Sets whether the IM context should use the preedit string
+to display feedback. If @use_preedit is FALSE (default
+is TRUE), then the IM context may use some other method to display
+feedback, such as displaying it in a child of the root window.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_preedit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the IM context should use the preedit string.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <glib:signal name="commit">
+        <doc xml:whitespace="preserve">The ::commit signal is emitted when a complete input sequence
+has been entered by the user. This can be a single character
+immediately after a key press or the final result of preediting.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the completed character(s) entered by the user</doc>
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="delete-surrounding">
+        <doc xml:whitespace="preserve">The ::delete-surrounding signal is emitted when the input method
+needs to delete all or part of the context surrounding the cursor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the signal was handled.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the character offset from the cursor position of the text to be deleted. A negative value indicates a position before the cursor.</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of characters to be deleted</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="preedit-changed">
+        <doc xml:whitespace="preserve">The ::preedit-changed signal is emitted whenever the preedit sequence
+currently being entered has changed.  It is also emitted at the end of
+a preedit sequence, in which case
+gtk_im_context_get_preedit_string() returns the empty string.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="preedit-end">
+        <doc xml:whitespace="preserve">The ::preedit-end signal is emitted when a preediting sequence
+has been completed or canceled.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="preedit-start">
+        <doc xml:whitespace="preserve">The ::preedit-start signal is emitted when a new preediting sequence
+starts.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="retrieve-surrounding">
+        <doc xml:whitespace="preserve">The ::retrieve-surrounding signal is emitted when the input method
+requires the context surrounding the cursor.  The callback should set
+the input method surrounding context by calling the
+gtk_im_context_set_surrounding() method.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the signal was handled.</doc>
+          <type name="gboolean"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="IMContextClass"
+            c:type="GtkIMContextClass"
+            glib:is-gtype-struct-for="IMContext">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="preedit_start">
+        <callback name="preedit_start">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="IMContext" c:type="GtkIMContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="preedit_end">
+        <callback name="preedit_end">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="IMContext" c:type="GtkIMContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="preedit_changed">
+        <callback name="preedit_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="IMContext" c:type="GtkIMContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="commit">
+        <callback name="commit">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="IMContext" c:type="GtkIMContext*"/>
+            </parameter>
+            <parameter name="str" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="retrieve_surrounding">
+        <callback name="retrieve_surrounding">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="IMContext" c:type="GtkIMContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delete_surrounding">
+        <callback name="delete_surrounding">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="IMContext" c:type="GtkIMContext*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="n_chars" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_client_window">
+        <callback name="set_client_window">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="IMContext" c:type="GtkIMContext*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">the client window. This may be %NULL to indicate that the previous client window no longer exists.</doc>
+              <type name="Gdk.Window" c:type="GdkWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_preedit_string">
+        <callback name="get_preedit_string">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="IMContext" c:type="GtkIMContext*"/>
+            </parameter>
+            <parameter name="str" transfer-ownership="none">
+              <doc xml:whitespace="preserve">location to store the retrieved string. The string retrieved must be freed with g_free ().</doc>
+              <type name="utf8" c:type="gchar**"/>
+            </parameter>
+            <parameter name="attrs" transfer-ownership="none">
+              <doc xml:whitespace="preserve">location to store the retrieved attribute list. When you are done with this list, you must unreference it with pango_attr_list_unref().</doc>
+              <type name="Pango.AttrList" c:type="PangoAttrList**"/>
+            </parameter>
+            <parameter name="cursor_pos" transfer-ownership="none">
+              <doc xml:whitespace="preserve">location to store position of cursor (in characters) within the preedit string.</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="filter_keypress">
+        <callback name="filter_keypress">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the input method handled the key event.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="IMContext" c:type="GtkIMContext*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the key event</doc>
+              <type name="Gdk.EventKey" c:type="GdkEventKey*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="focus_in">
+        <callback name="focus_in">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="IMContext" c:type="GtkIMContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="focus_out">
+        <callback name="focus_out">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="IMContext" c:type="GtkIMContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="reset">
+        <callback name="reset">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="IMContext" c:type="GtkIMContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_cursor_location">
+        <callback name="set_cursor_location">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="IMContext" c:type="GtkIMContext*"/>
+            </parameter>
+            <parameter name="area" transfer-ownership="none">
+              <doc xml:whitespace="preserve">new location</doc>
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_use_preedit">
+        <callback name="set_use_preedit">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="IMContext" c:type="GtkIMContext*"/>
+            </parameter>
+            <parameter name="use_preedit" transfer-ownership="none">
+              <doc xml:whitespace="preserve">whether the IM context should use the preedit string.</doc>
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_surrounding">
+        <callback name="set_surrounding">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="IMContext" c:type="GtkIMContext*"/>
+            </parameter>
+            <parameter name="text" transfer-ownership="none">
+              <doc xml:whitespace="preserve">text surrounding the insertion point, as UTF-8. the preedit string should not be included within</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="len" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the length of @text, or -1 if @text is nul-terminated</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="cursor_index" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the byte index of the insertion cursor within @text.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_surrounding">
+        <callback name="get_surrounding">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if surrounding text was provided; in this case</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="context" transfer-ownership="none">
+              <type name="IMContext" c:type="GtkIMContext*"/>
+            </parameter>
+            <parameter name="text" transfer-ownership="none">
+              <doc xml:whitespace="preserve">location to store a UTF-8 encoded string of text holding context around the insertion point. If the function returns %TRUE, then you must free the result stored in this location with g_free().</doc>
+              <type name="utf8" c:type="gchar**"/>
+            </parameter>
+            <parameter name="cursor_index" transfer-ownership="none">
+              <doc xml:whitespace="preserve">location to store byte index of the insertion cursor within @text.</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved5" introspectable="0">
+        <callback name="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved6" introspectable="0">
+        <callback name="_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="IMContextInfo" c:type="GtkIMContextInfo">
+      <doc xml:whitespace="preserve">Bookkeeping information about a loadable input method.</doc>
+      <field name="context_id" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="context_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="domain" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="domain_dirname" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="default_locales" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </record>
+    <class name="IMContextSimple"
+           c:symbol-prefix="im_context_simple"
+           c:type="GtkIMContextSimple"
+           parent="IMContext"
+           glib:type-name="GtkIMContextSimple"
+           glib:get-type="gtk_im_context_simple_get_type"
+           glib:type-struct="IMContextSimpleClass">
+      <constructor name="new" c:identifier="gtk_im_context_simple_new">
+        <return-value transfer-ownership="full">
+          <type name="IMContext" c:type="GtkIMContext*"/>
+        </return-value>
+      </constructor>
+      <method name="add_table" c:identifier="gtk_im_context_simple_add_table">
+        <doc xml:whitespace="preserve">Adds an additional table to search to the input context.
+Each row of the table consists of @max_seq_len key symbols
+followed by two #guint16 interpreted as the high and low
+words of a #gunicode value. Tables are searched starting
+from the last added.
+The table must be sorted in dictionary order on the
+numeric value of the key symbol fields. (Values beyond
+the length of the sequence should be zero.)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the table</doc>
+            <type name="guint16" c:type="guint16*"/>
+          </parameter>
+          <parameter name="max_seq_len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Maximum length of a sequence in the table (cannot be greater than #GTK_MAX_COMPOSE_LEN)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="n_seqs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of sequences in the table</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="IMContext" c:type="GtkIMContext"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="IMContextSimplePrivate"
+              c:type="GtkIMContextSimplePrivate*"/>
+      </field>
+    </class>
+    <record name="IMContextSimpleClass"
+            c:type="GtkIMContextSimpleClass"
+            glib:is-gtype-struct-for="IMContextSimple">
+      <field name="parent_class">
+        <type name="IMContextClass" c:type="GtkIMContextClass"/>
+      </field>
+    </record>
+    <record name="IMContextSimplePrivate"
+            c:type="GtkIMContextSimplePrivate"
+            disguised="1">
+    </record>
+    <class name="IMMulticontext"
+           c:symbol-prefix="im_multicontext"
+           c:type="GtkIMMulticontext"
+           parent="IMContext"
+           glib:type-name="GtkIMMulticontext"
+           glib:get-type="gtk_im_multicontext_get_type"
+           glib:type-struct="IMMulticontextClass">
+      <constructor name="new" c:identifier="gtk_im_multicontext_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkIMMulticontext.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkIMMulticontext.</doc>
+          <type name="IMContext" c:type="GtkIMContext*"/>
+        </return-value>
+      </constructor>
+      <method name="append_menuitems"
+              c:identifier="gtk_im_multicontext_append_menuitems">
+        <doc xml:whitespace="preserve">Add menuitems for various available input methods to a menu;
+the menuitems, when selected, will switch the input method
+for the context and the global default input method.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="menushell" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkMenuShell</doc>
+            <type name="MenuShell" c:type="GtkMenuShell*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_context_id"
+              c:identifier="gtk_im_multicontext_get_context_id"
+              version="2.16">
+        <doc xml:whitespace="preserve">Gets the id of the currently active slave of the @context.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the id of the currently active slave</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="set_context_id"
+              c:identifier="gtk_im_multicontext_set_context_id"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets the context id for @context.
+This causes the currently active slave of @context to be
+replaced by the slave corresponding to the new context id.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="context_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id to use</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="IMContext" c:type="GtkIMContext"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="IMMulticontextPrivate" c:type="GtkIMMulticontextPrivate*"/>
+      </field>
+    </class>
+    <record name="IMMulticontextClass"
+            c:type="GtkIMMulticontextClass"
+            glib:is-gtype-struct-for="IMMulticontext">
+      <field name="parent_class">
+        <type name="IMContextClass" c:type="GtkIMContextClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="IMMulticontextPrivate"
+            c:type="GtkIMMulticontextPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="IMPreeditStyle"
+                 glib:type-name="GtkIMPreeditStyle"
+                 glib:get-type="gtk_im_preedit_style_get_type"
+                 c:type="GtkIMPreeditStyle">
+      <member name="nothing"
+              value="0"
+              c:identifier="GTK_IM_PREEDIT_NOTHING"
+              glib:nick="nothing"/>
+      <member name="callback"
+              value="1"
+              c:identifier="GTK_IM_PREEDIT_CALLBACK"
+              glib:nick="callback"/>
+      <member name="none"
+              value="2"
+              c:identifier="GTK_IM_PREEDIT_NONE"
+              glib:nick="none"/>
+    </enumeration>
+    <enumeration name="IMStatusStyle"
+                 glib:type-name="GtkIMStatusStyle"
+                 glib:get-type="gtk_im_status_style_get_type"
+                 c:type="GtkIMStatusStyle">
+      <member name="nothing"
+              value="0"
+              c:identifier="GTK_IM_STATUS_NOTHING"
+              glib:nick="nothing"/>
+      <member name="callback"
+              value="1"
+              c:identifier="GTK_IM_STATUS_CALLBACK"
+              glib:nick="callback"/>
+      <member name="none"
+              value="2"
+              c:identifier="GTK_IM_STATUS_NONE"
+              glib:nick="none"/>
+    </enumeration>
+    <constant name="INPUT_ERROR" value="-1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="INTERFACE_AGE" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="IconFactory"
+           c:symbol-prefix="icon_factory"
+           c:type="GtkIconFactory"
+           parent="GObject.Object"
+           glib:type-name="GtkIconFactory"
+           glib:get-type="gtk_icon_factory_get_type"
+           glib:type-struct="IconFactoryClass">
+      <implements name="Buildable"/>
+      <constructor name="new" c:identifier="gtk_icon_factory_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkIconFactory. An icon factory manages a collection
+of #GtkIconSet&lt;!-- --&gt;s; a #GtkIconSet manages a set of variants of a
+particular icon (i.e. a #GtkIconSet contains variants for different
+sizes and widget states). Icons in an icon factory are named by a
+stock ID, which is a simple string identifying the icon. Each
+#GtkStyle has a list of #GtkIconFactory&lt;!-- --&gt;s derived from the current
+theme; those icon factories are consulted first when searching for
+an icon. If the theme doesn't set a particular icon, GTK+ looks for
+the icon in a list of default icon factories, maintained by
+gtk_icon_factory_add_default() and
+gtk_icon_factory_remove_default(). Applications with icons should
+add a default icon factory with their icons, which will allow
+themes to override the icons for the application.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkIconFactory</doc>
+          <type name="IconFactory" c:type="GtkIconFactory*"/>
+        </return-value>
+      </constructor>
+      <function name="lookup_default"
+                c:identifier="gtk_icon_factory_lookup_default">
+        <doc xml:whitespace="preserve">Looks for an icon in the list of default icon factories.  For
+display to the user, you should use gtk_style_lookup_icon_set() on
+the #GtkStyle for the widget that will display the icon, instead of
+using this function directly, so that themes are taken into
+account.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GtkIconSet, or %NULL</doc>
+          <type name="IconSet" c:type="GtkIconSet*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an icon name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="add" c:identifier="gtk_icon_factory_add">
+        <doc xml:whitespace="preserve">Adds the given @icon_set to the icon factory, under the name
+e.g. "myapp-whatever-icon".  Normally applications create a
+#GtkIconFactory, then add it to the list of default factories with
+gtk_icon_factory_add_default(). Then they pass the @stock_id to
+widgets such as #GtkImage to display the icon. Themes can provide
+an icon with the same name (such as "myapp-whatever-icon") to
+override your application's default icons. If an icon already
+existed in @factory for @stock_id, it is unreferenced and replaced
+with the new @icon_set.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">icon name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="icon_set" transfer-ownership="none">
+            <doc xml:whitespace="preserve">icon set</doc>
+            <type name="IconSet" c:type="GtkIconSet*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_default" c:identifier="gtk_icon_factory_add_default">
+        <doc xml:whitespace="preserve">Adds an icon factory to the list of icon factories searched by
+gtk_style_lookup_icon_set(). This means that, for example,
+gtk_image_new_from_stock() will be able to find icons in @factory.
+There will normally be an icon factory added for each library or
+application that comes with icons. The default icon factories
+can be overridden by themes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="lookup" c:identifier="gtk_icon_factory_lookup">
+        <doc xml:whitespace="preserve">Looks up @stock_id in the icon factory, returning an icon set
+if found, otherwise %NULL. For display to the user, you should
+use gtk_style_lookup_icon_set() on the #GtkStyle for the
+widget that will display the icon, instead of using this
+function directly, so that themes are taken into account.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">icon set of @stock_id.</doc>
+          <type name="IconSet" c:type="GtkIconSet*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an icon name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_default"
+              c:identifier="gtk_icon_factory_remove_default">
+        <doc xml:whitespace="preserve">Removes an icon factory from the list of default icon
+factories. Not normally used; you might use it for a library that
+can be unloaded or shut down.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="IconFactoryPrivate" c:type="GtkIconFactoryPrivate*"/>
+      </field>
+    </class>
+    <record name="IconFactoryClass"
+            c:type="GtkIconFactoryClass"
+            glib:is-gtype-struct-for="IconFactory">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="IconFactoryPrivate"
+            c:type="GtkIconFactoryPrivate"
+            disguised="1">
+    </record>
+    <record name="IconInfo"
+            c:type="GtkIconInfo"
+            glib:type-name="GtkIconInfo"
+            glib:get-type="gtk_icon_info_get_type"
+            c:symbol-prefix="icon_info">
+      <constructor name="new_for_pixbuf"
+                   c:identifier="gtk_icon_info_new_for_pixbuf"
+                   version="2.14">
+        <doc xml:whitespace="preserve">Creates a #GtkIconInfo for a #GdkPixbuf.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GtkIconInfo</doc>
+          <type name="IconInfo" c:type="GtkIconInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_theme" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkIconTheme</doc>
+            <type name="IconTheme" c:type="GtkIconTheme*"/>
+          </parameter>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the pixbuf to wrap in a #GtkIconInfo</doc>
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy" c:identifier="gtk_icon_info_copy" version="2.4">
+        <doc xml:whitespace="preserve">Make a copy of a #GtkIconInfo.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new GtkIconInfo</doc>
+          <type name="IconInfo" c:type="GtkIconInfo*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gtk_icon_info_free" version="2.4">
+        <doc xml:whitespace="preserve">Free a #GtkIconInfo and associated information</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_attach_points"
+              c:identifier="gtk_icon_info_get_attach_points"
+              version="2.4">
+        <doc xml:whitespace="preserve">Fetches the set of attach points for an icon. An attach point
+is a location in the icon that can be used as anchor points for attaching
+emblems or overlays to the icon.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if there are any attach points for the icon.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="points"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store pointer to an array of points, or %NULL free the array of points with g_free().</doc>
+            <array length="1" c:type="GdkPoint**">
+              <type name="Gdk.Point"/>
+            </array>
+          </parameter>
+          <parameter name="n_points"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the number of points in @points, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_base_size"
+              c:identifier="gtk_icon_info_get_base_size"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the base size for the icon. The base size
+is a size for the icon that was specified by
+the icon theme creator. This may be different
+than the actual size of image; an example of
+this is small emblem icons that can be attached
+to a larger icon. These icons will be given
+the same base size as the larger icons to which
+they are attached.
+size is known for the icon.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the base size, or 0, if no base</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_builtin_pixbuf"
+              c:identifier="gtk_icon_info_get_builtin_pixbuf"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the built-in image for this icon, if any. To allow
+GTK+ to use built in icon images, you must pass the
+%GTK_ICON_LOOKUP_USE_BUILTIN to
+gtk_icon_theme_lookup_icon().
+extra reference is added to the returned pixbuf, so if
+you want to keep it around, you must use g_object_ref().
+The returned image must not be modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the built-in image pixbuf, or %NULL. No</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="get_display_name"
+              c:identifier="gtk_icon_info_get_display_name"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the display name for an icon. A display name is a
+string to be used in place of the icon name in a user
+visible context like a list of icons.
+the icon doesn't have a specified display name. This value
+is owned @icon_info and must not be modified or free.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the display name for the icon or %NULL, if</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_embedded_rect"
+              c:identifier="gtk_icon_info_get_embedded_rect"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the coordinates of a rectangle within the icon
+that can be used for display of information such
+as a preview of the contents of a text file.
+See gtk_icon_info_set_raw_coordinates() for further
+information about the coordinate system.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the icon has an embedded rectangle</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="rectangle" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GdkRectangle in which to store embedded rectangle coordinates; coordinates are only stored when this function returns %TRUE.</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_filename"
+              c:identifier="gtk_icon_info_get_filename"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the filename for the icon. If the
+%GTK_ICON_LOOKUP_USE_BUILTIN flag was passed
+to gtk_icon_theme_lookup_icon(), there may be
+no filename if a builtin icon is returned; in this
+case, you should use gtk_icon_info_get_builtin_pixbuf().
+if gtk_icon_info_get_builtin_pixbuf() should
+be used instead. The return value is owned by
+GTK+ and should not be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the filename for the icon, or %NULL</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="load_icon"
+              c:identifier="gtk_icon_info_load_icon"
+              version="2.4"
+              throws="1">
+        <doc xml:whitespace="preserve">Renders an icon previously looked up in an icon theme using
+gtk_icon_theme_lookup_icon(); the size will be based on the size
+passed to gtk_icon_theme_lookup_icon(). Note that the resulting
+pixbuf may not be exactly this size; an icon theme may have icons
+that differ slightly from their nominal sizes, and in addition GTK+
+will avoid scaling icons that it considers sufficiently close to the
+requested size or for which the source image would have to be scaled
+up too far. (This maintains sharpness.). This behaviour can be changed
+by passing the %GTK_ICON_LOOKUP_FORCE_SIZE flag when obtaining
+the #GtkIconInfo. If this flag has been specified, the pixbuf
+returned by this function will be scaled to the exact size.
+created icon or a new reference to an internal icon, so you must
+not modify the icon. Use g_object_unref() to release your reference
+to the icon.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the rendered icon; this may be a newly</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="load_symbolic"
+              c:identifier="gtk_icon_info_load_symbolic"
+              version="3.0"
+              throws="1">
+        <doc xml:whitespace="preserve">Loads an icon, modifying it to match the system colours for the foreground,
+success, warning and error colors provided. If the icon is not a symbolic
+one, the function will return the result from gtk_icon_info_load_icon().
+This allows loading symbolic icons that will match the system theme.
+Unless you are implementing a widget, you will want to use
+g_themed_icon_new_with_default_fallbacks() to load the icon.
+As implementation details, the icon loaded needs to be of SVG type,
+contain the "symbolic" term as the last component of the icon name,
+and use the 'fg', 'success', 'warning' and 'error' CSS styles in the
+SVG file itself.
+See the &lt;ulink url="http://www.freedesktop.org/wiki/SymbolicIcons"&gt;Symbolic Icons spec&lt;/ulink&gt;
+for more information about symbolic icons.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GdkPixbuf representing the loaded icon</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="fg" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkColor representing the foreground color of the icon</doc>
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+          <parameter name="success_color"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GdkColor representing the warning color of the icon or %NULL to use the default color</doc>
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+          <parameter name="warning_color"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GdkColor representing the warning color of the icon or %NULL to use the default color</doc>
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+          <parameter name="error_color"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GdkColor representing the error color of the icon or %NULL to use the default color (allow-none)</doc>
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+          <parameter name="was_symbolic"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #gboolean, returns whether the loaded icon was a symbolic one and whether the @fg color was applied to it.</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_symbolic_for_style"
+              c:identifier="gtk_icon_info_load_symbolic_for_style"
+              version="3.0"
+              throws="1">
+        <doc xml:whitespace="preserve">Loads an icon, modifying it to match the system colours for the foreground,
+success, warning and error colors provided. If the icon is not a symbolic
+one, the function will return the result from gtk_icon_info_load_icon().
+This allows loading symbolic icons that will match the system theme.
+See gtk_icon_info_load_symbolic() for more details.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GdkPixbuf representing the loaded icon</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="style" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkStyle to take the colors from</doc>
+            <type name="Style" c:type="GtkStyle*"/>
+          </parameter>
+          <parameter name="state" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the widget state to use for colors</doc>
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="was_symbolic"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #gboolean, returns whether the loaded icon was a symbolic one and whether the @fg color was applied to it.</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_raw_coordinates"
+              c:identifier="gtk_icon_info_set_raw_coordinates"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets whether the coordinates returned by gtk_icon_info_get_embedded_rect()
+and gtk_icon_info_get_attach_points() should be returned in their
+original form as specified in the icon theme, instead of scaled
+appropriately for the pixbuf returned by gtk_icon_info_load_icon().
+Raw coordinates are somewhat strange; they are specified to be with
+respect to the unscaled pixmap for PNG and XPM icons, but for SVG
+icons, they are in a 1000x1000 coordinate space that is scaled
+to the final size of the icon.  You can determine if the icon is an SVG
+icon by using gtk_icon_info_get_filename(), and seeing if it is non-%NULL
+and ends in '.svg'.
+This function is provided primarily to allow compatibility wrappers
+for older API's, and is not expected to be useful for applications.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="raw_coordinates" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the coordinates of embedded rectangles and attached points should be returned in their original (unscaled) form.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <bitfield name="IconLookupFlags"
+              glib:type-name="GtkIconLookupFlags"
+              glib:get-type="gtk_icon_lookup_flags_get_type"
+              c:type="GtkIconLookupFlags">
+      <doc xml:whitespace="preserve">Used to specify options for gtk_icon_theme_lookup_icon()</doc>
+      <member name="no_svg"
+              value="1"
+              c:identifier="GTK_ICON_LOOKUP_NO_SVG"
+              glib:nick="no-svg"/>
+      <member name="force_svg"
+              value="2"
+              c:identifier="GTK_ICON_LOOKUP_FORCE_SVG"
+              glib:nick="force-svg"/>
+      <member name="use_builtin"
+              value="4"
+              c:identifier="GTK_ICON_LOOKUP_USE_BUILTIN"
+              glib:nick="use-builtin"/>
+      <member name="generic_fallback"
+              value="8"
+              c:identifier="GTK_ICON_LOOKUP_GENERIC_FALLBACK"
+              glib:nick="generic-fallback"/>
+      <member name="force_size"
+              value="16"
+              c:identifier="GTK_ICON_LOOKUP_FORCE_SIZE"
+              glib:nick="force-size"/>
+    </bitfield>
+    <record name="IconSet"
+            c:type="GtkIconSet"
+            glib:type-name="GtkIconSet"
+            glib:get-type="gtk_icon_set_get_type"
+            c:symbol-prefix="icon_set">
+      <constructor name="new" c:identifier="gtk_icon_set_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkIconSet. A #GtkIconSet represents a single icon
+in various sizes and widget states. It can provide a #GdkPixbuf
+for a given size and state on request, and automatically caches
+some of the rendered #GdkPixbuf objects.
+Normally you would use gtk_widget_render_icon() instead of
+using #GtkIconSet directly. The one case where you'd use
+#GtkIconSet is to create application-specific icon sets to place in
+a #GtkIconFactory.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkIconSet</doc>
+          <type name="IconSet" c:type="GtkIconSet*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_pixbuf"
+                   c:identifier="gtk_icon_set_new_from_pixbuf">
+        <doc xml:whitespace="preserve">Creates a new #GtkIconSet with @pixbuf as the default/fallback
+source image. If you don't add any additional #GtkIconSource to the
+icon set, all variants of the icon will be created from @pixbuf,
+using scaling, pixelation, etc. as required to adjust the icon size
+or make the icon look insensitive/prelighted.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkIconSet</doc>
+          <type name="IconSet" c:type="GtkIconSet*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkPixbuf</doc>
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add_source" c:identifier="gtk_icon_set_add_source">
+        <doc xml:whitespace="preserve">Icon sets have a list of #GtkIconSource, which they use as base
+icons for rendering icons in different states and sizes. Icons are
+scaled, made to look insensitive, etc. in
+gtk_icon_set_render_icon(), but #GtkIconSet needs base images to
+work with. The base images and when to use them are described by
+a #GtkIconSource.
+This function copies @source, so you can reuse the same source immediately
+without affecting the icon set.
+to Previous Page" icon might point in a different direction in
+Hebrew and in English; it might look different when insensitive;
+and it might change size depending on toolbar mode (small/large
+icons). So a single icon set would contain all those variants of
+the icon, and you might add a separate source for each one.
+You should nearly always add a "default" icon source with all
+fields wildcarded, which will be used as a fallback if no more
+specific source matches. #GtkIconSet always prefers more specific
+icon sources to more generic icon sources. The order in which you
+add the sources to the icon set does not matter.
+gtk_icon_set_new_from_pixbuf() creates a new icon set with a
+default icon source based on the given pixbuf.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkIconSource</doc>
+            <type name="IconSource" c:type="GtkIconSource*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="gtk_icon_set_copy">
+        <doc xml:whitespace="preserve">Copies @icon_set by value.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkIconSet identical to the first.</doc>
+          <type name="IconSet" c:type="GtkIconSet*"/>
+        </return-value>
+      </method>
+      <method name="get_sizes" c:identifier="gtk_icon_set_get_sizes">
+        <doc xml:whitespace="preserve">Obtains a list of icon sizes this icon set can render. The returned
+array must be freed with g_free().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sizes"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for array of sizes</doc>
+            <array length="1">
+              <type name="gint"/>
+            </array>
+          </parameter>
+          <parameter name="n_sizes"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location to store number of elements in returned array</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref" c:identifier="gtk_icon_set_ref">
+        <doc xml:whitespace="preserve">Increments the reference count on @icon_set.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">@icon_set.</doc>
+          <type name="IconSet" c:type="GtkIconSet*"/>
+        </return-value>
+      </method>
+      <method name="render_icon" c:identifier="gtk_icon_set_render_icon">
+        <doc xml:whitespace="preserve">Renders an icon using gtk_style_render_icon(). In most cases,
+gtk_widget_render_icon() is better, since it automatically provides
+most of the arguments from the current widget settings.  This
+function never returns %NULL; if the icon can't be rendered
+(perhaps because an image file fails to load), a default "missing
+image" icon will be returned instead.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GdkPixbuf to be displayed</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="style" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkStyle associated with @widget, or %NULL</doc>
+            <type name="Style" c:type="GtkStyle*"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">text direction</doc>
+            <type name="TextDirection" c:type="GtkTextDirection"/>
+          </parameter>
+          <parameter name="state" transfer-ownership="none">
+            <doc xml:whitespace="preserve">widget state</doc>
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">icon size. A size of (GtkIconSize)-1 means render at the size of the source and don't scale.</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">widget that will display the icon, or %NULL. The only use that is typically made of this is to determine the appropriate #GdkScreen.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">detail to pass to the theme engine, or %NULL. Note that passing a detail of anything but %NULL will disable caching.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unref" c:identifier="gtk_icon_set_unref">
+        <doc xml:whitespace="preserve">Decrements the reference count on @icon_set, and frees memory
+if the reference count reaches 0.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="IconSize"
+                 glib:type-name="GtkIconSize"
+                 glib:get-type="gtk_icon_size_get_type"
+                 c:type="GtkIconSize">
+      <member name="invalid"
+              value="0"
+              c:identifier="GTK_ICON_SIZE_INVALID"
+              glib:nick="invalid"/>
+      <member name="menu"
+              value="1"
+              c:identifier="GTK_ICON_SIZE_MENU"
+              glib:nick="menu"/>
+      <member name="small_toolbar"
+              value="2"
+              c:identifier="GTK_ICON_SIZE_SMALL_TOOLBAR"
+              glib:nick="small-toolbar"/>
+      <member name="large_toolbar"
+              value="3"
+              c:identifier="GTK_ICON_SIZE_LARGE_TOOLBAR"
+              glib:nick="large-toolbar"/>
+      <member name="button"
+              value="4"
+              c:identifier="GTK_ICON_SIZE_BUTTON"
+              glib:nick="button"/>
+      <member name="dnd"
+              value="5"
+              c:identifier="GTK_ICON_SIZE_DND"
+              glib:nick="dnd"/>
+      <member name="dialog"
+              value="6"
+              c:identifier="GTK_ICON_SIZE_DIALOG"
+              glib:nick="dialog"/>
+    </enumeration>
+    <record name="IconSource"
+            c:type="GtkIconSource"
+            glib:type-name="GtkIconSource"
+            glib:get-type="gtk_icon_source_get_type"
+            c:symbol-prefix="icon_source">
+      <constructor name="new" c:identifier="gtk_icon_source_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkIconSource. A #GtkIconSource contains a #GdkPixbuf (or
+image filename) that serves as the base image for one or more of the
+icons in a #GtkIconSet, along with a specification for which icons in the
+icon set will be based on that pixbuf or image file. An icon set contains
+a set of icons that represent "the same" logical concept in different states,
+different global text directions, and different sizes.
+So for example a web browser's "Back to Previous Page" icon might
+point in a different direction in Hebrew and in English; it might
+look different when insensitive; and it might change size depending
+on toolbar mode (small/large icons). So a single icon set would
+contain all those variants of the icon. #GtkIconSet contains a list
+of #GtkIconSource from which it can derive specific icon variants in
+the set.
+In the simplest case, #GtkIconSet contains one source pixbuf from
+which it derives all variants. The convenience function
+gtk_icon_set_new_from_pixbuf() handles this case; if you only have
+one source pixbuf, just use that function.
+If you want to use a different base pixbuf for different icon
+variants, you create multiple icon sources, mark which variants
+they'll be used to create, and add them to the icon set with
+gtk_icon_set_add_source().
+By default, the icon source has all parameters wildcarded. That is,
+the icon source will be used as the base icon for any desired text
+direction, widget state, or icon size.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkIconSource</doc>
+          <type name="IconSource" c:type="GtkIconSource*"/>
+        </return-value>
+      </constructor>
+      <method name="copy" c:identifier="gtk_icon_source_copy">
+        <doc xml:whitespace="preserve">Creates a copy of @source; mostly useful for language bindings.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkIconSource</doc>
+          <type name="IconSource" c:type="GtkIconSource*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gtk_icon_source_free">
+        <doc xml:whitespace="preserve">Frees a dynamically-allocated icon source, along with its
+filename, size, and pixbuf fields if those are not %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_direction"
+              c:identifier="gtk_icon_source_get_direction">
+        <doc xml:whitespace="preserve">Obtains the text direction this icon source applies to. The return
+value is only useful/meaningful if the text direction is &lt;emphasis&gt;not&lt;/emphasis&gt;
+wildcarded.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">text direction this source matches</doc>
+          <type name="TextDirection" c:type="GtkTextDirection"/>
+        </return-value>
+      </method>
+      <method name="get_direction_wildcarded"
+              c:identifier="gtk_icon_source_get_direction_wildcarded">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_icon_source_set_direction_wildcarded().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if this icon source is a base for any text direction variant</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_filename" c:identifier="gtk_icon_source_get_filename">
+        <doc xml:whitespace="preserve">Retrieves the source filename, or %NULL if none is set. The
+filename is not a copy, and should not be modified or expected to
+persist beyond the lifetime of the icon source.
+or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">image filename. This string must not be modified</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_icon_name"
+              c:identifier="gtk_icon_source_get_icon_name">
+        <doc xml:whitespace="preserve">Retrieves the source icon name, or %NULL if none is set. The
+icon_name is not a copy, and should not be modified or expected to
+persist beyond the lifetime of the icon source.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">icon name. This string must not be modified or freed.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_pixbuf" c:identifier="gtk_icon_source_get_pixbuf">
+        <doc xml:whitespace="preserve">Retrieves the source pixbuf, or %NULL if none is set.
+In addition, if a filename source is in use, this
+function in some cases will return the pixbuf from
+loaded from the filename. This is, for example, true
+for the GtkIconSource passed to the GtkStyle::render_icon()
+virtual function. The reference count on the pixbuf is
+not incremented.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">source pixbuf</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="get_size" c:identifier="gtk_icon_source_get_size">
+        <doc xml:whitespace="preserve">Obtains the icon size this source applies to. The return value
+is only useful/meaningful if the icon size is &lt;emphasis&gt;not&lt;/emphasis&gt; wildcarded.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">icon size this source matches.</doc>
+          <type name="gint"/>
+        </return-value>
+      </method>
+      <method name="get_size_wildcarded"
+              c:identifier="gtk_icon_source_get_size_wildcarded">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_icon_source_set_size_wildcarded().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if this icon source is a base for any icon size variant</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_state" c:identifier="gtk_icon_source_get_state">
+        <doc xml:whitespace="preserve">Obtains the widget state this icon source applies to. The return
+value is only useful/meaningful if the widget state is &lt;emphasis&gt;not&lt;/emphasis&gt;
+wildcarded.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">widget state this source matches</doc>
+          <type name="StateType" c:type="GtkStateType"/>
+        </return-value>
+      </method>
+      <method name="get_state_wildcarded"
+              c:identifier="gtk_icon_source_get_state_wildcarded">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_icon_source_set_state_wildcarded().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if this icon source is a base for any widget state variant</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_direction"
+              c:identifier="gtk_icon_source_set_direction">
+        <doc xml:whitespace="preserve">Sets the text direction this icon source is intended to be used
+with.
+Setting the text direction on an icon source makes no difference
+if the text direction is wildcarded. Therefore, you should usually
+call gtk_icon_source_set_direction_wildcarded() to un-wildcard it
+in addition to calling this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">text direction this source applies to</doc>
+            <type name="TextDirection" c:type="GtkTextDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_direction_wildcarded"
+              c:identifier="gtk_icon_source_set_direction_wildcarded">
+        <doc xml:whitespace="preserve">If the text direction is wildcarded, this source can be used
+as the base image for an icon in any #GtkTextDirection.
+If the text direction is not wildcarded, then the
+text direction the icon source applies to should be set
+with gtk_icon_source_set_direction(), and the icon source
+will only be used with that text direction.
+#GtkIconSet prefers non-wildcarded sources (exact matches) over
+wildcarded sources, and will use an exact match when possible.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to wildcard the text direction</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_filename" c:identifier="gtk_icon_source_set_filename">
+        <doc xml:whitespace="preserve">Sets the name of an image file to use as a base image when creating
+icon variants for #GtkIconSet. The filename must be absolute.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">image file to use</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_name"
+              c:identifier="gtk_icon_source_set_icon_name">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pixbuf" c:identifier="gtk_icon_source_set_pixbuf">
+        <doc xml:whitespace="preserve">Sets a pixbuf to use as a base image when creating icon variants
+for #GtkIconSet.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pixbuf to use as a source</doc>
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_size" c:identifier="gtk_icon_source_set_size">
+        <doc xml:whitespace="preserve">Sets the icon size this icon source is intended to be used
+with.
+Setting the icon size on an icon source makes no difference
+if the size is wildcarded. Therefore, you should usually
+call gtk_icon_source_set_size_wildcarded() to un-wildcard it
+in addition to calling this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">icon size this source applies to</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_size_wildcarded"
+              c:identifier="gtk_icon_source_set_size_wildcarded">
+        <doc xml:whitespace="preserve">If the icon size is wildcarded, this source can be used as the base
+image for an icon of any size.  If the size is not wildcarded, then
+the size the source applies to should be set with
+gtk_icon_source_set_size() and the icon source will only be used
+with that specific size.
+#GtkIconSet prefers non-wildcarded sources (exact matches) over
+wildcarded sources, and will use an exact match when possible.
+#GtkIconSet will normally scale wildcarded source images to produce
+an appropriate icon at a given size, but will not change the size
+of source images that match exactly.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to wildcard the widget state</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_state" c:identifier="gtk_icon_source_set_state">
+        <doc xml:whitespace="preserve">Sets the widget state this icon source is intended to be used
+with.
+Setting the widget state on an icon source makes no difference
+if the state is wildcarded. Therefore, you should usually
+call gtk_icon_source_set_state_wildcarded() to un-wildcard it
+in addition to calling this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <doc xml:whitespace="preserve">widget state this source applies to</doc>
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_state_wildcarded"
+              c:identifier="gtk_icon_source_set_state_wildcarded">
+        <doc xml:whitespace="preserve">If the widget state is wildcarded, this source can be used as the
+base image for an icon in any #GtkStateType.  If the widget state
+is not wildcarded, then the state the source applies to should be
+set with gtk_icon_source_set_state() and the icon source will
+only be used with that specific state.
+#GtkIconSet prefers non-wildcarded sources (exact matches) over
+wildcarded sources, and will use an exact match when possible.
+#GtkIconSet will normally transform wildcarded source images to
+produce an appropriate icon for a given state, for example
+lightening an image on prelight, but will not modify source images
+that match exactly.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to wildcard the widget state</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <class name="IconTheme"
+           c:symbol-prefix="icon_theme"
+           c:type="GtkIconTheme"
+           parent="GObject.Object"
+           glib:type-name="GtkIconTheme"
+           glib:get-type="gtk_icon_theme_get_type"
+           glib:type-struct="IconThemeClass">
+      <constructor name="new" c:identifier="gtk_icon_theme_new" version="2.4">
+        <doc xml:whitespace="preserve">Creates a new icon theme object. Icon theme objects are used
+to lookup up an icon by name in a particular icon theme.
+Usually, you'll want to use gtk_icon_theme_get_default()
+or gtk_icon_theme_get_for_screen() rather than creating
+a new icon theme object for scratch.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #GtkIconTheme object.</doc>
+          <type name="IconTheme" c:type="GtkIconTheme*"/>
+        </return-value>
+      </constructor>
+      <function name="add_builtin_icon"
+                c:identifier="gtk_icon_theme_add_builtin_icon"
+                version="2.4">
+        <doc xml:whitespace="preserve">Registers a built-in icon for icon theme lookups. The idea
+of built-in icons is to allow an application or library
+that uses themed icons to function requiring files to
+be present in the file system. For instance, the default
+images for all of GTK+'s stock icons are registered
+as built-icons.
+In general, if you use gtk_icon_theme_add_builtin_icon()
+you should also install the icon in the icon theme, so
+that the icon is generally available.
+This function will generally be used with pixbufs loaded
+via gdk_pixbuf_new_from_inline().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the icon to register</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size at which to register the icon (different images can be registered for the same icon name at different sizes.)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GdkPixbuf that contains the image to use for @icon_name.</doc>
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_default"
+                c:identifier="gtk_icon_theme_get_default"
+                version="2.4">
+        <doc xml:whitespace="preserve">Gets the icon theme for the default screen. See
+gtk_icon_theme_get_for_screen().
+the default screen. This icon theme is associated with
+the screen and can be used as long as the screen
+is open. Do not ref or unref it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A unique #GtkIconTheme associated with</doc>
+          <type name="IconTheme" c:type="GtkIconTheme*"/>
+        </return-value>
+      </function>
+      <function name="get_for_screen"
+                c:identifier="gtk_icon_theme_get_for_screen"
+                version="2.4">
+        <doc xml:whitespace="preserve">Gets the icon theme object associated with @screen; if this
+function has not previously been called for the given
+screen, a new icon theme object will be created and
+associated with the screen. Icon theme objects are
+fairly expensive to create, so using this function
+is usually a better choice than calling than gtk_icon_theme_new()
+and setting the screen yourself; by using this function
+a single icon theme object will be shared between users.
+the given screen. This icon theme is associated with
+the screen and can be used as long as the screen
+is open. Do not ref or unref it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A unique #GtkIconTheme associated with</doc>
+          <type name="IconTheme" c:type="GtkIconTheme*"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkScreen</doc>
+            <type name="Gdk.Screen" c:type="GdkScreen*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="append_search_path"
+              c:identifier="gtk_icon_theme_append_search_path"
+              version="2.4">
+        <doc xml:whitespace="preserve">Appends a directory to the search path. 
+See gtk_icon_theme_set_search_path().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">directory name to append to the icon path</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="choose_icon"
+              c:identifier="gtk_icon_theme_choose_icon"
+              version="2.12">
+        <doc xml:whitespace="preserve">Looks up a named icon and returns a structure containing
+information such as the filename of the icon. The icon
+can then be rendered into a pixbuf using
+gtk_icon_info_load_icon(). (gtk_icon_theme_load_icon()
+combines these two steps if all you need is the pixbuf.)
+If @icon_names contains more than one name, this function 
+tries them all in the given order before falling back to 
+inherited icon themes.
+about the icon, or %NULL if the icon wasn't found. Free with
+gtk_icon_info_free()</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GtkIconInfo structure containing information</doc>
+          <type name="IconInfo" c:type="GtkIconInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_names" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%NULL-terminated array of icon names to lookup</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">desired icon size</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags modifying the behavior of the icon lookup</doc>
+            <type name="IconLookupFlags" c:type="GtkIconLookupFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_example_icon_name"
+              c:identifier="gtk_icon_theme_get_example_icon_name"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the name of an icon that is representative of the
+current theme (for instance, to use when presenting
+a list of themes to the user.)
+Free with g_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the name of an example icon or %NULL.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_icon_sizes"
+              c:identifier="gtk_icon_theme_get_icon_sizes"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns an array of integers describing the sizes at which
+the icon is available without scaling. A size of -1 means 
+that the icon is available in a scalable format. The array 
+is zero-terminated.
+which the icon is available. The array should be freed with g_free()
+when it is no longer needed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">An newly allocated array describing the sizes at</doc>
+          <type name="gint" c:type="gint*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of an icon</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_search_path"
+              c:identifier="gtk_icon_theme_get_search_path"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the current search path. See gtk_icon_theme_set_search_path().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store a list of icon theme path directories or %NULL The stored value should be freed with g_strfreev().</doc>
+            <array length="1" c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="n_elements"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location to store number of elements in @path, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_icon"
+              c:identifier="gtk_icon_theme_has_icon"
+              version="2.4">
+        <doc xml:whitespace="preserve">Checks whether an icon theme includes an icon
+for a particular name.
+icon for @icon_name.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @icon_theme includes an</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of an icon</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_contexts"
+              c:identifier="gtk_icon_theme_list_contexts"
+              version="2.12">
+        <doc xml:whitespace="preserve">Gets the list of contexts available within the current
+hierarchy of icon themes
+contexts in the theme. You must first free each element
+in the list with g_free(), then free the list itself
+with g_list_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GList list holding the names of all the</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="list_icons"
+              c:identifier="gtk_icon_theme_list_icons"
+              version="2.4">
+        <doc xml:whitespace="preserve">Lists the icons in the current icon theme. Only a subset
+of the icons can be listed by providing a context string.
+The set of values for the context string is system dependent,
+but will typically include such values as "Applications" and
+"MimeTypes".
+icons in the theme. You must first free each element
+in the list with g_free(), then free the list itself
+with g_list_free().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GList list holding the names of all the</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="context" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string identifying a particular type of icon, or %NULL to list all icons.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_icon"
+              c:identifier="gtk_icon_theme_load_icon"
+              version="2.4"
+              throws="1">
+        <doc xml:whitespace="preserve">Looks up an icon in an icon theme, scales it to the given size
+and renders it into a pixbuf. This is a convenience function;
+if more details about the icon are needed, use
+gtk_icon_theme_lookup_icon() followed by gtk_icon_info_load_icon().
+Note that you probably want to listen for icon theme changes and
+update the icon. This is usually done by connecting to the
+GtkWidget::style-set signal. If for some reason you do not want to
+update the icon when the icon theme changes, you should consider
+using gdk_pixbuf_copy() to make a private copy of the pixbuf
+returned by this function. Otherwise GTK+ may need to keep the old
+icon theme loaded, which would be a waste of memory.
+newly created icon or a new reference to an internal icon, so
+you must not modify the icon. Use g_object_unref() to release
+your reference to the icon. %NULL if the icon isn't found.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the rendered icon; this may be a</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the icon to lookup</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the desired icon size. The resulting icon may not be exactly this size; see gtk_icon_info_load_icon().</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags modifying the behavior of the icon lookup</doc>
+            <type name="IconLookupFlags" c:type="GtkIconLookupFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_by_gicon"
+              c:identifier="gtk_icon_theme_lookup_by_gicon"
+              version="2.14">
+        <doc xml:whitespace="preserve">Looks up an icon and returns a structure containing
+information such as the filename of the icon. 
+The icon can then be rendered into a pixbuf using
+gtk_icon_info_load_icon().
+information about the icon, or %NULL if the icon 
+wasn't found. Free with gtk_icon_info_free()</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GtkIconInfo structure containing</doc>
+          <type name="IconInfo" c:type="GtkIconInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GIcon to look up</doc>
+            <type name="Gio.Icon" c:type="GIcon*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">desired icon size</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags modifying the behavior of the icon lookup</doc>
+            <type name="IconLookupFlags" c:type="GtkIconLookupFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_icon"
+              c:identifier="gtk_icon_theme_lookup_icon"
+              version="2.4">
+        <doc xml:whitespace="preserve">Looks up a named icon and returns a structure containing
+information such as the filename of the icon. The icon
+can then be rendered into a pixbuf using
+gtk_icon_info_load_icon(). (gtk_icon_theme_load_icon()
+combines these two steps if all you need is the pixbuf.)
+about the icon, or %NULL if the icon wasn't found. Free with
+gtk_icon_info_free()</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GtkIconInfo structure containing information</doc>
+          <type name="IconInfo" c:type="GtkIconInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the icon to lookup</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">desired icon size</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags modifying the behavior of the icon lookup</doc>
+            <type name="IconLookupFlags" c:type="GtkIconLookupFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend_search_path"
+              c:identifier="gtk_icon_theme_prepend_search_path"
+              version="2.4">
+        <doc xml:whitespace="preserve">Prepends a directory to the search path. 
+See gtk_icon_theme_set_search_path().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">directory name to prepend to the icon path</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="rescan_if_needed"
+              c:identifier="gtk_icon_theme_rescan_if_needed"
+              version="2.4">
+        <doc xml:whitespace="preserve">Checks to see if the icon theme has changed; if it has, any
+currently cached information is discarded and will be reloaded
+next time @icon_theme is accessed.
+to be reloaded.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the icon theme has changed and needed</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_custom_theme"
+              c:identifier="gtk_icon_theme_set_custom_theme"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the name of the icon theme that the #GtkIconTheme object uses
+overriding system configuration. This function cannot be called
+on the icon theme objects returned from gtk_icon_theme_get_default()
+and gtk_icon_theme_get_for_screen().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="theme_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of icon theme to use instead of configured theme, or %NULL to unset a previously set custom theme</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_screen"
+              c:identifier="gtk_icon_theme_set_screen"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the screen for an icon theme; the screen is used
+to track the user's currently configured icon theme,
+which might be different for different screens.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkScreen</doc>
+            <type name="Gdk.Screen" c:type="GdkScreen*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_search_path"
+              c:identifier="gtk_icon_theme_set_search_path"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the search path for the icon theme object. When looking
+for an icon theme, GTK+ will search for a subdirectory of
+one or more of the directories in @path with the same name
+as the icon theme. (Themes from multiple of the path elements
+are combined to allow themes to be extended by adding icons
+in the user's home directory.)
+In addition if an icon found isn't found either in the current
+icon theme or the default icon theme, and an image file with
+the right name is found directly in one of the elements of
+(This is legacy feature, and new icons should be put
+into the default icon theme, which is called DEFAULT_THEME_NAME,
+rather than directly on the icon path.)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">array of directories that are searched for icon themes</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="n_elements" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of elements in @path.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="IconThemePrivate" c:type="GtkIconThemePrivate*"/>
+      </field>
+      <glib:signal name="changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="IconThemeClass"
+            c:type="GtkIconThemeClass"
+            glib:is-gtype-struct-for="IconTheme">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="changed">
+        <callback name="changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="icon_theme" transfer-ownership="none">
+              <type name="IconTheme" c:type="GtkIconTheme*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="IconThemeError"
+                 glib:type-name="GtkIconThemeError"
+                 glib:get-type="gtk_icon_theme_error_get_type"
+                 c:type="GtkIconThemeError"
+                 glib:error-quark="gtk_icon_theme_error_quark">
+      <doc xml:whitespace="preserve">Error codes for GtkIconTheme operations.</doc>
+      <member name="not_found"
+              value="0"
+              c:identifier="GTK_ICON_THEME_NOT_FOUND"
+              glib:nick="not-found"/>
+      <member name="failed"
+              value="1"
+              c:identifier="GTK_ICON_THEME_FAILED"
+              glib:nick="failed"/>
+    </enumeration>
+    <record name="IconThemePrivate" c:type="GtkIconThemePrivate" disguised="1">
+    </record>
+    <class name="IconView"
+           c:symbol-prefix="icon_view"
+           c:type="GtkIconView"
+           parent="Container"
+           glib:type-name="GtkIconView"
+           glib:get-type="gtk_icon_view_get_type"
+           glib:type-struct="IconViewClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="CellLayout"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_icon_view_new" version="2.6">
+        <doc xml:whitespace="preserve">Creates a new #GtkIconView widget</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A newly created #GtkIconView widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_model"
+                   c:identifier="gtk_icon_view_new_with_model"
+                   version="2.6 ">
+        <doc xml:whitespace="preserve">Creates a new #GtkIconView widget with the model @model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A newly created #GtkIconView widget.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="model" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The model.</doc>
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="convert_widget_to_bin_window_coords"
+              c:identifier="gtk_icon_view_convert_widget_to_bin_window_coords"
+              version="2.12">
+        <doc xml:whitespace="preserve">Converts widget coordinates to coordinates for the bin_window,
+as expected by e.g. gtk_icon_view_get_path_at_pos().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wx" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate relative to the widget</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="wy" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate relative to the widget</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="bx" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for bin_window X coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="by" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for bin_window Y coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_drag_icon"
+              c:identifier="gtk_icon_view_create_drag_icon"
+              version="2.8">
+        <doc xml:whitespace="preserve">Creates a #GdkPixmap representation of the item at @path.
+This image is used for a drag icon.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly-allocated pixmap of the drag icon.</doc>
+          <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTreePath in @icon_view</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="enable_model_drag_dest"
+              c:identifier="gtk_icon_view_enable_model_drag_dest"
+              version="2.8">
+        <doc xml:whitespace="preserve">Turns @icon_view into a drop destination for automatic DND. Calling this
+method sets #GtkIconView:reorderable to %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="targets" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the table of targets that the drag will support</doc>
+            <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+          </parameter>
+          <parameter name="n_targets" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of items in @targets</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="actions" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the bitmask of possible actions for a drag to this widget</doc>
+            <type name="Gdk.DragAction" c:type="GdkDragAction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="enable_model_drag_source"
+              c:identifier="gtk_icon_view_enable_model_drag_source"
+              version="2.8">
+        <doc xml:whitespace="preserve">Turns @icon_view into a drag source for automatic DND. Calling this
+method sets #GtkIconView:reorderable to %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_button_mask" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Mask of allowed buttons to start drag</doc>
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+          <parameter name="targets" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the table of targets that the drag will support</doc>
+            <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+          </parameter>
+          <parameter name="n_targets" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of items in @targets</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="actions" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the bitmask of possible actions for a drag from this widget</doc>
+            <type name="Gdk.DragAction" c:type="GdkDragAction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_spacing"
+              c:identifier="gtk_icon_view_get_column_spacing"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the value of the ::column-spacing property.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the space between columns</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_columns"
+              c:identifier="gtk_icon_view_get_columns"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the value of the ::columns property.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of columns, or -1</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_cursor"
+              c:identifier="gtk_icon_view_get_cursor"
+              version="2.8">
+        <doc xml:whitespace="preserve">Fills in @path and @cell with the current cursor path and cell. 
+If the cursor isn't currently set, then *@path will be %NULL.  
+If no cell currently has focus, then *@cell will be %NULL.
+The returned #GtkTreePath must be freed with gtk_tree_path_free().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the cursor is set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">Return location for the current cursor path, or %NULL</doc>
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+          <parameter name="cell" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">Return location the current focus cell, or %NULL</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_dest_item_at_pos"
+              c:identifier="gtk_icon_view_get_dest_item_at_pos"
+              version="2.8">
+        <doc xml:whitespace="preserve">Determines the destination item for a given position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether there is an item at the given position.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="drag_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position to determine the destination item for</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="drag_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position to determine the destination item for</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">Return location for the path of the item, or %NULL.</doc>
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+          <parameter name="pos" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">Return location for the drop position, or %NULL</doc>
+            <type name="IconViewDropPosition"
+                  c:type="GtkIconViewDropPosition*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_drag_dest_item"
+              c:identifier="gtk_icon_view_get_drag_dest_item"
+              version="2.8">
+        <doc xml:whitespace="preserve">Gets information about the item that is highlighted for feedback.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">Return location for the path of the highlighted item, or %NULL.</doc>
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+          <parameter name="pos" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">Return location for the drop position, or %NULL</doc>
+            <type name="IconViewDropPosition"
+                  c:type="GtkIconViewDropPosition*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_item_at_pos"
+              c:identifier="gtk_icon_view_get_item_at_pos"
+              version="2.8">
+        <doc xml:whitespace="preserve">Finds the path at the point (@x, @y), relative to bin_window coordinates.
+In contrast to gtk_icon_view_get_path_at_pos(), this function also 
+obtains the cell at the specified position. The returned path should
+be freed with gtk_tree_path_free().
+See gtk_icon_view_convert_widget_to_bin_window_coords() for converting
+widget coordinates to bin_window coordinates.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if an item exists at the specified position</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The x position to be identified</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The y position to be identified</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">Return location for the path, or %NULL</doc>
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+          <parameter name="cell" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Return location for the renderer responsible for the cell at (@x, @y), or %NULL</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_item_column"
+              c:identifier="gtk_icon_view_get_item_column"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the column in which the item @path is currently
+displayed. Column numbers start at 0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The column in which the item is displayed</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkTreePath of the item</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_item_orientation"
+              c:identifier="gtk_icon_view_get_item_orientation"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the value of the ::item-orientation property which determines 
+whether the labels are drawn beside the icons instead of below.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the relative position of texts and icons</doc>
+          <type name="Orientation" c:type="GtkOrientation"/>
+        </return-value>
+      </method>
+      <method name="get_item_padding"
+              c:identifier="gtk_icon_view_get_item_padding"
+              version="2.18">
+        <doc xml:whitespace="preserve">Returns the value of the ::item-padding property.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the padding around items</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_item_row"
+              c:identifier="gtk_icon_view_get_item_row"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the row in which the item @path is currently
+displayed. Row numbers start at 0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The row in which the item is displayed</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkTreePath of the item</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_item_width"
+              c:identifier="gtk_icon_view_get_item_width"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the value of the ::item-width property.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width of a single item, or -1</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_margin"
+              c:identifier="gtk_icon_view_get_margin"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the value of the ::margin property.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the space at the borders</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_markup_column"
+              c:identifier="gtk_icon_view_get_markup_column"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the column with markup text for @icon_view.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the markup column, or -1 if it's unset.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_model"
+              c:identifier="gtk_icon_view_get_model"
+              version="2.6 ">
+        <doc xml:whitespace="preserve">Returns the model the #GtkIconView is based on.  Returns %NULL if the
+model is unset.
+currently being used.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GtkTreeModel, or %NULL if none is</doc>
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </return-value>
+      </method>
+      <method name="get_path_at_pos"
+              c:identifier="gtk_icon_view_get_path_at_pos"
+              version="2.6 ">
+        <doc xml:whitespace="preserve">Finds the path at the point (@x, @y), relative to bin_window coordinates.
+See gtk_icon_view_get_item_at_pos(), if you are also interested in
+the cell at the specified position. 
+See gtk_icon_view_convert_widget_to_bin_window_coords() for converting
+widget coordinates to bin_window coordinates.
+if no icon exists at that position.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The #GtkTreePath corresponding to the icon or %NULL</doc>
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The x position to be identified</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The y position to be identified</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pixbuf_column"
+              c:identifier="gtk_icon_view_get_pixbuf_column"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the column with pixbufs for @icon_view.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the pixbuf column, or -1 if it's unset.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_reorderable"
+              c:identifier="gtk_icon_view_get_reorderable"
+              version="2.8">
+        <doc xml:whitespace="preserve">Retrieves whether the user can reorder the list via drag-and-drop. 
+See gtk_icon_view_set_reorderable().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the list can be reordered.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_row_spacing"
+              c:identifier="gtk_icon_view_get_row_spacing"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the value of the ::row-spacing property.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the space between rows</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_selected_items"
+              c:identifier="gtk_icon_view_get_selected_items"
+              version="2.6">
+        <doc xml:whitespace="preserve">Creates a list of paths of all selected items. Additionally, if you are
+planning on modifying the model after calling this function, you may
+want to convert the returned list into a list of #GtkTreeRowReference&lt;!-- --&gt;s.
+To do this, you can use gtk_tree_row_reference_new().
+To free the return value, use:
+|[
+g_list_foreach (list, (GFunc)gtk_tree_path_free, NULL);
+g_list_free (list);
+]|</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GList containing a #GtkTreePath for each selected row.</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="TreePath"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_selection_mode"
+              c:identifier="gtk_icon_view_get_selection_mode"
+              version="2.6 ">
+        <doc xml:whitespace="preserve">Gets the selection mode of the @icon_view.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current selection mode</doc>
+          <type name="SelectionMode" c:type="GtkSelectionMode"/>
+        </return-value>
+      </method>
+      <method name="get_spacing"
+              c:identifier="gtk_icon_view_get_spacing"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the value of the ::spacing property.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the space between cells</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_text_column"
+              c:identifier="gtk_icon_view_get_text_column"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the column with text for @icon_view.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the text column, or -1 if it's unset.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_tooltip_column"
+              c:identifier="gtk_icon_view_get_tooltip_column">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_tooltip_context"
+              c:identifier="gtk_icon_view_get_tooltip_context"
+              version="2.12">
+        <doc xml:whitespace="preserve">This function is supposed to be used in a #GtkWidget::query-tooltip
+signal handler for #GtkIconView.  The @x, @y and @keyboard_tip values
+which are received in the signal handler, should be passed to this
+function without modification.
+The return value indicates whether there is an icon view item at the given
+coordinates (%TRUE) or not (%FALSE) for mouse tooltips. For keyboard
+tooltips the item returned will be the cursor item. When %TRUE, then any of
+that row and the corresponding model. @x and @y will always be converted
+to be relative to @icon_view's bin_window if @keyboard_tooltip is %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether or not the given tooltip context points to a item</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate (relative to widget coordinates)</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate (relative to widget coordinates)</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="keyboard_tip" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether this is a keyboard tooltip or not</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="model"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a pointer to receive a #GtkTreeModel or %NULL</doc>
+            <type name="TreeModel" c:type="GtkTreeModel**"/>
+          </parameter>
+          <parameter name="path"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a pointer to receive a #GtkTreePath or %NULL</doc>
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a pointer to receive a #GtkTreeIter or %NULL</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_visible_range"
+              c:identifier="gtk_icon_view_get_visible_range"
+              version="2.8">
+        <doc xml:whitespace="preserve">Sets @start_path and @end_path to be the first and last visible path. 
+Note that there may be invisible paths in between.
+Both paths should be freed with gtk_tree_path_free() after use.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if valid paths were placed in @start_path and @end_path</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_path"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">Return location for start of region, or %NULL</doc>
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+          <parameter name="end_path" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">Return location for end of region, or %NULL</doc>
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="item_activated"
+              c:identifier="gtk_icon_view_item_activated"
+              version="2.6">
+        <doc xml:whitespace="preserve">Activates the item determined by @path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreePath to be activated</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="path_is_selected"
+              c:identifier="gtk_icon_view_path_is_selected"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns %TRUE if the icon pointed to by @path is currently
+selected. If @path does not point to a valid location, %FALSE is returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @path is selected.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreePath to check selection on.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scroll_to_path"
+              c:identifier="gtk_icon_view_scroll_to_path"
+              version="2.8">
+        <doc xml:whitespace="preserve">Moves the alignments of @icon_view to the position specified by @path.  
+where @column is placed.  Both are expected to be between 0.0 and 1.0. 
+0.0 means left/top alignment, 1.0 means right/bottom alignment, 0.5 means 
+center.
+If @use_align is %FALSE, then the alignment arguments are ignored, and the
+tree does the minimum amount of work to scroll the item onto the screen.
+This means that the item will be scrolled to the edge closest to its current
+position.  If the item is currently visible on the screen, nothing is done.
+This function only works if the model is set, and @path is a valid row on 
+the model. If the model changes before the @icon_view is realized, the 
+centered path will be modified to reflect this change.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The path of the item to move to.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="use_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to use alignment arguments, or %FALSE.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="row_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The vertical alignment of the item specified by @path.</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="col_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The horizontal alignment of the item specified by @path.</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_all"
+              c:identifier="gtk_icon_view_select_all"
+              version="2.6">
+        <doc xml:whitespace="preserve">Selects all the icons. @icon_view must has its selection mode set
+to #GTK_SELECTION_MULTIPLE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="select_path"
+              c:identifier="gtk_icon_view_select_path"
+              version="2.6">
+        <doc xml:whitespace="preserve">Selects the row at @path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreePath to be selected.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="selected_foreach"
+              c:identifier="gtk_icon_view_selected_foreach"
+              version="2.6 ">
+        <doc xml:whitespace="preserve">Calls a function for each selected icon. Note that the model or
+selection cannot be modified from within this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">The function to call for each selected icon.</doc>
+            <type name="IconViewForeachFunc" c:type="GtkIconViewForeachFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">User data to pass to the function.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_column_spacing"
+              c:identifier="gtk_icon_view_set_column_spacing"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the ::column-spacing property which specifies the space 
+which is inserted between the columns of the icon view.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column_spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the column spacing</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_columns"
+              c:identifier="gtk_icon_view_set_columns"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the ::columns property which determines in how
+many columns the icons are arranged. If @columns is
+-1, the number of columns will be chosen automatically 
+to fill the available area.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of columns</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor"
+              c:identifier="gtk_icon_view_set_cursor"
+              version="2.8">
+        <doc xml:whitespace="preserve">Sets the current keyboard focus to be at @path, and selects it.  This is
+useful when you want to focus the user's attention on a particular item.
+If @cell is not %NULL, then focus is given to the cell specified by 
+it. Additionally, if @start_editing is %TRUE, then editing should be 
+started in the specified cell.  
+This function is often followed by &lt;literal&gt;gtk_widget_grab_focus 
+(icon_view)&lt;/literal&gt; in order to give keyboard focus to the widget.  
+Please note that editing can only happen when the widget is realized.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreePath</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="cell" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">One of the cell renderers of @icon_view, or %NULL</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter name="start_editing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the specified cell should start being edited.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_drag_dest_item"
+              c:identifier="gtk_icon_view_set_drag_dest_item"
+              version="2.8">
+        <doc xml:whitespace="preserve">Sets the item that is highlighted for feedback.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">The path of the item to highlight, or %NULL.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Specifies where to drop, relative to the item</doc>
+            <type name="IconViewDropPosition"
+                  c:type="GtkIconViewDropPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_item_orientation"
+              c:identifier="gtk_icon_view_set_item_orientation"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the ::item-orientation property which determines whether the labels 
+are drawn beside the icons instead of below.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the relative position of texts and icons</doc>
+            <type name="Orientation" c:type="GtkOrientation"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_item_padding"
+              c:identifier="gtk_icon_view_set_item_padding"
+              version="2.18">
+        <doc xml:whitespace="preserve">Sets the #GtkIconView:item-padding property which specifies the padding
+around each of the icon view's items.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="item_padding" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the item padding</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_item_width"
+              c:identifier="gtk_icon_view_set_item_width"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the ::item-width property which specifies the width 
+to use for each item. If it is set to -1, the icon view will 
+automatically determine a suitable item size.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="item_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the width for each item</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_margin"
+              c:identifier="gtk_icon_view_set_margin"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the ::margin property which specifies the space 
+which is inserted at the top, bottom, left and right 
+of the icon view.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="margin" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the margin</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_markup_column"
+              c:identifier="gtk_icon_view_set_markup_column"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the column with markup information for @icon_view to be
+If the markup column is set to something, it overrides
+the text column set by gtk_icon_view_set_text_column().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A column in the currently used model, or -1 to display no text</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_model"
+              c:identifier="gtk_icon_view_set_model"
+              version="2.6 ">
+        <doc xml:whitespace="preserve">Sets the model for a #GtkIconView.
+If the @icon_view already has a model set, it will remove
+it before setting the new model.  If @model is %NULL, then
+it will unset the old model.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="model" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">The model.</doc>
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pixbuf_column"
+              c:identifier="gtk_icon_view_set_pixbuf_column"
+              version="2.6 ">
+        <doc xml:whitespace="preserve">Sets the column with pixbufs for @icon_view to be @column. The pixbuf
+column must be of type #GDK_TYPE_PIXBUF</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A column in the currently used model, or -1 to disable</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_reorderable"
+              c:identifier="gtk_icon_view_set_reorderable"
+              version="2.8">
+        <doc xml:whitespace="preserve">This function is a convenience function to allow you to reorder models that
+support the #GtkTreeDragSourceIface and the #GtkTreeDragDestIface.  Both
+#GtkTreeStore and #GtkListStore support these.  If @reorderable is %TRUE, then
+the user can reorder the model by dragging and dropping rows.  The
+developer can listen to these changes by connecting to the model's
+row_inserted and row_deleted signals. The reordering is implemented by setting up
+the icon view as a drag source and destination. Therefore, drag and
+drop can not be used in a reorderable view for any other purpose.
+This function does not give you any degree of control over the order -- any
+reordering is allowed.  If more control is needed, you should probably
+handle drag and drop manually.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="reorderable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE, if the list of items can be reordered.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_row_spacing"
+              c:identifier="gtk_icon_view_set_row_spacing"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the ::row-spacing property which specifies the space 
+which is inserted between the rows of the icon view.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row_spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the row spacing</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_selection_mode"
+              c:identifier="gtk_icon_view_set_selection_mode"
+              version="2.6 ">
+        <doc xml:whitespace="preserve">Sets the selection mode of the @icon_view.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The selection mode</doc>
+            <type name="SelectionMode" c:type="GtkSelectionMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_spacing"
+              c:identifier="gtk_icon_view_set_spacing"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the ::spacing property which specifies the space 
+which is inserted between the cells (i.e. the icon and 
+the text) of an item.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the spacing</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_text_column"
+              c:identifier="gtk_icon_view_set_text_column"
+              version="2.6 ">
+        <doc xml:whitespace="preserve">Sets the column with text for @icon_view to be @column. The text
+column must be of type #G_TYPE_STRING.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A column in the currently used model, or -1 to display no text</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tooltip_cell"
+              c:identifier="gtk_icon_view_set_tooltip_cell"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets the tip area of @tooltip to the area which @cell occupies in
+the item pointed to by @path. See also gtk_tooltip_set_tip_area().
+See also gtk_icon_view_set_tooltip_column() for a simpler alternative.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tooltip" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTooltip</doc>
+            <type name="Tooltip" c:type="GtkTooltip*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTreePath</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="cell" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkCellRenderer or %NULL</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tooltip_column"
+              c:identifier="gtk_icon_view_set_tooltip_column"
+              version="2.12">
+        <doc xml:whitespace="preserve">If you only plan to have simple (text-only) tooltips on full items, you
+can use this function to have #GtkIconView handle these automatically
+for you. @column should be set to the column in @icon_view's model
+containing the tooltip texts, or -1 to disable this feature.
+When enabled, #GtkWidget::has-tooltip will be set to %TRUE and</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an integer, which is a valid column number for @icon_view's model</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tooltip_item"
+              c:identifier="gtk_icon_view_set_tooltip_item"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets the tip area of @tooltip to be the area covered by the item at @path.
+See also gtk_icon_view_set_tooltip_column() for a simpler alternative.
+See also gtk_tooltip_set_tip_area().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tooltip" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTooltip</doc>
+            <type name="Tooltip" c:type="GtkTooltip*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTreePath</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unselect_all"
+              c:identifier="gtk_icon_view_unselect_all"
+              version="2.6">
+        <doc xml:whitespace="preserve">Unselects all the icons.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unselect_path"
+              c:identifier="gtk_icon_view_unselect_path"
+              version="2.6">
+        <doc xml:whitespace="preserve">Unselects the row at @path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreePath to be unselected.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_model_drag_dest"
+              c:identifier="gtk_icon_view_unset_model_drag_dest"
+              version="2.8">
+        <doc xml:whitespace="preserve">Undoes the effect of gtk_icon_view_enable_model_drag_dest(). Calling this
+method sets #GtkIconView:reorderable to %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unset_model_drag_source"
+              c:identifier="gtk_icon_view_unset_model_drag_source"
+              version="2.8">
+        <doc xml:whitespace="preserve">Undoes the effect of gtk_icon_view_enable_model_drag_source(). Calling this
+method sets #GtkIconView:reorderable to %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="column-spacing"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The column-spacing property specifies the space which is inserted between
+the columns of the icon view.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="columns"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The columns property contains the number of the columns in which the
+items should be displayed. If it is -1, the number of columns will
+be chosen automatically to fill the available area.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="item-orientation"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The item-orientation property specifies how the cells (i.e. the icon and
+the text) of the item are positioned relative to each other.</doc>
+        <type name="Orientation"/>
+      </property>
+      <property name="item-padding"
+                version="2.18"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The item-padding property specifies the padding around each
+of the icon view's item.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="item-width"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The item-width property specifies the width to use for each item. 
+If it is set to -1, the icon view will automatically determine a 
+suitable item size.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="margin"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The margin property specifies the space which is inserted 
+at the edges of the icon view.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="markup-column"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The ::markup-column property contains the number of the model column
+containing markup information to be displayed. The markup column must be 
+of type #G_TYPE_STRING. If this property and the :text-column property 
+are both set to column numbers, it overrides the text column.
+If both are set to -1, no texts are displayed.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="model" writable="1" transfer-ownership="none">
+        <type name="TreeModel"/>
+      </property>
+      <property name="pixbuf-column"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The ::pixbuf-column property contains the number of the model column
+containing the pixbufs which are displayed. The pixbuf column must be 
+of type #GDK_TYPE_PIXBUF. Setting this property to -1 turns off the
+display of pixbufs.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="reorderable"
+                version="2.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The reorderable property specifies if the items can be reordered
+by DND.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="row-spacing"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The row-spacing property specifies the space which is inserted between
+the rows of the icon view.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="selection-mode"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The ::selection-mode property specifies the selection mode of
+icon view. If the mode is #GTK_SELECTION_MULTIPLE, rubberband selection
+is enabled, for the other modes, only keyboard selection is possible.</doc>
+        <type name="SelectionMode"/>
+      </property>
+      <property name="spacing"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The spacing property specifies the space which is inserted between
+the cells (i.e. the icon and the text) of an item.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="text-column"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The ::text-column property contains the number of the model column
+containing the texts which are displayed. The text column must be 
+of type #G_TYPE_STRING. If this property and the :markup-column 
+property are both set to -1, no texts are displayed.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="tooltip-column" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <field name="parent">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="IconViewPrivate" c:type="GtkIconViewPrivate*"/>
+      </field>
+      <glib:signal name="activate-cursor-item">
+        <doc xml:whitespace="preserve">A &lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted when the user activates the currently 
+focused item. 
+Applications should not connect to it, but may emit it with
+g_signal_emit_by_name() if they need to control activation
+programmatically.
+The default bindings for this signal are Space, Return and Enter.</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="item-activated">
+        <doc xml:whitespace="preserve">The ::item-activated signal is emitted when the method
+gtk_icon_view_item_activated() is called or the user double 
+clicks an item. It is also emitted when a non-editable item
+pressed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkTreePath for the activated item</doc>
+            <type name="TreePath"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-cursor">
+        <doc xml:whitespace="preserve">The ::move-cursor signal is a
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted when the user initiates a cursor movement.
+Applications should not connect to it, but may emit it with
+g_signal_emit_by_name() if they need to control the cursor
+programmatically.
+The default bindings for this signal include
+&lt;itemizedlist&gt;
+&lt;listitem&gt;Arrow keys which move by individual steps&lt;/listitem&gt;
+&lt;listitem&gt;Home/End keys which move to the first/last item&lt;/listitem&gt;
+&lt;listitem&gt;PageUp/PageDown which move by "pages"&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+All of these will extend the selection when combined with
+the Shift modifier.</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the granularity of the move, as a #GtkMovementStep</doc>
+            <type name="MovementStep"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of @step units to move</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="select-all">
+        <doc xml:whitespace="preserve">A &lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted when the user selects all items.
+Applications should not connect to it, but may emit it with
+g_signal_emit_by_name() if they need to control selection
+programmatically.
+The default binding for this signal is Ctrl-a.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="select-cursor-item">
+        <doc xml:whitespace="preserve">A &lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted when the user selects the item that is currently
+focused.
+Applications should not connect to it, but may emit it with
+g_signal_emit_by_name() if they need to control selection
+programmatically.
+There is no default binding for this signal.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="selection-changed">
+        <doc xml:whitespace="preserve">The ::selection-changed signal is emitted when the selection
+(i.e. the set of selected items) changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="set-scroll-adjustments">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Adjustment"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="Adjustment"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="toggle-cursor-item">
+        <doc xml:whitespace="preserve">A &lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted when the user toggles whether the currently
+focused item is selected or not. The exact effect of this 
+depend on the selection mode.
+Applications should not connect to it, but may emit it with
+g_signal_emit_by_name() if they need to control selection
+programmatically.
+There is no default binding for this signal is Ctrl-Space.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unselect-all">
+        <doc xml:whitespace="preserve">A &lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted when the user unselects all items.
+Applications should not connect to it, but may emit it with
+g_signal_emit_by_name() if they need to control selection
+programmatically.
+The default binding for this signal is Ctrl-Shift-a.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="IconViewClass"
+            c:type="GtkIconViewClass"
+            glib:is-gtype-struct-for="IconView">
+      <field name="parent_class">
+        <type name="ContainerClass" c:type="GtkContainerClass"/>
+      </field>
+      <field name="set_scroll_adjustments">
+        <callback name="set_scroll_adjustments">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="icon_view" transfer-ownership="none">
+              <type name="IconView" c:type="GtkIconView*"/>
+            </parameter>
+            <parameter name="hadjustment" transfer-ownership="none">
+              <type name="Adjustment" c:type="GtkAdjustment*"/>
+            </parameter>
+            <parameter name="vadjustment" transfer-ownership="none">
+              <type name="Adjustment" c:type="GtkAdjustment*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="item_activated">
+        <callback name="item_activated">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="icon_view" transfer-ownership="none">
+              <type name="IconView" c:type="GtkIconView*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <type name="TreePath" c:type="GtkTreePath*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="selection_changed">
+        <callback name="selection_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="icon_view" transfer-ownership="none">
+              <type name="IconView" c:type="GtkIconView*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="select_all">
+        <callback name="select_all">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="icon_view" transfer-ownership="none">
+              <type name="IconView" c:type="GtkIconView*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unselect_all">
+        <callback name="unselect_all">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="icon_view" transfer-ownership="none">
+              <type name="IconView" c:type="GtkIconView*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="select_cursor_item">
+        <callback name="select_cursor_item">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="icon_view" transfer-ownership="none">
+              <type name="IconView" c:type="GtkIconView*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="toggle_cursor_item">
+        <callback name="toggle_cursor_item">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="icon_view" transfer-ownership="none">
+              <type name="IconView" c:type="GtkIconView*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="move_cursor">
+        <callback name="move_cursor">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="icon_view" transfer-ownership="none">
+              <type name="IconView" c:type="GtkIconView*"/>
+            </parameter>
+            <parameter name="step" transfer-ownership="none">
+              <type name="MovementStep" c:type="GtkMovementStep"/>
+            </parameter>
+            <parameter name="count" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate_cursor_item">
+        <callback name="activate_cursor_item">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="icon_view" transfer-ownership="none">
+              <type name="IconView" c:type="GtkIconView*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="IconViewDropPosition"
+                 glib:type-name="GtkIconViewDropPosition"
+                 glib:get-type="gtk_icon_view_drop_position_get_type"
+                 c:type="GtkIconViewDropPosition">
+      <doc xml:whitespace="preserve">An enum for determining where a dropped item goes.</doc>
+      <member name="no_drop"
+              value="0"
+              c:identifier="GTK_ICON_VIEW_NO_DROP"
+              glib:nick="no-drop"/>
+      <member name="drop_into"
+              value="1"
+              c:identifier="GTK_ICON_VIEW_DROP_INTO"
+              glib:nick="drop-into"/>
+      <member name="drop_left"
+              value="2"
+              c:identifier="GTK_ICON_VIEW_DROP_LEFT"
+              glib:nick="drop-left"/>
+      <member name="drop_right"
+              value="3"
+              c:identifier="GTK_ICON_VIEW_DROP_RIGHT"
+              glib:nick="drop-right"/>
+      <member name="drop_above"
+              value="4"
+              c:identifier="GTK_ICON_VIEW_DROP_ABOVE"
+              glib:nick="drop-above"/>
+      <member name="drop_below"
+              value="5"
+              c:identifier="GTK_ICON_VIEW_DROP_BELOW"
+              glib:nick="drop-below"/>
+    </enumeration>
+    <callback name="IconViewForeachFunc" c:type="GtkIconViewForeachFunc">
+      <doc xml:whitespace="preserve">A function used by gtk_icon_view_selected_foreach() to map all
+selected rows.  It will be called on every selected row in the view.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="icon_view" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkIconView</doc>
+          <type name="IconView" c:type="GtkIconView*"/>
+        </parameter>
+        <parameter name="path" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GtkTreePath of a selected row</doc>
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="IconViewPrivate" c:type="GtkIconViewPrivate" disguised="1">
+    </record>
+    <class name="Image"
+           c:symbol-prefix="image"
+           c:type="GtkImage"
+           parent="Misc"
+           glib:type-name="GtkImage"
+           glib:get-type="gtk_image_get_type"
+           glib:type-struct="ImageClass">
+      <doc xml:whitespace="preserve">This struct contain private data only and should be accessed by the functions
+below.</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_image_new">
+        <doc xml:whitespace="preserve">Creates a new empty #GtkImage widget.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a newly created #GtkImage widget.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_animation"
+                   c:identifier="gtk_image_new_from_animation">
+        <doc xml:whitespace="preserve">Creates a #GtkImage displaying the given animation.
+The #GtkImage does not assume a reference to the
+animation; you still need to unref it if you own references.
+#GtkImage will add its own reference rather than adopting yours.
+Note that the animation frames are shown using a timeout with
+#G_PRIORITY_DEFAULT. When using animations to indicate busyness,
+keep in mind that the animation will only be shown if the main loop
+is not busy with something that has a higher priority.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkImage widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="animation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an animation</doc>
+            <type name="GdkPixbuf.PixbufAnimation"
+                  c:type="GdkPixbufAnimation*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_file" c:identifier="gtk_image_new_from_file">
+        <doc xml:whitespace="preserve">Creates a new #GtkImage displaying the file @filename. If the file
+isn't found or can't be loaded, the resulting #GtkImage will
+display a "broken image" icon. This function never returns %NULL,
+it always returns a valid #GtkImage widget.
+If the file contains an animation, the image will contain an
+animation.
+If you need to detect failures to load the file, use
+gdk_pixbuf_new_from_file() to load the file yourself, then create
+the #GtkImage from the pixbuf. (Or for animations, use
+gdk_pixbuf_animation_new_from_file()).
+The storage type (gtk_image_get_storage_type()) of the returned
+image is not defined, it will be whatever is appropriate for
+displaying the file.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkImage</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a filename</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_gicon"
+                   c:identifier="gtk_image_new_from_gicon"
+                   version="2.14">
+        <doc xml:whitespace="preserve">Creates a #GtkImage displaying an icon from the current icon theme.
+If the icon name isn't known, a "broken image" icon will be
+displayed instead.  If the current icon theme is changed, the icon
+will be updated appropriately.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkImage displaying the themed icon</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an icon</doc>
+            <type name="Gio.Icon" c:type="GIcon*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a stock icon size</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_icon_name"
+                   c:identifier="gtk_image_new_from_icon_name"
+                   version="2.6">
+        <doc xml:whitespace="preserve">Creates a #GtkImage displaying an icon from the current icon theme.
+If the icon name isn't known, a "broken image" icon will be
+displayed instead.  If the current icon theme is changed, the icon
+will be updated appropriately.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkImage displaying the themed icon</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an icon name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a stock icon size</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_icon_set"
+                   c:identifier="gtk_image_new_from_icon_set">
+        <doc xml:whitespace="preserve">Creates a #GtkImage displaying an icon set. Sample stock sizes are
+#GTK_ICON_SIZE_MENU, #GTK_ICON_SIZE_SMALL_TOOLBAR. Instead of using
+this function, usually it's better to create a #GtkIconFactory, put
+your icon sets in the icon factory, add the icon factory to the
+list of default factories with gtk_icon_factory_add_default(), and
+then use gtk_image_new_from_stock(). This will allow themes to
+override the icon you ship with your application.
+The #GtkImage does not assume a reference to the
+icon set; you still need to unref it if you own references.
+#GtkImage will add its own reference rather than adopting yours.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkImage</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_set" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkIconSet</doc>
+            <type name="IconSet" c:type="GtkIconSet*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a stock icon size</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_pixbuf"
+                   c:identifier="gtk_image_new_from_pixbuf">
+        <doc xml:whitespace="preserve">Creates a new #GtkImage displaying @pixbuf.
+The #GtkImage does not assume a reference to the
+pixbuf; you still need to unref it if you own references.
+#GtkImage will add its own reference rather than adopting yours.
+Note that this function just creates an #GtkImage from the pixbuf. The
+#GtkImage created will not react to state changes. Should you want that, 
+you should use gtk_image_new_from_icon_set().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkImage</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdkPixbuf, or %NULL</doc>
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_pixmap"
+                   c:identifier="gtk_image_new_from_pixmap">
+        <doc xml:whitespace="preserve">Creates a #GtkImage widget displaying @pixmap with a @mask.
+A #GdkPixmap is a server-side image buffer in the pixel format of the
+current display. The #GtkImage does not assume a reference to the
+pixmap or mask; you still need to unref them if you own references.
+#GtkImage will add its own reference rather than adopting yours.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkImage</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixmap" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdkPixmap, or %NULL</doc>
+            <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdkBitmap, or %NULL</doc>
+            <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_stock"
+                   c:identifier="gtk_image_new_from_stock">
+        <doc xml:whitespace="preserve">Creates a #GtkImage displaying a stock icon. Sample stock icon
+names are #GTK_STOCK_OPEN, #GTK_STOCK_QUIT. Sample stock sizes
+are #GTK_ICON_SIZE_MENU, #GTK_ICON_SIZE_SMALL_TOOLBAR. If the stock
+icon name isn't known, the image will be empty.
+You can register your own stock icon names, see
+gtk_icon_factory_add_default() and gtk_icon_factory_add().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkImage displaying the stock icon</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a stock icon name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a stock icon size</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="clear" c:identifier="gtk_image_clear" version="2.8">
+        <doc xml:whitespace="preserve">Resets the image to be empty.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_animation" c:identifier="gtk_image_get_animation">
+        <doc xml:whitespace="preserve">Gets the #GdkPixbufAnimation being displayed by the #GtkImage.
+The storage type of the image must be %GTK_IMAGE_EMPTY or
+%GTK_IMAGE_ANIMATION (see gtk_image_get_storage_type()).
+The caller of this function does not own a reference to the
+returned animation.
+the image is empty</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the displayed animation, or %NULL if</doc>
+          <type name="GdkPixbuf.PixbufAnimation" c:type="GdkPixbufAnimation*"/>
+        </return-value>
+      </method>
+      <method name="get_gicon"
+              c:identifier="gtk_image_get_gicon"
+              version="2.14">
+        <doc xml:whitespace="preserve">Gets the #GIcon and size being displayed by the #GtkImage.
+The storage type of the image must be %GTK_IMAGE_EMPTY or
+%GTK_IMAGE_GICON (see gtk_image_get_storage_type()).
+The caller of this function does not own a reference to the
+returned #GIcon.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gicon"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">place to store a #GIcon, or %NULL</doc>
+            <type name="Gio.Icon" c:type="GIcon**"/>
+          </parameter>
+          <parameter name="size"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">place to store an icon size, or %NULL</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_name"
+              c:identifier="gtk_image_get_icon_name"
+              version="2.6">
+        <doc xml:whitespace="preserve">Gets the icon name and size being displayed by the #GtkImage.
+The storage type of the image must be %GTK_IMAGE_EMPTY or
+%GTK_IMAGE_ICON_NAME (see gtk_image_get_storage_type()).
+The returned string is owned by the #GtkImage and should not
+be freed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_name"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">place to store an icon name, or %NULL</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="size"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">place to store an icon size, or %NULL</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_set" c:identifier="gtk_image_get_icon_set">
+        <doc xml:whitespace="preserve">Gets the icon set and size being displayed by the #GtkImage.
+The storage type of the image must be %GTK_IMAGE_EMPTY or
+%GTK_IMAGE_ICON_SET (see gtk_image_get_storage_type()).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_set"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store a #GtkIconSet, or %NULL</doc>
+            <type name="IconSet" c:type="GtkIconSet**"/>
+          </parameter>
+          <parameter name="size"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store a stock icon size, or %NULL</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pixbuf" c:identifier="gtk_image_get_pixbuf">
+        <doc xml:whitespace="preserve">Gets the #GdkPixbuf being displayed by the #GtkImage.
+The storage type of the image must be %GTK_IMAGE_EMPTY or
+%GTK_IMAGE_PIXBUF (see gtk_image_get_storage_type()).
+The caller of this function does not own a reference to the
+returned pixbuf.
+the image is empty</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the displayed pixbuf, or %NULL if</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="get_pixel_size"
+              c:identifier="gtk_image_get_pixel_size"
+              version="2.6">
+        <doc xml:whitespace="preserve">Gets the pixel size used for named icons.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the pixel size used for named icons.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_pixmap" c:identifier="gtk_image_get_pixmap">
+        <doc xml:whitespace="preserve">Gets the pixmap and mask being displayed by the #GtkImage.
+The storage type of the image must be %GTK_IMAGE_EMPTY or
+%GTK_IMAGE_PIXMAP (see gtk_image_get_storage_type()).
+The caller of this function does not own a reference to the
+returned pixmap and mask.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixmap"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the pixmap, or %NULL</doc>
+            <type name="Gdk.Pixmap" c:type="GdkPixmap**"/>
+          </parameter>
+          <parameter name="mask"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the mask, or %NULL</doc>
+            <type name="Gdk.Bitmap" c:type="GdkBitmap**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_stock" c:identifier="gtk_image_get_stock">
+        <doc xml:whitespace="preserve">Gets the stock icon name and size being displayed by the #GtkImage.
+The storage type of the image must be %GTK_IMAGE_EMPTY or
+%GTK_IMAGE_STOCK (see gtk_image_get_storage_type()).
+The returned string is owned by the #GtkImage and should not
+be freed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">place to store a stock icon name, or %NULL</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="size"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">place to store a stock icon size, or %NULL</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_storage_type"
+              c:identifier="gtk_image_get_storage_type">
+        <doc xml:whitespace="preserve">Gets the type of representation being used by the #GtkImage
+to store image data. If the #GtkImage has no image data,
+the return value will be %GTK_IMAGE_EMPTY.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">image representation being used</doc>
+          <type name="ImageType" c:type="GtkImageType"/>
+        </return-value>
+      </method>
+      <method name="set_from_animation"
+              c:identifier="gtk_image_set_from_animation">
+        <doc xml:whitespace="preserve">Causes the #GtkImage to display the given animation (or display
+nothing, if you set the animation to %NULL).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="animation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkPixbufAnimation</doc>
+            <type name="GdkPixbuf.PixbufAnimation"
+                  c:type="GdkPixbufAnimation*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_file" c:identifier="gtk_image_set_from_file">
+        <doc xml:whitespace="preserve">See gtk_image_new_from_file() for details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a filename or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_gicon"
+              c:identifier="gtk_image_set_from_gicon"
+              version="2.14">
+        <doc xml:whitespace="preserve">See gtk_image_new_from_gicon() for details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an icon</doc>
+            <type name="Gio.Icon" c:type="GIcon*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an icon size</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_icon_name"
+              c:identifier="gtk_image_set_from_icon_name"
+              version="2.6">
+        <doc xml:whitespace="preserve">See gtk_image_new_from_icon_name() for details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an icon name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an icon size</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_icon_set"
+              c:identifier="gtk_image_set_from_icon_set">
+        <doc xml:whitespace="preserve">See gtk_image_new_from_icon_set() for details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_set" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkIconSet</doc>
+            <type name="IconSet" c:type="GtkIconSet*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a stock icon size</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_pixbuf" c:identifier="gtk_image_set_from_pixbuf">
+        <doc xml:whitespace="preserve">See gtk_image_new_from_pixbuf() for details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdkPixbuf or %NULL</doc>
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_pixmap" c:identifier="gtk_image_set_from_pixmap">
+        <doc xml:whitespace="preserve">See gtk_image_new_from_pixmap() for details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixmap" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdkPixmap or %NULL</doc>
+            <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdkBitmap or %NULL</doc>
+            <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_stock" c:identifier="gtk_image_set_from_stock">
+        <doc xml:whitespace="preserve">See gtk_image_new_from_stock() for details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a stock icon name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a stock icon size</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pixel_size"
+              c:identifier="gtk_image_set_pixel_size"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the pixel size to use for named icons. If the pixel size is set
+to a value != -1, it is used instead of the icon size set by
+gtk_image_set_from_icon_name().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixel_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new pixel size</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="file" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="gicon"
+                version="2.14"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The GIcon displayed in the GtkImage. For themed icons,
+If the icon theme is changed, the image will be updated
+automatically.</doc>
+        <type name="Gio.Icon"/>
+      </property>
+      <property name="icon-name"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The name of the icon in the icon theme. If the icon theme is
+changed, the image will be updated automatically.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="icon-set" writable="1" transfer-ownership="none">
+        <type name="IconSet"/>
+      </property>
+      <property name="icon-size" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="mask" writable="1" transfer-ownership="none">
+        <type name="Gdk.Pixmap"/>
+      </property>
+      <property name="pixbuf" writable="1" transfer-ownership="none">
+        <type name="GdkPixbuf.Pixbuf"/>
+      </property>
+      <property name="pixbuf-animation" writable="1" transfer-ownership="none">
+        <type name="GdkPixbuf.PixbufAnimation"/>
+      </property>
+      <property name="pixel-size"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The "pixel-size" property can be used to specify a fixed size
+overriding the #GtkImage:icon-size property for images of type 
+%GTK_IMAGE_ICON_NAME.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="pixmap" writable="1" transfer-ownership="none">
+        <type name="Gdk.Pixmap"/>
+      </property>
+      <property name="stock" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="storage-type" transfer-ownership="none">
+        <type name="ImageType"/>
+      </property>
+      <field name="misc">
+        <type name="Misc" c:type="GtkMisc"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="ImagePrivate" c:type="GtkImagePrivate*"/>
+      </field>
+    </class>
+    <record name="ImageAnimationData" c:type="GtkImageAnimationData">
+      <field name="anim" writable="1">
+        <type name="GdkPixbuf.PixbufAnimation" c:type="GdkPixbufAnimation*"/>
+      </field>
+      <field name="iter" writable="1">
+        <type name="GdkPixbuf.PixbufAnimationIter"
+              c:type="GdkPixbufAnimationIter*"/>
+      </field>
+      <field name="frame_timeout" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="ImageClass"
+            c:type="GtkImageClass"
+            glib:is-gtype-struct-for="Image">
+      <field name="parent_class">
+        <type name="MiscClass" c:type="GtkMiscClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ImageGIconData" c:type="GtkImageGIconData">
+      <field name="icon" writable="1">
+        <type name="Gio.Icon" c:type="GIcon*"/>
+      </field>
+      <field name="pixbuf" writable="1">
+        <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+      </field>
+      <field name="theme_change_id" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="ImageIconNameData" c:type="GtkImageIconNameData">
+      <field name="icon_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="pixbuf" writable="1">
+        <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+      </field>
+      <field name="theme_change_id" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="ImageIconSetData" c:type="GtkImageIconSetData">
+      <field name="icon_set" writable="1">
+        <type name="IconSet" c:type="GtkIconSet*"/>
+      </field>
+    </record>
+    <record name="ImageImageData" c:type="GtkImageImageData" disguised="1">
+    </record>
+    <class name="ImageMenuItem"
+           c:symbol-prefix="image_menu_item"
+           c:type="GtkImageMenuItem"
+           parent="MenuItem"
+           glib:type-name="GtkImageMenuItem"
+           glib:get-type="gtk_image_menu_item_get_type"
+           glib:type-struct="ImageMenuItemClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Activatable"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_image_menu_item_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkImageMenuItem with an empty label.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkImageMenuItem.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_stock"
+                   c:identifier="gtk_image_menu_item_new_from_stock">
+        <doc xml:whitespace="preserve">Creates a new #GtkImageMenuItem containing the image and text from a 
+stock item. Some stock ids have preprocessor macros like #GTK_STOCK_OK 
+and #GTK_STOCK_APPLY.
+If you want this menu item to have changeable accelerators, then pass in
+%NULL for accel_group. Next call gtk_menu_item_set_accel_path() with an
+appropriate path for the menu item, use gtk_stock_lookup() to look up the
+standard accelerator for the stock item, and if one is found, call
+gtk_accel_map_add_entry() to register it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkImageMenuItem.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the stock item.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="accel_group"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the #GtkAccelGroup to add the menu items accelerator to, or %NULL.</doc>
+            <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_label"
+                   c:identifier="gtk_image_menu_item_new_with_label">
+        <doc xml:whitespace="preserve">Creates a new #GtkImageMenuItem containing a label.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkImageMenuItem.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text of the menu item.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_mnemonic"
+                   c:identifier="gtk_image_menu_item_new_with_mnemonic">
+        <doc xml:whitespace="preserve">Creates a new #GtkImageMenuItem containing a label. The label
+will be created using gtk_label_new_with_mnemonic(), so underscores
+in @label indicate the mnemonic for the menu item.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkImageMenuItem</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text of the menu item, with an underscore in front of the mnemonic character</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_always_show_image"
+              c:identifier="gtk_image_menu_item_get_always_show_image"
+              version="2.16">
+        <doc xml:whitespace="preserve">Returns whether the menu item will ignore the #GtkSettings:gtk-menu-images
+setting and always show the image, if available.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the menu item will always show the image</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_image" c:identifier="gtk_image_menu_item_get_image">
+        <doc xml:whitespace="preserve">Gets the widget that is currently set as the image of @image_menu_item.
+See gtk_image_menu_item_set_image().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the widget set as image of @image_menu_item</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_use_stock"
+              c:identifier="gtk_image_menu_item_get_use_stock"
+              version="2.16">
+        <doc xml:whitespace="preserve">Checks whether the label set in the menuitem is used as a
+stock id to select the stock item for the item.
+stock id to select the stock item for the item</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the label set in the menuitem is used as a</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_accel_group"
+              c:identifier="gtk_image_menu_item_set_accel_group"
+              version="2.16">
+        <doc xml:whitespace="preserve">Specifies an @accel_group to add the menu items accelerator to
+(this only applies to stock items so a stock item must already
+be set, make sure to call gtk_image_menu_item_set_use_stock()
+and gtk_menu_item_set_label() with a valid stock item first).
+If you want this menu item to have changeable accelerators then
+you shouldnt need this (see gtk_image_menu_item_new_from_stock()).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_group" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkAccelGroup</doc>
+            <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_always_show_image"
+              c:identifier="gtk_image_menu_item_set_always_show_image"
+              version="2.16">
+        <doc xml:whitespace="preserve">If %TRUE, the menu item will ignore the #GtkSettings:gtk-menu-images 
+setting and always show the image, if available.
+Use this property if the menuitem would be useless or hard to use
+without the image.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="always_show" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the menuitem should always show the image</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_image" c:identifier="gtk_image_menu_item_set_image">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="image" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_stock"
+              c:identifier="gtk_image_menu_item_set_use_stock"
+              version="2.16">
+        <doc xml:whitespace="preserve">If %TRUE, the label set in the menuitem is used as a
+stock id to select the stock item for the item.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_stock" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the menuitem should use a stock item</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="accel-group"
+                version="2.16"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The Accel Group to use for stock accelerator keys</doc>
+        <type name="AccelGroup"/>
+      </property>
+      <property name="always-show-image"
+                version="2.16"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If %TRUE, the menu item will ignore the #GtkSettings:gtk-menu-images 
+setting and always show the image, if available.
+Use this property if the menuitem would be useless or hard to use
+without the image.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="image" writable="1" transfer-ownership="none">
+        <type name="Widget"/>
+      </property>
+      <property name="use-stock"
+                version="2.16"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If %TRUE, the label set in the menuitem is used as a
+stock id to select the stock item for the item.</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="menu_item">
+        <type name="MenuItem" c:type="GtkMenuItem"/>
+      </field>
+      <field name="priv">
+        <type name="ImageMenuItemPrivate" c:type="GtkImageMenuItemPrivate*"/>
+      </field>
+    </class>
+    <record name="ImageMenuItemClass"
+            c:type="GtkImageMenuItemClass"
+            glib:is-gtype-struct-for="ImageMenuItem">
+      <field name="parent_class">
+        <type name="MenuItemClass" c:type="GtkMenuItemClass"/>
+      </field>
+    </record>
+    <record name="ImageMenuItemPrivate"
+            c:type="GtkImageMenuItemPrivate"
+            disguised="1">
+    </record>
+    <record name="ImagePixbufData" c:type="GtkImagePixbufData">
+      <field name="pixbuf" writable="1">
+        <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+      </field>
+    </record>
+    <record name="ImagePixmapData" c:type="GtkImagePixmapData">
+      <field name="pixmap" writable="1">
+        <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+      </field>
+    </record>
+    <record name="ImagePrivate" c:type="GtkImagePrivate" disguised="1">
+    </record>
+    <record name="ImageStockData" c:type="GtkImageStockData">
+      <field name="stock_id" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </record>
+    <enumeration name="ImageType"
+                 glib:type-name="GtkImageType"
+                 glib:get-type="gtk_image_type_get_type"
+                 c:type="GtkImageType">
+      <doc xml:whitespace="preserve">Describes the image data representation used by a #GtkImage. If you
+want to get the image from the widget, you can only get the
+currently-stored representation. e.g.  if the
+gtk_image_get_storage_type() returns #GTK_IMAGE_PIXBUF, then you can
+call gtk_image_get_pixbuf() but not gtk_image_get_stock().  For empty
+images, you can request any storage type (call any of the "get"
+functions), but they will all return %NULL values.</doc>
+      <member name="empty"
+              value="0"
+              c:identifier="GTK_IMAGE_EMPTY"
+              glib:nick="empty"/>
+      <member name="pixmap"
+              value="1"
+              c:identifier="GTK_IMAGE_PIXMAP"
+              glib:nick="pixmap"/>
+      <member name="pixbuf"
+              value="2"
+              c:identifier="GTK_IMAGE_PIXBUF"
+              glib:nick="pixbuf"/>
+      <member name="stock"
+              value="3"
+              c:identifier="GTK_IMAGE_STOCK"
+              glib:nick="stock"/>
+      <member name="icon_set"
+              value="4"
+              c:identifier="GTK_IMAGE_ICON_SET"
+              glib:nick="icon-set"/>
+      <member name="animation"
+              value="5"
+              c:identifier="GTK_IMAGE_ANIMATION"
+              glib:nick="animation"/>
+      <member name="icon_name"
+              value="6"
+              c:identifier="GTK_IMAGE_ICON_NAME"
+              glib:nick="icon-name"/>
+      <member name="gicon"
+              value="7"
+              c:identifier="GTK_IMAGE_GICON"
+              glib:nick="gicon"/>
+    </enumeration>
+    <class name="InfoBar"
+           c:symbol-prefix="info_bar"
+           c:type="GtkInfoBar"
+           parent="HBox"
+           glib:type-name="GtkInfoBar"
+           glib:get-type="gtk_info_bar_get_type"
+           glib:type-struct="InfoBarClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_info_bar_new" version="2.18">
+        <doc xml:whitespace="preserve">Creates a new #GtkInfoBar object.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkInfoBar object</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_buttons"
+                   c:identifier="gtk_info_bar_new_with_buttons"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #GtkInfoBar with buttons. Button text/response ID
+pairs should be listed, with a %NULL pointer ending the list.
+Button text can be either a stock ID such as %GTK_STOCK_OK, or
+some arbitrary text. A response ID can be any positive number,
+or one of the values in the #GtkResponseType enumeration. If the
+user clicks one of these dialog buttons, GtkInfoBar will emit
+the "response" signal with the corresponding response ID.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkInfoBar</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_button_text"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">stock ID or text to go in first button, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add_action_widget"
+              c:identifier="gtk_info_bar_add_action_widget"
+              version="2.18">
+        <doc xml:whitespace="preserve">Add an activatable widget to the action area of a #GtkInfoBar,
+connecting a signal handler that will emit the #GtkInfoBar::response
+signal on the message area when the widget is activated. The widget
+is appended to the end of the message areas action area.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an activatable widget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="response_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">response ID for @child</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_button"
+              c:identifier="gtk_info_bar_add_button"
+              version="2.18">
+        <doc xml:whitespace="preserve">Adds a button with the given text (or a stock button, if button_text
+is a stock ID) and sets things up so that clicking the button will emit
+the "response" signal with the given response_id. The button is appended
+to the end of the info bars's action area. The button widget is
+returned, but usually you don't need it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the button widget that was added</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="button_text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">text of button, or stock ID</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="response_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">response ID for the button</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_buttons"
+              c:identifier="gtk_info_bar_add_buttons"
+              version="2.18"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds more buttons, same as calling gtk_info_bar_add_button()
+repeatedly. The variable argument list should be %NULL-terminated
+as with gtk_info_bar_new_with_buttons(). Each button must have both
+text and response ID.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_button_text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">button text or stock ID</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_action_area"
+              c:identifier="gtk_info_bar_get_action_area"
+              version="2.18">
+        <doc xml:whitespace="preserve">Returns the action area of @info_bar.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the action area</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_content_area"
+              c:identifier="gtk_info_bar_get_content_area"
+              version="2.18">
+        <doc xml:whitespace="preserve">Returns the content area of @info_bar.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the content area</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_message_type"
+              c:identifier="gtk_info_bar_get_message_type"
+              version="2.18">
+        <doc xml:whitespace="preserve">Returns the message type of the message area.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the message type of the message area.</doc>
+          <type name="MessageType" c:type="GtkMessageType"/>
+        </return-value>
+      </method>
+      <method name="response"
+              c:identifier="gtk_info_bar_response"
+              version="2.18">
+        <doc xml:whitespace="preserve">Emits the 'response' signal with the given @response_id.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="response_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a response ID</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_default_response"
+              c:identifier="gtk_info_bar_set_default_response"
+              version="2.18">
+        <doc xml:whitespace="preserve">Sets the last widget in the info bar's action area with
+the given response_id as the default widget for the dialog.
+Pressing "Enter" normally activates the default widget.
+Note that this function currently requires @info_bar to
+be added to a widget hierarchy.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="response_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a response ID</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_message_type"
+              c:identifier="gtk_info_bar_set_message_type"
+              version="2.18">
+        <doc xml:whitespace="preserve">Sets the message type of the message area.
+GTK+ uses this type to determine what color to use
+when drawing the message area.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="message_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkMessageType</doc>
+            <type name="MessageType" c:type="GtkMessageType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_response_sensitive"
+              c:identifier="gtk_info_bar_set_response_sensitive"
+              version="2.18">
+        <doc xml:whitespace="preserve">Calls gtk_widget_set_sensitive (widget, setting) for each
+widget in the info bars's action area with the given response_id.
+A convenient way to sensitize/desensitize dialog buttons.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="response_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a response ID</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">TRUE for sensitive</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="message-type"
+                version="2.18"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The type of the message.
+The type is used to determine the colors to use in the info bar.
+The following symbolic color names can by used to customize
+these colors:
+"info_fg_color", "info_bg_color",
+"warning_fg_color", "warning_bg_color",
+"question_fg_color", "question_bg_color",
+"error_fg_color", "error_bg_color".
+"other_fg_color", "other_bg_color".
+If the type is #GTK_MESSAGE_OTHER, no info bar is painted but the
+colors are still set.</doc>
+        <type name="MessageType"/>
+      </property>
+      <field name="parent">
+        <type name="HBox" c:type="GtkHBox"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="InfoBarPrivate" c:type="GtkInfoBarPrivate*"/>
+      </field>
+      <glib:signal name="close" version="2.18">
+        <doc xml:whitespace="preserve">The ::close signal is a
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted when the user uses a keybinding to dismiss
+the info bar.
+The default binding for this signal is the Escape key.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="response" version="2.18">
+        <doc xml:whitespace="preserve">Emitted when an action widget is clicked or the application programmer
+calls gtk_dialog_response(). The @response_id depends on which action
+widget was clicked.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the response ID</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="InfoBarClass"
+            c:type="GtkInfoBarClass"
+            glib:is-gtype-struct-for="InfoBar">
+      <field name="parent_class">
+        <type name="HBoxClass" c:type="GtkHBoxClass"/>
+      </field>
+      <field name="response">
+        <callback name="response">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="info_bar" transfer-ownership="none">
+              <type name="InfoBar" c:type="GtkInfoBar*"/>
+            </parameter>
+            <parameter name="response_id" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close">
+        <callback name="close">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="info_bar" transfer-ownership="none">
+              <type name="InfoBar" c:type="GtkInfoBar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved5" introspectable="0">
+        <callback name="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved6" introspectable="0">
+        <callback name="_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="InfoBarPrivate" c:type="GtkInfoBarPrivate" disguised="1">
+    </record>
+    <class name="Invisible"
+           c:symbol-prefix="invisible"
+           c:type="GtkInvisible"
+           parent="Widget"
+           glib:type-name="GtkInvisible"
+           glib:get-type="gtk_invisible_get_type"
+           glib:type-struct="InvisibleClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_invisible_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkInvisible.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkInvisible.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_for_screen"
+                   c:identifier="gtk_invisible_new_for_screen"
+                   version="2.2">
+        <doc xml:whitespace="preserve">Creates a new #GtkInvisible object for a specified screen</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a newly created #GtkInvisible object</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkScreen which identifies on which the new #GtkInvisible will be created.</doc>
+            <type name="Gdk.Screen" c:type="GdkScreen*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_screen"
+              c:identifier="gtk_invisible_get_screen"
+              version="2.2">
+        <doc xml:whitespace="preserve">Returns the #GdkScreen object associated with @invisible</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the associated #GdkScreen.</doc>
+          <type name="Gdk.Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </method>
+      <method name="set_screen"
+              c:identifier="gtk_invisible_set_screen"
+              version="2.2">
+        <doc xml:whitespace="preserve">Sets the #GdkScreen where the #GtkInvisible object will be displayed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkScreen.</doc>
+            <type name="Gdk.Screen" c:type="GdkScreen*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="screen" writable="1" transfer-ownership="none">
+        <type name="Gdk.Screen"/>
+      </property>
+      <field name="widget">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="InvisiblePrivate" c:type="GtkInvisiblePrivate*"/>
+      </field>
+    </class>
+    <record name="InvisibleClass"
+            c:type="GtkInvisibleClass"
+            glib:is-gtype-struct-for="Invisible">
+      <field name="parent_class">
+        <type name="WidgetClass" c:type="GtkWidgetClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="InvisiblePrivate" c:type="GtkInvisiblePrivate" disguised="1">
+    </record>
+    <enumeration name="Justification"
+                 glib:type-name="GtkJustification"
+                 glib:get-type="gtk_justification_get_type"
+                 c:type="GtkJustification">
+      <member name="left"
+              value="0"
+              c:identifier="GTK_JUSTIFY_LEFT"
+              glib:nick="left"/>
+      <member name="right"
+              value="1"
+              c:identifier="GTK_JUSTIFY_RIGHT"
+              glib:nick="right"/>
+      <member name="center"
+              value="2"
+              c:identifier="GTK_JUSTIFY_CENTER"
+              glib:nick="center"/>
+      <member name="fill"
+              value="3"
+              c:identifier="GTK_JUSTIFY_FILL"
+              glib:nick="fill"/>
+    </enumeration>
+    <callback name="KeySnoopFunc" c:type="GtkKeySnoopFunc">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="grab_widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Gdk.EventKey" c:type="GdkEventKey*"/>
+        </parameter>
+        <parameter name="func_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="Label"
+           c:symbol-prefix="label"
+           c:type="GtkLabel"
+           parent="Misc"
+           glib:type-name="GtkLabel"
+           glib:get-type="gtk_label_get_type"
+           glib:type-struct="LabelClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_label_new">
+        <doc xml:whitespace="preserve">Creates a new label with the given text inside it. You can
+pass %NULL to get an empty label widget.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new #GtkLabel</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The text of the label</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_mnemonic"
+                   c:identifier="gtk_label_new_with_mnemonic">
+        <doc xml:whitespace="preserve">Creates a new #GtkLabel, containing the text in @str.
+If characters in @str are preceded by an underscore, they are
+underlined. If you need a literal underscore character in a label, use
+'__' (two underscores). The first underlined character represents a 
+keyboard accelerator called a mnemonic. The mnemonic key can be used 
+to activate another widget, chosen automatically, or explicitly using
+gtk_label_set_mnemonic_widget().
+If gtk_label_set_mnemonic_widget() is not called, then the first 
+activatable ancestor of the #GtkLabel will be chosen as the mnemonic 
+widget. For instance, if the label is inside a button or menu item, 
+the button or menu item will automatically become the mnemonic widget 
+and be activated by the mnemonic.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new #GtkLabel</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The text of the label, with an underscore in front of the mnemonic character</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_angle"
+              c:identifier="gtk_label_get_angle"
+              version="2.6">
+        <doc xml:whitespace="preserve">Gets the angle of rotation for the label. See
+gtk_label_set_angle().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the angle of rotation for the label</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_attributes" c:identifier="gtk_label_get_attributes">
+        <doc xml:whitespace="preserve">Gets the attribute list that was set on the label using
+gtk_label_set_attributes(), if any. This function does
+not reflect attributes that come from the labels markup
+(see gtk_label_set_markup()). If you want to get the
+effective attributes for the label, use
+pango_layout_get_attribute (gtk_label_get_layout (label)).</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the attribute list, or %NULL if none was set.</doc>
+          <type name="Pango.AttrList" c:type="PangoAttrList*"/>
+        </return-value>
+      </method>
+      <method name="get_current_uri"
+              c:identifier="gtk_label_get_current_uri"
+              version="2.18">
+        <doc xml:whitespace="preserve">Returns the URI for the currently active link in the label.
+The active link is the one under the mouse pointer or, in a
+selectable label, the link in which the text cursor is currently
+positioned.
+This function is intended for use in a #GtkLabel::activate-link handler
+or for use in a #GtkWidget::query-tooltip handler.
+not be freed or modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the currently active URI. The string is owned by GTK+ and must</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_ellipsize"
+              c:identifier="gtk_label_get_ellipsize"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the ellipsizing position of the label. See gtk_label_set_ellipsize().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#PangoEllipsizeMode</doc>
+          <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+        </return-value>
+      </method>
+      <method name="get_justify" c:identifier="gtk_label_get_justify">
+        <doc xml:whitespace="preserve">Returns the justification of the label. See gtk_label_set_justify().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GtkJustification</doc>
+          <type name="Justification" c:type="GtkJustification"/>
+        </return-value>
+      </method>
+      <method name="get_label" c:identifier="gtk_label_get_label">
+        <doc xml:whitespace="preserve">Fetches the text from a label widget including any embedded
+underlines indicating mnemonics and Pango markup. (See
+gtk_label_get_text()).
+owned by the widget and must not be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the text of the label widget. This string is</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_layout" c:identifier="gtk_label_get_layout">
+        <doc xml:whitespace="preserve">Gets the #PangoLayout used to display the label.
+The layout is useful to e.g. convert text positions to
+pixel positions, in combination with gtk_label_get_layout_offsets().
+The returned layout is owned by the label so need not be
+freed by the caller.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #PangoLayout for this label</doc>
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </return-value>
+      </method>
+      <method name="get_layout_offsets"
+              c:identifier="gtk_label_get_layout_offsets">
+        <doc xml:whitespace="preserve">Obtains the coordinates where the label will draw the #PangoLayout
+representing the text in the label; useful to convert mouse events
+into coordinates inside the #PangoLayout, e.g. to take some action
+if some part of the label is clicked. Of course you will need to
+create a #GtkEventBox to receive the events, and pack the label
+inside it, since labels are a #GTK_NO_WINDOW widget. Remember
+when using the #PangoLayout functions you need to convert to
+and from pixels using PANGO_PIXELS() or #PANGO_SCALE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store X offset of layout, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store Y offset of layout, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_line_wrap" c:identifier="gtk_label_get_line_wrap">
+        <doc xml:whitespace="preserve">Returns whether lines in the label are automatically wrapped. 
+See gtk_label_set_line_wrap().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the lines of the label are automatically wrapped.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_line_wrap_mode"
+              c:identifier="gtk_label_get_line_wrap_mode"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns line wrap mode used by the label. See gtk_label_set_line_wrap_mode().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the lines of the label are automatically wrapped.</doc>
+          <type name="Pango.WrapMode" c:type="PangoWrapMode"/>
+        </return-value>
+      </method>
+      <method name="get_max_width_chars"
+              c:identifier="gtk_label_get_max_width_chars"
+              version="2.6">
+        <doc xml:whitespace="preserve">Retrieves the desired maximum width of @label, in characters. See
+gtk_label_set_width_chars().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the maximum width of the label in characters.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_mnemonic_keyval"
+              c:identifier="gtk_label_get_mnemonic_keyval">
+        <doc xml:whitespace="preserve">If the label has been set so that it has an mnemonic key this function
+returns the keyval used for the mnemonic accelerator. If there is no
+mnemonic set up it returns #GDK_VoidSymbol.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">GDK keyval usable for accelerators, or #GDK_VoidSymbol</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_mnemonic_widget"
+              c:identifier="gtk_label_get_mnemonic_widget">
+        <doc xml:whitespace="preserve">Retrieves the target of the mnemonic (keyboard shortcut) of this
+label. See gtk_label_set_mnemonic_widget().
+or %NULL if none has been set and the default algorithm will be used.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the target of the label's mnemonic,</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_selectable" c:identifier="gtk_label_get_selectable">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_label_set_selectable().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the user can copy text from the label</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_selection_bounds"
+              c:identifier="gtk_label_get_selection_bounds">
+        <doc xml:whitespace="preserve">Gets the selected range of characters in the label, returning %TRUE
+if there's a selection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if selection is non-empty</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for start of selection, as a character offset</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for end of selection, as a character offset</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_single_line_mode"
+              c:identifier="gtk_label_get_single_line_mode"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns whether the label is in single line mode.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE when the label is in single line mode.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_text" c:identifier="gtk_label_get_text">
+        <doc xml:whitespace="preserve">Fetches the text from a label widget, as displayed on the
+screen. This does not include any embedded underlines
+indicating mnemonics or Pango markup. (See gtk_label_get_label())
+string used by the label, and must not be modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the text in the label widget. This is the internal</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_track_visited_links"
+              c:identifier="gtk_label_get_track_visited_links"
+              version="2.18">
+        <doc xml:whitespace="preserve">Returns whether the label is currently keeping track
+of clicked links.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if clicked links are remembered</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_use_markup" c:identifier="gtk_label_get_use_markup">
+        <doc xml:whitespace="preserve">Returns whether the label's text is interpreted as marked up with
+the &lt;link linkend="PangoMarkupFormat"&gt;Pango text markup
+language&lt;/link&gt;. See gtk_label_set_use_markup ().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the label's text will be parsed for markup.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_use_underline"
+              c:identifier="gtk_label_get_use_underline">
+        <doc xml:whitespace="preserve">Returns whether an embedded underline in the label indicates a
+mnemonic. See gtk_label_set_use_underline().
+the mnemonic accelerator keys.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE whether an embedded underline in the label indicates</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_width_chars"
+              c:identifier="gtk_label_get_width_chars"
+              version="2.6">
+        <doc xml:whitespace="preserve">Retrieves the desired width of @label, in characters. See
+gtk_label_set_width_chars().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width of the label in characters.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="select_region" c:identifier="gtk_label_select_region">
+        <doc xml:whitespace="preserve">Selects a range of characters in the label, if the label is selectable.
+See gtk_label_set_selectable(). If the label is not selectable,
+this function has no effect. If @start_offset or</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start offset (in characters not bytes)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">end offset (in characters not bytes)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_angle"
+              c:identifier="gtk_label_set_angle"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the angle of rotation for the label. An angle of 90 reads from
+from bottom to top, an angle of 270, from top to bottom. The angle
+setting for the label is ignored if the label is selectable,
+wrapped, or ellipsized.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the angle that the baseline of the label makes with the horizontal, in degrees, measured counterclockwise</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attributes" c:identifier="gtk_label_set_attributes">
+        <doc xml:whitespace="preserve">Sets a #PangoAttrList; the attributes in the list are applied to the
+label text. 
+&lt;note&gt;&lt;para&gt;The attributes set with this function will be applied
+and merged with any other attributes previously effected by way
+of the #GtkLabel:use-underline or #GtkLabel:use-markup properties.
+While it is not recommended to mix markup strings with manually set
+attributes, if you must; know that the attributes will be applied
+to the label after the markup string is parsed.&lt;/para&gt;&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attrs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoAttrList</doc>
+            <type name="Pango.AttrList" c:type="PangoAttrList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_ellipsize"
+              c:identifier="gtk_label_set_ellipsize"
+              version="2.6">
+        <doc xml:whitespace="preserve">if there is not enough space to render the entire string.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoEllipsizeMode</doc>
+            <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_justify" c:identifier="gtk_label_set_justify">
+        <doc xml:whitespace="preserve">Sets the alignment of the lines in the text of the label relative to
+each other. %GTK_JUSTIFY_LEFT is the default value when the
+widget is first created with gtk_label_new(). If you instead want
+to set the alignment of the label as a whole, use
+gtk_misc_set_alignment() instead. gtk_label_set_justify() has no
+effect on labels containing only a single line.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="jtype" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkJustification</doc>
+            <type name="Justification" c:type="GtkJustification"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_label" c:identifier="gtk_label_set_label">
+        <doc xml:whitespace="preserve">Sets the text of the label. The label is interpreted as
+including embedded underlines and/or Pango markup depending
+on the values of the #GtkLabel:use-underline" and
+#GtkLabel:use-markup properties.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new text to set for the label</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_line_wrap" c:identifier="gtk_label_set_line_wrap">
+        <doc xml:whitespace="preserve">Toggles line wrapping within the #GtkLabel widget. %TRUE makes it break
+lines if text exceeds the widget's size. %FALSE lets the text get cut off
+by the edge of the widget if it exceeds the widget size.
+Note that setting line wrapping to %TRUE does not make the label
+wrap at its parent container's width, because GTK+ widgets
+conceptually can't make their requisition depend on the parent
+container's size. For a label that wraps at a specific position,
+set the label's width using gtk_widget_set_size_request().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wrap" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the setting</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_line_wrap_mode"
+              c:identifier="gtk_label_set_line_wrap_mode"
+              version="2.10">
+        <doc xml:whitespace="preserve">If line wrapping is on (see gtk_label_set_line_wrap()) this controls how
+the line wrapping is done. The default is %PANGO_WRAP_WORD which means
+wrap on word boundaries.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wrap_mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the line wrapping mode</doc>
+            <type name="Pango.WrapMode" c:type="PangoWrapMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_markup" c:identifier="gtk_label_set_markup">
+        <doc xml:whitespace="preserve">Parses @str which is marked up with the &lt;link
+linkend="PangoMarkupFormat"&gt;Pango text markup language&lt;/link&gt;, setting the
+label's text and attribute list based on the parse results. If the @str is
+external data, you may need to escape it with g_markup_escape_text() or
+g_markup_printf_escaped()&lt;!-- --&gt;:
+|[
+char *markup;
+markup = g_markup_printf_escaped ("&amp;lt;span style=\"italic\"&amp;gt;&amp;percnt;s&amp;lt;/span&amp;gt;", str);
+gtk_label_set_markup (GTK_LABEL (label), markup);
+g_free (markup);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a markup string (see &lt;link linkend="PangoMarkupFormat"&gt;Pango markup format&lt;/link&gt;)</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_markup_with_mnemonic"
+              c:identifier="gtk_label_set_markup_with_mnemonic">
+        <doc xml:whitespace="preserve">Parses @str which is marked up with the &lt;link linkend="PangoMarkupFormat"&gt;Pango text markup language&lt;/link&gt;,
+setting the label's text and attribute list based on the parse results.
+If characters in @str are preceded by an underscore, they are underlined
+indicating that they represent a keyboard accelerator called a mnemonic.
+The mnemonic key can be used to activate another widget, chosen 
+automatically, or explicitly using gtk_label_set_mnemonic_widget().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a markup string (see &lt;link linkend="PangoMarkupFormat"&gt;Pango markup format&lt;/link&gt;)</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_max_width_chars"
+              c:identifier="gtk_label_set_max_width_chars"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the desired maximum width in characters of @label to @n_chars.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new desired maximum width, in characters.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_mnemonic_widget"
+              c:identifier="gtk_label_set_mnemonic_widget">
+        <doc xml:whitespace="preserve">If the label has been set so that it has an mnemonic key (using
+i.e. gtk_label_set_markup_with_mnemonic(),
+gtk_label_set_text_with_mnemonic(), gtk_label_new_with_mnemonic()
+or the "use_underline" property) the label can be associated with a
+widget that is the target of the mnemonic. When the label is inside
+a widget (like a #GtkButton or a #GtkNotebook tab) it is
+automatically associated with the correct widget, but sometimes
+(i.e. when the target is a #GtkEntry next to the label) you need to
+set it explicitly using this function.
+The target widget will be accelerated by emitting the 
+GtkWidget::mnemonic-activate signal on it. The default handler for 
+this signal will activate the widget if there are no mnemonic collisions 
+and toggle focus between the colliding widgets otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the target #GtkWidget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pattern" c:identifier="gtk_label_set_pattern">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pattern" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_selectable" c:identifier="gtk_label_set_selectable">
+        <doc xml:whitespace="preserve">Selectable labels allow the user to select text from the label, for
+copy-and-paste.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to allow selecting text in the label</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_single_line_mode"
+              c:identifier="gtk_label_set_single_line_mode"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets whether the label is in single line mode.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="single_line_mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the label should be in single line mode</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_text" c:identifier="gtk_label_set_text">
+        <doc xml:whitespace="preserve">Sets the text within the #GtkLabel widget. It overwrites any text that
+was there before.  
+This will also clear any previously set mnemonic accelerators.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The text you want to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_text_with_mnemonic"
+              c:identifier="gtk_label_set_text_with_mnemonic">
+        <doc xml:whitespace="preserve">Sets the label's text from the string @str.
+If characters in @str are preceded by an underscore, they are underlined
+indicating that they represent a keyboard accelerator called a mnemonic.
+The mnemonic key can be used to activate another widget, chosen 
+automatically, or explicitly using gtk_label_set_mnemonic_widget().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_track_visited_links"
+              c:identifier="gtk_label_set_track_visited_links"
+              version="2.18">
+        <doc xml:whitespace="preserve">Sets whether the label should keep track of clicked
+links (and use a different color for them).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track_links" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to track visited links</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_markup" c:identifier="gtk_label_set_use_markup">
+        <doc xml:whitespace="preserve">Sets whether the text of the label contains markup in &lt;link
+linkend="PangoMarkupFormat"&gt;Pango's text markup
+language&lt;/link&gt;. See gtk_label_set_markup().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the label's text should be parsed for markup.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_underline"
+              c:identifier="gtk_label_set_use_underline">
+        <doc xml:whitespace="preserve">If true, an underline in the text indicates the next character should be
+used for the mnemonic accelerator key.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if underlines in the text indicate mnemonics</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_width_chars"
+              c:identifier="gtk_label_set_width_chars"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the desired width in characters of @label to @n_chars.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new desired width, in characters.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="angle"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The angle that the baseline of the label makes with the horizontal,
+in degrees, measured counterclockwise. An angle of 90 reads from
+from bottom to top, an angle of 270, from top to bottom. Ignored
+if the label is selectable, wrapped, or ellipsized.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="attributes" writable="1" transfer-ownership="none">
+        <type name="Pango.AttrList"/>
+      </property>
+      <property name="cursor-position" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="ellipsize"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The preferred place to ellipsize the string, if the label does 
+not have enough room to display the entire string, specified as a 
+#PangoEllisizeMode. 
+Note that setting this property to a value other than 
+%PANGO_ELLIPSIZE_NONE has the side-effect that the label requests 
+only enough space to display the ellipsis "...". In particular, this 
+means that ellipsizing labels do not work well in notebook tabs, unless 
+the tab's #GtkNotebook:tab-expand property is set to %TRUE. Other ways
+to set a label's width are gtk_widget_set_size_request() and
+gtk_label_set_width_chars().</doc>
+        <type name="Pango.EllipsizeMode"/>
+      </property>
+      <property name="justify" writable="1" transfer-ownership="none">
+        <type name="Justification"/>
+      </property>
+      <property name="label" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="max-width-chars"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The desired maximum width of the label, in characters. If this property 
+is set to -1, the width will be calculated automatically.
+See the section on &lt;link linkend="label-text-layout"&gt;text layout&lt;/link&gt;
+for details of how #GtkLabel:width-chars and #GtkLabel:max-width-chars
+determine the width of ellipsized and wrapped labels.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="mnemonic-keyval" transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <property name="mnemonic-widget" writable="1" transfer-ownership="none">
+        <type name="Widget"/>
+      </property>
+      <property name="pattern"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="selectable" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="selection-bound" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="single-line-mode"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the label is in single line mode. In single line mode,
+the height of the label does not depend on the actual text, it
+is always set to ascent + descent of the font. This can be an
+advantage in situations where resizing the label because of text 
+changes would be distracting, e.g. in a statusbar.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="track-visited-links"
+                version="2.18"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Set this property to %TRUE to make the label track which links
+have been clicked. It will then apply the ::visited-link-color
+color, instead of ::link-color.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="use-markup" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="use-underline" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="width-chars"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The desired width of the label, in characters. If this property is set to
+-1, the width will be calculated automatically.
+See the section on &lt;link linkend="label-text-layout"&gt;text layout&lt;/link&gt;
+for details of how #GtkLabel:width-chars and #GtkLabel:max-width-chars
+determine the width of ellipsized and wrapped labels.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="wrap" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="wrap-mode"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If line wrapping is on (see the #GtkLabel:wrap property) this controls 
+how the line wrapping is done. The default is %PANGO_WRAP_WORD, which 
+means wrap on word boundaries.</doc>
+        <type name="Pango.WrapMode"/>
+      </property>
+      <field name="misc">
+        <type name="Misc" c:type="GtkMisc"/>
+      </field>
+      <field name="priv">
+        <type name="LabelPrivate" c:type="GtkLabelPrivate*"/>
+      </field>
+      <glib:signal name="activate-current-link" version="2.18">
+        <doc xml:whitespace="preserve">A &lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted when the user activates a link in the label.
+Applications may also emit the signal with g_signal_emit_by_name()
+if they need to control activation of URIs programmatically.
+The default bindings for this signal are all forms of the Enter key.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="activate-link" version="2.18">
+        <doc xml:whitespace="preserve">The signal which gets emitted to activate a URI.
+Applications may connect to it to override the default behaviour,
+which is to call gtk_show_uri().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the link has been activated</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the URI that is activated</doc>
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="copy-clipboard">
+        <doc xml:whitespace="preserve">The ::copy-clipboard signal is a
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted to copy the selection to the clipboard.
+The default binding for this signal is Ctrl-c.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="move-cursor">
+        <doc xml:whitespace="preserve">The ::move-cursor signal is a
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted when the user initiates a cursor movement.
+If the cursor is not visible in @entry, this signal causes
+the viewport to be moved instead.
+Applications should not connect to it, but may emit it with
+g_signal_emit_by_name() if they need to control the cursor
+programmatically.
+The default bindings for this signal come in two variants,
+the variant with the Shift modifier extends the selection,
+the variant without the Shift modifer does not.
+There are too many key combinations to list them all here.
+&lt;itemizedlist&gt;
+&lt;listitem&gt;Arrow keys move by individual characters/lines&lt;/listitem&gt;
+&lt;listitem&gt;Ctrl-arrow key combinations move by words/paragraphs&lt;/listitem&gt;
+&lt;listitem&gt;Home/End keys move to the ends of the buffer&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the granularity of the move, as a #GtkMovementStep</doc>
+            <type name="MovementStep"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of @step units to move</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the move should extend the selection</doc>
+            <type name="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="populate-popup">
+        <doc xml:whitespace="preserve">The ::populate-popup signal gets emitted before showing the
+context menu of the label. Note that only selectable labels
+have context menus.
+If you need to add items to the context menu, connect
+to this signal and append your menuitems to the @menu.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the menu that is being populated</doc>
+            <type name="Menu"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="LabelClass"
+            c:type="GtkLabelClass"
+            glib:is-gtype-struct-for="Label">
+      <field name="parent_class">
+        <type name="MiscClass" c:type="GtkMiscClass"/>
+      </field>
+      <field name="move_cursor">
+        <callback name="move_cursor">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="label" transfer-ownership="none">
+              <type name="Label" c:type="GtkLabel*"/>
+            </parameter>
+            <parameter name="step" transfer-ownership="none">
+              <type name="MovementStep" c:type="GtkMovementStep"/>
+            </parameter>
+            <parameter name="count" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="extend_selection" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="copy_clipboard">
+        <callback name="copy_clipboard">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="label" transfer-ownership="none">
+              <type name="Label" c:type="GtkLabel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="populate_popup">
+        <callback name="populate_popup">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="label" transfer-ownership="none">
+              <type name="Label" c:type="GtkLabel*"/>
+            </parameter>
+            <parameter name="menu" transfer-ownership="none">
+              <type name="Menu" c:type="GtkMenu*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate_link">
+        <callback name="activate_link">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="label" transfer-ownership="none">
+              <type name="Label" c:type="GtkLabel*"/>
+            </parameter>
+            <parameter name="uri" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="LabelPrivate" c:type="GtkLabelPrivate" disguised="1">
+    </record>
+    <record name="LabelSelectionInfo"
+            c:type="GtkLabelSelectionInfo"
+            disguised="1">
+    </record>
+    <class name="Layout"
+           c:symbol-prefix="layout"
+           c:type="GtkLayout"
+           parent="Container"
+           glib:type-name="GtkLayout"
+           glib:get-type="gtk_layout_get_type"
+           glib:type-struct="LayoutClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_layout_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkLayout. Unless you have a specific adjustment
+you'd like the layout to use for scrolling, pass %NULL for</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkLayout</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="hadjustment"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">horizontal scroll adjustment, or %NULL</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+          <parameter name="vadjustment"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">vertical scroll adjustment, or %NULL</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_bin_window"
+              c:identifier="gtk_layout_get_bin_window"
+              version="2.14">
+        <doc xml:whitespace="preserve">Retrieve the bin window of the layout used for drawing operations.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_hadjustment" c:identifier="gtk_layout_get_hadjustment">
+        <doc xml:whitespace="preserve">This function should only be called after the layout has been
+placed in a #GtkScrolledWindow or otherwise configured for
+scrolling. It returns the #GtkAdjustment used for communication
+between the horizontal scrollbar and @layout.
+See #GtkScrolledWindow, #GtkScrollbar, #GtkAdjustment for details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">horizontal scroll adjustment</doc>
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="get_size" c:identifier="gtk_layout_get_size">
+        <doc xml:whitespace="preserve">Gets the size that has been set on the layout, and that determines
+the total extents of the layout's scrollbar area. See
+gtk_layout_set_size ().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store the width set on @layout, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store the height set on @layout, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_vadjustment" c:identifier="gtk_layout_get_vadjustment">
+        <doc xml:whitespace="preserve">This function should only be called after the layout has been
+placed in a #GtkScrolledWindow or otherwise configured for
+scrolling. It returns the #GtkAdjustment used for communication
+between the vertical scrollbar and @layout.
+See #GtkScrolledWindow, #GtkScrollbar, #GtkAdjustment for details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">vertical scroll adjustment</doc>
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="move" c:identifier="gtk_layout_move">
+        <doc xml:whitespace="preserve">Moves a current child of @layout to a new position.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a current child of @layout</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X position to move to</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y position to move to</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put" c:identifier="gtk_layout_put">
+        <doc xml:whitespace="preserve">Adds @child_widget to @layout, at position (@x,@y).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">child widget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X position of child widget</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y position of child widget</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_hadjustment" c:identifier="gtk_layout_set_hadjustment">
+        <doc xml:whitespace="preserve">Sets the horizontal scroll adjustment for the layout.
+See #GtkScrolledWindow, #GtkScrollbar, #GtkAdjustment for details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">new scroll adjustment</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_size" c:identifier="gtk_layout_set_size">
+        <doc xml:whitespace="preserve">Sets the size of the scrollable area of the layout.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width of entire scrollable area</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height of entire scrollable area</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_vadjustment" c:identifier="gtk_layout_set_vadjustment">
+        <doc xml:whitespace="preserve">Sets the vertical scroll adjustment for the layout.
+See #GtkScrolledWindow, #GtkScrollbar, #GtkAdjustment for details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">new scroll adjustment</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="hadjustment" writable="1" transfer-ownership="none">
+        <type name="Adjustment"/>
+      </property>
+      <property name="height" writable="1" transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <property name="vadjustment" writable="1" transfer-ownership="none">
+        <type name="Adjustment"/>
+      </property>
+      <property name="width" writable="1" transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <field name="container">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="LayoutPrivate" c:type="GtkLayoutPrivate*"/>
+      </field>
+      <glib:signal name="set-scroll-adjustments">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Adjustment"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="Adjustment"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="LayoutClass"
+            c:type="GtkLayoutClass"
+            glib:is-gtype-struct-for="Layout">
+      <field name="parent_class">
+        <type name="ContainerClass" c:type="GtkContainerClass"/>
+      </field>
+      <field name="set_scroll_adjustments">
+        <callback name="set_scroll_adjustments">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="layout" transfer-ownership="none">
+              <type name="Layout" c:type="GtkLayout*"/>
+            </parameter>
+            <parameter name="hadjustment" transfer-ownership="none">
+              <type name="Adjustment" c:type="GtkAdjustment*"/>
+            </parameter>
+            <parameter name="vadjustment" transfer-ownership="none">
+              <type name="Adjustment" c:type="GtkAdjustment*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="LayoutPrivate" c:type="GtkLayoutPrivate" disguised="1">
+    </record>
+    <enumeration name="License"
+                 version="3.0"
+                 glib:type-name="GtkLicense"
+                 glib:get-type="gtk_license_get_type"
+                 c:type="GtkLicense">
+      <doc xml:whitespace="preserve">The type of license for an application.
+This enumeration can be expanded at later date.</doc>
+      <member name="unknown"
+              value="0"
+              c:identifier="GTK_LICENSE_UNKNOWN"
+              glib:nick="unknown"/>
+      <member name="custom"
+              value="1"
+              c:identifier="GTK_LICENSE_CUSTOM"
+              glib:nick="custom"/>
+      <member name="gpl_2_0"
+              value="2"
+              c:identifier="GTK_LICENSE_GPL_2_0"
+              glib:nick="gpl-2-0"/>
+      <member name="gpl_3_0"
+              value="3"
+              c:identifier="GTK_LICENSE_GPL_3_0"
+              glib:nick="gpl-3-0"/>
+      <member name="lgpl_2_1"
+              value="4"
+              c:identifier="GTK_LICENSE_LGPL_2_1"
+              glib:nick="lgpl-2-1"/>
+      <member name="lgpl_3_0"
+              value="5"
+              c:identifier="GTK_LICENSE_LGPL_3_0"
+              glib:nick="lgpl-3-0"/>
+      <member name="bsd"
+              value="6"
+              c:identifier="GTK_LICENSE_BSD"
+              glib:nick="bsd"/>
+      <member name="mit_x11"
+              value="7"
+              c:identifier="GTK_LICENSE_MIT_X11"
+              glib:nick="mit-x11"/>
+      <member name="artistic"
+              value="8"
+              c:identifier="GTK_LICENSE_ARTISTIC"
+              glib:nick="artistic"/>
+    </enumeration>
+    <class name="LinkButton"
+           c:symbol-prefix="link_button"
+           c:type="GtkLinkButton"
+           parent="Button"
+           glib:type-name="GtkLinkButton"
+           glib:get-type="gtk_link_button_get_type"
+           glib:type-struct="LinkButtonClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Activatable"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new"
+                   c:identifier="gtk_link_button_new"
+                   version="2.10">
+        <doc xml:whitespace="preserve">Creates a new #GtkLinkButton with the URI as its text.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new link button widget.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid URI</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_label"
+                   c:identifier="gtk_link_button_new_with_label"
+                   version="2.10">
+        <doc xml:whitespace="preserve">Creates a new #GtkLinkButton containing a label.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new link button widget.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid URI</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="label" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the text of the button</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_uri"
+              c:identifier="gtk_link_button_get_uri"
+              version="2.10">
+        <doc xml:whitespace="preserve">Retrieves the URI set using gtk_link_button_set_uri().
+and should not be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a valid URI.  The returned string is owned by the link button</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_visited"
+              c:identifier="gtk_link_button_get_visited"
+              version="2.14">
+        <doc xml:whitespace="preserve">Retrieves the 'visited' state of the URI where the #GtkLinkButton
+points. The button becomes visited when it is clicked. If the URI
+is changed on the button, the 'visited' state is unset again.
+The state may also be changed using gtk_link_button_set_visited().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the link has been visited, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_uri"
+              c:identifier="gtk_link_button_set_uri"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets @uri as the URI where the #GtkLinkButton points. As a side-effect
+this unsets the 'visited' state of the button.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid URI</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_visited"
+              c:identifier="gtk_link_button_set_visited"
+              version="2.14">
+        <doc xml:whitespace="preserve">Sets the 'visited' state of the URI where the #GtkLinkButton
+points.  See gtk_link_button_get_visited() for more details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visited" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new 'visited' state</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="uri" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="visited" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Button" c:type="GtkButton"/>
+      </field>
+      <field name="priv">
+        <type name="LinkButtonPrivate" c:type="GtkLinkButtonPrivate*"/>
+      </field>
+    </class>
+    <record name="LinkButtonClass"
+            c:type="GtkLinkButtonClass"
+            glib:is-gtype-struct-for="LinkButton">
+      <field name="parent_class">
+        <type name="ButtonClass" c:type="GtkButtonClass"/>
+      </field>
+      <field name="_gtk_padding1" introspectable="0">
+        <callback name="_gtk_padding1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_padding2" introspectable="0">
+        <callback name="_gtk_padding2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_padding3" introspectable="0">
+        <callback name="_gtk_padding3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_padding4" introspectable="0">
+        <callback name="_gtk_padding4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="LinkButtonPrivate"
+            c:type="GtkLinkButtonPrivate"
+            disguised="1">
+    </record>
+    <class name="ListStore"
+           c:symbol-prefix="list_store"
+           c:type="GtkListStore"
+           parent="GObject.Object"
+           glib:type-name="GtkListStore"
+           glib:get-type="gtk_list_store_get_type"
+           glib:type-struct="ListStoreClass">
+      <implements name="Buildable"/>
+      <implements name="TreeDragDest"/>
+      <implements name="TreeDragSource"/>
+      <implements name="TreeModel"/>
+      <implements name="TreeSortable"/>
+      <constructor name="new"
+                   c:identifier="gtk_list_store_new"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new list store as with @n_columns columns each of the types passed
+in.  Note that only types derived from standard GObject fundamental types 
+are supported. 
+As an example, &lt;literal&gt;gtk_tree_store_new (3, G_TYPE_INT, G_TYPE_STRING,
+GDK_TYPE_PIXBUF);&lt;/literal&gt; will create a new #GtkListStore with three columns, of type
+int, string and #GdkPixbuf respectively.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkListStore</doc>
+          <type name="ListStore" c:type="GtkListStore*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of columns in the list store</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="newv" c:identifier="gtk_list_store_newv">
+        <doc xml:whitespace="preserve">Non-vararg creation function.  Used primarily by language bindings.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkListStore</doc>
+          <type name="ListStore" c:type="GtkListStore*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of columns in the list store</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="types" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of #GType types for the columns, from first to last</doc>
+            <array length="0" c:type="GType*">
+              <type name="GType"/>
+            </array>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="append" c:identifier="gtk_list_store_append">
+        <doc xml:whitespace="preserve">Appends a new row to @list_store.  @iter will be changed to point to this new
+row.  The row will be empty after this function is called.  To fill in
+values, you need to call gtk_list_store_set() or gtk_list_store_set_value().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">An unset #GtkTreeIter to set to the appended row</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear" c:identifier="gtk_list_store_clear">
+        <doc xml:whitespace="preserve">Removes all rows from the list store.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="insert" c:identifier="gtk_list_store_insert">
+        <doc xml:whitespace="preserve">Creates a new row at @position.  @iter will be changed to point to this new
+row.  If @position is larger than the number of rows on the list, then the
+new row will be appended to the list. The row will be empty after this
+function is called.  To fill in values, you need to call 
+gtk_list_store_set() or gtk_list_store_set_value().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">An unset #GtkTreeIter to set to the new row</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position to insert the new row</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_after" c:identifier="gtk_list_store_insert_after">
+        <doc xml:whitespace="preserve">Inserts a new row after @sibling. If @sibling is %NULL, then the row will be
+prepended to the beginning of the list. @iter will be changed to point to
+this new row. The row will be empty after this function is called. To fill
+in values, you need to call gtk_list_store_set() or gtk_list_store_set_value().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">An unset #GtkTreeIter to set to the new row</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter, or %NULL</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_before" c:identifier="gtk_list_store_insert_before">
+        <doc xml:whitespace="preserve">Inserts a new row before @sibling. If @sibling is %NULL, then the row will 
+be appended to the end of the list. @iter will be changed to point to this 
+new row. The row will be empty after this function is called. To fill in 
+values, you need to call gtk_list_store_set() or gtk_list_store_set_value().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">An unset #GtkTreeIter to set to the new row</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter, or %NULL</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_with_values"
+              c:identifier="gtk_list_store_insert_with_values"
+              version="2.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new row at @position.  @iter will be changed to point to this new
+row.  If @position is larger than the number of rows on the list, then the
+new row will be appended to the list. The row will be filled with the 
+values given to this function. 
+Calling
+&lt;literal&gt;gtk_list_store_insert_with_values(list_store, iter, position...)&lt;/literal&gt; 
+has the same effect as calling 
+|[
+gtk_list_store_insert (list_store, iter, position);
+gtk_list_store_set (list_store, iter, ...);
+]|
+with the difference that the former will only emit a row_inserted signal,
+while the latter will emit row_inserted, row_changed and, if the list store
+is sorted, rows_reordered. Since emitting the rows_reordered signal
+repeatedly can affect the performance of the program, 
+gtk_list_store_insert_with_values() should generally be preferred when
+inserting rows in a sorted list store.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">An unset #GtkTreeIter to set to the new row, or %NULL.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position to insert the new row</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_with_valuesv"
+              c:identifier="gtk_list_store_insert_with_valuesv"
+              version="2.6">
+        <doc xml:whitespace="preserve">A variant of gtk_list_store_insert_with_values() which
+takes the columns and values as two arrays, instead of
+varargs. This function is mainly intended for 
+language-bindings.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">An unset #GtkTreeIter to set to the new row, or %NULL.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position to insert the new row</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of column numbers</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of GValues</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="n_values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of the @columns and @values arrays</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_is_valid"
+              c:identifier="gtk_list_store_iter_is_valid"
+              version="2.2">
+        <doc xml:whitespace="preserve">&lt;warning&gt;This function is slow. Only use it for debugging and/or testing
+purposes.&lt;/warning&gt;
+Checks if the given iter is a valid iter for this #GtkListStore.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the iter is valid, %FALSE if the iter is invalid.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_after"
+              c:identifier="gtk_list_store_move_after"
+              version="2.2">
+        <doc xml:whitespace="preserve">Moves @iter in @store to the position after @position. Note that this
+function only works with unsorted stores. If @position is %NULL, @iter
+will be moved to the start of the list.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A #GtkTreeIter or %NULL.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_before"
+              c:identifier="gtk_list_store_move_before"
+              version="2.2">
+        <doc xml:whitespace="preserve">Moves @iter in @store to the position before @position. Note that this
+function only works with unsorted stores. If @position is %NULL, @iter
+will be moved to the end of the list.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A #GtkTreeIter, or %NULL.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend" c:identifier="gtk_list_store_prepend">
+        <doc xml:whitespace="preserve">Prepends a new row to @list_store. @iter will be changed to point to this new
+row. The row will be empty after this function is called. To fill in
+values, you need to call gtk_list_store_set() or gtk_list_store_set_value().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">An unset #GtkTreeIter to set to the prepend row</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove" c:identifier="gtk_list_store_remove">
+        <doc xml:whitespace="preserve">Removes the given row from the list store.  After being removed, 
+to the last row in @list_store.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter is valid, %FALSE if not.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reorder"
+              c:identifier="gtk_list_store_reorder"
+              version="2.2">
+        <doc xml:whitespace="preserve">Reorders @store to follow the order indicated by @new_order. Note that
+this function only works with unsorted stores.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_order" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of integers mapping the new position of each child to its old position before the re-ordering, i.e. @new_order&lt;literal&gt;[newpos] = oldpos&lt;/literal&gt;.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set" c:identifier="gtk_list_store_set" introspectable="0">
+        <doc xml:whitespace="preserve">Sets the value of one or more cells in the row referenced by @iter.
+The variable argument list should contain integer column numbers,
+each column number followed by the value to be set.
+The list is terminated by a -1. For example, to set column 0 with type
+%G_TYPE_STRING to "Foo", you would write &lt;literal&gt;gtk_list_store_set (store, iter,
+0, "Foo", -1)&lt;/literal&gt;.
+The value will be referenced by the store if it is a %G_TYPE_OBJECT, and it
+will be copied if it is a %G_TYPE_STRING or %G_TYPE_BOXED.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">row iterator</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_column_types"
+              c:identifier="gtk_list_store_set_column_types">
+        <doc xml:whitespace="preserve">This function is meant primarily for #GObjects that inherit from #GtkListStore,
+and should only be used when constructing a new #GtkListStore.  It will not
+function after a row has been added, or a method on the #GtkTreeModel
+interface is called.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Number of columns for the list store</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="types" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An array length n of #GTypes</doc>
+            <array length="0" c:type="GType*">
+              <type name="GType"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_valist"
+              c:identifier="gtk_list_store_set_valist"
+              introspectable="0">
+        <doc xml:whitespace="preserve">See gtk_list_store_set(); this version takes a va_list for use by language
+bindings.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter for the row being modified</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="var_args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">va_list of column/value pairs</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value" c:identifier="gtk_list_store_set_value">
+        <doc xml:whitespace="preserve">Sets the data in the cell specified by @iter and @column.
+The type of @value must be convertible to the type of the
+column.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter for the row being modified</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">column number to modify</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new value for the cell</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_valuesv"
+              c:identifier="gtk_list_store_set_valuesv"
+              version="2.12">
+        <doc xml:whitespace="preserve">A variant of gtk_list_store_set_valist() which
+takes the columns and values as two arrays, instead of
+varargs. This function is mainly intended for 
+language-bindings and in case the number of columns to
+change is not known until run-time.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter for the row being modified</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of column numbers</doc>
+            <array length="3" c:type="gint*">
+              <type name="gint"/>
+            </array>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of GValues</doc>
+            <array length="3" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+          <parameter name="n_values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of the @columns and @values arrays</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="swap" c:identifier="gtk_list_store_swap" version="2.2">
+        <doc xml:whitespace="preserve">Swaps @a and @b in @store. Note that this function only works with
+unsorted stores.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="a" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="b" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Another #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ListStorePrivate" c:type="GtkListStorePrivate*"/>
+      </field>
+    </class>
+    <record name="ListStoreClass"
+            c:type="GtkListStoreClass"
+            glib:is-gtype-struct-for="ListStore">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ListStorePrivate" c:type="GtkListStorePrivate" disguised="1">
+    </record>
+    <constant name="MAJOR_VERSION" value="2">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MAX_COMPOSE_LEN" value="7">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MICRO_VERSION" value="8">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MINOR_VERSION" value="90">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Menu"
+           c:symbol-prefix="menu"
+           c:type="GtkMenu"
+           parent="MenuShell"
+           glib:type-name="GtkMenu"
+           glib:get-type="gtk_menu_get_type"
+           glib:type-struct="MenuClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_menu_new">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <function name="get_for_attach_widget"
+                c:identifier="gtk_menu_get_for_attach_widget"
+                version="2.6">
+        <doc xml:whitespace="preserve">Returns a list of the menus which are attached to this widget.
+This list is owned by GTK+ and must not be modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the list of menus attached to his widget.</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Widget"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkWidget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="attach" c:identifier="gtk_menu_attach" version="2.4">
+        <doc xml:whitespace="preserve">Adds a new #GtkMenuItem to a (table) menu. The number of 'cells' that
+an item will occupy is specified by @left_attach, @right_attach,
+rightmost, uppermost and lower column and row numbers of the table.
+(Columns and rows are indexed from zero).
+Note that this function is not related to gtk_menu_detach().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkMenuItem.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="left_attach" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The column number to attach the left side of the item to.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="right_attach" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The column number to attach the right side of the item to.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="top_attach" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The row number to attach the top of the item to.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="bottom_attach" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The row number to attach the bottom of the item to.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="attach_to_widget"
+              c:identifier="gtk_menu_attach_to_widget"
+              introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attach_widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detacher" transfer-ownership="none">
+            <type name="MenuDetachFunc" c:type="GtkMenuDetachFunc"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="detach" c:identifier="gtk_menu_detach">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_accel_group"
+              c:identifier="gtk_menu_get_accel_group"
+              introspectable="0">
+        <return-value>
+          <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+        </return-value>
+      </method>
+      <method name="get_accel_path" c:identifier="gtk_menu_get_accel_path">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_active"
+              c:identifier="gtk_menu_get_active"
+              introspectable="0">
+        <return-value>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_attach_widget"
+              c:identifier="gtk_menu_get_attach_widget"
+              introspectable="0">
+        <return-value>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_monitor"
+              c:identifier="gtk_menu_get_monitor"
+              version="2.14">
+        <doc xml:whitespace="preserve">Retrieves the number of the monitor on which to show the menu.
+be popped up or -1, if no monitor has been set</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of the monitor on which the menu should</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_reserve_toggle_size"
+              c:identifier="gtk_menu_get_reserve_toggle_size"
+              version="2.18">
+        <doc xml:whitespace="preserve">Returns whether the menu reserves space for toggles and
+icons, regardless of their actual presence.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Whether the menu reserves toggle space</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_tearoff_state"
+              c:identifier="gtk_menu_get_tearoff_state">
+        <doc xml:whitespace="preserve">Returns whether the menu is torn off. See
+gtk_menu_set_tearoff_state ().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the menu is currently torn off.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_title" c:identifier="gtk_menu_get_title">
+        <doc xml:whitespace="preserve">Returns the title of the menu. See gtk_menu_set_title().
+title set on it. This string is owned by the widget and should
+not be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the title of the menu, or %NULL if the menu has no</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="popdown" c:identifier="gtk_menu_popdown">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="popup" c:identifier="gtk_menu_popup" introspectable="0">
+        <doc xml:whitespace="preserve">Displays a menu and makes it available for selection.  Applications can use
+this function to display context-sensitive menus, and will typically supply
+%NULL for the @parent_menu_shell, @parent_menu_item, @func and @data 
+parameters. The default menu positioning function will position the menu
+at the current mouse cursor position.
+The @button parameter should be the mouse button pressed to initiate
+the menu popup. If the menu popup was initiated by something other than
+a mouse button press, such as a mouse button release or a keypress,
+The @activate_time parameter is used to conflict-resolve initiation of
+concurrent requests for mouse/keyboard grab requests. To function
+properly, this needs to be the time stamp of the user event (such as
+a mouse click or key press) that caused the initiation of the popup.
+Only if no such event is available, gtk_get_current_event_time() can
+be used instead.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent_menu_shell"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the menu shell containing the triggering menu item, or %NULL</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="parent_menu_item"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the menu item whose activation triggered the popup, or %NULL</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     closure="3">
+            <doc xml:whitespace="preserve">a user supplied function used to position the menu, or %NULL</doc>
+            <type name="MenuPositionFunc" c:type="GtkMenuPositionFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">user supplied data to be passed to @func.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="button" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mouse button which was pressed to initiate the event.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="activate_time" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the time at which the activation event occurred.</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="popup_for_device"
+              c:identifier="gtk_menu_popup_for_device"
+              version="3.0">
+        <doc xml:whitespace="preserve">Displays a menu and makes it available for selection.
+Applications can use this function to display context-sensitive menus,
+and will typically supply %NULL for the @parent_menu_shell,
+menu positioning function will position the menu at the current position
+of @device (or its corresponding pointer).
+The @button parameter should be the mouse button pressed to initiate
+the menu popup. If the menu popup was initiated by something other than
+a mouse button press, such as a mouse button release or a keypress,
+The @activate_time parameter is used to conflict-resolve initiation of
+concurrent requests for mouse/keyboard grab requests. To function
+properly, this needs to be the time stamp of the user event (such as
+a mouse click or key press) that caused the initiation of the popup.
+Only if no such event is available, gtk_get_current_event_time() can
+be used instead.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdkDevice</doc>
+            <type name="Gdk.Device" c:type="GdkDevice*"/>
+          </parameter>
+          <parameter name="parent_menu_shell"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the menu shell containing the triggering menu item, or %NULL</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="parent_menu_item"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the menu item whose activation triggered the popup, or %NULL</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="notified"
+                     closure="4"
+                     destroy="5">
+            <doc xml:whitespace="preserve">a user supplied function used to position the menu, or %NULL</doc>
+            <type name="MenuPositionFunc" c:type="GtkMenuPositionFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">user supplied data to be passed to @func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="async">
+            <doc xml:whitespace="preserve">destroy notify for @data</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+          <parameter name="button" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mouse button which was pressed to initiate the event</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="activate_time" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the time at which the activation event occurred</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reorder_child" c:identifier="gtk_menu_reorder_child">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reposition" c:identifier="gtk_menu_reposition">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_accel_group" c:identifier="gtk_menu_set_accel_group">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_group"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_accel_path" c:identifier="gtk_menu_set_accel_path">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_active" c:identifier="gtk_menu_set_active">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_monitor"
+              c:identifier="gtk_menu_set_monitor"
+              version="2.4">
+        <doc xml:whitespace="preserve">Informs GTK+ on which monitor a menu should be popped up. 
+See gdk_screen_get_monitor_geometry().
+This function should be called from a #GtkMenuPositionFunc if the
+menu should not appear on the same monitor as the pointer. This 
+information can't be reliably inferred from the coordinates returned
+by a #GtkMenuPositionFunc, since, for very long menus, these coordinates 
+may extend beyond the monitor boundaries or even the screen boundaries.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="monitor_num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of the monitor on which the menu should be popped up</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_reserve_toggle_size"
+              c:identifier="gtk_menu_set_reserve_toggle_size"
+              version="2.18">
+        <doc xml:whitespace="preserve">Sets whether the menu should reserve space for drawing toggles 
+or icons, regardless of their actual presence.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="reserve_toggle_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to reserve size for toggles</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_screen"
+              c:identifier="gtk_menu_set_screen"
+              version="2.2">
+        <doc xml:whitespace="preserve">Sets the #GdkScreen on which the menu will be displayed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdkScreen, or %NULL if the screen should be determined by the widget the menu is attached to.</doc>
+            <type name="Gdk.Screen" c:type="GdkScreen*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tearoff_state"
+              c:identifier="gtk_menu_set_tearoff_state">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="torn_off" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_title" c:identifier="gtk_menu_set_title">
+        <doc xml:whitespace="preserve">Sets the title string for the menu.  The title is displayed when the menu
+is shown as a tearoff menu.  If @title is %NULL, the menu will see if it is
+attached to a parent menu item, and if so it will try to use the same text as
+that menu item's label.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing the title for the menu.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="accel-group"
+                version="2.14"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The accel group holding accelerators for the menu.</doc>
+        <type name="AccelGroup"/>
+      </property>
+      <property name="accel-path"
+                version="2.14"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">An accel path used to conveniently construct accel paths of child items.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="active"
+                version="2.14"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The index of the currently selected menu item, or -1 if no
+menu item is selected.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="attach-widget"
+                version="2.14"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The widget the menu is attached to. Setting this property attaches
+the menu without a #GtkMenuDetachFunc. If you need to use a detacher,
+use gtk_menu_attach_to_widget() directly.</doc>
+        <type name="Widget"/>
+      </property>
+      <property name="monitor"
+                version="2.14"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The monitor the menu will be popped up on.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="reserve-toggle-size"
+                version="2.18"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A boolean that indicates whether the menu reserves space for
+toggles and icons, regardless of their actual presence.
+This property should only be changed from its default value
+for special-purposes such as tabular menus. Regular menus that
+are connected to a menu bar or context menus should reserve
+toggle space for consistency.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="tearoff-state"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A boolean that indicates whether the menu is torn-off.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="tearoff-title" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <field name="menu_shell">
+        <type name="MenuShell" c:type="GtkMenuShell"/>
+      </field>
+      <field name="parent_menu_item">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="old_active_menu_item">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="accel_group">
+        <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+      </field>
+      <field name="accel_path">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="position_func">
+        <type name="MenuPositionFunc" c:type="GtkMenuPositionFunc"/>
+      </field>
+      <field name="position_func_data">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="toggle_size">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="toplevel">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="tearoff_window">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="tearoff_hbox">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="tearoff_scrollbar">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="tearoff_adjustment">
+        <type name="Adjustment" c:type="GtkAdjustment*"/>
+      </field>
+      <field name="view_window">
+        <type name="Gdk.Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="bin_window">
+        <type name="Gdk.Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="scroll_offset">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="saved_scroll_offset">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="scroll_step">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="timeout_id">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="navigation_region">
+        <type name="cairo.Region" c:type="cairo_region_t*"/>
+      </field>
+      <field name="navigation_timeout">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="needs_destruction_ref_count" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="torn_off" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="tearoff_active" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="scroll_fast" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="upper_arrow_visible" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="lower_arrow_visible" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="upper_arrow_prelight" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="lower_arrow_prelight" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <glib:signal name="move-scroll">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="ScrollType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <class name="MenuBar"
+           c:symbol-prefix="menu_bar"
+           c:type="GtkMenuBar"
+           parent="MenuShell"
+           glib:type-name="GtkMenuBar"
+           glib:get-type="gtk_menu_bar_get_type"
+           glib:type-struct="MenuBarClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_menu_bar_new">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="get_child_pack_direction"
+              c:identifier="gtk_menu_bar_get_child_pack_direction"
+              version="2.8">
+        <doc xml:whitespace="preserve">Retrieves the current child pack direction of the menubar.
+See gtk_menu_bar_set_child_pack_direction().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the child pack direction</doc>
+          <type name="PackDirection" c:type="GtkPackDirection"/>
+        </return-value>
+      </method>
+      <method name="get_pack_direction"
+              c:identifier="gtk_menu_bar_get_pack_direction"
+              version="2.8">
+        <doc xml:whitespace="preserve">Retrieves the current pack direction of the menubar. 
+See gtk_menu_bar_set_pack_direction().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the pack direction</doc>
+          <type name="PackDirection" c:type="GtkPackDirection"/>
+        </return-value>
+      </method>
+      <method name="set_child_pack_direction"
+              c:identifier="gtk_menu_bar_set_child_pack_direction"
+              version="2.8">
+        <doc xml:whitespace="preserve">Sets how widgets should be packed inside the children of a menubar.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_pack_dir" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a new #GtkPackDirection</doc>
+            <type name="PackDirection" c:type="GtkPackDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pack_direction"
+              c:identifier="gtk_menu_bar_set_pack_direction"
+              version="2.8">
+        <doc xml:whitespace="preserve">Sets how items should be packed inside a menubar.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pack_dir" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a new #GtkPackDirection</doc>
+            <type name="PackDirection" c:type="GtkPackDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="child-pack-direction"
+                version="2.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The child pack direction of the menubar. It determines how
+the widgets contained in child menuitems are arranged.</doc>
+        <type name="PackDirection"/>
+      </property>
+      <property name="pack-direction"
+                version="2.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The pack direction of the menubar. It determines how
+menuitems are arranged in the menubar.</doc>
+        <type name="PackDirection"/>
+      </property>
+      <field name="menu_shell">
+        <type name="MenuShell" c:type="GtkMenuShell"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="MenuBarPrivate" c:type="GtkMenuBarPrivate*"/>
+      </field>
+    </class>
+    <record name="MenuBarClass"
+            c:type="GtkMenuBarClass"
+            glib:is-gtype-struct-for="MenuBar">
+      <field name="parent_class">
+        <type name="MenuShellClass" c:type="GtkMenuShellClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="MenuBarPrivate" c:type="GtkMenuBarPrivate" disguised="1">
+    </record>
+    <record name="MenuClass"
+            c:type="GtkMenuClass"
+            glib:is-gtype-struct-for="Menu">
+      <field name="parent_class">
+        <type name="MenuShellClass" c:type="GtkMenuShellClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="MenuDetachFunc" c:type="GtkMenuDetachFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="attach_widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="menu" transfer-ownership="none">
+          <type name="Menu" c:type="GtkMenu*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="MenuDirectionType"
+                 glib:type-name="GtkMenuDirectionType"
+                 glib:get-type="gtk_menu_direction_type_get_type"
+                 c:type="GtkMenuDirectionType">
+      <member name="parent"
+              value="0"
+              c:identifier="GTK_MENU_DIR_PARENT"
+              glib:nick="parent"/>
+      <member name="child"
+              value="1"
+              c:identifier="GTK_MENU_DIR_CHILD"
+              glib:nick="child"/>
+      <member name="next"
+              value="2"
+              c:identifier="GTK_MENU_DIR_NEXT"
+              glib:nick="next"/>
+      <member name="prev"
+              value="3"
+              c:identifier="GTK_MENU_DIR_PREV"
+              glib:nick="prev"/>
+    </enumeration>
+    <class name="MenuItem"
+           c:symbol-prefix="menu_item"
+           c:type="GtkMenuItem"
+           parent="Bin"
+           glib:type-name="GtkMenuItem"
+           glib:get-type="gtk_menu_item_get_type"
+           glib:type-struct="MenuItemClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Activatable"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_menu_item_new">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_label"
+                   c:identifier="gtk_menu_item_new_with_label">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_mnemonic"
+                   c:identifier="gtk_menu_item_new_with_mnemonic">
+        <doc xml:whitespace="preserve">Creates a new #GtkMenuItem containing a label. The label
+will be created using gtk_label_new_with_mnemonic(), so underscores
+in @label indicate the mnemonic for the menu item.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkMenuItem</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The text of the button, with an underscore in front of the mnemonic character</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="get_label" invoker="get_label" version="2.16">
+        <doc xml:whitespace="preserve">Sets @text on the @menu_item label
+string used by the label, and must not be modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The text in the @menu_item label. This is the internal</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_label" invoker="set_label" version="2.16">
+        <doc xml:whitespace="preserve">Sets @text on the @menu_item label</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text you want to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="activate" c:identifier="gtk_menu_item_activate">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="deselect" c:identifier="gtk_menu_item_deselect">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_accel_path"
+              c:identifier="gtk_menu_item_get_accel_path">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_label"
+              c:identifier="gtk_menu_item_get_label"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets @text on the @menu_item label
+string used by the label, and must not be modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The text in the @menu_item label. This is the internal</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_right_justified"
+              c:identifier="gtk_menu_item_get_right_justified">
+        <doc xml:whitespace="preserve">Gets whether the menu item appears justified at the right
+side of the menu bar.
+far right if added to a menu bar.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the menu item will appear at the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_submenu" c:identifier="gtk_menu_item_get_submenu">
+        <doc xml:whitespace="preserve">Gets the submenu underneath this menu item, if any.
+See gtk_menu_item_set_submenu().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">submenu for this menu item, or %NULL if none.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_use_underline"
+              c:identifier="gtk_menu_item_get_use_underline"
+              version="2.16">
+        <doc xml:whitespace="preserve">Checks if an underline in the text indicates the next character should be
+used for the mnemonic accelerator key.
+the mnemonic accelerator key.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if an embedded underline in the label indicates</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="select" c:identifier="gtk_menu_item_select">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_accel_path"
+              c:identifier="gtk_menu_item_set_accel_path">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_label"
+              c:identifier="gtk_menu_item_set_label"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets @text on the @menu_item label</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text you want to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_right_justified"
+              c:identifier="gtk_menu_item_set_right_justified">
+        <doc xml:whitespace="preserve">Sets whether the menu item appears justified at the right
+side of a menu bar. This was traditionally done for "Help" menu
+items, but is now considered a bad idea. (If the widget
+layout is reversed for a right-to-left language like Hebrew
+or Arabic, right-justified-menu-items appear at the left.)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="right_justified" transfer-ownership="none">
+            <doc xml:whitespace="preserve">if %TRUE the menu item will appear at the far right if added to a menu bar.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_submenu" c:identifier="gtk_menu_item_set_submenu">
+        <doc xml:whitespace="preserve">Sets or replaces the menu item's submenu, or removes it when a %NULL
+submenu is passed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="submenu" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the submenu, or %NULL</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_underline"
+              c:identifier="gtk_menu_item_set_use_underline"
+              version="2.16">
+        <doc xml:whitespace="preserve">If true, an underline in the text indicates the next character should be
+used for the mnemonic accelerator key.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if underlines in the text indicate mnemonics</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="toggle_size_allocate"
+              c:identifier="gtk_menu_item_toggle_size_allocate">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="allocation" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="toggle_size_request"
+              c:identifier="gtk_menu_item_toggle_size_request">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="requisition" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="accel-path"
+                version="2.14"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Sets the accelerator path of the menu item, through which runtime
+changes of the menu item's accelerator caused by the user can be
+identified and saved to persistant storage.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="label"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The text for the child label.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="right-justified"
+                version="2.14"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Sets whether the menu item appears justified at the right side of a menu bar.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="submenu"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The submenu attached to the menu item, or NULL if it has none.</doc>
+        <type name="Menu"/>
+      </property>
+      <property name="use-underline"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if underlines in the text indicate mnemonics</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="bin">
+        <type name="Bin" c:type="GtkBin"/>
+      </field>
+      <field name="submenu">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="event_window">
+        <type name="Gdk.Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="toggle_size">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="accelerator_width">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="accel_path">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="show_submenu_indicator" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="submenu_placement" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="submenu_direction" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="right_justify" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="timer_from_keypress" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="from_menubar" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="timer">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <glib:signal name="activate">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="activate-item">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="deselect">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="select">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="toggle-size-allocate">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="toggle-size-request">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="MenuItemClass"
+            c:type="GtkMenuItemClass"
+            glib:is-gtype-struct-for="MenuItem">
+      <field name="parent_class">
+        <type name="BinClass" c:type="GtkBinClass"/>
+      </field>
+      <field name="hide_on_activate" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="activate">
+        <callback name="activate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="menu_item" transfer-ownership="none">
+              <type name="MenuItem" c:type="GtkMenuItem*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate_item">
+        <callback name="activate_item">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="menu_item" transfer-ownership="none">
+              <type name="MenuItem" c:type="GtkMenuItem*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="toggle_size_request">
+        <callback name="toggle_size_request">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="menu_item" transfer-ownership="none">
+              <type name="MenuItem" c:type="GtkMenuItem*"/>
+            </parameter>
+            <parameter name="requisition" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="toggle_size_allocate">
+        <callback name="toggle_size_allocate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="menu_item" transfer-ownership="none">
+              <type name="MenuItem" c:type="GtkMenuItem*"/>
+            </parameter>
+            <parameter name="allocation" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_label">
+        <callback name="set_label">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="menu_item" transfer-ownership="none">
+              <type name="MenuItem" c:type="GtkMenuItem*"/>
+            </parameter>
+            <parameter name="label" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the text you want to set</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_label">
+        <callback name="get_label">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">The text in the @menu_item label. This is the internal</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="menu_item" transfer-ownership="none">
+              <type name="MenuItem" c:type="GtkMenuItem*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="select">
+        <callback name="select">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="menu_item" transfer-ownership="none">
+              <type name="MenuItem" c:type="GtkMenuItem*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="deselect">
+        <callback name="deselect">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="menu_item" transfer-ownership="none">
+              <type name="MenuItem" c:type="GtkMenuItem*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="MenuPositionFunc" c:type="GtkMenuPositionFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="menu" transfer-ownership="none">
+          <type name="Menu" c:type="GtkMenu*"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="push_in" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="MenuShell"
+           c:symbol-prefix="menu_shell"
+           c:type="GtkMenuShell"
+           parent="Container"
+           abstract="1"
+           glib:type-name="GtkMenuShell"
+           glib:get-type="gtk_menu_shell_get_type"
+           glib:type-struct="MenuShellClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <virtual-method name="get_popup_delay">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="insert" invoker="insert">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="select_item" invoker="select_item">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="menu_item" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="activate_item" c:identifier="gtk_menu_shell_activate_item">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="menu_item" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="force_deactivate" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append" c:identifier="gtk_menu_shell_append">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="cancel" c:identifier="gtk_menu_shell_cancel" version="2.4">
+        <doc xml:whitespace="preserve">Cancels the selection within the menu shell.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="deactivate" c:identifier="gtk_menu_shell_deactivate">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="deselect" c:identifier="gtk_menu_shell_deselect">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_take_focus"
+              c:identifier="gtk_menu_shell_get_take_focus"
+              version="2.8">
+        <doc xml:whitespace="preserve">Returns %TRUE if the menu shell will take the keyboard focus on popup.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the menu shell will take the keyboard focus on popup.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="insert" c:identifier="gtk_menu_shell_insert">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend" c:identifier="gtk_menu_shell_prepend">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_first"
+              c:identifier="gtk_menu_shell_select_first"
+              version="2.2">
+        <doc xml:whitespace="preserve">Select the first visible or selectable child of the menu shell;
+don't select tearoff items unless the only item is a tearoff
+item.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="search_sensitive" transfer-ownership="none">
+            <doc xml:whitespace="preserve">if %TRUE, search for the first selectable menu item, otherwise select nothing if the first item isn't sensitive. This should be %FALSE if the menu is being popped up initially.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_item" c:identifier="gtk_menu_shell_select_item">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="menu_item" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_take_focus"
+              c:identifier="gtk_menu_shell_set_take_focus"
+              version="2.8">
+        <doc xml:whitespace="preserve">If @take_focus is %TRUE (the default) the menu shell will take the keyboard 
+focus so that it will receive all keyboard events which is needed to enable
+keyboard navigation in menus.
+Setting @take_focus to %FALSE is useful only for special applications
+like virtual keyboard implementations which should not take keyboard
+focus.
+The @take_focus state of a menu or menu bar is automatically propagated
+to submenus whenever a submenu is popped up, so you don't have to worry
+about recursively setting it for your entire menu hierarchy. Only when
+programmatically picking a submenu and popping it up manually, the
+Note that setting it to %FALSE has side-effects:
+If the focus is in some other app, it keeps the focus and keynav in
+the menu doesn't work. Consequently, keynav on the menu will only
+work if the focus is on some toplevel owned by the onscreen keyboard.
+To avoid confusing the user, menus with @take_focus set to %FALSE
+should not display mnemonics or accelerators, since it cannot be
+guaranteed that they will work.
+See also gdk_keyboard_grab()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="take_focus" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the menu shell should take the keyboard focus on popup.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="take-focus"
+                version="2.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A boolean that determines whether the menu and its submenus grab the
+keyboard focus. See gtk_menu_shell_set_take_focus() and
+gtk_menu_shell_get_take_focus().</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="container">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="children">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="active_menu_item">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="parent_menu_shell">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="button">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="activate_time">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="active" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="have_grab" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="have_xgrab" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="ignore_leave" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="menu_flag" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="ignore_enter" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="keyboard_mode" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <glib:signal name="activate-current">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="cancel">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="cycle-focus">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="DirectionType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="deactivate">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="move-current">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="MenuDirectionType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-selected" version="2.12">
+        <doc xml:whitespace="preserve">The ::move-selected signal is emitted to move the selection to
+another item.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop the signal emission, %FALSE to continue</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">+1 to move to the next item, -1 to move to the previous</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="selection-done">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="MenuShellClass"
+            c:type="GtkMenuShellClass"
+            glib:is-gtype-struct-for="MenuShell">
+      <field name="parent_class">
+        <type name="ContainerClass" c:type="GtkContainerClass"/>
+      </field>
+      <field name="submenu_placement" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="deactivate">
+        <callback name="deactivate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="menu_shell" transfer-ownership="none">
+              <type name="MenuShell" c:type="GtkMenuShell*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="selection_done">
+        <callback name="selection_done">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="menu_shell" transfer-ownership="none">
+              <type name="MenuShell" c:type="GtkMenuShell*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="move_current">
+        <callback name="move_current">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="menu_shell" transfer-ownership="none">
+              <type name="MenuShell" c:type="GtkMenuShell*"/>
+            </parameter>
+            <parameter name="direction" transfer-ownership="none">
+              <type name="MenuDirectionType" c:type="GtkMenuDirectionType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate_current">
+        <callback name="activate_current">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="menu_shell" transfer-ownership="none">
+              <type name="MenuShell" c:type="GtkMenuShell*"/>
+            </parameter>
+            <parameter name="force_hide" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cancel">
+        <callback name="cancel">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="menu_shell" transfer-ownership="none">
+              <type name="MenuShell" c:type="GtkMenuShell*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="select_item">
+        <callback name="select_item">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="menu_shell" transfer-ownership="none">
+              <type name="MenuShell" c:type="GtkMenuShell*"/>
+            </parameter>
+            <parameter name="menu_item" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="insert">
+        <callback name="insert">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="menu_shell" transfer-ownership="none">
+              <type name="MenuShell" c:type="GtkMenuShell*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="position" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_popup_delay">
+        <callback name="get_popup_delay">
+          <return-value transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="menu_shell" transfer-ownership="none">
+              <type name="MenuShell" c:type="GtkMenuShell*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="move_selected">
+        <callback name="move_selected">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="menu_shell" transfer-ownership="none">
+              <type name="MenuShell" c:type="GtkMenuShell*"/>
+            </parameter>
+            <parameter name="distance" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="MenuToolButton"
+           c:symbol-prefix="menu_tool_button"
+           c:type="GtkMenuToolButton"
+           parent="ToolButton"
+           glib:type-name="GtkMenuToolButton"
+           glib:get-type="gtk_menu_tool_button_get_type"
+           glib:type-struct="MenuToolButtonClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Activatable"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new"
+                   c:identifier="gtk_menu_tool_button_new"
+                   version="2.6">
+        <doc xml:whitespace="preserve">Creates a new #GtkMenuToolButton using @icon_widget as icon and</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new #GtkMenuToolButton</doc>
+          <type name="ToolItem" c:type="GtkToolItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_widget"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a widget that will be used as icon widget, or %NULL</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="label" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a string that will be used as label, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_stock"
+                   c:identifier="gtk_menu_tool_button_new_from_stock"
+                   version="2.6">
+        <doc xml:whitespace="preserve">Creates a new #GtkMenuToolButton.
+The new #GtkMenuToolButton will contain an icon and label from
+the stock item indicated by @stock_id.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new #GtkMenuToolButton</doc>
+          <type name="ToolItem" c:type="GtkToolItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a stock item</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_menu"
+              c:identifier="gtk_menu_tool_button_get_menu"
+              version="2.6">
+        <doc xml:whitespace="preserve">Gets the #GtkMenu associated with #GtkMenuToolButton.
+with #GtkMenuToolButton</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GtkMenu associated</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="set_arrow_tooltip_markup"
+              c:identifier="gtk_menu_tool_button_set_arrow_tooltip_markup"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets the tooltip markup text to be used as tooltip for the arrow button
+which pops up the menu.  See gtk_tool_item_set_tooltip_text() for setting a
+tooltip on the whole #GtkMenuToolButton.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="markup" transfer-ownership="none">
+            <doc xml:whitespace="preserve">markup text to be used as tooltip text for button's arrow button</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_arrow_tooltip_text"
+              c:identifier="gtk_menu_tool_button_set_arrow_tooltip_text"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets the tooltip text to be used as tooltip for the arrow button which
+pops up the menu.  See gtk_tool_item_set_tooltip_text() for setting a tooltip
+on the whole #GtkMenuToolButton.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">text to be used as tooltip text for button's arrow button</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_menu"
+              c:identifier="gtk_menu_tool_button_set_menu"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the #GtkMenu that is popped up when the user clicks on the arrow.
+If @menu is NULL, the arrow button becomes insensitive.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="menu" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkMenu associated with #GtkMenuToolButton</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="menu" writable="1" transfer-ownership="none">
+        <type name="Menu"/>
+      </property>
+      <field name="parent">
+        <type name="ToolButton" c:type="GtkToolButton"/>
+      </field>
+      <field name="priv">
+        <type name="MenuToolButtonPrivate" c:type="GtkMenuToolButtonPrivate*"/>
+      </field>
+      <glib:signal name="show-menu">
+        <doc xml:whitespace="preserve">The ::show-menu signal is emitted before the menu is shown.
+It can be used to populate the menu on demand, using 
+gtk_menu_tool_button_get_menu(). 
+Note that even if you populate the menu dynamically in this way, 
+you must set an empty menu on the #GtkMenuToolButton beforehand,
+since the arrow is made insensitive if the menu is not set.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="MenuToolButtonClass"
+            c:type="GtkMenuToolButtonClass"
+            glib:is-gtype-struct-for="MenuToolButton">
+      <field name="parent_class">
+        <type name="ToolButtonClass" c:type="GtkToolButtonClass"/>
+      </field>
+      <field name="show_menu">
+        <callback name="show_menu">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="button" transfer-ownership="none">
+              <type name="MenuToolButton" c:type="GtkMenuToolButton*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="MenuToolButtonPrivate"
+            c:type="GtkMenuToolButtonPrivate"
+            disguised="1">
+    </record>
+    <class name="MessageDialog"
+           c:symbol-prefix="message_dialog"
+           c:type="GtkMessageDialog"
+           parent="Dialog"
+           glib:type-name="GtkMessageDialog"
+           glib:get-type="gtk_message_dialog_get_type"
+           glib:type-struct="MessageDialogClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new"
+                   c:identifier="gtk_message_dialog_new"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new message dialog, which is a simple dialog with an icon
+indicating the dialog type (error, warning, etc.) and some text the
+user may want to see. When the user clicks a button a "response"
+signal is emitted with response IDs from #GtkResponseType. See
+#GtkDialog for more details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkMessageDialog</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">transient parent, or %NULL for none</doc>
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags</doc>
+            <type name="DialogFlags" c:type="GtkDialogFlags"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">type of message</doc>
+            <type name="MessageType" c:type="GtkMessageType"/>
+          </parameter>
+          <parameter name="buttons" transfer-ownership="none">
+            <doc xml:whitespace="preserve">set of buttons to use</doc>
+            <type name="ButtonsType" c:type="GtkButtonsType"/>
+          </parameter>
+          <parameter name="message_format"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">printf()-style format string, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_markup"
+                   c:identifier="gtk_message_dialog_new_with_markup"
+                   version="2.4"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new message dialog, which is a simple dialog with an icon
+indicating the dialog type (error, warning, etc.) and some text which
+is marked up with the &lt;link linkend="PangoMarkupFormat"&gt;Pango text markup language&lt;/link&gt;.
+When the user clicks a button a "response" signal is emitted with
+response IDs from #GtkResponseType. See #GtkDialog for more details.
+Special XML characters in the printf() arguments passed to this
+function will automatically be escaped as necessary.
+(See g_markup_printf_escaped() for how this is implemented.)
+Usually this is what you want, but if you have an existing
+Pango markup string that you want to use literally as the
+label, then you need to use gtk_message_dialog_set_markup()
+instead, since you can't pass the markup string either
+as the format (it might contain '%' characters) or as a string
+argument.
+|[
+GtkWidget *dialog;
+dialog = gtk_message_dialog_new (main_application_window,
+GTK_DIALOG_DESTROY_WITH_PARENT,
+GTK_MESSAGE_ERROR,
+GTK_BUTTONS_CLOSE,
+NULL);
+gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (dialog),
+markup);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkMessageDialog</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">transient parent, or %NULL for none</doc>
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags</doc>
+            <type name="DialogFlags" c:type="GtkDialogFlags"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">type of message</doc>
+            <type name="MessageType" c:type="GtkMessageType"/>
+          </parameter>
+          <parameter name="buttons" transfer-ownership="none">
+            <doc xml:whitespace="preserve">set of buttons to use</doc>
+            <type name="ButtonsType" c:type="GtkButtonsType"/>
+          </parameter>
+          <parameter name="message_format"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">printf()-style format string, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="format_secondary_markup"
+              c:identifier="gtk_message_dialog_format_secondary_markup"
+              version="2.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the secondary text of the message dialog to be @message_format (with 
+printf()-style), which is marked up with the 
+&lt;link linkend="PangoMarkupFormat"&gt;Pango text markup language&lt;/link&gt;.
+Note that setting a secondary text makes the primary text become
+bold, unless you have provided explicit markup.
+Due to an oversight, this function does not escape special XML characters
+like gtk_message_dialog_new_with_markup() does. Thus, if the arguments 
+may contain special XML characters, you should use g_markup_printf_escaped()
+to escape it.
+&lt;informalexample&gt;&lt;programlisting&gt;
+gchar *msg;
+msg = g_markup_printf_escaped (message_format, ...);
+gtk_message_dialog_format_secondary_markup (message_dialog, "&amp;percnt;s", msg);
+g_free (msg);
+&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="message_format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">printf()-style markup string (see</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="format_secondary_text"
+              c:identifier="gtk_message_dialog_format_secondary_text"
+              version="2.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the secondary text of the message dialog to be @message_format 
+(with printf()-style).
+Note that setting a secondary text makes the primary text become
+bold, unless you have provided explicit markup.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="message_format"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">printf()-style format string, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_image"
+              c:identifier="gtk_message_dialog_get_image"
+              version="2.14">
+        <doc xml:whitespace="preserve">Gets the dialog's image.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the dialog's image</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_message_area"
+              c:identifier="gtk_message_dialog_get_message_area"
+              version="2.22">
+        <doc xml:whitespace="preserve">Returns the message area of the dialog. This is the box where the
+dialog's primary and secondary labels are packed. You can add your
+own extra content to that box and it will appear below those labels,
+on the right side of the dialog's image (or on the left for right-to-left
+languages).  See gtk_dialog_get_content_area() for the corresponding
+function in the parent #GtkDialog.
+"message area" in the @message_dialog.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GtkVBox corresponding to the</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="set_image"
+              c:identifier="gtk_message_dialog_set_image"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the dialog's image to @image.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="image" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the image</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_markup"
+              c:identifier="gtk_message_dialog_set_markup"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the text of the message dialog to be @str, which is marked
+up with the &lt;link linkend="PangoMarkupFormat"&gt;Pango text markup
+language&lt;/link&gt;.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">markup string (see &lt;link linkend="PangoMarkupFormat"&gt;Pango markup format&lt;/link&gt;)</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="buttons"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="ButtonsType"/>
+      </property>
+      <property name="image"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The image for this dialog.</doc>
+        <type name="Widget"/>
+      </property>
+      <property name="message-area" transfer-ownership="none">
+        <type name="Widget"/>
+      </property>
+      <property name="message-type"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The type of the message. The type is used to determine
+the image that is shown in the dialog, unless the image is 
+explicitly set by the ::image property.</doc>
+        <type name="MessageType"/>
+      </property>
+      <property name="secondary-text"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The secondary text of the message dialog.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="secondary-use-markup"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the secondary text of the dialog includes Pango markup. 
+See pango_parse_markup().</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="text"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The primary text of the message dialog. If the dialog has 
+a secondary text, this will appear as the title.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="use-markup"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the primary text of the dialog includes Pango markup. 
+See pango_parse_markup().</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Dialog" c:type="GtkDialog"/>
+      </field>
+      <field name="priv">
+        <type name="MessageDialogPrivate" c:type="GtkMessageDialogPrivate*"/>
+      </field>
+    </class>
+    <record name="MessageDialogClass"
+            c:type="GtkMessageDialogClass"
+            glib:is-gtype-struct-for="MessageDialog">
+      <field name="parent_class">
+        <type name="DialogClass" c:type="GtkDialogClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="MessageDialogPrivate"
+            c:type="GtkMessageDialogPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="MessageType"
+                 glib:type-name="GtkMessageType"
+                 glib:get-type="gtk_message_type_get_type"
+                 c:type="GtkMessageType">
+      <doc xml:whitespace="preserve">The type of message being displayed in the dialog.</doc>
+      <member name="info"
+              value="0"
+              c:identifier="GTK_MESSAGE_INFO"
+              glib:nick="info"/>
+      <member name="warning"
+              value="1"
+              c:identifier="GTK_MESSAGE_WARNING"
+              glib:nick="warning"/>
+      <member name="question"
+              value="2"
+              c:identifier="GTK_MESSAGE_QUESTION"
+              glib:nick="question"/>
+      <member name="error"
+              value="3"
+              c:identifier="GTK_MESSAGE_ERROR"
+              glib:nick="error"/>
+      <member name="other"
+              value="4"
+              c:identifier="GTK_MESSAGE_OTHER"
+              glib:nick="other"/>
+    </enumeration>
+    <enumeration name="MetricType"
+                 glib:type-name="GtkMetricType"
+                 glib:get-type="gtk_metric_type_get_type"
+                 c:type="GtkMetricType">
+      <member name="pixels"
+              value="0"
+              c:identifier="GTK_PIXELS"
+              glib:nick="pixels"/>
+      <member name="inches"
+              value="1"
+              c:identifier="GTK_INCHES"
+              glib:nick="inches"/>
+      <member name="centimeters"
+              value="2"
+              c:identifier="GTK_CENTIMETERS"
+              glib:nick="centimeters"/>
+    </enumeration>
+    <class name="Misc"
+           c:symbol-prefix="misc"
+           c:type="GtkMisc"
+           parent="Widget"
+           abstract="1"
+           glib:type-name="GtkMisc"
+           glib:get-type="gtk_misc_get_type"
+           glib:type-struct="MiscClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <method name="get_alignment" c:identifier="gtk_misc_get_alignment">
+        <doc xml:whitespace="preserve">Gets the X and Y alignment of the widget within its allocation. 
+See gtk_misc_set_alignment().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store X alignment of @misc, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="yalign" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store Y alignment of @misc, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_padding" c:identifier="gtk_misc_get_padding">
+        <doc xml:whitespace="preserve">Gets the padding in the X and Y directions of the widget. 
+See gtk_misc_set_padding().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xpad" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store padding in the X direction, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="ypad" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store padding in the Y direction, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alignment" c:identifier="gtk_misc_set_alignment">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign" transfer-ownership="none">
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="yalign" transfer-ownership="none">
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_padding" c:identifier="gtk_misc_set_padding">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xpad" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="ypad" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="xalign" writable="1" transfer-ownership="none">
+        <type name="gfloat"/>
+      </property>
+      <property name="xpad" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="yalign" writable="1" transfer-ownership="none">
+        <type name="gfloat"/>
+      </property>
+      <property name="ypad" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <field name="widget">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="MiscPrivate" c:type="GtkMiscPrivate*"/>
+      </field>
+    </class>
+    <record name="MiscClass"
+            c:type="GtkMiscClass"
+            glib:is-gtype-struct-for="Misc">
+      <field name="parent_class">
+        <type name="WidgetClass" c:type="GtkWidgetClass"/>
+      </field>
+    </record>
+    <record name="MiscPrivate" c:type="GtkMiscPrivate" disguised="1">
+    </record>
+    <callback name="ModuleDisplayInitFunc" c:type="GtkModuleDisplayInitFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <type name="Gdk.Display" c:type="GdkDisplay*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ModuleInitFunc" c:type="GtkModuleInitFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc" transfer-ownership="none">
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="argv" transfer-ownership="none">
+          <type name="utf8" c:type="gchar***"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="MountOperation"
+           c:symbol-prefix="mount_operation"
+           c:type="GtkMountOperation"
+           parent="Gio.MountOperation"
+           glib:type-name="GtkMountOperation"
+           glib:get-type="gtk_mount_operation_get_type"
+           glib:type-struct="MountOperationClass">
+      <doc xml:whitespace="preserve">This should not be accessed directly. Use the accessor functions below.</doc>
+      <constructor name="new"
+                   c:identifier="gtk_mount_operation_new"
+                   version="2.14">
+        <doc xml:whitespace="preserve">Creates a new #GtkMountOperation</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkMountOperation</doc>
+          <type name="Gio.MountOperation" c:type="GMountOperation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">transient parent of the window, or %NULL</doc>
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_parent"
+              c:identifier="gtk_mount_operation_get_parent"
+              version="2.14">
+        <doc xml:whitespace="preserve">Gets the transient parent used by the #GtkMountOperation</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the transient parent for windows shown by @op</doc>
+          <type name="Window" c:type="GtkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_screen"
+              c:identifier="gtk_mount_operation_get_screen"
+              version="2.14">
+        <doc xml:whitespace="preserve">Gets the screen on which windows of the #GtkMountOperation
+will be shown.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the screen on which windows of @op are shown</doc>
+          <type name="Gdk.Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </method>
+      <method name="is_showing"
+              c:identifier="gtk_mount_operation_is_showing"
+              version="2.14">
+        <doc xml:whitespace="preserve">Returns whether the #GtkMountOperation is currently displaying
+a window.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @op is currently displaying a window</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_parent"
+              c:identifier="gtk_mount_operation_set_parent"
+              version="2.14">
+        <doc xml:whitespace="preserve">Sets the transient parent for windows shown by the
+#GtkMountOperation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">transient parent of the window, or %NULL</doc>
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_screen"
+              c:identifier="gtk_mount_operation_set_screen"
+              version="2.14">
+        <doc xml:whitespace="preserve">Sets the screen to show windows of the #GtkMountOperation on.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkScreen</doc>
+            <type name="Gdk.Screen" c:type="GdkScreen*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="is-showing" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="parent" writable="1" transfer-ownership="none">
+        <type name="Window"/>
+      </property>
+      <property name="screen" writable="1" transfer-ownership="none">
+        <type name="Gdk.Screen"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Gio.MountOperation" c:type="GMountOperation"/>
+      </field>
+      <field name="priv">
+        <type name="MountOperationPrivate" c:type="GtkMountOperationPrivate*"/>
+      </field>
+    </class>
+    <record name="MountOperationClass"
+            c:type="GtkMountOperationClass"
+            glib:is-gtype-struct-for="MountOperation">
+      <field name="parent_class">
+        <type name="Gio.MountOperationClass" c:type="GMountOperationClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="MountOperationPrivate"
+            c:type="GtkMountOperationPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="MovementStep"
+                 glib:type-name="GtkMovementStep"
+                 glib:get-type="gtk_movement_step_get_type"
+                 c:type="GtkMovementStep">
+      <member name="logical_positions"
+              value="0"
+              c:identifier="GTK_MOVEMENT_LOGICAL_POSITIONS"
+              glib:nick="logical-positions"/>
+      <member name="visual_positions"
+              value="1"
+              c:identifier="GTK_MOVEMENT_VISUAL_POSITIONS"
+              glib:nick="visual-positions"/>
+      <member name="words"
+              value="2"
+              c:identifier="GTK_MOVEMENT_WORDS"
+              glib:nick="words"/>
+      <member name="display_lines"
+              value="3"
+              c:identifier="GTK_MOVEMENT_DISPLAY_LINES"
+              glib:nick="display-lines"/>
+      <member name="display_line_ends"
+              value="4"
+              c:identifier="GTK_MOVEMENT_DISPLAY_LINE_ENDS"
+              glib:nick="display-line-ends"/>
+      <member name="paragraphs"
+              value="5"
+              c:identifier="GTK_MOVEMENT_PARAGRAPHS"
+              glib:nick="paragraphs"/>
+      <member name="paragraph_ends"
+              value="6"
+              c:identifier="GTK_MOVEMENT_PARAGRAPH_ENDS"
+              glib:nick="paragraph-ends"/>
+      <member name="pages"
+              value="7"
+              c:identifier="GTK_MOVEMENT_PAGES"
+              glib:nick="pages"/>
+      <member name="buffer_ends"
+              value="8"
+              c:identifier="GTK_MOVEMENT_BUFFER_ENDS"
+              glib:nick="buffer-ends"/>
+      <member name="horizontal_pages"
+              value="9"
+              c:identifier="GTK_MOVEMENT_HORIZONTAL_PAGES"
+              glib:nick="horizontal-pages"/>
+    </enumeration>
+    <class name="Notebook"
+           c:symbol-prefix="notebook"
+           c:type="GtkNotebook"
+           parent="Container"
+           glib:type-name="GtkNotebook"
+           glib:get-type="gtk_notebook_get_type"
+           glib:type-struct="NotebookClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_notebook_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkNotebook widget with no pages.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #GtkNotebook</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="insert_page">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="tab_label" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="menu_label" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="append_page" c:identifier="gtk_notebook_append_page">
+        <doc xml:whitespace="preserve">Appends a page to @notebook.
+page in the notebook, or -1 if function fails</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index (starting from 0) of the appended</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkWidget to use as the contents of the page.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="tab_label" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the #GtkWidget to be used as the label for the page, or %NULL to use the default label, 'page N'.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_page_menu"
+              c:identifier="gtk_notebook_append_page_menu">
+        <doc xml:whitespace="preserve">Appends a page to @notebook, specifying the widget to use as the
+label in the popup menu.
+page in the notebook, or -1 if function fails</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index (starting from 0) of the appended</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkWidget to use as the contents of the page.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="tab_label" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the #GtkWidget to be used as the label for the page, or %NULL to use the default label, 'page N'.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="menu_label"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the widget to use as a label for the page-switch menu, if that is enabled. If %NULL, and @tab_label is a #GtkLabel or %NULL, then the menu label will be a newly created label with the same text as @tab_label; If @tab_label is not a #GtkLabel, @menu_label must be specified if the page-switch menu is to be used.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_action_widget"
+              c:identifier="gtk_notebook_get_action_widget"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets one of the action widgets. See gtk_notebook_set_action_widget().
+or %NULL when this action widget has not been set</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The action widget with the given @pack_type</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pack_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pack type of the action widget to receive</doc>
+            <type name="PackType" c:type="GtkPackType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_current_page"
+              c:identifier="gtk_notebook_get_current_page">
+        <doc xml:whitespace="preserve">Returns the page number of the current page.
+page in the notebook. If the notebook has no pages, then
+-1 will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index (starting from 0) of the current</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_group_name"
+              c:identifier="gtk_notebook_get_group_name"
+              version="2.24">
+        <doc xml:whitespace="preserve">Gets the current group name for @notebook.
+or %NULL if none is set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the group name,</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_menu_label" c:identifier="gtk_notebook_get_menu_label">
+        <doc xml:whitespace="preserve">Retrieves the menu label widget of the page containing @child.
+notebook page does not have a menu label other than the
+default (the tab label).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the menu label, or %NULL if the</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a widget contained in a page of @notebook</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_menu_label_text"
+              c:identifier="gtk_notebook_get_menu_label_text">
+        <doc xml:whitespace="preserve">Retrieves the text of the menu label for the page containing
+widget does not have a menu label other than
+the default menu label, or the menu label widget
+is not a #GtkLabel. The string is owned by
+the widget and must not be freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the text of the tab label, or %NULL if the</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the child widget of a page of the notebook.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_pages"
+              c:identifier="gtk_notebook_get_n_pages"
+              version="2.2">
+        <doc xml:whitespace="preserve">Gets the number of pages in a notebook.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of pages in the notebook.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_nth_page" c:identifier="gtk_notebook_get_nth_page">
+        <doc xml:whitespace="preserve">Returns the child widget contained in page number @page_num.
+out of bounds.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the child widget, or %NULL if @page_num is</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of a page in the notebook, or -1 to get the last page.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_scrollable" c:identifier="gtk_notebook_get_scrollable">
+        <doc xml:whitespace="preserve">Returns whether the tab label area has arrows for scrolling. See
+gtk_notebook_set_scrollable().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if arrows for scrolling are present</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_show_border"
+              c:identifier="gtk_notebook_get_show_border">
+        <doc xml:whitespace="preserve">Returns whether a bevel will be drawn around the notebook pages. See
+gtk_notebook_set_show_border().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the bevel is drawn</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_show_tabs" c:identifier="gtk_notebook_get_show_tabs">
+        <doc xml:whitespace="preserve">Returns whether the tabs of the notebook are shown. See
+gtk_notebook_set_show_tabs().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the tabs are shown</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_tab_detachable"
+              c:identifier="gtk_notebook_get_tab_detachable"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns whether the tab contents can be detached from @notebook.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the tab is detachable.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a child #GtkWidget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tab_hborder"
+              c:identifier="gtk_notebook_get_tab_hborder"
+              version="2.22">
+        <doc xml:whitespace="preserve">Returns the horizontal width of a tab border.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">horizontal width of a tab border</doc>
+          <type name="guint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <method name="get_tab_label" c:identifier="gtk_notebook_get_tab_label">
+        <doc xml:whitespace="preserve">Returns the tab label widget for the page @child. %NULL is returned
+if @child is not in @notebook or if no tab label has specifically
+been set for @child.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the tab label</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the page</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tab_label_text"
+              c:identifier="gtk_notebook_get_tab_label_text">
+        <doc xml:whitespace="preserve">Retrieves the text of the tab label for the page containing
+tab label widget is not a #GtkLabel. The
+string is owned by the widget and must not
+be freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the text of the tab label, or %NULL if the</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a widget contained in a page of @notebook</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tab_pos" c:identifier="gtk_notebook_get_tab_pos">
+        <doc xml:whitespace="preserve">Gets the edge at which the tabs for switching pages in the
+notebook are drawn.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the edge at which the tabs are drawn</doc>
+          <type name="PositionType" c:type="GtkPositionType"/>
+        </return-value>
+      </method>
+      <method name="get_tab_reorderable"
+              c:identifier="gtk_notebook_get_tab_reorderable"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets whether the tab can be reordered via drag and drop or not.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the tab is reorderable.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a child #GtkWidget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tab_vborder"
+              c:identifier="gtk_notebook_get_tab_vborder"
+              version="2.22">
+        <doc xml:whitespace="preserve">Returns the vertical width of a tab border.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">vertical width of a tab border</doc>
+          <type name="guint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <method name="insert_page" c:identifier="gtk_notebook_insert_page">
+        <doc xml:whitespace="preserve">Insert a page into @notebook at the given position.
+page in the notebook, or -1 if function fails</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index (starting from 0) of the inserted</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkWidget to use as the contents of the page.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="tab_label" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the #GtkWidget to be used as the label for the page, or %NULL to use the default label, 'page N'.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index (starting at 0) at which to insert the page, or -1 to append the page after all other pages.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_page_menu"
+              c:identifier="gtk_notebook_insert_page_menu">
+        <doc xml:whitespace="preserve">Insert a page into @notebook at the given position, specifying
+the widget to use as the label in the popup menu.
+page in the notebook</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index (starting from 0) of the inserted</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkWidget to use as the contents of the page.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="tab_label" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the #GtkWidget to be used as the label for the page, or %NULL to use the default label, 'page N'.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="menu_label"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the widget to use as a label for the page-switch menu, if that is enabled. If %NULL, and @tab_label is a #GtkLabel or %NULL, then the menu label will be a newly created label with the same text as @tab_label; If @tab_label is not a #GtkLabel, @menu_label must be specified if the page-switch menu is to be used.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index (starting at 0) at which to insert the page, or -1 to append the page after all other pages.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="next_page" c:identifier="gtk_notebook_next_page">
+        <doc xml:whitespace="preserve">Switches to the next page. Nothing happens if the current page is
+the last page.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="page_num" c:identifier="gtk_notebook_page_num">
+        <doc xml:whitespace="preserve">Finds the index of the page which contains the given child
+widget.
+-1 if @child is not in the notebook.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index of the page containing @child, or</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkWidget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="popup_disable" c:identifier="gtk_notebook_popup_disable">
+        <doc xml:whitespace="preserve">Disables the popup menu.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="popup_enable" c:identifier="gtk_notebook_popup_enable">
+        <doc xml:whitespace="preserve">the tab labels, a menu with all the pages will be popped up.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="prepend_page" c:identifier="gtk_notebook_prepend_page">
+        <doc xml:whitespace="preserve">Prepends a page to @notebook.
+page in the notebook, or -1 if function fails</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index (starting from 0) of the prepended</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkWidget to use as the contents of the page.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="tab_label" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the #GtkWidget to be used as the label for the page, or %NULL to use the default label, 'page N'.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend_page_menu"
+              c:identifier="gtk_notebook_prepend_page_menu">
+        <doc xml:whitespace="preserve">Prepends a page to @notebook, specifying the widget to use as the
+label in the popup menu.
+page in the notebook, or -1 if function fails</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index (starting from 0) of the prepended</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkWidget to use as the contents of the page.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="tab_label" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the #GtkWidget to be used as the label for the page, or %NULL to use the default label, 'page N'.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="menu_label"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the widget to use as a label for the page-switch menu, if that is enabled. If %NULL, and @tab_label is a #GtkLabel or %NULL, then the menu label will be a newly created label with the same text as @tab_label; If @tab_label is not a #GtkLabel, @menu_label must be specified if the page-switch menu is to be used.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prev_page" c:identifier="gtk_notebook_prev_page">
+        <doc xml:whitespace="preserve">Switches to the previous page. Nothing happens if the current page
+is the first page.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="remove_page" c:identifier="gtk_notebook_remove_page">
+        <doc xml:whitespace="preserve">Removes a page from the notebook given its index
+in the notebook.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of a notebook page, starting from 0. If -1, the last page will be removed.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reorder_child" c:identifier="gtk_notebook_reorder_child">
+        <doc xml:whitespace="preserve">Reorders the page containing @child, so that it appears in position
+children in the list or negative, @child will be moved to the end
+of the list.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the child to move</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new position, or -1 to move to the end</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_action_widget"
+              c:identifier="gtk_notebook_set_action_widget"
+              version="2.20">
+        <doc xml:whitespace="preserve">Sets @widget as one of the action widgets. Depending on the pack type
+the widget will be placed before or after the tabs. You can use
+a #GtkBox if you need to pack more than one widget on the same side.
+Note that action widgets are "internal" children of the notebook and thus
+not included in the list returned from gtk_container_foreach().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkWidget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="pack_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pack type of the action widget</doc>
+            <type name="PackType" c:type="GtkPackType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_current_page"
+              c:identifier="gtk_notebook_set_current_page">
+        <doc xml:whitespace="preserve">Switches to the page number @page_num. 
+Note that due to historical reasons, GtkNotebook refuses
+to switch to a page unless the child widget is visible. 
+Therefore, it is recommended to show child widgets before
+adding them to a notebook.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">index of the page to switch to, starting from 0. If negative, the last page will be used. If greater than the number of pages in the notebook, nothing will be done.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_group_name"
+              c:identifier="gtk_notebook_set_group_name"
+              version="2.24">
+        <doc xml:whitespace="preserve">Sets a group name for @notebook.
+Notebooks with the same name will be able to exchange tabs
+via drag and drop. A notebook with a %NULL group name will
+not be able to exchange tabs with any other notebook.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_menu_label" c:identifier="gtk_notebook_set_menu_label">
+        <doc xml:whitespace="preserve">Changes the menu label for the page containing @child.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the child widget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="menu_label"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the menu label, or NULL for default</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_menu_label_text"
+              c:identifier="gtk_notebook_set_menu_label_text">
+        <doc xml:whitespace="preserve">Creates a new label and sets it as the menu label of @child.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the child widget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="menu_text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the label text</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_scrollable" c:identifier="gtk_notebook_set_scrollable">
+        <doc xml:whitespace="preserve">Sets whether the tab label area will have arrows for scrolling if
+there are too many tabs to fit in the area.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scrollable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if scroll arrows should be added</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_show_border"
+              c:identifier="gtk_notebook_set_show_border">
+        <doc xml:whitespace="preserve">Sets whether a bevel will be drawn around the notebook pages.
+This only has a visual effect when the tabs are not shown.
+See gtk_notebook_set_show_tabs().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_border" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if a bevel should be drawn around the notebook.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_show_tabs" c:identifier="gtk_notebook_set_show_tabs">
+        <doc xml:whitespace="preserve">Sets whether to show the tabs for the notebook or not.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_tabs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the tabs should be shown.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tab_detachable"
+              c:identifier="gtk_notebook_set_tab_detachable"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets whether the tab can be detached from @notebook to another
+notebook or widget.
+Note that 2 notebooks must share a common group identificator
+(see gtk_notebook_set_group()) to allow automatic tabs
+interchange between them.
+If you want a widget to interact with a notebook through DnD
+(i.e.: accept dragged tabs from it) it must be set as a drop
+destination and accept the target "GTK_NOTEBOOK_TAB". The notebook
+will fill the selection with a GtkWidget** pointing to the child
+widget that corresponds to the dropped tab.
+|[
+static void
+on_drop_zone_drag_data_received (GtkWidget        *widget,
+GdkDragContext   *context,
+gint              x,
+gint              y,
+GtkSelectionData *selection_data,
+guint             info,
+guint             time,
+gpointer          user_data)
+{
+GtkWidget *notebook;
+GtkWidget **child;
+notebook = gtk_drag_get_source_widget (context);
+child = (void*) selection_data-&gt;data;
+process_widget (*child);
+gtk_container_remove (GTK_CONTAINER (notebook), *child);
+}
+]|
+If you want a notebook to accept drags from other widgets,
+you will have to set your own DnD code to do it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a child #GtkWidget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detachable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the tab is detachable or not</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tab_label" c:identifier="gtk_notebook_set_tab_label">
+        <doc xml:whitespace="preserve">Changes the tab label for @child. If %NULL is specified
+for @tab_label, then the page will have the label 'page N'.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the page</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="tab_label" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the tab label widget to use, or %NULL for default tab label.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tab_label_text"
+              c:identifier="gtk_notebook_set_tab_label_text">
+        <doc xml:whitespace="preserve">Creates a new label and sets it as the tab label for the page
+containing @child.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the page</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="tab_text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the label text</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tab_pos" c:identifier="gtk_notebook_set_tab_pos">
+        <doc xml:whitespace="preserve">Sets the edge at which the tabs for switching pages in the
+notebook are drawn.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the edge to draw the tabs at.</doc>
+            <type name="PositionType" c:type="GtkPositionType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tab_reorderable"
+              c:identifier="gtk_notebook_set_tab_reorderable"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets whether the notebook tab can be reordered
+via drag and drop or not.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a child #GtkWidget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="reorderable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the tab is reorderable or not.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="enable-popup" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="group-name"
+                version="2.24"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Group name for tab drag and drop.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="page" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="scrollable" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="show-border" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="show-tabs" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="tab-pos" writable="1" transfer-ownership="none">
+        <type name="PositionType"/>
+      </property>
+      <field name="container">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="NotebookPrivate" c:type="GtkNotebookPrivate*"/>
+      </field>
+      <glib:signal name="change-current-page">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="create-window" version="2.12" introspectable="0">
+        <doc xml:whitespace="preserve">The ::create-window signal is emitted when a detachable
+tab is dropped on the root window. 
+A handler for this signal can create a window containing 
+a notebook where the tab will be attached. It is also 
+responsible for moving/resizing the window and adding the 
+necessary properties to the notebook (e.g. the 
+#GtkNotebook:group ).</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a #GtkNotebook that @page should be added to, or %NULL.</doc>
+          <type name="Notebook"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the tab of @notebook that is being detached</doc>
+            <type name="Widget"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the X coordinate where the drop happens</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the Y coordinate where the drop happens</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="focus-tab">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="NotebookTab"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-focus-out">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="DirectionType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="page-added" version="2.10">
+        <doc xml:whitespace="preserve">the ::page-added signal is emitted in the notebook
+right after a page is added to the notebook.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the child #GtkWidget affected</doc>
+            <type name="Widget"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new page number for @child</doc>
+            <type name="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="page-removed" version="2.10">
+        <doc xml:whitespace="preserve">the ::page-removed signal is emitted in the notebook
+right after a page is removed from the notebook.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the child #GtkWidget affected</doc>
+            <type name="Widget"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the @child page number</doc>
+            <type name="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="page-reordered" version="2.10">
+        <doc xml:whitespace="preserve">the ::page-reordered signal is emitted in the notebook
+right after a page has been reordered.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the child #GtkWidget affected</doc>
+            <type name="Widget"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new page number for @child</doc>
+            <type name="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="reorder-tab">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="DirectionType"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="select-page">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="switch-page">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Widget"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="NotebookClass"
+            c:type="GtkNotebookClass"
+            glib:is-gtype-struct-for="Notebook">
+      <field name="parent_class">
+        <type name="ContainerClass" c:type="GtkContainerClass"/>
+      </field>
+      <field name="switch_page">
+        <callback name="switch_page">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="notebook" transfer-ownership="none">
+              <type name="Notebook" c:type="GtkNotebook*"/>
+            </parameter>
+            <parameter name="page" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="page_num" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="select_page">
+        <callback name="select_page">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="notebook" transfer-ownership="none">
+              <type name="Notebook" c:type="GtkNotebook*"/>
+            </parameter>
+            <parameter name="move_focus" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="focus_tab">
+        <callback name="focus_tab">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="notebook" transfer-ownership="none">
+              <type name="Notebook" c:type="GtkNotebook*"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <type name="NotebookTab" c:type="GtkNotebookTab"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="change_current_page">
+        <callback name="change_current_page">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="notebook" transfer-ownership="none">
+              <type name="Notebook" c:type="GtkNotebook*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="move_focus_out">
+        <callback name="move_focus_out">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="notebook" transfer-ownership="none">
+              <type name="Notebook" c:type="GtkNotebook*"/>
+            </parameter>
+            <parameter name="direction" transfer-ownership="none">
+              <type name="DirectionType" c:type="GtkDirectionType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="reorder_tab">
+        <callback name="reorder_tab">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="notebook" transfer-ownership="none">
+              <type name="Notebook" c:type="GtkNotebook*"/>
+            </parameter>
+            <parameter name="direction" transfer-ownership="none">
+              <type name="DirectionType" c:type="GtkDirectionType"/>
+            </parameter>
+            <parameter name="move_to_last" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="insert_page">
+        <callback name="insert_page">
+          <return-value transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="notebook" transfer-ownership="none">
+              <type name="Notebook" c:type="GtkNotebook*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="tab_label" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="menu_label" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="position" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_window" introspectable="0">
+        <callback name="create_window" introspectable="0">
+          <return-value>
+            <type name="Notebook" c:type="GtkNotebook*"/>
+          </return-value>
+          <parameters>
+            <parameter name="notebook" transfer-ownership="none">
+              <type name="Notebook" c:type="GtkNotebook*"/>
+            </parameter>
+            <parameter name="page" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="NotebookPrivate" c:type="GtkNotebookPrivate" disguised="1">
+    </record>
+    <enumeration name="NotebookTab"
+                 glib:type-name="GtkNotebookTab"
+                 glib:get-type="gtk_notebook_tab_get_type"
+                 c:type="GtkNotebookTab">
+      <member name="first"
+              value="0"
+              c:identifier="GTK_NOTEBOOK_TAB_FIRST"
+              glib:nick="first"/>
+      <member name="last"
+              value="1"
+              c:identifier="GTK_NOTEBOOK_TAB_LAST"
+              glib:nick="last"/>
+    </enumeration>
+    <enumeration name="NumberUpLayout"
+                 glib:type-name="GtkNumberUpLayout"
+                 glib:get-type="gtk_number_up_layout_get_type"
+                 c:type="GtkNumberUpLayout">
+      <member name="lrtb"
+              value="0"
+              c:identifier="GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM"
+              glib:nick="lrtb"/>
+      <member name="lrbt"
+              value="1"
+              c:identifier="GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP"
+              glib:nick="lrbt"/>
+      <member name="rltb"
+              value="2"
+              c:identifier="GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM"
+              glib:nick="rltb"/>
+      <member name="rlbt"
+              value="3"
+              c:identifier="GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_BOTTOM_TO_TOP"
+              glib:nick="rlbt"/>
+      <member name="tblr"
+              value="4"
+              c:identifier="GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT"
+              glib:nick="tblr"/>
+      <member name="tbrl"
+              value="5"
+              c:identifier="GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_RIGHT_TO_LEFT"
+              glib:nick="tbrl"/>
+      <member name="btlr"
+              value="6"
+              c:identifier="GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT"
+              glib:nick="btlr"/>
+      <member name="btrl"
+              value="7"
+              c:identifier="GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_RIGHT_TO_LEFT"
+              glib:nick="btrl"/>
+    </enumeration>
+    <class name="Object"
+           c:symbol-prefix="object"
+           c:type="GtkObject"
+           parent="GObject.InitiallyUnowned"
+           abstract="1"
+           glib:type-name="GtkObject"
+           glib:get-type="gtk_object_get_type"
+           glib:type-struct="ObjectClass">
+      <method name="destroy" c:identifier="gtk_object_destroy">
+        <doc xml:whitespace="preserve">Emits the #GtkObject::destroy signal notifying all reference holders that they should
+release the #GtkObject. See the overview documentation at the top of the
+page for more details.
+The memory for the object itself won't be deleted until
+its reference count actually drops to 0; gtk_object_destroy() merely asks
+reference holders to release their references, it does not free the object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+      </field>
+      <field name="flags">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <glib:signal name="destroy">
+        <doc xml:whitespace="preserve">Signals that all holders of a reference to the #GtkObject should release
+the reference that they hold. May result in finalization of the object
+if all references are released.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ObjectClass"
+            c:type="GtkObjectClass"
+            glib:is-gtype-struct-for="Object">
+      <field name="parent_class">
+        <type name="GObject.InitiallyUnownedClass"
+              c:type="GInitiallyUnownedClass"/>
+      </field>
+      <field name="destroy">
+        <callback name="destroy">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GtkObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <bitfield name="ObjectFlags"
+              deprecated="Do not re-use #GtkObject flags but use your own variable to"
+              deprecated-version="2.22"
+              glib:type-name="GtkObjectFlags"
+              glib:get-type="gtk_object_flags_get_type"
+              c:type="GtkObjectFlags">
+      <doc xml:whitespace="preserve">Tells about the state of the object.
+store flags.</doc>
+      <member name="in_destruction"
+              value="1"
+              c:identifier="GTK_IN_DESTRUCTION"
+              glib:nick="in-destruction"/>
+      <member name="reserved_1"
+              value="4"
+              c:identifier="GTK_RESERVED_1"
+              glib:nick="reserved-1"/>
+      <member name="reserved_2"
+              value="8"
+              c:identifier="GTK_RESERVED_2"
+              glib:nick="reserved-2"/>
+    </bitfield>
+    <class name="OffscreenWindow"
+           c:symbol-prefix="offscreen_window"
+           c:type="GtkOffscreenWindow"
+           parent="Window"
+           glib:type-name="GtkOffscreenWindow"
+           glib:get-type="gtk_offscreen_window_get_type"
+           glib:type-struct="OffscreenWindowClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new"
+                   c:identifier="gtk_offscreen_window_new"
+                   version="2.20">
+        <doc xml:whitespace="preserve">Creates a toplevel container widget that is used to retrieve
+snapshots of widgets without showing them on the screen.  For
+widgets that are on the screen and part of a normal widget
+hierarchy, gtk_widget_get_snapshot() can be used instead.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A pointer to a #GtkWidget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="get_pixbuf"
+              c:identifier="gtk_offscreen_window_get_pixbuf"
+              version="2.20">
+        <doc xml:whitespace="preserve">Retrieves a snapshot of the contained widget in the form of
+a #GdkPixbuf.  This is a new pixbuf with a reference count of 1,
+and the application should unreference it once it is no longer
+needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GdkPixbuf pointer, or %NULL.</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="get_pixmap"
+              c:identifier="gtk_offscreen_window_get_pixmap"
+              version="2.20">
+        <doc xml:whitespace="preserve">Retrieves a snapshot of the contained widget in the form of
+a #GdkPixmap.  If you need to keep this around over window
+resizes then you should add a reference to it.
+or %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GdkPixmap pointer to the offscreen pixmap,</doc>
+          <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+        </return-value>
+      </method>
+      <field name="parent_object">
+        <type name="Window" c:type="GtkWindow"/>
+      </field>
+    </class>
+    <record name="OffscreenWindowClass"
+            c:type="GtkOffscreenWindowClass"
+            glib:is-gtype-struct-for="OffscreenWindow">
+      <field name="parent_class">
+        <type name="WindowClass" c:type="GtkWindowClass"/>
+      </field>
+    </record>
+    <interface name="Orientable"
+               c:symbol-prefix="orientable"
+               c:type="GtkOrientable"
+               glib:type-name="GtkOrientable"
+               glib:get-type="gtk_orientable_get_type"
+               glib:type-struct="OrientableIface">
+      <method name="get_orientation"
+              c:identifier="gtk_orientable_get_orientation"
+              version="2.16">
+        <doc xml:whitespace="preserve">Retrieves the orientation of the @orientable.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the orientation of the @orientable.</doc>
+          <type name="Orientation" c:type="GtkOrientation"/>
+        </return-value>
+      </method>
+      <method name="set_orientation"
+              c:identifier="gtk_orientable_set_orientation"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets the orientation of the @orientable.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the orientable's new orientation.</doc>
+            <type name="Orientation" c:type="GtkOrientation"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="orientation"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The orientation of the orientable.</doc>
+        <type name="Orientation"/>
+      </property>
+    </interface>
+    <record name="OrientableIface"
+            c:type="GtkOrientableIface"
+            glib:is-gtype-struct-for="Orientable">
+      <field name="base_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+    </record>
+    <enumeration name="Orientation"
+                 glib:type-name="GtkOrientation"
+                 glib:get-type="gtk_orientation_get_type"
+                 c:type="GtkOrientation">
+      <member name="horizontal"
+              value="0"
+              c:identifier="GTK_ORIENTATION_HORIZONTAL"
+              glib:nick="horizontal"/>
+      <member name="vertical"
+              value="1"
+              c:identifier="GTK_ORIENTATION_VERTICAL"
+              glib:nick="vertical"/>
+    </enumeration>
+    <constant name="PAPER_NAME_A3" value="iso_a3">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PAPER_NAME_A4" value="iso_a4">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PAPER_NAME_A5" value="iso_a5">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PAPER_NAME_B5" value="iso_b5">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PAPER_NAME_EXECUTIVE" value="na_executive">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PAPER_NAME_LEGAL" value="na_legal">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PAPER_NAME_LETTER" value="na_letter">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PARAM_READABLE" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PARAM_READWRITE" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PARAM_WRITABLE" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PATH_PRIO_MASK" value="15">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_COLLATE" value="collate">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_DEFAULT_SOURCE" value="default-source">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_DITHER" value="dither">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_DUPLEX" value="duplex">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_FINISHINGS" value="finishings">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_MEDIA_TYPE" value="media-type">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_NUMBER_UP" value="number-up">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_NUMBER_UP_LAYOUT" value="number-up-layout">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_N_COPIES" value="n-copies">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_ORIENTATION" value="orientation">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_OUTPUT_BIN" value="output-bin">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_OUTPUT_FILE_FORMAT"
+              value="output-file-format">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_OUTPUT_URI" value="output-uri">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_PAGE_RANGES" value="page-ranges">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_PAGE_SET" value="page-set">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_PAPER_FORMAT" value="paper-format">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_PAPER_HEIGHT" value="paper-height">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_PAPER_WIDTH" value="paper-width">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_PRINTER" value="printer">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_PRINTER_LPI" value="printer-lpi">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_PRINT_PAGES" value="print-pages">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_QUALITY" value="quality">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_RESOLUTION" value="resolution">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_RESOLUTION_X" value="resolution-x">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_RESOLUTION_Y" value="resolution-y">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_REVERSE" value="reverse">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_SCALE" value="scale">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_USE_COLOR" value="use-color">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_WIN32_DRIVER_EXTRA"
+              value="win32-driver-extra">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_WIN32_DRIVER_VERSION"
+              value="win32-driver-version">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="PRIORITY_RESIZE" value="10">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="PackDirection"
+                 glib:type-name="GtkPackDirection"
+                 glib:get-type="gtk_pack_direction_get_type"
+                 c:type="GtkPackDirection">
+      <member name="ltr"
+              value="0"
+              c:identifier="GTK_PACK_DIRECTION_LTR"
+              glib:nick="ltr"/>
+      <member name="rtl"
+              value="1"
+              c:identifier="GTK_PACK_DIRECTION_RTL"
+              glib:nick="rtl"/>
+      <member name="ttb"
+              value="2"
+              c:identifier="GTK_PACK_DIRECTION_TTB"
+              glib:nick="ttb"/>
+      <member name="btt"
+              value="3"
+              c:identifier="GTK_PACK_DIRECTION_BTT"
+              glib:nick="btt"/>
+    </enumeration>
+    <enumeration name="PackType"
+                 glib:type-name="GtkPackType"
+                 glib:get-type="gtk_pack_type_get_type"
+                 c:type="GtkPackType">
+      <member name="start"
+              value="0"
+              c:identifier="GTK_PACK_START"
+              glib:nick="start"/>
+      <member name="end"
+              value="1"
+              c:identifier="GTK_PACK_END"
+              glib:nick="end"/>
+    </enumeration>
+    <enumeration name="PageOrientation"
+                 glib:type-name="GtkPageOrientation"
+                 glib:get-type="gtk_page_orientation_get_type"
+                 c:type="GtkPageOrientation">
+      <member name="portrait"
+              value="0"
+              c:identifier="GTK_PAGE_ORIENTATION_PORTRAIT"
+              glib:nick="portrait"/>
+      <member name="landscape"
+              value="1"
+              c:identifier="GTK_PAGE_ORIENTATION_LANDSCAPE"
+              glib:nick="landscape"/>
+      <member name="reverse_portrait"
+              value="2"
+              c:identifier="GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT"
+              glib:nick="reverse-portrait"/>
+      <member name="reverse_landscape"
+              value="3"
+              c:identifier="GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE"
+              glib:nick="reverse-landscape"/>
+    </enumeration>
+    <record name="PageRange" c:type="GtkPageRange">
+      <field name="start" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="end" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+    </record>
+    <enumeration name="PageSet"
+                 glib:type-name="GtkPageSet"
+                 glib:get-type="gtk_page_set_get_type"
+                 c:type="GtkPageSet">
+      <member name="all"
+              value="0"
+              c:identifier="GTK_PAGE_SET_ALL"
+              glib:nick="all"/>
+      <member name="even"
+              value="1"
+              c:identifier="GTK_PAGE_SET_EVEN"
+              glib:nick="even"/>
+      <member name="odd"
+              value="2"
+              c:identifier="GTK_PAGE_SET_ODD"
+              glib:nick="odd"/>
+    </enumeration>
+    <class name="PageSetup"
+           c:symbol-prefix="page_setup"
+           c:type="GtkPageSetup"
+           parent="GObject.Object"
+           glib:type-name="GtkPageSetup"
+           glib:get-type="gtk_page_setup_get_type">
+      <constructor name="new" c:identifier="gtk_page_setup_new" version="2.10">
+        <doc xml:whitespace="preserve">Creates a new #GtkPageSetup.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkPageSetup.</doc>
+          <type name="PageSetup" c:type="GtkPageSetup*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_file"
+                   c:identifier="gtk_page_setup_new_from_file"
+                   version="2.12"
+                   throws="1">
+        <doc xml:whitespace="preserve">Reads the page setup from the file @file_name. Returns a 
+new #GtkPageSetup object with the restored page setup, 
+or %NULL if an error occurred. See gtk_page_setup_to_file().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the restored #GtkPageSetup</doc>
+          <type name="PageSetup" c:type="GtkPageSetup*"/>
+        </return-value>
+        <parameters>
+          <parameter name="file_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the filename to read the page setup from</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_key_file"
+                   c:identifier="gtk_page_setup_new_from_key_file"
+                   version="2.12"
+                   throws="1">
+        <doc xml:whitespace="preserve">Reads the page setup from the group @group_name in the key file
+page setup, or %NULL if an error occurred.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the restored #GtkPageSetup</doc>
+          <type name="PageSetup" c:type="GtkPageSetup*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_file" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GKeyFile to retrieve the page_setup from</doc>
+            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
+          </parameter>
+          <parameter name="group_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the name of the group in the key_file to read, or %NULL to use the default name "Page Setup"</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy" c:identifier="gtk_page_setup_copy" version="2.10">
+        <doc xml:whitespace="preserve">Copies a #GtkPageSetup.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a copy of @other</doc>
+          <type name="PageSetup" c:type="GtkPageSetup*"/>
+        </return-value>
+      </method>
+      <method name="get_bottom_margin"
+              c:identifier="gtk_page_setup_get_bottom_margin"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the bottom margin in units of @unit.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the bottom margin</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the unit for the return value</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_left_margin"
+              c:identifier="gtk_page_setup_get_left_margin"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the left margin in units of @unit.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the left margin</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the unit for the return value</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_orientation"
+              c:identifier="gtk_page_setup_get_orientation"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the page orientation of the #GtkPageSetup.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the page orientation</doc>
+          <type name="PageOrientation" c:type="GtkPageOrientation"/>
+        </return-value>
+      </method>
+      <method name="get_page_height"
+              c:identifier="gtk_page_setup_get_page_height"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns the page height in units of @unit.
+Note that this function takes orientation and
+margins into consideration. 
+See gtk_page_setup_get_paper_height().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the page height.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the unit for the return value</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_page_width"
+              c:identifier="gtk_page_setup_get_page_width"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns the page width in units of @unit.
+Note that this function takes orientation and
+margins into consideration. 
+See gtk_page_setup_get_paper_width().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the page width.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the unit for the return value</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_paper_height"
+              c:identifier="gtk_page_setup_get_paper_height"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns the paper height in units of @unit.
+Note that this function takes orientation, but 
+not margins into consideration.
+See gtk_page_setup_get_page_height().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the paper height.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the unit for the return value</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_paper_size"
+              c:identifier="gtk_page_setup_get_paper_size"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the paper size of the #GtkPageSetup.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the paper size</doc>
+          <type name="PaperSize" c:type="GtkPaperSize*"/>
+        </return-value>
+      </method>
+      <method name="get_paper_width"
+              c:identifier="gtk_page_setup_get_paper_width"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns the paper width in units of @unit.
+Note that this function takes orientation, but 
+not margins into consideration. 
+See gtk_page_setup_get_page_width().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the paper width.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the unit for the return value</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_right_margin"
+              c:identifier="gtk_page_setup_get_right_margin"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the right margin in units of @unit.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the right margin</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the unit for the return value</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_top_margin"
+              c:identifier="gtk_page_setup_get_top_margin"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the top margin in units of @unit.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the top margin</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the unit for the return value</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_file"
+              c:identifier="gtk_page_setup_load_file"
+              version="2.14"
+              throws="1">
+        <doc xml:whitespace="preserve">Reads the page setup from the file @file_name.
+See gtk_page_setup_to_file().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the filename to read the page setup from</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_key_file"
+              c:identifier="gtk_page_setup_load_key_file"
+              version="2.14"
+              throws="1">
+        <doc xml:whitespace="preserve">Reads the page setup from the group @group_name in the key file</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_file" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GKeyFile to retrieve the page_setup from</doc>
+            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
+          </parameter>
+          <parameter name="group_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the name of the group in the key_file to read, or %NULL to use the default name "Page Setup"</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_bottom_margin"
+              c:identifier="gtk_page_setup_set_bottom_margin"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the bottom margin of the #GtkPageSetup.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="margin" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new bottom margin in units of @unit</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the units for @margin</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_left_margin"
+              c:identifier="gtk_page_setup_set_left_margin"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the left margin of the #GtkPageSetup.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="margin" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new left margin in units of @unit</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the units for @margin</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_orientation"
+              c:identifier="gtk_page_setup_set_orientation"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the page orientation of the #GtkPageSetup.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkPageOrientation value</doc>
+            <type name="PageOrientation" c:type="GtkPageOrientation"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_paper_size"
+              c:identifier="gtk_page_setup_set_paper_size"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the paper size of the #GtkPageSetup without
+changing the margins. See 
+gtk_page_setup_set_paper_size_and_default_margins().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkPaperSize</doc>
+            <type name="PaperSize" c:type="GtkPaperSize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_paper_size_and_default_margins"
+              c:identifier="gtk_page_setup_set_paper_size_and_default_margins"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the paper size of the #GtkPageSetup and modifies
+the margins according to the new paper size.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkPaperSize</doc>
+            <type name="PaperSize" c:type="GtkPaperSize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_right_margin"
+              c:identifier="gtk_page_setup_set_right_margin"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the right margin of the #GtkPageSetup.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="margin" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new right margin in units of @unit</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the units for @margin</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_top_margin"
+              c:identifier="gtk_page_setup_set_top_margin"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the top margin of the #GtkPageSetup.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="margin" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new top margin in units of @unit</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the units for @margin</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_file"
+              c:identifier="gtk_page_setup_to_file"
+              version="2.12"
+              throws="1">
+        <doc xml:whitespace="preserve">This function saves the information from @setup to @file_name.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the file to save to</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_key_file"
+              c:identifier="gtk_page_setup_to_key_file"
+              version="2.12">
+        <doc xml:whitespace="preserve">This function adds the page setup from @setup to @key_file.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_file" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GKeyFile to save the page setup to</doc>
+            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
+          </parameter>
+          <parameter name="group_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the group to add the settings to in @key_file, or %NULL to use the default name "Page Setup"</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <callback name="PageSetupDoneFunc" c:type="GtkPageSetupDoneFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="page_setup" transfer-ownership="none">
+          <type name="PageSetup" c:type="GtkPageSetup*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="Paned"
+           c:symbol-prefix="paned"
+           c:type="GtkPaned"
+           parent="Container"
+           glib:type-name="GtkPaned"
+           glib:get-type="gtk_paned_get_type"
+           glib:type-struct="PanedClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_paned_new" version="3.0">
+        <doc xml:whitespace="preserve">Creates a new #GtkPaned widget.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkPaned.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the paned's orientation.</doc>
+            <type name="Orientation" c:type="GtkOrientation"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add1" c:identifier="gtk_paned_add1">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add2" c:identifier="gtk_paned_add2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child1"
+              c:identifier="gtk_paned_get_child1"
+              version="2.4">
+        <doc xml:whitespace="preserve">Obtains the first child of the paned widget.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">first child, or %NULL if it is not set.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_child2"
+              c:identifier="gtk_paned_get_child2"
+              version="2.4">
+        <doc xml:whitespace="preserve">Obtains the second child of the paned widget.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">second child, or %NULL if it is not set.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_handle_window"
+              c:identifier="gtk_paned_get_handle_window"
+              version="2.20">
+        <doc xml:whitespace="preserve">Returns the #GdkWindow of the handle. This function is
+useful when handling button or motion events because it
+enables the callback to distinguish between the window
+of the paned, a child and the handle.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the paned's handle window.</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_position" c:identifier="gtk_paned_get_position">
+        <doc xml:whitespace="preserve">Obtains the position of the divider between the two panes.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">position of the divider</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="pack1" c:identifier="gtk_paned_pack1">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="resize" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="shrink" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pack2" c:identifier="gtk_paned_pack2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="resize" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="shrink" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_position" c:identifier="gtk_paned_set_position">
+        <doc xml:whitespace="preserve">Sets the position of the divider between the two panes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pixel position of divider, a negative value means that the position is unset.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="max-position" version="2.4" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The largest possible value for the position property. This property is derived from the
+size and shrinkability of the widget's children.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="min-position" version="2.4" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The smallest possible value for the position property. This property is derived from the
+size and shrinkability of the widget's children.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="position" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="position-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="container">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="priv">
+        <type name="PanedPrivate" c:type="GtkPanedPrivate*"/>
+      </field>
+      <glib:signal name="accept-position" version="2.0">
+        <doc xml:whitespace="preserve">The ::accept-position signal is a 
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted to accept the current position of the handle when 
+moving it using key bindings.
+The default binding for this signal is Return or Space.</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="cancel-position" version="2.0">
+        <doc xml:whitespace="preserve">The ::cancel-position signal is a 
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted to cancel moving the position of the handle using key 
+bindings. The position of the handle will be reset to the value prior to 
+moving it.
+The default binding for this signal is Escape.</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="cycle-child-focus" version="2.0">
+        <doc xml:whitespace="preserve">The ::cycle-child-focus signal is a 
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted to cycle the focus between the children of the paned.
+The default binding is f6.</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether cycling backward or forward</doc>
+            <type name="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="cycle-handle-focus" version="2.0">
+        <doc xml:whitespace="preserve">The ::cycle-handle-focus signal is a 
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted to cycle whether the paned should grab focus to allow
+the user to change position of the handle by using key bindings.
+The default binding for this signal is f8.</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether cycling backward or forward</doc>
+            <type name="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-handle" version="2.0">
+        <doc xml:whitespace="preserve">The ::move-handle signal is a 
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted to move the handle when the user is using key bindings 
+to move it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkScrollType</doc>
+            <type name="ScrollType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="toggle-handle-focus" version="2.0">
+        <doc xml:whitespace="preserve">The ::toggle-handle-focus is a 
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted to accept the current position of the handle and then 
+move focus to the next widget in the focus chain.
+The default binding is Tab.</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="PanedClass"
+            c:type="GtkPanedClass"
+            glib:is-gtype-struct-for="Paned">
+      <field name="parent_class">
+        <type name="ContainerClass" c:type="GtkContainerClass"/>
+      </field>
+      <field name="cycle_child_focus">
+        <callback name="cycle_child_focus">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="paned" transfer-ownership="none">
+              <type name="Paned" c:type="GtkPaned*"/>
+            </parameter>
+            <parameter name="reverse" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="toggle_handle_focus">
+        <callback name="toggle_handle_focus">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="paned" transfer-ownership="none">
+              <type name="Paned" c:type="GtkPaned*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="move_handle">
+        <callback name="move_handle">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="paned" transfer-ownership="none">
+              <type name="Paned" c:type="GtkPaned*"/>
+            </parameter>
+            <parameter name="scroll" transfer-ownership="none">
+              <type name="ScrollType" c:type="GtkScrollType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cycle_handle_focus">
+        <callback name="cycle_handle_focus">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="paned" transfer-ownership="none">
+              <type name="Paned" c:type="GtkPaned*"/>
+            </parameter>
+            <parameter name="reverse" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="accept_position">
+        <callback name="accept_position">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="paned" transfer-ownership="none">
+              <type name="Paned" c:type="GtkPaned*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cancel_position">
+        <callback name="cancel_position">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="paned" transfer-ownership="none">
+              <type name="Paned" c:type="GtkPaned*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="PanedPrivate" c:type="GtkPanedPrivate" disguised="1">
+    </record>
+    <record name="PaperSize"
+            c:type="GtkPaperSize"
+            glib:type-name="GtkPaperSize"
+            glib:get-type="gtk_paper_size_get_type"
+            c:symbol-prefix="paper_size">
+      <constructor name="new" c:identifier="gtk_paper_size_new" version="2.10">
+        <doc xml:whitespace="preserve">Creates a new #GtkPaperSize object by parsing a
+&lt;ulink url="ftp://ftp.pwg.org/pub/pwg/candidates/cs-pwgmsn10-20020226-5101.1.pdf"&gt;PWG 5101.1-2002&lt;/ulink&gt;
+paper name.
+If @name is %NULL, the default paper size is returned,
+see gtk_paper_size_get_default().
+to free it</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkPaperSize, use gtk_paper_size_free()</doc>
+          <type name="PaperSize" c:type="GtkPaperSize*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a paper size name, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_custom"
+                   c:identifier="gtk_paper_size_new_custom"
+                   version="2.10">
+        <doc xml:whitespace="preserve">Creates a new #GtkPaperSize object with the
+given parameters.
+to free it</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkPaperSize object, use gtk_paper_size_free()</doc>
+          <type name="PaperSize" c:type="GtkPaperSize*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the paper name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="display_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the human-readable name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the paper width, in units of @unit</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the paper height, in units of @unit</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the unit for @width and @height</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_key_file"
+                   c:identifier="gtk_paper_size_new_from_key_file"
+                   version="2.12"
+                   throws="1">
+        <doc xml:whitespace="preserve">Reads a paper size from the group @group_name in the key file
+paper size, or %NULL if an error occurred.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkPaperSize object with the restored</doc>
+          <type name="PaperSize" c:type="GtkPaperSize*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_file" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GKeyFile to retrieve the papersize from</doc>
+            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
+          </parameter>
+          <parameter name="group_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name ofthe group in the key file to read, or %NULL to read the first group</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_ppd"
+                   c:identifier="gtk_paper_size_new_from_ppd"
+                   version="2.10">
+        <doc xml:whitespace="preserve">Creates a new #GtkPaperSize object by using 
+PPD information. 
+If @ppd_name is not a recognized PPD paper name, 
+construct a custom #GtkPaperSize object.
+to free it</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkPaperSize, use gtk_paper_size_free()</doc>
+          <type name="PaperSize" c:type="GtkPaperSize*"/>
+        </return-value>
+        <parameters>
+          <parameter name="ppd_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a PPD paper name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="ppd_display_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the corresponding human-readable name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the paper width, in points</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the paper height in points</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy" c:identifier="gtk_paper_size_copy" version="2.10">
+        <doc xml:whitespace="preserve">Copies an existing #GtkPaperSize.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a copy of @other</doc>
+          <type name="PaperSize" c:type="GtkPaperSize*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gtk_paper_size_free" version="2.10">
+        <doc xml:whitespace="preserve">Free the given #GtkPaperSize object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_default_bottom_margin"
+              c:identifier="gtk_paper_size_get_default_bottom_margin"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the default bottom margin for the #GtkPaperSize.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the default bottom margin</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the unit for the return value</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_default_left_margin"
+              c:identifier="gtk_paper_size_get_default_left_margin"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the default left margin for the #GtkPaperSize.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the default left margin</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the unit for the return value</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_default_right_margin"
+              c:identifier="gtk_paper_size_get_default_right_margin"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the default right margin for the #GtkPaperSize.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the default right margin</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the unit for the return value</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_default_top_margin"
+              c:identifier="gtk_paper_size_get_default_top_margin"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the default top margin for the #GtkPaperSize.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the default top margin</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the unit for the return value</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_display_name"
+              c:identifier="gtk_paper_size_get_display_name"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the human-readable name of the #GtkPaperSize.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the human-readable name of @size</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_height"
+              c:identifier="gtk_paper_size_get_height"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the paper height of the #GtkPaperSize, in 
+units of @unit.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the paper height</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the unit for the return value</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_name"
+              c:identifier="gtk_paper_size_get_name"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the name of the #GtkPaperSize.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of @size</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_ppd_name"
+              c:identifier="gtk_paper_size_get_ppd_name"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the PPD name of the #GtkPaperSize, which
+may be %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the PPD name of @size</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_width"
+              c:identifier="gtk_paper_size_get_width"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the paper width of the #GtkPaperSize, in 
+units of @unit.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the paper width</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the unit for the return value</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_custom" c:identifier="gtk_paper_size_is_custom">
+        <doc xml:whitespace="preserve">Returns %TRUE if @size is not a standard paper size.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @size is a custom paper size.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_equal"
+              c:identifier="gtk_paper_size_is_equal"
+              version="2.10">
+        <doc xml:whitespace="preserve">Compares two #GtkPaperSize objects.
+represent the same paper size</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if @size1 and @size2</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="size2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">another #GtkPaperSize object</doc>
+            <type name="PaperSize" c:type="GtkPaperSize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_size"
+              c:identifier="gtk_paper_size_set_size"
+              version="2.10">
+        <doc xml:whitespace="preserve">Changes the dimensions of a @size to @width x @height.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new width in units of @unit</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new height in units of @unit</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the unit for @width and @height</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_key_file"
+              c:identifier="gtk_paper_size_to_key_file"
+              version="2.12">
+        <doc xml:whitespace="preserve">This function adds the paper size from @size to @key_file.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_file" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GKeyFile to save the paper size to</doc>
+            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
+          </parameter>
+          <parameter name="group_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the group to add the settings to in @key_file</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="PathPriorityType"
+                 glib:type-name="GtkPathPriorityType"
+                 glib:get-type="gtk_path_priority_type_get_type"
+                 c:type="GtkPathPriorityType">
+      <member name="lowest"
+              value="0"
+              c:identifier="GTK_PATH_PRIO_LOWEST"
+              glib:nick="lowest"/>
+      <member name="gtk"
+              value="4"
+              c:identifier="GTK_PATH_PRIO_GTK"
+              glib:nick="gtk"/>
+      <member name="application"
+              value="8"
+              c:identifier="GTK_PATH_PRIO_APPLICATION"
+              glib:nick="application"/>
+      <member name="theme"
+              value="10"
+              c:identifier="GTK_PATH_PRIO_THEME"
+              glib:nick="theme"/>
+      <member name="rc"
+              value="12"
+              c:identifier="GTK_PATH_PRIO_RC"
+              glib:nick="rc"/>
+      <member name="highest"
+              value="15"
+              c:identifier="GTK_PATH_PRIO_HIGHEST"
+              glib:nick="highest"/>
+    </enumeration>
+    <enumeration name="PathType"
+                 glib:type-name="GtkPathType"
+                 glib:get-type="gtk_path_type_get_type"
+                 c:type="GtkPathType">
+      <member name="widget"
+              value="0"
+              c:identifier="GTK_PATH_WIDGET"
+              glib:nick="widget"/>
+      <member name="widget_class"
+              value="1"
+              c:identifier="GTK_PATH_WIDGET_CLASS"
+              glib:nick="widget-class"/>
+      <member name="class"
+              value="2"
+              c:identifier="GTK_PATH_CLASS"
+              glib:nick="class"/>
+    </enumeration>
+    <class name="Plug"
+           c:symbol-prefix="plug"
+           c:type="GtkPlug"
+           parent="Window"
+           glib:type-name="GtkPlug"
+           glib:get-type="gtk_plug_get_type"
+           glib:type-struct="PlugClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_plug_new">
+        <doc xml:whitespace="preserve">Creates a new plug widget inside the #GtkSocket identified
+by @socket_id. If @socket_id is 0, the plug is left "unplugged" and
+can later be plugged into a #GtkSocket by  gtk_socket_add_id().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new #GtkPlug widget.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="socket_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the window ID of the socket, or 0.</doc>
+            <type name="Gdk.NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_for_display"
+                   c:identifier="gtk_plug_new_for_display"
+                   version="2.2">
+        <doc xml:whitespace="preserve">Create a new plug widget inside the #GtkSocket identified by socket_id.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new #GtkPlug widget.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkDisplay on which @socket_id is displayed</doc>
+            <type name="Gdk.Display" c:type="GdkDisplay*"/>
+          </parameter>
+          <parameter name="socket_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the XID of the socket's window.</doc>
+            <type name="Gdk.NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="construct" c:identifier="gtk_plug_construct">
+        <doc xml:whitespace="preserve">Finish the initialization of @plug for a given #GtkSocket identified by</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="socket_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the XID of the socket's window.</doc>
+            <type name="Gdk.NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="construct_for_display"
+              c:identifier="gtk_plug_construct_for_display"
+              version="2.2">
+        <doc xml:whitespace="preserve">Finish the initialization of @plug for a given #GtkSocket identified by
+This function will generally only be used by classes deriving from #GtkPlug.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="display" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkDisplay associated with @socket_id's #GtkSocket.</doc>
+            <type name="Gdk.Display" c:type="GdkDisplay*"/>
+          </parameter>
+          <parameter name="socket_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the XID of the socket's window.</doc>
+            <type name="Gdk.NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_embedded"
+              c:identifier="gtk_plug_get_embedded"
+              version="2.14">
+        <doc xml:whitespace="preserve">Determines whether the plug is embedded in a socket.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the plug is embedded in a socket</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_id" c:identifier="gtk_plug_get_id">
+        <doc xml:whitespace="preserve">Gets the window ID of a #GtkPlug widget, which can then
+be used to embed this window inside another window, for
+instance with gtk_socket_add_id().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the window ID for the plug</doc>
+          <type name="Gdk.NativeWindow" c:type="GdkNativeWindow"/>
+        </return-value>
+      </method>
+      <method name="get_socket_window"
+              c:identifier="gtk_plug_get_socket_window"
+              version="2.14">
+        <doc xml:whitespace="preserve">Retrieves the socket the plug is embedded in.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the window of the socket, or %NULL</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <property name="embedded" version="2.12" transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the plug is embedded in a socket.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="socket-window" version="2.14" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The window of the socket the plug is embedded in.</doc>
+        <type name="Gdk.Window"/>
+      </property>
+      <field name="window">
+        <type name="Window" c:type="GtkWindow"/>
+      </field>
+      <field name="priv">
+        <type name="PlugPrivate" c:type="GtkPlugPrivate*"/>
+      </field>
+      <glib:signal name="embedded">
+        <doc xml:whitespace="preserve">Gets emitted when the plug becomes embedded in a socket.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="PlugClass"
+            c:type="GtkPlugClass"
+            glib:is-gtype-struct-for="Plug">
+      <field name="parent_class">
+        <type name="WindowClass" c:type="GtkWindowClass"/>
+      </field>
+      <field name="embedded">
+        <callback name="embedded">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="plug" transfer-ownership="none">
+              <type name="Plug" c:type="GtkPlug*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="PlugPrivate" c:type="GtkPlugPrivate" disguised="1">
+    </record>
+    <enumeration name="PolicyType"
+                 glib:type-name="GtkPolicyType"
+                 glib:get-type="gtk_policy_type_get_type"
+                 c:type="GtkPolicyType">
+      <member name="always"
+              value="0"
+              c:identifier="GTK_POLICY_ALWAYS"
+              glib:nick="always"/>
+      <member name="automatic"
+              value="1"
+              c:identifier="GTK_POLICY_AUTOMATIC"
+              glib:nick="automatic"/>
+      <member name="never"
+              value="2"
+              c:identifier="GTK_POLICY_NEVER"
+              glib:nick="never"/>
+    </enumeration>
+    <enumeration name="PositionType"
+                 glib:type-name="GtkPositionType"
+                 glib:get-type="gtk_position_type_get_type"
+                 c:type="GtkPositionType">
+      <member name="left"
+              value="0"
+              c:identifier="GTK_POS_LEFT"
+              glib:nick="left"/>
+      <member name="right"
+              value="1"
+              c:identifier="GTK_POS_RIGHT"
+              glib:nick="right"/>
+      <member name="top" value="2" c:identifier="GTK_POS_TOP" glib:nick="top"/>
+      <member name="bottom"
+              value="3"
+              c:identifier="GTK_POS_BOTTOM"
+              glib:nick="bottom"/>
+    </enumeration>
+    <class name="PrintContext"
+           c:symbol-prefix="print_context"
+           c:type="GtkPrintContext"
+           parent="GObject.Object"
+           glib:type-name="GtkPrintContext"
+           glib:get-type="gtk_print_context_get_type">
+      <method name="create_pango_context"
+              c:identifier="gtk_print_context_create_pango_context"
+              version="2.10">
+        <doc xml:whitespace="preserve">Creates a new #PangoContext that can be used with the
+#GtkPrintContext.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new Pango context for @context</doc>
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </return-value>
+      </method>
+      <method name="create_pango_layout"
+              c:identifier="gtk_print_context_create_pango_layout"
+              version="2.10">
+        <doc xml:whitespace="preserve">Creates a new #PangoLayout that is suitable for use
+with the #GtkPrintContext.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new Pango layout for @context</doc>
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </return-value>
+      </method>
+      <method name="get_cairo_context"
+              c:identifier="gtk_print_context_get_cairo_context"
+              version="2.10">
+        <doc xml:whitespace="preserve">Obtains the cairo context that is associated with the
+#GtkPrintContext.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the cairo context of @context</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </return-value>
+      </method>
+      <method name="get_dpi_x"
+              c:identifier="gtk_print_context_get_dpi_x"
+              version="2.10">
+        <doc xml:whitespace="preserve">Obtains the horizontal resolution of the #GtkPrintContext,
+in dots per inch.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the horizontal resolution of @context</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_dpi_y"
+              c:identifier="gtk_print_context_get_dpi_y"
+              version="2.10">
+        <doc xml:whitespace="preserve">Obtains the vertical resolution of the #GtkPrintContext,
+in dots per inch.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the vertical resolution of @context</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_hard_margins"
+              c:identifier="gtk_print_context_get_hard_margins"
+              version="2.20">
+        <doc xml:whitespace="preserve">Obtains the hardware printer margins of the #GtkPrintContext, in units.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the hard margins were retrieved</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="top" transfer-ownership="none">
+            <doc xml:whitespace="preserve">top hardware printer margin</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="bottom" transfer-ownership="none">
+            <doc xml:whitespace="preserve">bottom hardware printer margin</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="left" transfer-ownership="none">
+            <doc xml:whitespace="preserve">left hardware printer margin</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="right" transfer-ownership="none">
+            <doc xml:whitespace="preserve">right hardware printer margin</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_height"
+              c:identifier="gtk_print_context_get_height"
+              version="2.10">
+        <doc xml:whitespace="preserve">Obtains the height of the #GtkPrintContext, in pixels.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the height of @context</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_page_setup"
+              c:identifier="gtk_print_context_get_page_setup"
+              version="2.10">
+        <doc xml:whitespace="preserve">Obtains the #GtkPageSetup that determines the page
+dimensions of the #GtkPrintContext.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the page setup of @context</doc>
+          <type name="PageSetup" c:type="GtkPageSetup*"/>
+        </return-value>
+      </method>
+      <method name="get_pango_fontmap"
+              c:identifier="gtk_print_context_get_pango_fontmap"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns a #PangoFontMap that is suitable for use
+with the #GtkPrintContext.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the font map of @context</doc>
+          <type name="Pango.FontMap" c:type="PangoFontMap*"/>
+        </return-value>
+      </method>
+      <method name="get_width"
+              c:identifier="gtk_print_context_get_width"
+              version="2.10">
+        <doc xml:whitespace="preserve">Obtains the width of the #GtkPrintContext, in pixels.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width of @context</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_cairo_context"
+              c:identifier="gtk_print_context_set_cairo_context"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets a new cairo context on a print context. 
+This function is intended to be used when implementing
+an internal print preview, it is not needed for printing,
+since GTK+ itself creates a suitable cairo context in that
+case.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cr" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the cairo context</doc>
+            <type name="cairo.Context" c:type="cairo_t*"/>
+          </parameter>
+          <parameter name="dpi_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the horizontal resolution to use with @cr</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="dpi_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the vertical resolution to use with @cr</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <enumeration name="PrintDuplex"
+                 glib:type-name="GtkPrintDuplex"
+                 glib:get-type="gtk_print_duplex_get_type"
+                 c:type="GtkPrintDuplex">
+      <member name="simplex"
+              value="0"
+              c:identifier="GTK_PRINT_DUPLEX_SIMPLEX"
+              glib:nick="simplex"/>
+      <member name="horizontal"
+              value="1"
+              c:identifier="GTK_PRINT_DUPLEX_HORIZONTAL"
+              glib:nick="horizontal"/>
+      <member name="vertical"
+              value="2"
+              c:identifier="GTK_PRINT_DUPLEX_VERTICAL"
+              glib:nick="vertical"/>
+    </enumeration>
+    <enumeration name="PrintError"
+                 glib:type-name="GtkPrintError"
+                 glib:get-type="gtk_print_error_get_type"
+                 c:type="GtkPrintError"
+                 glib:error-quark="gtk_print_error_quark">
+      <member name="general"
+              value="0"
+              c:identifier="GTK_PRINT_ERROR_GENERAL"
+              glib:nick="general"/>
+      <member name="internal_error"
+              value="1"
+              c:identifier="GTK_PRINT_ERROR_INTERNAL_ERROR"
+              glib:nick="internal-error"/>
+      <member name="nomem"
+              value="2"
+              c:identifier="GTK_PRINT_ERROR_NOMEM"
+              glib:nick="nomem"/>
+      <member name="invalid_file"
+              value="3"
+              c:identifier="GTK_PRINT_ERROR_INVALID_FILE"
+              glib:nick="invalid-file"/>
+    </enumeration>
+    <class name="PrintOperation"
+           c:symbol-prefix="print_operation"
+           c:type="GtkPrintOperation"
+           parent="GObject.Object"
+           glib:type-name="GtkPrintOperation"
+           glib:get-type="gtk_print_operation_get_type"
+           glib:type-struct="PrintOperationClass">
+      <implements name="PrintOperationPreview"/>
+      <constructor name="new"
+                   c:identifier="gtk_print_operation_new"
+                   version="2.10">
+        <doc xml:whitespace="preserve">Creates a new #GtkPrintOperation.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkPrintOperation</doc>
+          <type name="PrintOperation" c:type="GtkPrintOperation*"/>
+        </return-value>
+      </constructor>
+      <method name="cancel"
+              c:identifier="gtk_print_operation_cancel"
+              version="2.10">
+        <doc xml:whitespace="preserve">Cancels a running print operation. This function may
+be called from a #GtkPrintOperation::begin-print, 
+#GtkPrintOperation::paginate or #GtkPrintOperation::draw-page
+signal handler to stop the currently running print 
+operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="draw_page_finish"
+              c:identifier="gtk_print_operation_draw_page_finish"
+              version="2.16">
+        <doc xml:whitespace="preserve">Signalize that drawing of particular page is complete.
+It is called after completion of page drawing (e.g. drawing in another
+thread).
+If gtk_print_operation_set_defer_drawing() was called before, then this function
+has to be called by application. In another case it is called by the library
+itself.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_default_page_setup"
+              c:identifier="gtk_print_operation_get_default_page_setup"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns the default page setup, see
+gtk_print_operation_set_default_page_setup().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the default page setup</doc>
+          <type name="PageSetup" c:type="GtkPageSetup*"/>
+        </return-value>
+      </method>
+      <method name="get_embed_page_setup"
+              c:identifier="gtk_print_operation_get_embed_page_setup"
+              version="2.18">
+        <doc xml:whitespace="preserve">Gets the value of #GtkPrintOperation::embed-page-setup property.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether page setup selection combos are embedded</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_error"
+              c:identifier="gtk_print_operation_get_error"
+              version="2.10"
+              throws="1">
+        <doc xml:whitespace="preserve">Call this when the result of a print operation is
+%GTK_PRINT_OPERATION_RESULT_ERROR, either as returned by 
+gtk_print_operation_run(), or in the #GtkPrintOperation::done signal 
+handler. The returned #GError will contain more details on what went wrong.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_has_selection"
+              c:identifier="gtk_print_operation_get_has_selection"
+              version="2.18">
+        <doc xml:whitespace="preserve">Gets the value of #GtkPrintOperation::has-selection property.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether there is a selection</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_n_pages_to_print"
+              c:identifier="gtk_print_operation_get_n_pages_to_print"
+              version="2.18">
+        <doc xml:whitespace="preserve">Returns the number of pages that will be printed.
+Note that this value is set during print preparation phase
+(%GTK_PRINT_STATUS_PREPARING), so this function should never be
+called before the data generation phase (%GTK_PRINT_STATUS_GENERATING_DATA).
+You can connect to the #GtkPrintOperation::status-changed signal
+and call gtk_print_operation_get_n_pages_to_print() when
+print status is %GTK_PRINT_STATUS_GENERATING_DATA.
+This is typically used to track the progress of print operation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of pages that will be printed</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_print_settings"
+              c:identifier="gtk_print_operation_get_print_settings"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns the current print settings.
+Note that the return value is %NULL until either
+gtk_print_operation_set_print_settings() or
+gtk_print_operation_run() have been called.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current print settings of @op.</doc>
+          <type name="PrintSettings" c:type="GtkPrintSettings*"/>
+        </return-value>
+      </method>
+      <method name="get_status"
+              c:identifier="gtk_print_operation_get_status"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns the status of the print operation. 
+Also see gtk_print_operation_get_status_string().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the status of the print operation</doc>
+          <type name="PrintStatus" c:type="GtkPrintStatus"/>
+        </return-value>
+      </method>
+      <method name="get_status_string"
+              c:identifier="gtk_print_operation_get_status_string"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns a string representation of the status of the 
+print operation. The string is translated and suitable
+for displaying the print status e.g. in a #GtkStatusbar.
+Use gtk_print_operation_get_status() to obtain a status
+value that is suitable for programmatic use. 
+of the print operation</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string representation of the status</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_support_selection"
+              c:identifier="gtk_print_operation_get_support_selection"
+              version="2.18">
+        <doc xml:whitespace="preserve">Gets the value of #GtkPrintOperation::support-selection property.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the application supports print of selection</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_finished"
+              c:identifier="gtk_print_operation_is_finished"
+              version="2.10">
+        <doc xml:whitespace="preserve">A convenience function to find out if the print operation
+is finished, either successfully (%GTK_PRINT_STATUS_FINISHED)
+or unsuccessfully (%GTK_PRINT_STATUS_FINISHED_ABORTED).
+can be in a non-finished state even after done has been called, as
+the operation status then tracks the print job status on the printer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if the print operation is finished.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="run"
+              c:identifier="gtk_print_operation_run"
+              version="2.10"
+              throws="1">
+        <doc xml:whitespace="preserve">Runs the print operation, by first letting the user modify
+print settings in the print dialog, and then print the document.
+Normally that this function does not return until the rendering of all 
+pages is complete. You can connect to the 
+#GtkPrintOperation::status-changed signal on @op to obtain some 
+information about the progress of the print operation. 
+Furthermore, it may use a recursive mainloop to show the print dialog.
+If you call gtk_print_operation_set_allow_async() or set the 
+#GtkPrintOperation:allow-async property the operation will run 
+asynchronously if this is supported on the platform. The 
+#GtkPrintOperation::done signal will be emitted with the result of the 
+operation when the it is done (i.e. when the dialog is canceled, or when 
+the print succeeds or fails).
+|[
+if (settings != NULL)
+gtk_print_operation_set_print_settings (print, settings);
+if (page_setup != NULL)
+gtk_print_operation_set_default_page_setup (print, page_setup);
+g_signal_connect (print, "begin-print", 
+G_CALLBACK (begin_print), &amp;data);
+g_signal_connect (print, "draw-page", 
+G_CALLBACK (draw_page), &amp;data);
+res = gtk_print_operation_run (print, 
+GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, 
+parent, 
+&amp;error);
+if (res == GTK_PRINT_OPERATION_RESULT_ERROR)
+{
+error_dialog = gtk_message_dialog_new (GTK_WINDOW (parent),
+GTK_DIALOG_DESTROY_WITH_PARENT,
+GTK_MESSAGE_ERROR,
+GTK_BUTTONS_CLOSE,
+"Error printing file:\n%s",
+error-&gt;message);
+g_signal_connect (error_dialog, "response", 
+G_CALLBACK (gtk_widget_destroy), NULL);
+gtk_widget_show (error_dialog);
+g_error_free (error);
+}
+else if (res == GTK_PRINT_OPERATION_RESULT_APPLY)
+{
+if (settings != NULL)
+g_object_unref (settings);
+settings = g_object_ref (gtk_print_operation_get_print_settings (print));
+}
+]|
+Note that gtk_print_operation_run() can only be called once on a
+given #GtkPrintOperation.
+%GTK_PRINT_OPERATION_RESULT_APPLY indicates that the printing was
+completed successfully. In this case, it is a good idea to obtain 
+the used print settings with gtk_print_operation_get_print_settings() 
+and store them for reuse with the next print operation. A value of
+%GTK_PRINT_OPERATION_RESULT_IN_PROGRESS means the operation is running
+asynchronously, and will emit the #GtkPrintOperation::done signal when 
+done.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the result of the print operation. A return value of</doc>
+          <type name="PrintOperationResult" c:type="GtkPrintOperationResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action to start</doc>
+            <type name="PrintOperationAction"
+                  c:type="GtkPrintOperationAction"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">Transient parent of the dialog</doc>
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_allow_async"
+              c:identifier="gtk_print_operation_set_allow_async"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets whether the gtk_print_operation_run() may return
+before the print operation is completed. Note that
+some platforms may not allow asynchronous operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="allow_async" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to allow asynchronous operation</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_current_page"
+              c:identifier="gtk_print_operation_set_current_page"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the current page.
+If this is called before gtk_print_operation_run(), 
+the user will be able to select to print only the current page.
+Note that this only makes sense for pre-paginated documents.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="current_page" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the current page, 0-based</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_custom_tab_label"
+              c:identifier="gtk_print_operation_set_custom_tab_label"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the label for the tab holding custom widgets.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the label to use, or %NULL to use the default label</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_default_page_setup"
+              c:identifier="gtk_print_operation_set_default_page_setup"
+              version="2.10">
+        <doc xml:whitespace="preserve">Makes @default_page_setup the default page setup for @op.
+This page setup will be used by gtk_print_operation_run(),
+but it can be overridden on a per-page basis by connecting
+to the #GtkPrintOperation::request-page-setup signal.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="default_page_setup"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkPageSetup, or %NULL</doc>
+            <type name="PageSetup" c:type="GtkPageSetup*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_defer_drawing"
+              c:identifier="gtk_print_operation_set_defer_drawing"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets up the #GtkPrintOperation to wait for calling of
+gtk_print_operation_draw_page_finish() from application. It can
+be used for drawing page in another thread.
+This function must be called in the callback of "draw-page" signal.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_embed_page_setup"
+              c:identifier="gtk_print_operation_set_embed_page_setup"
+              version="2.18">
+        <doc xml:whitespace="preserve">Embed page size combo box and orientation combo box into page setup page.
+Selected page setup is stored as default page setup in #GtkPrintOperation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="embed" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to embed page setup selection in the #GtkPrintDialog</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_export_filename"
+              c:identifier="gtk_print_operation_set_export_filename"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets up the #GtkPrintOperation to generate a file instead
+of showing the print dialog. The indended use of this function
+is for implementing "Export to PDF" actions. Currently, PDF
+is the only supported format.
+"Print to PDF" support is independent of this and is done
+by letting the user pick the "Print to PDF" item from the list
+of printers in the print dialog.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the filename for the exported file</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_has_selection"
+              c:identifier="gtk_print_operation_set_has_selection"
+              version="2.18">
+        <doc xml:whitespace="preserve">Sets whether there is a selection to print.
+Application has to set number of pages to which the selection
+will draw by gtk_print_operation_set_n_pages() in a callback of
+#GtkPrintOperation::begin-print.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="has_selection" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE indicates that a selection exists</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_job_name"
+              c:identifier="gtk_print_operation_set_job_name"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the name of the print job. The name is used to identify 
+the job (e.g. in monitoring applications like eggcups). 
+If you don't set a job name, GTK+ picks a default one by 
+numbering successive print jobs.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="job_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string that identifies the print job</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_n_pages"
+              c:identifier="gtk_print_operation_set_n_pages"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the number of pages in the document. 
+This &lt;emphasis&gt;must&lt;/emphasis&gt; be set to a positive number
+before the rendering starts. It may be set in a 
+#GtkPrintOperation::begin-print signal hander.
+Note that the page numbers passed to the 
+#GtkPrintOperation::request-page-setup 
+and #GtkPrintOperation::draw-page signals are 0-based, i.e. if 
+the user chooses to print all pages, the last ::draw-page signal 
+will be for page @n_pages - 1.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_pages" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of pages</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_print_settings"
+              c:identifier="gtk_print_operation_set_print_settings"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the print settings for @op. This is typically used to
+re-establish print settings from a previous print operation,
+see gtk_print_operation_run().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="print_settings"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">#GtkPrintSettings</doc>
+            <type name="PrintSettings" c:type="GtkPrintSettings*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_show_progress"
+              c:identifier="gtk_print_operation_set_show_progress"
+              version="2.10">
+        <doc xml:whitespace="preserve">If @show_progress is %TRUE, the print operation will show a 
+progress dialog during the print operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_progress" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to show a progress dialog</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_support_selection"
+              c:identifier="gtk_print_operation_set_support_selection"
+              version="2.18">
+        <doc xml:whitespace="preserve">Sets whether selection is supported by #GtkPrintOperation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="support_selection" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to support selection</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_track_print_status"
+              c:identifier="gtk_print_operation_set_track_print_status"
+              version="2.10">
+        <doc xml:whitespace="preserve">If track_status is %TRUE, the print operation will try to continue report
+on the status of the print job in the printer queues and printer. This
+can allow your application to show things like "out of paper" issues,
+and when the print job actually reaches the printer.
+This function is often implemented using some form of polling, so it should
+not be enabled unless needed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track_status" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to track status after printing</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_unit"
+              c:identifier="gtk_print_operation_set_unit"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets up the transformation for the cairo context obtained from
+#GtkPrintContext in such a way that distances are measured in 
+units of @unit.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the unit to use</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_full_page"
+              c:identifier="gtk_print_operation_set_use_full_page"
+              version="2.10">
+        <doc xml:whitespace="preserve">If @full_page is %TRUE, the transformation for the cairo context 
+obtained from #GtkPrintContext puts the origin at the top left 
+corner of the page (which may not be the top left corner of the 
+sheet, depending on page orientation and the number of pages per 
+sheet). Otherwise, the origin is at the top left corner of the
+imageable area (i.e. inside the margins).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="full_page" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to set up the #GtkPrintContext for the full page</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="allow-async"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Determines whether the print operation may run asynchronously or not.
+Some systems don't support asynchronous printing, but those that do
+will return %GTK_PRINT_OPERATION_RESULT_IN_PROGRESS as the status, and
+emit the #GtkPrintOperation::done signal when the operation is actually 
+done.
+The Windows port does not support asynchronous operation at all (this 
+is unlikely to change). On other platforms, all actions except for 
+%GTK_PRINT_OPERATION_ACTION_EXPORT support asynchronous operation.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="current-page"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The current page in the document.
+If this is set before gtk_print_operation_run(), 
+the user will be able to select to print only the current page.
+Note that this only makes sense for pre-paginated documents.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="custom-tab-label"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Used as the label of the tab containing custom widgets.
+Note that this property may be ignored on some platforms.
+If this is %NULL, GTK+ uses a default label.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="default-page-setup"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GtkPageSetup used by default.
+This page setup will be used by gtk_print_operation_run(),
+but it can be overridden on a per-page basis by connecting
+to the #GtkPrintOperation::request-page-setup signal.</doc>
+        <type name="PageSetup"/>
+      </property>
+      <property name="embed-page-setup"
+                version="2.18"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If %TRUE, page size combo box and orientation combo box are embedded into page setup page.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="export-filename"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The name of a file to generate instead of showing the print dialog. 
+Currently, PDF is the only supported format.
+The intended use of this property is for implementing 
+"Export to PDF" actions.
+"Print to PDF" support is independent of this and is done
+by letting the user pick the "Print to PDF" item from the 
+list of printers in the print dialog.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="has-selection"
+                version="2.18"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Determines whether there is a selection in your application.
+This can allow your application to print the selection.
+This is typically used to make a "Selection" button sensitive.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="job-name"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A string used to identify the job (e.g. in monitoring 
+applications like eggcups). 
+If you don't set a job name, GTK+ picks a default one 
+by numbering successive print jobs.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="n-pages"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The number of pages in the document. 
+This &lt;emphasis&gt;must&lt;/emphasis&gt; be set to a positive number
+before the rendering starts. It may be set in a 
+#GtkPrintOperation::begin-print signal hander.
+Note that the page numbers passed to the 
+#GtkPrintOperation::request-page-setup and 
+#GtkPrintOperation::draw-page signals are 0-based, i.e. if 
+the user chooses to print all pages, the last ::draw-page signal 
+will be for page @n_pages - 1.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="n-pages-to-print"
+                version="2.18"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The number of pages that will be printed.
+Note that this value is set during print preparation phase
+(%GTK_PRINT_STATUS_PREPARING), so this value should never be
+get before the data generation phase (%GTK_PRINT_STATUS_GENERATING_DATA).
+You can connect to the #GtkPrintOperation::status-changed signal
+and call gtk_print_operation_get_n_pages_to_print() when
+print status is %GTK_PRINT_STATUS_GENERATING_DATA.
+This is typically used to track the progress of print operation.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="print-settings"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GtkPrintSettings used for initializing the dialog.
+Setting this property is typically used to re-establish 
+print settings from a previous print operation, see 
+gtk_print_operation_run().</doc>
+        <type name="PrintSettings"/>
+      </property>
+      <property name="show-progress"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Determines whether to show a progress dialog during the 
+print operation.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="status" version="2.10" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The status of the print operation.</doc>
+        <type name="PrintStatus"/>
+      </property>
+      <property name="status-string" version="2.10" transfer-ownership="none">
+        <doc xml:whitespace="preserve">A string representation of the status of the print operation. 
+The string is translated and suitable for displaying the print 
+status e.g. in a #GtkStatusbar.
+See the #GtkPrintOperation:status property for a status value that 
+is suitable for programmatic use.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="support-selection"
+                version="2.18"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If %TRUE, the print operation will support print of selection.
+This allows the print dialog to show a "Selection" button.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="track-print-status"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If %TRUE, the print operation will try to continue report on 
+the status of the print job in the printer queues and printer. 
+This can allow your application to show things like "out of paper" 
+issues, and when the print job actually reaches the printer. 
+However, this is often implemented using polling, and should 
+not be enabled unless needed.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="unit"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The transformation for the cairo context obtained from
+#GtkPrintContext is set up in such a way that distances 
+are measured in units of @unit.</doc>
+        <type name="Unit"/>
+      </property>
+      <property name="use-full-page"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If %TRUE, the transformation for the cairo context obtained 
+from #GtkPrintContext puts the origin at the top left corner 
+of the page (which may not be the top left corner of the sheet, 
+depending on page orientation and the number of pages per sheet). 
+Otherwise, the origin is at the top left corner of the imageable 
+area (i.e. inside the margins).</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="PrintOperationPrivate" c:type="GtkPrintOperationPrivate*"/>
+      </field>
+      <glib:signal name="begin-print" version="2.10">
+        <doc xml:whitespace="preserve">Emitted after the user has finished changing print settings
+in the dialog, before the actual rendering starts. 
+A typical use for ::begin-print is to use the parameters from the
+#GtkPrintContext and paginate the document accordingly, and then
+set the number of pages with gtk_print_operation_set_n_pages().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkPrintContext for the current operation</doc>
+            <type name="PrintContext"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="create-custom-widget"
+                   version="2.10"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Emitted when displaying the print dialog. If you return a
+widget in a handler for this signal it will be added to a custom
+tab in the print dialog. You typically return a container widget
+with multiple widgets in it.
+The print dialog owns the returned widget, and its lifetime is not 
+controlled by the application. However, the widget is guaranteed 
+to stay around until the #GtkPrintOperation::custom-widget-apply 
+signal is emitted on the operation. Then you can read out any 
+information you need from the widgets.
+or %NULL</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">A custom widget that gets embedded in the print dialog,</doc>
+          <type name="GObject.Object"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="custom-widget-apply" version="2.10">
+        <doc xml:whitespace="preserve">Emitted right before #GtkPrintOperation::begin-print if you added
+a custom widget in the #GtkPrintOperation::create-custom-widget handler. 
+When you get this signal you should read the information from the 
+custom widgets, as the widgets are not guaraneed to be around at a 
+later time.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the custom widget added in create-custom-widget</doc>
+            <type name="Widget"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="done" version="2.10">
+        <doc xml:whitespace="preserve">Emitted when the print operation run has finished doing
+everything required for printing. 
+If @result is %GTK_PRINT_OPERATION_RESULT_ERROR then you can call
+gtk_print_operation_get_error() for more information.
+If you enabled print status tracking then 
+gtk_print_operation_is_finished() may still return %FALSE 
+after #GtkPrintOperation::done was emitted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the result of the print operation</doc>
+            <type name="PrintOperationResult"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="draw-page" version="2.10">
+        <doc xml:whitespace="preserve">Emitted for every page that is printed. The signal handler
+must render the @page_nr's page onto the cairo context obtained
+from @context using gtk_print_context_get_cairo_context().
+|[
+static void
+draw_page (GtkPrintOperation *operation,
+GtkPrintContext   *context,
+gint               page_nr,
+gpointer           user_data)
+{
+cairo_t *cr;
+PangoLayout *layout;
+gdouble width, text_height;
+gint layout_height;
+PangoFontDescription *desc;
+cr = gtk_print_context_get_cairo_context (context);
+width = gtk_print_context_get_width (context);
+cairo_rectangle (cr, 0, 0, width, HEADER_HEIGHT);
+cairo_set_source_rgb (cr, 0.8, 0.8, 0.8);
+cairo_fill (cr);
+layout = gtk_print_context_create_pango_layout (context);
+desc = pango_font_description_from_string ("sans 14");
+pango_layout_set_font_description (layout, desc);
+pango_font_description_free (desc);
+pango_layout_set_text (layout, "some text", -1);
+pango_layout_set_width (layout, width * PANGO_SCALE);
+pango_layout_set_alignment (layout, PANGO_ALIGN_CENTER);
+pango_layout_get_size (layout, NULL, &amp;layout_height);
+text_height = (gdouble)layout_height / PANGO_SCALE;
+cairo_move_to (cr, width / 2,  (HEADER_HEIGHT - text_height) / 2);
+pango_cairo_show_layout (cr, layout);
+g_object_unref (layout);
+}
+]|
+Use gtk_print_operation_set_use_full_page() and 
+gtk_print_operation_set_unit() before starting the print operation
+to set up the transformation of the cairo context according to your
+needs.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkPrintContext for the current operation</doc>
+            <type name="PrintContext"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of the currently printed page (0-based)</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="end-print" version="2.10">
+        <doc xml:whitespace="preserve">Emitted after all pages have been rendered. 
+A handler for this signal can clean up any resources that have
+been allocated in the #GtkPrintOperation::begin-print handler.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkPrintContext for the current operation</doc>
+            <type name="PrintContext"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="paginate" version="2.10">
+        <doc xml:whitespace="preserve">Emitted after the #GtkPrintOperation::begin-print signal, but before 
+the actual rendering starts. It keeps getting emitted until a connected 
+signal handler returns %TRUE.
+The ::paginate signal is intended to be used for paginating a document
+in small chunks, to avoid blocking the user interface for a long
+time. The signal handler should update the number of pages using
+gtk_print_operation_set_n_pages(), and return %TRUE if the document
+has been completely paginated.
+If you don't need to do pagination in chunks, you can simply do
+it all in the ::begin-print handler, and set the number of pages
+from there.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if pagination is complete</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkPrintContext for the current operation</doc>
+            <type name="PrintContext"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="preview" version="2.10">
+        <doc xml:whitespace="preserve">Gets emitted when a preview is requested from the native dialog.
+The default handler for this signal uses an external viewer 
+application to preview.
+To implement a custom print preview, an application must return
+%TRUE from its handler for this signal. In order to use the
+provided @context for the preview implementation, it must be
+given a suitable cairo context with gtk_print_context_set_cairo_context().
+The custom preview implementation can use 
+gtk_print_operation_preview_is_selected() and 
+gtk_print_operation_preview_render_page() to find pages which
+are selected for print and render them. The preview must be
+finished by calling gtk_print_operation_preview_end_preview()
+(typically in response to the user clicking a close button).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the listener wants to take over control of the preview</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkPrintPreviewOperation for the current operation</doc>
+            <type name="PrintOperationPreview"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkPrintContext that will be used</doc>
+            <type name="PrintContext"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the #GtkWindow to use as window parent, or %NULL</doc>
+            <type name="Window"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="request-page-setup" version="2.10">
+        <doc xml:whitespace="preserve">Emitted once for every page that is printed, to give
+the application a chance to modify the page setup. Any changes 
+done to @setup will be in force only for printing this page.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkPrintContext for the current operation</doc>
+            <type name="PrintContext"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of the currently printed page (0-based)</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkPageSetup</doc>
+            <type name="PageSetup"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="status-changed" version="2.10">
+        <doc xml:whitespace="preserve">Emitted at between the various phases of the print operation.
+See #GtkPrintStatus for the phases that are being discriminated.
+Use gtk_print_operation_get_status() to find out the current
+status.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="update-custom-widget" version="2.18">
+        <doc xml:whitespace="preserve">Emitted after change of selected printer. The actual page setup and
+print settings are passed to the custom widget, which can actualize
+itself according to this change.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the custom widget added in create-custom-widget</doc>
+            <type name="Widget"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">actual page setup</doc>
+            <type name="PageSetup"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">actual print settings</doc>
+            <type name="PrintSettings"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <enumeration name="PrintOperationAction"
+                 glib:type-name="GtkPrintOperationAction"
+                 glib:get-type="gtk_print_operation_action_get_type"
+                 c:type="GtkPrintOperationAction">
+      <member name="print_dialog"
+              value="0"
+              c:identifier="GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG"
+              glib:nick="print-dialog"/>
+      <member name="print"
+              value="1"
+              c:identifier="GTK_PRINT_OPERATION_ACTION_PRINT"
+              glib:nick="print"/>
+      <member name="preview"
+              value="2"
+              c:identifier="GTK_PRINT_OPERATION_ACTION_PREVIEW"
+              glib:nick="preview"/>
+      <member name="export"
+              value="3"
+              c:identifier="GTK_PRINT_OPERATION_ACTION_EXPORT"
+              glib:nick="export"/>
+    </enumeration>
+    <record name="PrintOperationClass"
+            c:type="GtkPrintOperationClass"
+            glib:is-gtype-struct-for="PrintOperation">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="done">
+        <callback name="done">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="operation" transfer-ownership="none">
+              <type name="PrintOperation" c:type="GtkPrintOperation*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <type name="PrintOperationResult"
+                    c:type="GtkPrintOperationResult"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="begin_print">
+        <callback name="begin_print">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="operation" transfer-ownership="none">
+              <type name="PrintOperation" c:type="GtkPrintOperation*"/>
+            </parameter>
+            <parameter name="context" transfer-ownership="none">
+              <type name="PrintContext" c:type="GtkPrintContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="paginate">
+        <callback name="paginate">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="operation" transfer-ownership="none">
+              <type name="PrintOperation" c:type="GtkPrintOperation*"/>
+            </parameter>
+            <parameter name="context" transfer-ownership="none">
+              <type name="PrintContext" c:type="GtkPrintContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="request_page_setup">
+        <callback name="request_page_setup">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="operation" transfer-ownership="none">
+              <type name="PrintOperation" c:type="GtkPrintOperation*"/>
+            </parameter>
+            <parameter name="context" transfer-ownership="none">
+              <type name="PrintContext" c:type="GtkPrintContext*"/>
+            </parameter>
+            <parameter name="page_nr" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="setup" transfer-ownership="none">
+              <type name="PageSetup" c:type="GtkPageSetup*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_page">
+        <callback name="draw_page">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="operation" transfer-ownership="none">
+              <type name="PrintOperation" c:type="GtkPrintOperation*"/>
+            </parameter>
+            <parameter name="context" transfer-ownership="none">
+              <type name="PrintContext" c:type="GtkPrintContext*"/>
+            </parameter>
+            <parameter name="page_nr" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="end_print">
+        <callback name="end_print">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="operation" transfer-ownership="none">
+              <type name="PrintOperation" c:type="GtkPrintOperation*"/>
+            </parameter>
+            <parameter name="context" transfer-ownership="none">
+              <type name="PrintContext" c:type="GtkPrintContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="status_changed">
+        <callback name="status_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="operation" transfer-ownership="none">
+              <type name="PrintOperation" c:type="GtkPrintOperation*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_custom_widget" introspectable="0">
+        <callback name="create_custom_widget" introspectable="0">
+          <return-value>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </return-value>
+          <parameters>
+            <parameter name="operation" transfer-ownership="none">
+              <type name="PrintOperation" c:type="GtkPrintOperation*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="custom_widget_apply">
+        <callback name="custom_widget_apply">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="operation" transfer-ownership="none">
+              <type name="PrintOperation" c:type="GtkPrintOperation*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="preview">
+        <callback name="preview">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="operation" transfer-ownership="none">
+              <type name="PrintOperation" c:type="GtkPrintOperation*"/>
+            </parameter>
+            <parameter name="preview" transfer-ownership="none">
+              <type name="PrintOperationPreview"
+                    c:type="GtkPrintOperationPreview*"/>
+            </parameter>
+            <parameter name="context" transfer-ownership="none">
+              <type name="PrintContext" c:type="GtkPrintContext*"/>
+            </parameter>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="Window" c:type="GtkWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="update_custom_widget">
+        <callback name="update_custom_widget">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="operation" transfer-ownership="none">
+              <type name="PrintOperation" c:type="GtkPrintOperation*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="setup" transfer-ownership="none">
+              <type name="PageSetup" c:type="GtkPageSetup*"/>
+            </parameter>
+            <parameter name="settings" transfer-ownership="none">
+              <type name="PrintSettings" c:type="GtkPrintSettings*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved5" introspectable="0">
+        <callback name="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved6" introspectable="0">
+        <callback name="_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <interface name="PrintOperationPreview"
+               c:symbol-prefix="print_operation_preview"
+               c:type="GtkPrintOperationPreview"
+               glib:type-name="GtkPrintOperationPreview"
+               glib:get-type="gtk_print_operation_preview_get_type"
+               glib:type-struct="PrintOperationPreviewIface">
+      <virtual-method name="end_preview" invoker="end_preview" version="2.10">
+        <doc xml:whitespace="preserve">Ends a preview. 
+This function must be called to finish a custom print preview.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="is_selected" invoker="is_selected" version="2.10">
+        <doc xml:whitespace="preserve">Returns whether the given page is included in the set of pages that
+have been selected for printing.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the page has been selected for printing</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_nr" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a page number</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="render_page" invoker="render_page" version="2.10">
+        <doc xml:whitespace="preserve">Renders a page to the preview, using the print context that
+was passed to the #GtkPrintOperation::preview handler together
+with @preview.
+A custom iprint preview should use this function in its ::expose
+handler to render the currently selected page.
+Note that this function requires a suitable cairo context to 
+be associated with the print context.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_nr" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the page to render</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="end_preview"
+              c:identifier="gtk_print_operation_preview_end_preview"
+              version="2.10">
+        <doc xml:whitespace="preserve">Ends a preview. 
+This function must be called to finish a custom print preview.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="is_selected"
+              c:identifier="gtk_print_operation_preview_is_selected"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns whether the given page is included in the set of pages that
+have been selected for printing.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the page has been selected for printing</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_nr" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a page number</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="render_page"
+              c:identifier="gtk_print_operation_preview_render_page"
+              version="2.10">
+        <doc xml:whitespace="preserve">Renders a page to the preview, using the print context that
+was passed to the #GtkPrintOperation::preview handler together
+with @preview.
+A custom iprint preview should use this function in its ::expose
+handler to render the currently selected page.
+Note that this function requires a suitable cairo context to 
+be associated with the print context.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_nr" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the page to render</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="got-page-size">
+        <doc xml:whitespace="preserve">The ::got-page-size signal is emitted once for each page
+that gets rendered to the preview. 
+A handler for this signal should update the @context
+according to @page_setup and set up a suitable cairo
+context, using gtk_print_context_set_cairo_context().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the current #GtkPrintContext</doc>
+            <type name="PrintContext"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkPageSetup for the current page</doc>
+            <type name="PageSetup"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="ready">
+        <doc xml:whitespace="preserve">The ::ready signal gets emitted once per preview operation,
+before the first page is rendered.
+A handler for this signal can be used for setup tasks.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the current #GtkPrintContext</doc>
+            <type name="PrintContext"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="PrintOperationPreviewIface"
+            c:type="GtkPrintOperationPreviewIface"
+            glib:is-gtype-struct-for="PrintOperationPreview">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="ready">
+        <callback name="ready">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="preview" transfer-ownership="none">
+              <type name="PrintOperationPreview"
+                    c:type="GtkPrintOperationPreview*"/>
+            </parameter>
+            <parameter name="context" transfer-ownership="none">
+              <type name="PrintContext" c:type="GtkPrintContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="got_page_size">
+        <callback name="got_page_size">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="preview" transfer-ownership="none">
+              <type name="PrintOperationPreview"
+                    c:type="GtkPrintOperationPreview*"/>
+            </parameter>
+            <parameter name="context" transfer-ownership="none">
+              <type name="PrintContext" c:type="GtkPrintContext*"/>
+            </parameter>
+            <parameter name="page_setup" transfer-ownership="none">
+              <type name="PageSetup" c:type="GtkPageSetup*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="render_page">
+        <callback name="render_page">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="preview" transfer-ownership="none">
+              <type name="PrintOperationPreview"
+                    c:type="GtkPrintOperationPreview*"/>
+            </parameter>
+            <parameter name="page_nr" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the page to render</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_selected">
+        <callback name="is_selected">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the page has been selected for printing</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preview" transfer-ownership="none">
+              <type name="PrintOperationPreview"
+                    c:type="GtkPrintOperationPreview*"/>
+            </parameter>
+            <parameter name="page_nr" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a page number</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="end_preview">
+        <callback name="end_preview">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="preview" transfer-ownership="none">
+              <type name="PrintOperationPreview"
+                    c:type="GtkPrintOperationPreview*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved5" introspectable="0">
+        <callback name="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved6" introspectable="0">
+        <callback name="_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved7" introspectable="0">
+        <callback name="_gtk_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="PrintOperationPrivate"
+            c:type="GtkPrintOperationPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="PrintOperationResult"
+                 glib:type-name="GtkPrintOperationResult"
+                 glib:get-type="gtk_print_operation_result_get_type"
+                 c:type="GtkPrintOperationResult">
+      <member name="error"
+              value="0"
+              c:identifier="GTK_PRINT_OPERATION_RESULT_ERROR"
+              glib:nick="error"/>
+      <member name="apply"
+              value="1"
+              c:identifier="GTK_PRINT_OPERATION_RESULT_APPLY"
+              glib:nick="apply"/>
+      <member name="cancel"
+              value="2"
+              c:identifier="GTK_PRINT_OPERATION_RESULT_CANCEL"
+              glib:nick="cancel"/>
+      <member name="in_progress"
+              value="3"
+              c:identifier="GTK_PRINT_OPERATION_RESULT_IN_PROGRESS"
+              glib:nick="in-progress"/>
+    </enumeration>
+    <enumeration name="PrintPages"
+                 glib:type-name="GtkPrintPages"
+                 glib:get-type="gtk_print_pages_get_type"
+                 c:type="GtkPrintPages">
+      <member name="all"
+              value="0"
+              c:identifier="GTK_PRINT_PAGES_ALL"
+              glib:nick="all"/>
+      <member name="current"
+              value="1"
+              c:identifier="GTK_PRINT_PAGES_CURRENT"
+              glib:nick="current"/>
+      <member name="ranges"
+              value="2"
+              c:identifier="GTK_PRINT_PAGES_RANGES"
+              glib:nick="ranges"/>
+      <member name="selection"
+              value="3"
+              c:identifier="GTK_PRINT_PAGES_SELECTION"
+              glib:nick="selection"/>
+    </enumeration>
+    <enumeration name="PrintQuality"
+                 glib:type-name="GtkPrintQuality"
+                 glib:get-type="gtk_print_quality_get_type"
+                 c:type="GtkPrintQuality">
+      <member name="low"
+              value="0"
+              c:identifier="GTK_PRINT_QUALITY_LOW"
+              glib:nick="low"/>
+      <member name="normal"
+              value="1"
+              c:identifier="GTK_PRINT_QUALITY_NORMAL"
+              glib:nick="normal"/>
+      <member name="high"
+              value="2"
+              c:identifier="GTK_PRINT_QUALITY_HIGH"
+              glib:nick="high"/>
+      <member name="draft"
+              value="3"
+              c:identifier="GTK_PRINT_QUALITY_DRAFT"
+              glib:nick="draft"/>
+    </enumeration>
+    <class name="PrintSettings"
+           c:symbol-prefix="print_settings"
+           c:type="GtkPrintSettings"
+           parent="GObject.Object"
+           glib:type-name="GtkPrintSettings"
+           glib:get-type="gtk_print_settings_get_type">
+      <constructor name="new"
+                   c:identifier="gtk_print_settings_new"
+                   version="2.10">
+        <doc xml:whitespace="preserve">Creates a new #GtkPrintSettings object.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkPrintSettings object</doc>
+          <type name="PrintSettings" c:type="GtkPrintSettings*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_file"
+                   c:identifier="gtk_print_settings_new_from_file"
+                   version="2.12"
+                   throws="1">
+        <doc xml:whitespace="preserve">Reads the print settings from @file_name. Returns a new #GtkPrintSettings
+object with the restored settings, or %NULL if an error occurred. If the
+file could not be loaded then error is set to either a #GFileError or
+#GKeyFileError.  See gtk_print_settings_to_file().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the restored #GtkPrintSettings</doc>
+          <type name="PrintSettings" c:type="GtkPrintSettings*"/>
+        </return-value>
+        <parameters>
+          <parameter name="file_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the filename to read the settings from</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_key_file"
+                   c:identifier="gtk_print_settings_new_from_key_file"
+                   version="2.12"
+                   throws="1">
+        <doc xml:whitespace="preserve">Reads the print settings from the group @group_name in @key_file.  Returns a
+new #GtkPrintSettings object with the restored settings, or %NULL if an
+error occurred. If the file could not be loaded then error is set to either
+a #GFileError or #GKeyFileError.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the restored #GtkPrintSettings</doc>
+          <type name="PrintSettings" c:type="GtkPrintSettings*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_file" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GKeyFile to retrieve the settings from</doc>
+            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
+          </parameter>
+          <parameter name="group_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the name of the group to use, or %NULL to use the default "Print Settings"</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="gtk_print_settings_copy"
+              version="2.10">
+        <doc xml:whitespace="preserve">Copies a #GtkPrintSettings object.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated copy of @other</doc>
+          <type name="PrintSettings" c:type="GtkPrintSettings*"/>
+        </return-value>
+      </method>
+      <method name="foreach"
+              c:identifier="gtk_print_settings_foreach"
+              version="2.10">
+        <doc xml:whitespace="preserve">Calls @func for each key-value pair of @settings.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">the function to call</doc>
+            <type name="PrintSettingsFunc" c:type="GtkPrintSettingsFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data for @func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get" c:identifier="gtk_print_settings_get" version="2.10">
+        <doc xml:whitespace="preserve">Looks up the string value associated with @key.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the string value for @key</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a key</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bool"
+              c:identifier="gtk_print_settings_get_bool"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns the boolean represented by the value
+that is associated with @key. 
+The string "true" represents %TRUE, any other 
+string %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if @key maps to a true value.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a key</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_collate"
+              c:identifier="gtk_print_settings_get_collate"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the value of %GTK_PRINT_SETTINGS_COLLATE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether to collate the printed pages</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_default_source"
+              c:identifier="gtk_print_settings_get_default_source"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the value of %GTK_PRINT_SETTINGS_DEFAULT_SOURCE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the default source</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_dither"
+              c:identifier="gtk_print_settings_get_dither"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the value of %GTK_PRINT_SETTINGS_DITHER.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the dithering that is used</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_double"
+              c:identifier="gtk_print_settings_get_double"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns the double value associated with @key, or 0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the double value of @key</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a key</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double_with_default"
+              c:identifier="gtk_print_settings_get_double_with_default"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns the floating point number represented by 
+the value that is associated with @key, or @default_val
+if the value does not represent a floating point number.
+Floating point numbers are parsed with g_ascii_strtod().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the floating point number associated with @key</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a key</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="def" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the default value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_duplex"
+              c:identifier="gtk_print_settings_get_duplex"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the value of %GTK_PRINT_SETTINGS_DUPLEX.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether to print the output in duplex.</doc>
+          <type name="PrintDuplex" c:type="GtkPrintDuplex"/>
+        </return-value>
+      </method>
+      <method name="get_finishings"
+              c:identifier="gtk_print_settings_get_finishings"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the value of %GTK_PRINT_SETTINGS_FINISHINGS.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the finishings</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_int"
+              c:identifier="gtk_print_settings_get_int"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns the integer value of @key, or 0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the integer value of @key</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a key</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int_with_default"
+              c:identifier="gtk_print_settings_get_int_with_default"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns the value of @key, interpreted as
+an integer, or the default value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the integer value of @key</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a key</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="def" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the default value</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_length"
+              c:identifier="gtk_print_settings_get_length"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns the value associated with @key, interpreted
+as a length. The returned value is converted to @units.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the length value of @key, converted to @unit</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a key</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the unit of the return value</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_media_type"
+              c:identifier="gtk_print_settings_get_media_type"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the value of %GTK_PRINT_SETTINGS_MEDIA_TYPE.
+The set of media types is defined in PWG 5101.1-2002 PWG.
+&lt;!-- FIXME link here --&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the media type</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_n_copies"
+              c:identifier="gtk_print_settings_get_n_copies"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the value of %GTK_PRINT_SETTINGS_N_COPIES.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of copies to print</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_number_up"
+              c:identifier="gtk_print_settings_get_number_up"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the value of %GTK_PRINT_SETTINGS_NUMBER_UP.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of pages per sheet</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_number_up_layout"
+              c:identifier="gtk_print_settings_get_number_up_layout"
+              version="2.14">
+        <doc xml:whitespace="preserve">Gets the value of %GTK_PRINT_SETTINGS_NUMBER_UP_LAYOUT.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">layout of page in number-up mode</doc>
+          <type name="NumberUpLayout" c:type="GtkNumberUpLayout"/>
+        </return-value>
+      </method>
+      <method name="get_orientation"
+              c:identifier="gtk_print_settings_get_orientation"
+              version="2.10">
+        <doc xml:whitespace="preserve">Get the value of %GTK_PRINT_SETTINGS_ORIENTATION, 
+converted to a #GtkPageOrientation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the orientation</doc>
+          <type name="PageOrientation" c:type="GtkPageOrientation"/>
+        </return-value>
+      </method>
+      <method name="get_output_bin"
+              c:identifier="gtk_print_settings_get_output_bin"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the value of %GTK_PRINT_SETTINGS_OUTPUT_BIN.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the output bin</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_page_ranges"
+              c:identifier="gtk_print_settings_get_page_ranges"
+              version="2.10"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the value of %GTK_PRINT_SETTINGS_PAGE_RANGES.
+Use g_free() to free the array when it is no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">an array of #GtkPageRange&lt;!-- --&gt;s.</doc>
+          <type name="PageRange" c:type="GtkPageRange*"/>
+        </return-value>
+        <parameters>
+          <parameter name="num_ranges" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the length of the returned array</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_page_set"
+              c:identifier="gtk_print_settings_get_page_set"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the value of %GTK_PRINT_SETTINGS_PAGE_SET.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the set of pages to print</doc>
+          <type name="PageSet" c:type="GtkPageSet"/>
+        </return-value>
+      </method>
+      <method name="get_paper_height"
+              c:identifier="gtk_print_settings_get_paper_height"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the value of %GTK_PRINT_SETTINGS_PAPER_HEIGHT,
+converted to @unit.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the paper height, in units of @unit</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the unit for the return value</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_paper_size"
+              c:identifier="gtk_print_settings_get_paper_size"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the value of %GTK_PRINT_SETTINGS_PAPER_FORMAT, 
+converted to a #GtkPaperSize.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the paper size</doc>
+          <type name="PaperSize" c:type="GtkPaperSize*"/>
+        </return-value>
+      </method>
+      <method name="get_paper_width"
+              c:identifier="gtk_print_settings_get_paper_width"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the value of %GTK_PRINT_SETTINGS_PAPER_WIDTH,
+converted to @unit.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the paper width, in units of @unit</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the unit for the return value</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_print_pages"
+              c:identifier="gtk_print_settings_get_print_pages"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the value of %GTK_PRINT_SETTINGS_PRINT_PAGES.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">which pages to print</doc>
+          <type name="PrintPages" c:type="GtkPrintPages"/>
+        </return-value>
+      </method>
+      <method name="get_printer"
+              c:identifier="gtk_print_settings_get_printer"
+              version="2.10">
+        <doc xml:whitespace="preserve">Convenience function to obtain the value of 
+%GTK_PRINT_SETTINGS_PRINTER.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the printer name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_printer_lpi"
+              c:identifier="gtk_print_settings_get_printer_lpi"
+              version="2.16">
+        <doc xml:whitespace="preserve">Gets the value of %GTK_PRINT_SETTINGS_PRINTER_LPI.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the resolution in lpi (lines per inch)</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_quality"
+              c:identifier="gtk_print_settings_get_quality"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the value of %GTK_PRINT_SETTINGS_QUALITY.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the print quality</doc>
+          <type name="PrintQuality" c:type="GtkPrintQuality"/>
+        </return-value>
+      </method>
+      <method name="get_resolution"
+              c:identifier="gtk_print_settings_get_resolution"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the value of %GTK_PRINT_SETTINGS_RESOLUTION.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the resolution in dpi</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_resolution_x"
+              c:identifier="gtk_print_settings_get_resolution_x"
+              version="2.16">
+        <doc xml:whitespace="preserve">Gets the value of %GTK_PRINT_SETTINGS_RESOLUTION_X.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the horizontal resolution in dpi</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_resolution_y"
+              c:identifier="gtk_print_settings_get_resolution_y"
+              version="2.16">
+        <doc xml:whitespace="preserve">Gets the value of %GTK_PRINT_SETTINGS_RESOLUTION_Y.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the vertical resolution in dpi</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_reverse"
+              c:identifier="gtk_print_settings_get_reverse"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the value of %GTK_PRINT_SETTINGS_REVERSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether to reverse the order of the printed pages</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_scale"
+              c:identifier="gtk_print_settings_get_scale"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the value of %GTK_PRINT_SETTINGS_SCALE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the scale in percent</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_use_color"
+              c:identifier="gtk_print_settings_get_use_color"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the value of %GTK_PRINT_SETTINGS_USE_COLOR.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether to use color</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_key"
+              c:identifier="gtk_print_settings_has_key"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns %TRUE, if a value is associated with @key.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if @key has a value</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a key</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_file"
+              c:identifier="gtk_print_settings_load_file"
+              version="2.14"
+              throws="1">
+        <doc xml:whitespace="preserve">Reads the print settings from @file_name. If the file could not be loaded
+then error is set to either a #GFileError or #GKeyFileError.
+See gtk_print_settings_to_file().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the filename to read the settings from</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_key_file"
+              c:identifier="gtk_print_settings_load_key_file"
+              version="2.14"
+              throws="1">
+        <doc xml:whitespace="preserve">Reads the print settings from the group @group_name in @key_file. If the
+file could not be loaded then error is set to either a #GFileError or
+#GKeyFileError.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_file" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GKeyFile to retrieve the settings from</doc>
+            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
+          </parameter>
+          <parameter name="group_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the name of the group to use, or %NULL to use the default "Print Settings"</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set" c:identifier="gtk_print_settings_set" version="2.10">
+        <doc xml:whitespace="preserve">Associates @value with @key.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a key</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a string value, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_bool"
+              c:identifier="gtk_print_settings_set_bool"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets @key to a boolean value.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a key</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a boolean</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_collate"
+              c:identifier="gtk_print_settings_set_collate"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the value of %GTK_PRINT_SETTINGS_COLLATE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="collate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to collate the output</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_default_source"
+              c:identifier="gtk_print_settings_set_default_source"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the value of %GTK_PRINT_SETTINGS_DEFAULT_SOURCE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="default_source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the default source</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_dither"
+              c:identifier="gtk_print_settings_set_dither"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the value of %GTK_PRINT_SETTINGS_DITHER.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dither" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the dithering that is used</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_double"
+              c:identifier="gtk_print_settings_set_double"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets @key to a double value.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a key</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a double value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_duplex"
+              c:identifier="gtk_print_settings_set_duplex"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the value of %GTK_PRINT_SETTINGS_DUPLEX.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="duplex" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkPrintDuplex value</doc>
+            <type name="PrintDuplex" c:type="GtkPrintDuplex"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_finishings"
+              c:identifier="gtk_print_settings_set_finishings"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the value of %GTK_PRINT_SETTINGS_FINISHINGS.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="finishings" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the finishings</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_int"
+              c:identifier="gtk_print_settings_set_int"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets @key to an integer value.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a key</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an integer</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_length"
+              c:identifier="gtk_print_settings_set_length"
+              version="2.10">
+        <doc xml:whitespace="preserve">Associates a length in units of @unit with @key.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a key</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a length</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the unit of @length</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_media_type"
+              c:identifier="gtk_print_settings_set_media_type"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the value of %GTK_PRINT_SETTINGS_MEDIA_TYPE.
+The set of media types is defined in PWG 5101.1-2002 PWG.
+&lt;!-- FIXME link here --&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="media_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the media type</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_n_copies"
+              c:identifier="gtk_print_settings_set_n_copies"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the value of %GTK_PRINT_SETTINGS_N_COPIES.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="num_copies" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of copies</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_number_up"
+              c:identifier="gtk_print_settings_set_number_up"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the value of %GTK_PRINT_SETTINGS_NUMBER_UP.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="number_up" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of pages per sheet</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_number_up_layout"
+              c:identifier="gtk_print_settings_set_number_up_layout"
+              version="2.14">
+        <doc xml:whitespace="preserve">Sets the value of %GTK_PRINT_SETTINGS_NUMBER_UP_LAYOUT.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="number_up_layout" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkNumberUpLayout value</doc>
+            <type name="NumberUpLayout" c:type="GtkNumberUpLayout"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_orientation"
+              c:identifier="gtk_print_settings_set_orientation"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the value of %GTK_PRINT_SETTINGS_ORIENTATION.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a page orientation</doc>
+            <type name="PageOrientation" c:type="GtkPageOrientation"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_output_bin"
+              c:identifier="gtk_print_settings_set_output_bin"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the value of %GTK_PRINT_SETTINGS_OUTPUT_BIN.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="output_bin" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the output bin</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_page_ranges"
+              c:identifier="gtk_print_settings_set_page_ranges"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the value of %GTK_PRINT_SETTINGS_PAGE_RANGES.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_ranges" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of #GtkPageRange&lt;!-- --&gt;s</doc>
+            <type name="PageRange" c:type="GtkPageRange*"/>
+          </parameter>
+          <parameter name="num_ranges" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of @page_ranges</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_page_set"
+              c:identifier="gtk_print_settings_set_page_set"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the value of %GTK_PRINT_SETTINGS_PAGE_SET.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_set" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkPageSet value</doc>
+            <type name="PageSet" c:type="GtkPageSet"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_paper_height"
+              c:identifier="gtk_print_settings_set_paper_height"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the value of %GTK_PRINT_SETTINGS_PAPER_HEIGHT.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the paper height</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the units of @height</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_paper_size"
+              c:identifier="gtk_print_settings_set_paper_size"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the value of %GTK_PRINT_SETTINGS_PAPER_FORMAT,
+%GTK_PRINT_SETTINGS_PAPER_WIDTH and
+%GTK_PRINT_SETTINGS_PAPER_HEIGHT.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="paper_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a paper size</doc>
+            <type name="PaperSize" c:type="GtkPaperSize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_paper_width"
+              c:identifier="gtk_print_settings_set_paper_width"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the value of %GTK_PRINT_SETTINGS_PAPER_WIDTH.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the paper width</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="unit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the units of @width</doc>
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_print_pages"
+              c:identifier="gtk_print_settings_set_print_pages"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the value of %GTK_PRINT_SETTINGS_PRINT_PAGES.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pages" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkPrintPages value</doc>
+            <type name="PrintPages" c:type="GtkPrintPages"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_printer"
+              c:identifier="gtk_print_settings_set_printer"
+              version="2.10">
+        <doc xml:whitespace="preserve">Convenience function to set %GTK_PRINT_SETTINGS_PRINTER
+to @printer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="printer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the printer name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_printer_lpi"
+              c:identifier="gtk_print_settings_set_printer_lpi"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets the value of %GTK_PRINT_SETTINGS_PRINTER_LPI.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="lpi" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the resolution in lpi (lines per inch)</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_quality"
+              c:identifier="gtk_print_settings_set_quality"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the value of %GTK_PRINT_SETTINGS_QUALITY.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="quality" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkPrintQuality value</doc>
+            <type name="PrintQuality" c:type="GtkPrintQuality"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_resolution"
+              c:identifier="gtk_print_settings_set_resolution"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the values of %GTK_PRINT_SETTINGS_RESOLUTION,
+%GTK_PRINT_SETTINGS_RESOLUTION_X and 
+%GTK_PRINT_SETTINGS_RESOLUTION_Y.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="resolution" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the resolution in dpi</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_resolution_xy"
+              c:identifier="gtk_print_settings_set_resolution_xy"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets the values of %GTK_PRINT_SETTINGS_RESOLUTION,
+%GTK_PRINT_SETTINGS_RESOLUTION_X and
+%GTK_PRINT_SETTINGS_RESOLUTION_Y.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="resolution_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the horizontal resolution in dpi</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="resolution_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the vertical resolution in dpi</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_reverse"
+              c:identifier="gtk_print_settings_set_reverse"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the value of %GTK_PRINT_SETTINGS_REVERSE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="reverse" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to reverse the output</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_scale"
+              c:identifier="gtk_print_settings_set_scale"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the value of %GTK_PRINT_SETTINGS_SCALE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scale" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the scale in percent</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_color"
+              c:identifier="gtk_print_settings_set_use_color"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the value of %GTK_PRINT_SETTINGS_USE_COLOR.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to use color</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_file"
+              c:identifier="gtk_print_settings_to_file"
+              version="2.12"
+              throws="1">
+        <doc xml:whitespace="preserve">This function saves the print settings from @settings to @file_name. If the
+file could not be loaded then error is set to either a #GFileError or
+#GKeyFileError.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the file to save to</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_key_file"
+              c:identifier="gtk_print_settings_to_key_file"
+              version="2.12">
+        <doc xml:whitespace="preserve">This function adds the print settings from @settings to @key_file.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_file" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GKeyFile to save the print settings to</doc>
+            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
+          </parameter>
+          <parameter name="group_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the group to add the settings to in @key_file, or %NULL to use the default "Print Settings"</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset"
+              c:identifier="gtk_print_settings_unset"
+              version="2.10">
+        <doc xml:whitespace="preserve">Removes any value associated with @key. 
+This has the same effect as setting the value to %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a key</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <callback name="PrintSettingsFunc" c:type="GtkPrintSettingsFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="key" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="PrintStatus"
+                 glib:type-name="GtkPrintStatus"
+                 glib:get-type="gtk_print_status_get_type"
+                 c:type="GtkPrintStatus">
+      <member name="initial"
+              value="0"
+              c:identifier="GTK_PRINT_STATUS_INITIAL"
+              glib:nick="initial"/>
+      <member name="preparing"
+              value="1"
+              c:identifier="GTK_PRINT_STATUS_PREPARING"
+              glib:nick="preparing"/>
+      <member name="generating_data"
+              value="2"
+              c:identifier="GTK_PRINT_STATUS_GENERATING_DATA"
+              glib:nick="generating-data"/>
+      <member name="sending_data"
+              value="3"
+              c:identifier="GTK_PRINT_STATUS_SENDING_DATA"
+              glib:nick="sending-data"/>
+      <member name="pending"
+              value="4"
+              c:identifier="GTK_PRINT_STATUS_PENDING"
+              glib:nick="pending"/>
+      <member name="pending_issue"
+              value="5"
+              c:identifier="GTK_PRINT_STATUS_PENDING_ISSUE"
+              glib:nick="pending-issue"/>
+      <member name="printing"
+              value="6"
+              c:identifier="GTK_PRINT_STATUS_PRINTING"
+              glib:nick="printing"/>
+      <member name="finished"
+              value="7"
+              c:identifier="GTK_PRINT_STATUS_FINISHED"
+              glib:nick="finished"/>
+      <member name="finished_aborted"
+              value="8"
+              c:identifier="GTK_PRINT_STATUS_FINISHED_ABORTED"
+              glib:nick="finished-aborted"/>
+    </enumeration>
+    <bitfield name="PrivateFlags"
+              glib:type-name="GtkPrivateFlags"
+              glib:get-type="gtk_private_flags_get_type"
+              c:type="GtkPrivateFlags">
+      <member name="user_style"
+              value="1"
+              c:identifier="PRIVATE_GTK_USER_STYLE"
+              glib:nick="user-style"/>
+      <member name="resize_pending"
+              value="4"
+              c:identifier="PRIVATE_GTK_RESIZE_PENDING"
+              glib:nick="resize-pending"/>
+      <member name="has_pointer"
+              value="8"
+              c:identifier="PRIVATE_GTK_HAS_POINTER"
+              glib:nick="has-pointer"/>
+      <member name="shadowed"
+              value="16"
+              c:identifier="PRIVATE_GTK_SHADOWED"
+              glib:nick="shadowed"/>
+      <member name="has_shape_mask"
+              value="32"
+              c:identifier="PRIVATE_GTK_HAS_SHAPE_MASK"
+              glib:nick="has-shape-mask"/>
+      <member name="in_reparent"
+              value="64"
+              c:identifier="PRIVATE_GTK_IN_REPARENT"
+              glib:nick="in-reparent"/>
+      <member name="direction_set"
+              value="128"
+              c:identifier="PRIVATE_GTK_DIRECTION_SET"
+              glib:nick="direction-set"/>
+      <member name="direction_ltr"
+              value="256"
+              c:identifier="PRIVATE_GTK_DIRECTION_LTR"
+              glib:nick="direction-ltr"/>
+      <member name="anchored"
+              value="512"
+              c:identifier="PRIVATE_GTK_ANCHORED"
+              glib:nick="anchored"/>
+      <member name="child_visible"
+              value="1024"
+              c:identifier="PRIVATE_GTK_CHILD_VISIBLE"
+              glib:nick="child-visible"/>
+      <member name="redraw_on_alloc"
+              value="2048"
+              c:identifier="PRIVATE_GTK_REDRAW_ON_ALLOC"
+              glib:nick="redraw-on-alloc"/>
+      <member name="alloc_needed"
+              value="4096"
+              c:identifier="PRIVATE_GTK_ALLOC_NEEDED"
+              glib:nick="alloc-needed"/>
+      <member name="width_request_needed"
+              value="8192"
+              c:identifier="PRIVATE_GTK_WIDTH_REQUEST_NEEDED"
+              glib:nick="width-request-needed"/>
+      <member name="height_request_needed"
+              value="16384"
+              c:identifier="PRIVATE_GTK_HEIGHT_REQUEST_NEEDED"
+              glib:nick="height-request-needed"/>
+    </bitfield>
+    <class name="ProgressBar"
+           c:symbol-prefix="progress_bar"
+           c:type="GtkProgressBar"
+           parent="Widget"
+           glib:type-name="GtkProgressBar"
+           glib:get-type="gtk_progress_bar_get_type"
+           glib:type-struct="ProgressBarClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_progress_bar_new">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="get_ellipsize"
+              c:identifier="gtk_progress_bar_get_ellipsize"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the ellipsizing position of the progressbar.
+See gtk_progress_bar_set_ellipsize().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#PangoEllipsizeMode</doc>
+          <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+        </return-value>
+      </method>
+      <method name="get_fraction" c:identifier="gtk_progress_bar_get_fraction">
+        <doc xml:whitespace="preserve">Returns the current fraction of the task that's been completed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a fraction from 0.0 to 1.0</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_inverted" c:identifier="gtk_progress_bar_get_inverted">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_progress_bar_set_inverted()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the progress bar is inverted</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_pulse_step"
+              c:identifier="gtk_progress_bar_get_pulse_step">
+        <doc xml:whitespace="preserve">Retrieves the pulse step set with gtk_progress_bar_set_pulse_step()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a fraction from 0.0 to 1.0</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_show_text"
+              c:identifier="gtk_progress_bar_get_show_text"
+              version="3.0">
+        <doc xml:whitespace="preserve">Gets the value of the #GtkProgressBar::show-text property.
+See gtk_progress_bar_set_show_text().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if text is shown in the progress bar</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_text" c:identifier="gtk_progress_bar_get_text">
+        <doc xml:whitespace="preserve">Retrieves the text displayed superimposed on the progress bar,
+if any, otherwise %NULL. The return value is a reference
+to the text, not a copy of it, so will become invalid
+if you change the text in the progress bar.
+and should not be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">text, or %NULL; this string is owned by the widget</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="pulse" c:identifier="gtk_progress_bar_pulse">
+        <doc xml:whitespace="preserve">Indicates that some progress is made, but you don't know how much.
+Causes the progress bar to enter "activity mode," where a block
+bounces back and forth. Each call to gtk_progress_bar_pulse()
+causes the block to move by a little bit (the amount of movement
+per pulse is determined by gtk_progress_bar_set_pulse_step()).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_ellipsize"
+              c:identifier="gtk_progress_bar_set_ellipsize"
+              version="2.6">
+        <doc xml:whitespace="preserve">if there is not enough space to render the entire string.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoEllipsizeMode</doc>
+            <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fraction" c:identifier="gtk_progress_bar_set_fraction">
+        <doc xml:whitespace="preserve">Causes the progress bar to "fill in" the given fraction
+of the bar. The fraction should be between 0.0 and 1.0,
+inclusive.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fraction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">fraction of the task that's been completed</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_inverted" c:identifier="gtk_progress_bar_set_inverted">
+        <doc xml:whitespace="preserve">Progress bars normally grow from top to bottom or left to right.
+Inverted progress bars grow in the opposite direction.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="inverted" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to invert the progress bar</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pulse_step"
+              c:identifier="gtk_progress_bar_set_pulse_step">
+        <doc xml:whitespace="preserve">Sets the fraction of total progress bar length to move the
+bouncing block for each call to gtk_progress_bar_pulse().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fraction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">fraction between 0.0 and 1.0</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_show_text"
+              c:identifier="gtk_progress_bar_set_show_text"
+              version="3.0">
+        <doc xml:whitespace="preserve">Sets whether the progressbar will show text superimposed
+over the bar. The shown text is either the value of
+the #GtkProgressBar::text property or, if that is %NULL,
+the #GtkProgressBar::fraction value, as a percentage.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to show superimposed text</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_text" c:identifier="gtk_progress_bar_set_text">
+        <doc xml:whitespace="preserve">Causes the given @text to appear superimposed on the progress bar.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a UTF-8 string, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="ellipsize"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The preferred place to ellipsize the string, if the progressbar does
+not have enough room to display the entire string, specified as a
+#PangoEllisizeMode.
+Note that setting this property to a value other than
+%PANGO_ELLIPSIZE_NONE has the side-effect that the progressbar requests
+only enough space to display the ellipsis "...". Another means to set a
+progressbar's width is gtk_widget_set_size_request().</doc>
+        <type name="Pango.EllipsizeMode"/>
+      </property>
+      <property name="fraction" writable="1" transfer-ownership="none">
+        <type name="gdouble"/>
+      </property>
+      <property name="inverted" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="pulse-step" writable="1" transfer-ownership="none">
+        <type name="gdouble"/>
+      </property>
+      <property name="show-text" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="text" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <field name="parent">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="ProgressBarPrivate" c:type="GtkProgressBarPrivate*"/>
+      </field>
+    </class>
+    <record name="ProgressBarClass"
+            c:type="GtkProgressBarClass"
+            glib:is-gtype-struct-for="ProgressBar">
+      <field name="parent_class">
+        <type name="WidgetClass" c:type="GtkWidgetClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved5" introspectable="0">
+        <callback name="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved6" introspectable="0">
+        <callback name="_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved7" introspectable="0">
+        <callback name="_gtk_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved8" introspectable="0">
+        <callback name="_gtk_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ProgressBarPrivate"
+            c:type="GtkProgressBarPrivate"
+            disguised="1">
+    </record>
+    <class name="RadioAction"
+           c:symbol-prefix="radio_action"
+           c:type="GtkRadioAction"
+           parent="ToggleAction"
+           glib:type-name="GtkRadioAction"
+           glib:get-type="gtk_radio_action_get_type"
+           glib:type-struct="RadioActionClass">
+      <implements name="Buildable"/>
+      <constructor name="new"
+                   c:identifier="gtk_radio_action_new"
+                   version="2.4">
+        <doc xml:whitespace="preserve">Creates a new #GtkRadioAction object. To add the action to
+a #GtkActionGroup and set the accelerator for the action,
+call gtk_action_group_add_action_with_accel().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkRadioAction</doc>
+          <type name="RadioAction" c:type="GtkRadioAction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A unique name for the action</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="label" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">The label displayed in menu items and on buttons, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tooltip" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A tooltip for this action, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="stock_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The stock icon to display in widgets representing this action, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The value which gtk_radio_action_get_current_value() should return if this action is selected.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_current_value"
+              c:identifier="gtk_radio_action_get_current_value"
+              version="2.4">
+        <doc xml:whitespace="preserve">Obtains the value property of the currently active member of 
+the group to which @action belongs.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The value of the currently active group member</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_group"
+              c:identifier="gtk_radio_action_get_group"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the list representing the radio group for this object.
+Note that the returned list is only valid until the next change
+to the group. 
+A common way to set up a group of radio group is the following:
+|[
+GSList *group = NULL;
+GtkRadioAction *action;
+while (/&amp;ast; more actions to add &amp;ast;/)
+{
+action = gtk_radio_action_new (...);
+gtk_radio_action_set_group (action, group);
+group = gtk_radio_action_get_group (action);
+}
+]|</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the list representing the radio group for this object</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="RadioAction"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="join_group"
+              c:identifier="gtk_radio_action_join_group"
+              version="3.0">
+        <doc xml:whitespace="preserve">Joins a radio action object to the group of another radio action object.
+Use this in language bindings instead of the gtk_radio_action_get_group() 
+and gtk_radio_action_set_group() methods
+A common way to set up a group of radio actions is the following:
+|[
+GtkRadioAction *action;
+GtkRadioAction *last_action;
+while (/&amp;ast; more actions to add &amp;ast;/)
+{
+action = gtk_radio_action_new (...);
+gtk_radio_action_join_group (action, last_action);
+last_action = action;
+}
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_source"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a radio action object whos group we are joining, or %NULL to remove the radio action from its group</doc>
+            <type name="RadioAction" c:type="GtkRadioAction*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_current_value"
+              c:identifier="gtk_radio_action_set_current_value"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the currently active group member to the member with value
+property @current_value.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="current_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new value</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_group"
+              c:identifier="gtk_radio_action_set_group"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the radio group for the radio action object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a list representing a radio group</doc>
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="RadioAction"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="current-value"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The value property of the currently active member of the group to which
+this action belongs.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="group"
+                version="2.4"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Sets a new group for a radio action.</doc>
+        <type name="RadioAction"/>
+      </property>
+      <property name="value"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The value is an arbitrary integer which can be used as a
+convenient way to determine which action in the group is 
+currently active in an ::activate or ::changed signal handler.
+See gtk_radio_action_get_current_value() and #GtkRadioActionEntry
+for convenient ways to get and set this property.</doc>
+        <type name="gint"/>
+      </property>
+      <field name="parent">
+        <type name="ToggleAction" c:type="GtkToggleAction"/>
+      </field>
+      <field name="private_data">
+        <type name="RadioActionPrivate" c:type="GtkRadioActionPrivate*"/>
+      </field>
+      <glib:signal name="changed" version="2.4">
+        <doc xml:whitespace="preserve">The ::changed signal is emitted on every member of a radio group when the
+active member is changed. The signal gets emitted after the ::activate signals
+for the previous and current active members.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the member of @action&lt;!-- --&gt;s group which has just been activated</doc>
+            <type name="RadioAction"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="RadioActionClass"
+            c:type="GtkRadioActionClass"
+            glib:is-gtype-struct-for="RadioAction">
+      <field name="parent_class">
+        <type name="ToggleActionClass" c:type="GtkToggleActionClass"/>
+      </field>
+      <field name="changed">
+        <callback name="changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="RadioAction" c:type="GtkRadioAction*"/>
+            </parameter>
+            <parameter name="current" transfer-ownership="none">
+              <type name="RadioAction" c:type="GtkRadioAction*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="RadioActionEntry" c:type="GtkRadioActionEntry">
+      <doc xml:whitespace="preserve">#GtkRadioActionEntry structs are used with
+gtk_action_group_add_radio_actions() to construct groups of radio actions.</doc>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="stock_id" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="label" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="accelerator" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="tooltip" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+    </record>
+    <record name="RadioActionPrivate"
+            c:type="GtkRadioActionPrivate"
+            disguised="1">
+    </record>
+    <class name="RadioButton"
+           c:symbol-prefix="radio_button"
+           c:type="GtkRadioButton"
+           parent="CheckButton"
+           glib:type-name="GtkRadioButton"
+           glib:get-type="gtk_radio_button_get_type"
+           glib:type-struct="RadioButtonClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Activatable"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_radio_button_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkRadioButton. To be of any practical value, a widget should
+then be packed into the radio button.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new radio button</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an existing radio button group, or %NULL if you are creating a new group.</doc>
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_label"
+                   c:identifier="gtk_radio_button_new_with_label">
+        <doc xml:whitespace="preserve">Creates a new #GtkRadioButton with a text label.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new radio button.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an existing radio button group, or %NULL if you are creating a new group.</doc>
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text label to display next to the radio button.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_mnemonic"
+                   c:identifier="gtk_radio_button_new_with_mnemonic">
+        <doc xml:whitespace="preserve">Creates a new #GtkRadioButton containing a label, adding it to the same
+group as @group. The label will be created using
+gtk_label_new_with_mnemonic(), so underscores in @label indicate the
+mnemonic for the button.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkRadioButton</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the radio button group</doc>
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text of the button, with an underscore in front of the mnemonic character</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_group" c:identifier="gtk_radio_button_get_group">
+        <doc xml:whitespace="preserve">Retrieves the group assigned to a radio button.
+containing all the radio buttons in the same group
+as @radio_button. The returned list is owned by the radio button
+and must not be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a linked list</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="RadioButton"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="join_group"
+              c:identifier="gtk_radio_button_join_group"
+              version="3.0">
+        <doc xml:whitespace="preserve">Joins a #GtkRadioButton object to the group of another #GtkRadioButton object
+Use this in language bindings instead of the gtk_radio_button_get_group() 
+and gtk_radio_button_set_group() methods
+A common way to set up a group of radio buttons is the following:
+|[
+GtkRadioButton *radio_button;
+GtkRadioButton *last_button;
+while (/&amp;ast; more buttons to add &amp;ast;/)
+{
+radio_button = gtk_radio_button_new (...);
+gtk_radio_button_join_group (radio_button, last_button);
+last_button = radio_button;
+}
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_source"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a radio button object whos group we are joining, or %NULL to remove the radio button from its group</doc>
+            <type name="RadioButton" c:type="GtkRadioButton*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="new_from_widget"
+              c:identifier="gtk_radio_button_new_from_widget">
+        <doc xml:whitespace="preserve">Creates a new #GtkRadioButton, adding it to the same group as
+should be packed into the radio button.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new radio button.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="new_with_label_from_widget"
+              c:identifier="gtk_radio_button_new_with_label_from_widget">
+        <doc xml:whitespace="preserve">Creates a new #GtkRadioButton with a text label, adding it to
+the same group as @radio_group_member.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new radio button.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a text string to display next to the radio button.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="new_with_mnemonic_from_widget"
+              c:identifier="gtk_radio_button_new_with_mnemonic_from_widget">
+        <doc xml:whitespace="preserve">Creates a new #GtkRadioButton containing a label. The label
+will be created using gtk_label_new_with_mnemonic(), so underscores
+in @label indicate the mnemonic for the button.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkRadioButton</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text of the button, with an underscore in front of the mnemonic character</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_group" c:identifier="gtk_radio_button_set_group">
+        <doc xml:whitespace="preserve">Sets a #GtkRadioButton's group. It should be noted that this does not change
+the layout of your interface in any way, so if you are changing the group,
+it is likely you will need to re-arrange the user interface to reflect these
+changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an existing radio button group, such as one returned from gtk_radio_button_get_group().</doc>
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="RadioButton"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="group"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Sets a new group for a radio button.</doc>
+        <type name="RadioButton"/>
+      </property>
+      <field name="check_button">
+        <type name="CheckButton" c:type="GtkCheckButton"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="RadioButtonPrivate" c:type="GtkRadioButtonPrivate*"/>
+      </field>
+      <glib:signal name="group-changed" version="2.4">
+        <doc xml:whitespace="preserve">Emitted when the group of radio buttons that a radio button belongs
+to changes. This is emitted when a radio button switches from
+being alone to being part of a group of 2 or more buttons, or
+vice-versa, and when a button is moved from one group of 2 or
+more buttons to a different one, but not when the composition
+of the group that a button belongs to changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="RadioButtonClass"
+            c:type="GtkRadioButtonClass"
+            glib:is-gtype-struct-for="RadioButton">
+      <field name="parent_class">
+        <type name="CheckButtonClass" c:type="GtkCheckButtonClass"/>
+      </field>
+      <field name="group_changed">
+        <callback name="group_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="radio_button" transfer-ownership="none">
+              <type name="RadioButton" c:type="GtkRadioButton*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="RadioButtonPrivate"
+            c:type="GtkRadioButtonPrivate"
+            disguised="1">
+    </record>
+    <class name="RadioMenuItem"
+           c:symbol-prefix="radio_menu_item"
+           c:type="GtkRadioMenuItem"
+           parent="CheckMenuItem"
+           glib:type-name="GtkRadioMenuItem"
+           glib:get-type="gtk_radio_menu_item_get_type"
+           glib:type-struct="RadioMenuItemClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Activatable"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_radio_menu_item_new">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_label"
+                   c:identifier="gtk_radio_menu_item_new_with_label">
+        <doc xml:whitespace="preserve">Creates a new #GtkRadioMenuItem whose child is a simple #GtkLabel.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A new #GtkRadioMenuItem</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="full">
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="RadioMenuItem"/>
+            </type>
+          </parameter>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text for the label</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_mnemonic"
+                   c:identifier="gtk_radio_menu_item_new_with_mnemonic">
+        <doc xml:whitespace="preserve">Creates a new #GtkRadioMenuItem containing a label. The label
+will be created using gtk_label_new_with_mnemonic(), so underscores
+in @label indicate the mnemonic for the menu item.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkRadioMenuItem</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <doc xml:whitespace="preserve">group the radio menu item is inside</doc>
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text of the button, with an underscore in front of the mnemonic character</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_group" c:identifier="gtk_radio_menu_item_get_group">
+        <doc xml:whitespace="preserve">Returns the group to which the radio menu item belongs, as a #GList of
+#GtkRadioMenuItem. The list belongs to GTK+ and should not be freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the group of @radio_menu_item</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="new_from_widget"
+              c:identifier="gtk_radio_menu_item_new_from_widget"
+              version="2.4">
+        <doc xml:whitespace="preserve">Creates a new #GtkRadioMenuItem adding it to the same group as @group.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The new #GtkRadioMenuItem</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="new_with_label_from_widget"
+              c:identifier="gtk_radio_menu_item_new_with_label_from_widget"
+              version="2.4">
+        <doc xml:whitespace="preserve">Creates a new GtkRadioMenuItem whose child is a simple GtkLabel.
+The new #GtkRadioMenuItem is added to the same group as @group.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The new #GtkRadioMenuItem</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text for the label</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="new_with_mnemonic_from_widget"
+              c:identifier="gtk_radio_menu_item_new_with_mnemonic_from_widget"
+              version="2.4">
+        <doc xml:whitespace="preserve">Creates a new GtkRadioMenuItem containing a label. The label will be
+created using gtk_label_new_with_mnemonic(), so underscores in label
+indicate the mnemonic for the menu item.
+The new #GtkRadioMenuItem is added to the same group as @group.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The new #GtkRadioMenuItem</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text of the button, with an underscore in front of the mnemonic character</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_group" c:identifier="gtk_radio_menu_item_set_group">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="group"
+                version="2.8"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The radio menu item whose group this widget belongs to.</doc>
+        <type name="RadioMenuItem"/>
+      </property>
+      <field name="check_menu_item">
+        <type name="CheckMenuItem" c:type="GtkCheckMenuItem"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="RadioMenuItemPrivate" c:type="GtkRadioMenuItemPrivate*"/>
+      </field>
+      <glib:signal name="group-changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="RadioMenuItemClass"
+            c:type="GtkRadioMenuItemClass"
+            glib:is-gtype-struct-for="RadioMenuItem">
+      <field name="parent_class">
+        <type name="CheckMenuItemClass" c:type="GtkCheckMenuItemClass"/>
+      </field>
+      <field name="group_changed">
+        <callback name="group_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="radio_menu_item" transfer-ownership="none">
+              <type name="RadioMenuItem" c:type="GtkRadioMenuItem*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="RadioMenuItemPrivate"
+            c:type="GtkRadioMenuItemPrivate"
+            disguised="1">
+    </record>
+    <class name="RadioToolButton"
+           c:symbol-prefix="radio_tool_button"
+           c:type="GtkRadioToolButton"
+           parent="ToggleToolButton"
+           glib:type-name="GtkRadioToolButton"
+           glib:get-type="gtk_radio_tool_button_get_type"
+           glib:type-struct="RadioToolButtonClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Activatable"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new"
+                   c:identifier="gtk_radio_tool_button_new"
+                   version="2.4">
+        <doc xml:whitespace="preserve">Creates a new #GtkRadioToolButton, adding it to @group.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The new #GtkRadioToolButton</doc>
+          <type name="ToolItem" c:type="GtkToolItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">An existing radio button group, or %NULL if you are creating a new group</doc>
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_stock"
+                   c:identifier="gtk_radio_tool_button_new_from_stock"
+                   version="2.4">
+        <doc xml:whitespace="preserve">Creates a new #GtkRadioToolButton, adding it to @group. 
+The new #GtkRadioToolButton will contain an icon and label from the
+stock item indicated by @stock_id.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The new #GtkRadioToolItem</doc>
+          <type name="ToolItem" c:type="GtkToolItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an existing radio button group, or %NULL if you are creating a new group</doc>
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+          <parameter name="stock_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a stock item</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_group"
+              c:identifier="gtk_radio_tool_button_get_group"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the radio button group @button belongs to.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The group @button belongs to.</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="new_from_widget"
+              c:identifier="gtk_radio_tool_button_new_from_widget"
+              version="2.4">
+        <doc xml:whitespace="preserve">Creates a new #GtkRadioToolButton adding it to the same group as @gruup</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The new #GtkRadioToolButton</doc>
+          <type name="ToolItem" c:type="GtkToolItem*"/>
+        </return-value>
+      </method>
+      <method name="new_with_stock_from_widget"
+              c:identifier="gtk_radio_tool_button_new_with_stock_from_widget"
+              version="2.4">
+        <doc xml:whitespace="preserve">Creates a new #GtkRadioToolButton adding it to the same group as @group.
+The new #GtkRadioToolButton will contain an icon and label from the
+stock item indicated by @stock_id.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A new #GtkRadioToolButton</doc>
+          <type name="ToolItem" c:type="GtkToolItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a stock item</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_group"
+              c:identifier="gtk_radio_tool_button_set_group"
+              version="2.4">
+        <doc xml:whitespace="preserve">Adds @button to @group, removing it from the group it belonged to before.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an existing radio button group</doc>
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="group"
+                version="2.4"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Sets a new group for a radio tool button.</doc>
+        <type name="RadioToolButton"/>
+      </property>
+      <field name="parent">
+        <type name="ToggleToolButton" c:type="GtkToggleToolButton"/>
+      </field>
+    </class>
+    <record name="RadioToolButtonClass"
+            c:type="GtkRadioToolButtonClass"
+            glib:is-gtype-struct-for="RadioToolButton">
+      <field name="parent_class">
+        <type name="ToggleToolButtonClass" c:type="GtkToggleToolButtonClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="Range"
+           c:symbol-prefix="range"
+           c:type="GtkRange"
+           parent="Widget"
+           abstract="1"
+           glib:type-name="GtkRange"
+           glib:get-type="gtk_range_get_type"
+           glib:type-struct="RangeClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <virtual-method name="get_range_border">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="border_" transfer-ownership="none">
+            <type name="Border" c:type="GtkBorder*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_adjustment" c:identifier="gtk_range_get_adjustment">
+        <doc xml:whitespace="preserve">Get the #GtkAdjustment which is the "model" object for #GtkRange.
+See gtk_range_set_adjustment() for details.
+The return value does not have a reference added, so should not
+be unreferenced.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkAdjustment</doc>
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="get_fill_level"
+              c:identifier="gtk_range_get_fill_level"
+              version="2.12">
+        <doc xml:whitespace="preserve">Gets the current position of the fill level indicator.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The current fill level</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_flippable"
+              c:identifier="gtk_range_get_flippable"
+              version="2.18">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_range_set_flippable().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the range is flippable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_inverted" c:identifier="gtk_range_get_inverted">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_range_set_inverted().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the range is inverted</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_lower_stepper_sensitivity"
+              c:identifier="gtk_range_get_lower_stepper_sensitivity"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the sensitivity policy for the stepper that points to the
+'lower' end of the GtkRange's adjustment.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The lower stepper's sensitivity policy.</doc>
+          <type name="SensitivityType" c:type="GtkSensitivityType"/>
+        </return-value>
+      </method>
+      <method name="get_min_slider_size"
+              c:identifier="gtk_range_get_min_slider_size"
+              version="2.20">
+        <doc xml:whitespace="preserve">This function is useful mainly for #GtkRange subclasses.
+See gtk_range_set_min_slider_size().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The minimum size of the range's slider.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_range_rect"
+              c:identifier="gtk_range_get_range_rect"
+              version="2.20">
+        <doc xml:whitespace="preserve">This function returns the area that contains the range's trough
+and its steppers, in widget-&gt;window coordinates.
+This function is useful mainly for #GtkRange subclasses.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="range_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the range rectangle</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_restrict_to_fill_level"
+              c:identifier="gtk_range_get_restrict_to_fill_level"
+              version="2.12">
+        <doc xml:whitespace="preserve">Gets whether the range is restricted to the fill level.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @range is restricted to the fill level.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_show_fill_level"
+              c:identifier="gtk_range_get_show_fill_level"
+              version="2.12">
+        <doc xml:whitespace="preserve">Gets whether the range displays the fill level graphically.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @range shows the fill level.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_slider_range"
+              c:identifier="gtk_range_get_slider_range"
+              version="2.20">
+        <doc xml:whitespace="preserve">This function returns sliders range along the long dimension,
+in widget-&gt;window coordinates.
+This function is useful mainly for #GtkRange subclasses.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="slider_start"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the slider's start, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="slider_end"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the slider's end, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_slider_size_fixed"
+              c:identifier="gtk_range_get_slider_size_fixed"
+              version="2.20">
+        <doc xml:whitespace="preserve">This function is useful mainly for #GtkRange subclasses.
+See gtk_range_set_slider_size_fixed().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the range's slider has a fixed size.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_update_policy"
+              c:identifier="gtk_range_get_update_policy">
+        <doc xml:whitespace="preserve">Gets the update policy of @range. See gtk_range_set_update_policy().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current update policy</doc>
+          <type name="UpdateType" c:type="GtkUpdateType"/>
+        </return-value>
+      </method>
+      <method name="get_upper_stepper_sensitivity"
+              c:identifier="gtk_range_get_upper_stepper_sensitivity"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the sensitivity policy for the stepper that points to the
+'upper' end of the GtkRange's adjustment.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The upper stepper's sensitivity policy.</doc>
+          <type name="SensitivityType" c:type="GtkSensitivityType"/>
+        </return-value>
+      </method>
+      <method name="get_value" c:identifier="gtk_range_get_value">
+        <doc xml:whitespace="preserve">Gets the current value of the range.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">current value of the range.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_adjustment" c:identifier="gtk_range_set_adjustment">
+        <doc xml:whitespace="preserve">Sets the adjustment to be used as the "model" object for this range
+widget. The adjustment indicates the current range value, the
+minimum and maximum range values, the step/page increments used
+for keybindings and scrolling, and the page size. The page size
+is normally 0 for #GtkScale and nonzero for #GtkScrollbar, and
+indicates the size of the visible area of the widget being scrolled.
+The page size affects the size of the scrollbar slider.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkAdjustment</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fill_level"
+              c:identifier="gtk_range_set_fill_level"
+              version="2.12">
+        <doc xml:whitespace="preserve">Set the new position of the fill level indicator.
+The "fill level" is probably best described by its most prominent
+use case, which is an indicator for the amount of pre-buffering in
+a streaming media player. In that use case, the value of the range
+would indicate the current play position, and the fill level would
+be the position up to which the file/stream has been downloaded.
+This amount of prebuffering can be displayed on the range's trough
+and is themeable separately from the trough. To enable fill level
+display, use gtk_range_set_show_fill_level(). The range defaults
+to not showing the fill level.
+Additionally, it's possible to restrict the range's slider position
+to values which are smaller than the fill level. This is controller
+by gtk_range_set_restrict_to_fill_level() and is by default
+enabled.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fill_level" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new position of the fill level indicator</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_flippable"
+              c:identifier="gtk_range_set_flippable"
+              version="2.18">
+        <doc xml:whitespace="preserve">If a range is flippable, it will switch its direction if it is
+horizontal and its direction is %GTK_TEXT_DIR_RTL.
+See gtk_widget_get_direction().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flippable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to make the range flippable</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_increments" c:identifier="gtk_range_set_increments">
+        <doc xml:whitespace="preserve">Sets the step and page sizes for the range.
+The step size is used when the user clicks the #GtkScrollbar
+arrows or moves #GtkScale via arrow keys. The page size
+is used for example when moving via Page Up or Page Down keys.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="step" transfer-ownership="none">
+            <doc xml:whitespace="preserve">step size</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="page" transfer-ownership="none">
+            <doc xml:whitespace="preserve">page size</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_inverted" c:identifier="gtk_range_set_inverted">
+        <doc xml:whitespace="preserve">Ranges normally move from lower to higher values as the
+slider moves from top to bottom or left to right. Inverted
+ranges have higher values at the top or on the right rather than
+on the bottom or left.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to invert the range</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_lower_stepper_sensitivity"
+              c:identifier="gtk_range_set_lower_stepper_sensitivity"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the sensitivity policy for the stepper that points to the
+'lower' end of the GtkRange's adjustment.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sensitivity" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the lower stepper's sensitivity policy.</doc>
+            <type name="SensitivityType" c:type="GtkSensitivityType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_min_slider_size"
+              c:identifier="gtk_range_set_min_slider_size"
+              version="2.20">
+        <doc xml:whitespace="preserve">Sets the minimum size of the range's slider.
+This function is useful mainly for #GtkRange subclasses.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The slider's minimum size</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_range" c:identifier="gtk_range_set_range">
+        <doc xml:whitespace="preserve">Sets the allowable values in the #GtkRange, and clamps the range
+value to be between @min and @max. (If the range has a non-zero
+page size, it is clamped between @min and @max - page-size.)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min" transfer-ownership="none">
+            <doc xml:whitespace="preserve">minimum range value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="max" transfer-ownership="none">
+            <doc xml:whitespace="preserve">maximum range value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_restrict_to_fill_level"
+              c:identifier="gtk_range_set_restrict_to_fill_level"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets whether the slider is restricted to the fill level. See
+gtk_range_set_fill_level() for a general description of the fill
+level concept.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="restrict_to_fill_level" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Whether the fill level restricts slider movement.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_show_fill_level"
+              c:identifier="gtk_range_set_show_fill_level"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets whether a graphical fill level is show on the trough. See
+gtk_range_set_fill_level() for a general description of the fill
+level concept.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_fill_level" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Whether a fill level indicator graphics is shown.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_slider_size_fixed"
+              c:identifier="gtk_range_set_slider_size_fixed"
+              version="2.20">
+        <doc xml:whitespace="preserve">Sets whether the range's slider has a fixed size, or a size that
+depends on it's adjustment's page size.
+This function is useful mainly for #GtkRange subclasses.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size_fixed" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to make the slider size constant</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_update_policy"
+              c:identifier="gtk_range_set_update_policy">
+        <doc xml:whitespace="preserve">Sets the update policy for the range. #GTK_UPDATE_CONTINUOUS means that
+anytime the range slider is moved, the range value will change and the
+value_changed signal will be emitted. #GTK_UPDATE_DELAYED means that
+the value will be updated after a brief timeout where no slider motion
+occurs, so updates are spaced by a short time rather than
+continuous. #GTK_UPDATE_DISCONTINUOUS means that the value will only
+be updated when the user releases the button and ends the slider
+drag operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="policy" transfer-ownership="none">
+            <doc xml:whitespace="preserve">update policy</doc>
+            <type name="UpdateType" c:type="GtkUpdateType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_upper_stepper_sensitivity"
+              c:identifier="gtk_range_set_upper_stepper_sensitivity"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the sensitivity policy for the stepper that points to the
+'upper' end of the GtkRange's adjustment.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sensitivity" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the upper stepper's sensitivity policy.</doc>
+            <type name="SensitivityType" c:type="GtkSensitivityType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value" c:identifier="gtk_range_set_value">
+        <doc xml:whitespace="preserve">Sets the current value of the range; if the value is outside the
+minimum or maximum range values, it will be clamped to fit inside
+them. The range emits the #GtkRange::value-changed signal if the 
+value changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new value of the range</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="adjustment"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="Adjustment"/>
+      </property>
+      <property name="fill-level"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The fill level (e.g. prebuffering of a network stream).
+See gtk_range_set_fill_level().</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="inverted" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="lower-stepper-sensitivity"
+                writable="1"
+                transfer-ownership="none">
+        <type name="SensitivityType"/>
+      </property>
+      <property name="restrict-to-fill-level"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The restrict-to-fill-level property controls whether slider
+movement is restricted to an upper boundary set by the
+fill level. See gtk_range_set_restrict_to_fill_level().</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="show-fill-level"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The show-fill-level property controls whether fill level indicator
+graphics are displayed on the trough. See
+gtk_range_set_show_fill_level().</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="update-policy" writable="1" transfer-ownership="none">
+        <type name="UpdateType"/>
+      </property>
+      <property name="upper-stepper-sensitivity"
+                writable="1"
+                transfer-ownership="none">
+        <type name="SensitivityType"/>
+      </property>
+      <field name="widget">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="priv">
+        <type name="RangePrivate" c:type="GtkRangePrivate*"/>
+      </field>
+      <glib:signal name="adjust-bounds">
+        <doc xml:whitespace="preserve">Emitted before clamping a value, to give the application a
+chance to adjust the bounds.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value before we clamp</doc>
+            <type name="gdouble"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="change-value" version="2.6">
+        <doc xml:whitespace="preserve">The ::change-value signal is emitted when a scroll action is
+performed on a range.  It allows an application to determine the
+type of scroll event that occurred and the resultant new value.
+The application can handle the event itself and return %TRUE to
+prevent further processing.  Or, by returning %FALSE, it can pass
+the event to other handlers until the default GTK+ handler is
+reached.
+The value parameter is unrounded.  An application that overrides
+the ::change-value signal is responsible for clamping the value to
+the desired number of decimal digits; the default GTK+ handler 
+clamps the value based on @range-&gt;round_digits.
+It is not possible to use delayed update policies in an overridden
+::change-value handler.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to prevent other handlers from being invoked for the signal, %FALSE to propagate the signal further</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of scroll action that was performed</doc>
+            <type name="ScrollType"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new value resulting from the scroll action</doc>
+            <type name="gdouble"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-slider">
+        <doc xml:whitespace="preserve">Virtual function that moves the slider. Used for keybindings.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">how to move the slider</doc>
+            <type name="ScrollType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="value-changed">
+        <doc xml:whitespace="preserve">Emitted when the range value changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="RangeClass"
+            c:type="GtkRangeClass"
+            glib:is-gtype-struct-for="Range">
+      <field name="parent_class">
+        <type name="WidgetClass" c:type="GtkWidgetClass"/>
+      </field>
+      <field name="slider_detail">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="stepper_detail">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="value_changed">
+        <callback name="value_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="range" transfer-ownership="none">
+              <type name="Range" c:type="GtkRange*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="adjust_bounds">
+        <callback name="adjust_bounds">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="range" transfer-ownership="none">
+              <type name="Range" c:type="GtkRange*"/>
+            </parameter>
+            <parameter name="new_value" transfer-ownership="none">
+              <type name="gdouble" c:type="gdouble"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="move_slider">
+        <callback name="move_slider">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="range" transfer-ownership="none">
+              <type name="Range" c:type="GtkRange*"/>
+            </parameter>
+            <parameter name="scroll" transfer-ownership="none">
+              <type name="ScrollType" c:type="GtkScrollType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_range_border">
+        <callback name="get_range_border">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="range" transfer-ownership="none">
+              <type name="Range" c:type="GtkRange*"/>
+            </parameter>
+            <parameter name="border_" transfer-ownership="none">
+              <type name="Border" c:type="GtkBorder*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="change_value">
+        <callback name="change_value">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="range" transfer-ownership="none">
+              <type name="Range" c:type="GtkRange*"/>
+            </parameter>
+            <parameter name="scroll" transfer-ownership="none">
+              <type name="ScrollType" c:type="GtkScrollType"/>
+            </parameter>
+            <parameter name="new_value" transfer-ownership="none">
+              <type name="gdouble" c:type="gdouble"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="RangePrivate" c:type="GtkRangePrivate" disguised="1">
+    </record>
+    <record name="RcContext" c:type="GtkRcContext" disguised="1">
+    </record>
+    <bitfield name="RcFlags"
+              glib:type-name="GtkRcFlags"
+              glib:get-type="gtk_rc_flags_get_type"
+              c:type="GtkRcFlags">
+      <member name="fg" value="1" c:identifier="GTK_RC_FG" glib:nick="fg"/>
+      <member name="bg" value="2" c:identifier="GTK_RC_BG" glib:nick="bg"/>
+      <member name="text"
+              value="4"
+              c:identifier="GTK_RC_TEXT"
+              glib:nick="text"/>
+      <member name="base"
+              value="8"
+              c:identifier="GTK_RC_BASE"
+              glib:nick="base"/>
+    </bitfield>
+    <record name="RcProperty" c:type="GtkRcProperty">
+      <field name="type_name" writable="1">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </field>
+      <field name="property_name" writable="1">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </field>
+      <field name="origin" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="GObject.Value" c:type="GValue"/>
+      </field>
+    </record>
+    <callback name="RcPropertyParser" c:type="GtkRcPropertyParser">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec" transfer-ownership="none">
+          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <parameter name="rc_string" transfer-ownership="none">
+          <type name="GLib.String" c:type="GString*"/>
+        </parameter>
+        <parameter name="property_value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="RcStyle"
+           c:symbol-prefix="rc_style"
+           c:type="GtkRcStyle"
+           parent="GObject.Object"
+           glib:type-name="GtkRcStyle"
+           glib:get-type="gtk_rc_style_get_type"
+           glib:type-struct="RcStyleClass">
+      <constructor name="new" c:identifier="gtk_rc_style_new">
+        <return-value transfer-ownership="full">
+          <type name="RcStyle" c:type="GtkRcStyle*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="create_rc_style" introspectable="0">
+        <return-value>
+          <type name="RcStyle" c:type="GtkRcStyle*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="create_style" introspectable="0">
+        <return-value>
+          <type name="Style" c:type="GtkStyle*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="merge">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="RcStyle" c:type="GtkRcStyle*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="parse">
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="settings" transfer-ownership="none">
+            <type name="Settings" c:type="GtkSettings*"/>
+          </parameter>
+          <parameter name="scanner" transfer-ownership="none">
+            <type name="GLib.Scanner" c:type="GScanner*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="copy" c:identifier="gtk_rc_style_copy">
+        <doc xml:whitespace="preserve">Makes a copy of the specified #GtkRcStyle. This function
+will correctly copy an RC style that is a member of a class
+derived from #GtkRcStyle.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the resulting #GtkRcStyle</doc>
+          <type name="RcStyle" c:type="GtkRcStyle*"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="name">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="bg_pixmap_name">
+        <array zero-terminated="0" c:type="utf8" fixed-size="5">
+          <type name="utf8" c:type="gchar*"/>
+        </array>
+      </field>
+      <field name="font_desc">
+        <type name="Pango.FontDescription" c:type="PangoFontDescription*"/>
+      </field>
+      <field name="color_flags">
+        <array zero-terminated="0" c:type="GtkRcFlags" fixed-size="5">
+          <type name="RcFlags" c:type="GtkRcFlags"/>
+        </array>
+      </field>
+      <field name="fg">
+        <array zero-terminated="0" c:type="GdkColor" fixed-size="5">
+          <type name="Gdk.Color" c:type="GdkColor"/>
+        </array>
+      </field>
+      <field name="bg">
+        <array zero-terminated="0" c:type="GdkColor" fixed-size="5">
+          <type name="Gdk.Color" c:type="GdkColor"/>
+        </array>
+      </field>
+      <field name="text">
+        <array zero-terminated="0" c:type="GdkColor" fixed-size="5">
+          <type name="Gdk.Color" c:type="GdkColor"/>
+        </array>
+      </field>
+      <field name="base">
+        <array zero-terminated="0" c:type="GdkColor" fixed-size="5">
+          <type name="Gdk.Color" c:type="GdkColor"/>
+        </array>
+      </field>
+      <field name="xthickness">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="ythickness">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="rc_properties">
+        <array name="GLib.Array" c:type="GArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+      <field name="rc_style_lists">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="icon_factories">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="engine_specified" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </class>
+    <record name="RcStyleClass"
+            c:type="GtkRcStyleClass"
+            glib:is-gtype-struct-for="RcStyle">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="create_rc_style" introspectable="0">
+        <callback name="create_rc_style" introspectable="0">
+          <return-value>
+            <type name="RcStyle" c:type="GtkRcStyle*"/>
+          </return-value>
+          <parameters>
+            <parameter name="rc_style" transfer-ownership="none">
+              <type name="RcStyle" c:type="GtkRcStyle*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parse">
+        <callback name="parse">
+          <return-value transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="rc_style" transfer-ownership="none">
+              <type name="RcStyle" c:type="GtkRcStyle*"/>
+            </parameter>
+            <parameter name="settings" transfer-ownership="none">
+              <type name="Settings" c:type="GtkSettings*"/>
+            </parameter>
+            <parameter name="scanner" transfer-ownership="none">
+              <type name="GLib.Scanner" c:type="GScanner*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="merge">
+        <callback name="merge">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="dest" transfer-ownership="none">
+              <type name="RcStyle" c:type="GtkRcStyle*"/>
+            </parameter>
+            <parameter name="src" transfer-ownership="none">
+              <type name="RcStyle" c:type="GtkRcStyle*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_style" introspectable="0">
+        <callback name="create_style" introspectable="0">
+          <return-value>
+            <type name="Style" c:type="GtkStyle*"/>
+          </return-value>
+          <parameters>
+            <parameter name="rc_style" transfer-ownership="none">
+              <type name="RcStyle" c:type="GtkRcStyle*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="RcTokenType"
+                 glib:type-name="GtkRcTokenType"
+                 glib:get-type="gtk_rc_token_type_get_type"
+                 c:type="GtkRcTokenType">
+      <member name="invalid"
+              value="270"
+              c:identifier="GTK_RC_TOKEN_INVALID"
+              glib:nick="invalid"/>
+      <member name="include"
+              value="271"
+              c:identifier="GTK_RC_TOKEN_INCLUDE"
+              glib:nick="include"/>
+      <member name="normal"
+              value="272"
+              c:identifier="GTK_RC_TOKEN_NORMAL"
+              glib:nick="normal"/>
+      <member name="active"
+              value="273"
+              c:identifier="GTK_RC_TOKEN_ACTIVE"
+              glib:nick="active"/>
+      <member name="prelight"
+              value="274"
+              c:identifier="GTK_RC_TOKEN_PRELIGHT"
+              glib:nick="prelight"/>
+      <member name="selected"
+              value="275"
+              c:identifier="GTK_RC_TOKEN_SELECTED"
+              glib:nick="selected"/>
+      <member name="insensitive"
+              value="276"
+              c:identifier="GTK_RC_TOKEN_INSENSITIVE"
+              glib:nick="insensitive"/>
+      <member name="fg"
+              value="277"
+              c:identifier="GTK_RC_TOKEN_FG"
+              glib:nick="fg"/>
+      <member name="bg"
+              value="278"
+              c:identifier="GTK_RC_TOKEN_BG"
+              glib:nick="bg"/>
+      <member name="text"
+              value="279"
+              c:identifier="GTK_RC_TOKEN_TEXT"
+              glib:nick="text"/>
+      <member name="base"
+              value="280"
+              c:identifier="GTK_RC_TOKEN_BASE"
+              glib:nick="base"/>
+      <member name="xthickness"
+              value="281"
+              c:identifier="GTK_RC_TOKEN_XTHICKNESS"
+              glib:nick="xthickness"/>
+      <member name="ythickness"
+              value="282"
+              c:identifier="GTK_RC_TOKEN_YTHICKNESS"
+              glib:nick="ythickness"/>
+      <member name="font"
+              value="283"
+              c:identifier="GTK_RC_TOKEN_FONT"
+              glib:nick="font"/>
+      <member name="fontset"
+              value="284"
+              c:identifier="GTK_RC_TOKEN_FONTSET"
+              glib:nick="fontset"/>
+      <member name="font_name"
+              value="285"
+              c:identifier="GTK_RC_TOKEN_FONT_NAME"
+              glib:nick="font-name"/>
+      <member name="bg_pixmap"
+              value="286"
+              c:identifier="GTK_RC_TOKEN_BG_PIXMAP"
+              glib:nick="bg-pixmap"/>
+      <member name="pixmap_path"
+              value="287"
+              c:identifier="GTK_RC_TOKEN_PIXMAP_PATH"
+              glib:nick="pixmap-path"/>
+      <member name="style"
+              value="288"
+              c:identifier="GTK_RC_TOKEN_STYLE"
+              glib:nick="style"/>
+      <member name="binding"
+              value="289"
+              c:identifier="GTK_RC_TOKEN_BINDING"
+              glib:nick="binding"/>
+      <member name="bind"
+              value="290"
+              c:identifier="GTK_RC_TOKEN_BIND"
+              glib:nick="bind"/>
+      <member name="widget"
+              value="291"
+              c:identifier="GTK_RC_TOKEN_WIDGET"
+              glib:nick="widget"/>
+      <member name="widget_class"
+              value="292"
+              c:identifier="GTK_RC_TOKEN_WIDGET_CLASS"
+              glib:nick="widget-class"/>
+      <member name="class"
+              value="293"
+              c:identifier="GTK_RC_TOKEN_CLASS"
+              glib:nick="class"/>
+      <member name="lowest"
+              value="294"
+              c:identifier="GTK_RC_TOKEN_LOWEST"
+              glib:nick="lowest"/>
+      <member name="gtk"
+              value="295"
+              c:identifier="GTK_RC_TOKEN_GTK"
+              glib:nick="gtk"/>
+      <member name="application"
+              value="296"
+              c:identifier="GTK_RC_TOKEN_APPLICATION"
+              glib:nick="application"/>
+      <member name="theme"
+              value="297"
+              c:identifier="GTK_RC_TOKEN_THEME"
+              glib:nick="theme"/>
+      <member name="rc"
+              value="298"
+              c:identifier="GTK_RC_TOKEN_RC"
+              glib:nick="rc"/>
+      <member name="highest"
+              value="299"
+              c:identifier="GTK_RC_TOKEN_HIGHEST"
+              glib:nick="highest"/>
+      <member name="engine"
+              value="300"
+              c:identifier="GTK_RC_TOKEN_ENGINE"
+              glib:nick="engine"/>
+      <member name="module_path"
+              value="301"
+              c:identifier="GTK_RC_TOKEN_MODULE_PATH"
+              glib:nick="module-path"/>
+      <member name="im_module_path"
+              value="302"
+              c:identifier="GTK_RC_TOKEN_IM_MODULE_PATH"
+              glib:nick="im-module-path"/>
+      <member name="im_module_file"
+              value="303"
+              c:identifier="GTK_RC_TOKEN_IM_MODULE_FILE"
+              glib:nick="im-module-file"/>
+      <member name="stock"
+              value="304"
+              c:identifier="GTK_RC_TOKEN_STOCK"
+              glib:nick="stock"/>
+      <member name="ltr"
+              value="305"
+              c:identifier="GTK_RC_TOKEN_LTR"
+              glib:nick="ltr"/>
+      <member name="rtl"
+              value="306"
+              c:identifier="GTK_RC_TOKEN_RTL"
+              glib:nick="rtl"/>
+      <member name="color"
+              value="307"
+              c:identifier="GTK_RC_TOKEN_COLOR"
+              glib:nick="color"/>
+      <member name="unbind"
+              value="308"
+              c:identifier="GTK_RC_TOKEN_UNBIND"
+              glib:nick="unbind"/>
+      <member name="last"
+              value="309"
+              c:identifier="GTK_RC_TOKEN_LAST"
+              glib:nick="last"/>
+    </enumeration>
+    <class name="RecentAction"
+           c:symbol-prefix="recent_action"
+           c:type="GtkRecentAction"
+           parent="Action"
+           glib:type-name="GtkRecentAction"
+           glib:get-type="gtk_recent_action_get_type"
+           glib:type-struct="RecentActionClass">
+      <implements name="Buildable"/>
+      <implements name="RecentChooser"/>
+      <constructor name="new"
+                   c:identifier="gtk_recent_action_new"
+                   version="2.12">
+        <doc xml:whitespace="preserve">Creates a new #GtkRecentAction object. To add the action to
+a #GtkActionGroup and set the accelerator for the action,
+call gtk_action_group_add_action_with_accel().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #GtkRecentAction.</doc>
+          <type name="Action" c:type="GtkAction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a unique name for the action</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="label" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the label displayed in menu items and on buttons, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tooltip" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a tooltip for the action, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="stock_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the stock icon to display in widgets representing the action, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_for_manager"
+                   c:identifier="gtk_recent_action_new_for_manager"
+                   version="2.12">
+        <doc xml:whitespace="preserve">Creates a new #GtkRecentAction object. To add the action to
+a #GtkActionGroup and set the accelerator for the action,
+call gtk_action_group_add_action_with_accel().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #GtkRecentAction</doc>
+          <type name="Action" c:type="GtkAction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a unique name for the action</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="label" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the label displayed in menu items and on buttons, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tooltip" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a tooltip for the action, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="stock_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the stock icon to display in widgets representing the action, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="manager" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkRecentManager, or %NULL for using the default #GtkRecentManager</doc>
+            <type name="RecentManager" c:type="GtkRecentManager*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_show_numbers"
+              c:identifier="gtk_recent_action_get_show_numbers"
+              version="2.12">
+        <doc xml:whitespace="preserve">Returns the value set by gtk_recent_chooser_menu_set_show_numbers().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if numbers should be shown.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_show_numbers"
+              c:identifier="gtk_recent_action_set_show_numbers"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets whether a number should be added to the items shown by the
+widgets representing @action. The numbers are shown to provide
+a unique character for a mnemonic to be used inside the menu item's
+label. Only the first ten items get a number to avoid clashes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_numbers" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the shown items should be numbered</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="show-numbers" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Action" c:type="GtkAction"/>
+      </field>
+      <field name="priv">
+        <type name="RecentActionPrivate" c:type="GtkRecentActionPrivate*"/>
+      </field>
+    </class>
+    <record name="RecentActionClass"
+            c:type="GtkRecentActionClass"
+            glib:is-gtype-struct-for="RecentAction">
+      <field name="parent_class">
+        <type name="ActionClass" c:type="GtkActionClass"/>
+      </field>
+    </record>
+    <record name="RecentActionPrivate"
+            c:type="GtkRecentActionPrivate"
+            disguised="1">
+    </record>
+    <interface name="RecentChooser"
+               c:symbol-prefix="recent_chooser"
+               c:type="GtkRecentChooser"
+               glib:type-name="GtkRecentChooser"
+               glib:get-type="gtk_recent_chooser_get_type"
+               glib:type-struct="RecentChooserIface">
+      <virtual-method name="add_filter" invoker="add_filter" version="2.10">
+        <doc xml:whitespace="preserve">Adds @filter to the list of #GtkRecentFilter objects held by @chooser.
+If no previous filter objects were defined, this function will call
+gtk_recent_chooser_set_filter().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkRecentFilter</doc>
+            <type name="RecentFilter" c:type="GtkRecentFilter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_current_uri"
+                      invoker="get_current_uri"
+                      version="2.10">
+        <doc xml:whitespace="preserve">Gets the URI currently selected by @chooser.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated string holding a URI.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_items" invoker="get_items" version="2.10">
+        <doc xml:whitespace="preserve">Gets the list of recently used resources in form of #GtkRecentInfo objects.
+The return value of this function is affected by the "sort-type" and
+"limit" properties of @chooser.
+list of #GtkRecentInfo objects.  You should
+use gtk_recent_info_unref() on every item of the list, and then free
+the list itself using g_list_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly allocated</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="RecentInfo"/>
+          </type>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_recent_manager" introspectable="0">
+        <return-value>
+          <type name="RecentManager" c:type="GtkRecentManager*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="list_filters"
+                      invoker="list_filters"
+                      version="2.10">
+        <doc xml:whitespace="preserve">Gets the #GtkRecentFilter objects held by @chooser.
+of #GtkRecentFilter objects.  You
+should just free the returned list using g_slist_free().</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">A singly linked list</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="RecentFilter"/>
+          </type>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="remove_filter"
+                      invoker="remove_filter"
+                      version="2.10">
+        <doc xml:whitespace="preserve">Removes @filter from the list of #GtkRecentFilter objects held by @chooser.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkRecentFilter</doc>
+            <type name="RecentFilter" c:type="GtkRecentFilter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="select_all" invoker="select_all" version="2.10">
+        <doc xml:whitespace="preserve">Selects all the items inside @chooser, if the @chooser supports
+multiple selection.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="select_uri"
+                      invoker="select_uri"
+                      version="2.10"
+                      throws="1">
+        <doc xml:whitespace="preserve">Selects @uri inside @chooser.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @uri was found.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a URI</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_current_uri"
+                      invoker="set_current_uri"
+                      version="2.10"
+                      throws="1">
+        <doc xml:whitespace="preserve">Sets @uri as the current URI for @chooser.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the URI was found.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a URI</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_sort_func"
+                      invoker="set_sort_func"
+                      version="2.10">
+        <doc xml:whitespace="preserve">Sets the comparison function used when sorting to be @sort_func.  If
+the @chooser has the sort type set to #GTK_RECENT_SORT_CUSTOM then
+the chooser will sort using this function.
+To the comparison function will be passed two #GtkRecentInfo structs and
+item comes before the second, zero if the two items are equal and
+a negative integer if the first item comes after the second.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">the comparison function</doc>
+            <type name="RecentSortFunc" c:type="GtkRecentSortFunc"/>
+          </parameter>
+          <parameter name="sort_data" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">user data to pass to @sort_func, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="data_destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="async">
+            <doc xml:whitespace="preserve">destroy notifier for @sort_data, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unselect_all"
+                      invoker="unselect_all"
+                      version="2.10">
+        <doc xml:whitespace="preserve">Unselects all the items inside @chooser.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="unselect_uri"
+                      invoker="unselect_uri"
+                      version="2.10">
+        <doc xml:whitespace="preserve">Unselects @uri inside @chooser.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a URI</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_filter"
+              c:identifier="gtk_recent_chooser_add_filter"
+              version="2.10">
+        <doc xml:whitespace="preserve">Adds @filter to the list of #GtkRecentFilter objects held by @chooser.
+If no previous filter objects were defined, this function will call
+gtk_recent_chooser_set_filter().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkRecentFilter</doc>
+            <type name="RecentFilter" c:type="GtkRecentFilter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_current_item"
+              c:identifier="gtk_recent_chooser_get_current_item"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the #GtkRecentInfo currently selected by @chooser.
+when you have finished using it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GtkRecentInfo.  Use gtk_recent_info_unref() when</doc>
+          <type name="RecentInfo" c:type="GtkRecentInfo*"/>
+        </return-value>
+      </method>
+      <method name="get_current_uri"
+              c:identifier="gtk_recent_chooser_get_current_uri"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the URI currently selected by @chooser.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated string holding a URI.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_filter"
+              c:identifier="gtk_recent_chooser_get_filter"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the #GtkRecentFilter object currently used by @chooser to affect
+the display of the recently used resources.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkRecentFilter object.</doc>
+          <type name="RecentFilter" c:type="GtkRecentFilter*"/>
+        </return-value>
+      </method>
+      <method name="get_items"
+              c:identifier="gtk_recent_chooser_get_items"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the list of recently used resources in form of #GtkRecentInfo objects.
+The return value of this function is affected by the "sort-type" and
+"limit" properties of @chooser.
+list of #GtkRecentInfo objects.  You should
+use gtk_recent_info_unref() on every item of the list, and then free
+the list itself using g_list_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly allocated</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="RecentInfo"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_limit"
+              c:identifier="gtk_recent_chooser_get_limit"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the number of items returned by gtk_recent_chooser_get_items()
+and gtk_recent_chooser_get_uris().
+returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A positive integer, or -1 meaning that all items are</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_local_only"
+              c:identifier="gtk_recent_chooser_get_local_only"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets whether only local resources should be shown in the recently used
+resources selector.  See gtk_recent_chooser_set_local_only()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if only local resources should be shown.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_select_multiple"
+              c:identifier="gtk_recent_chooser_get_select_multiple"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets whether @chooser can select multiple items.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @chooser can select more than one item.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_show_icons"
+              c:identifier="gtk_recent_chooser_get_show_icons"
+              version="2.10">
+        <doc xml:whitespace="preserve">Retrieves whether @chooser should show an icon near the resource.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the icons should be displayed, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_show_not_found"
+              c:identifier="gtk_recent_chooser_get_show_not_found"
+              version="2.10">
+        <doc xml:whitespace="preserve">Retrieves whether @chooser should show the recently used resources that
+were not found.
+%FALSE otheriwse.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the resources not found should be displayed, and</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_show_private"
+              c:identifier="gtk_recent_chooser_get_show_private"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns whether @chooser should display recently used resources
+registered as private.
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the recent chooser should show private items,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_show_tips"
+              c:identifier="gtk_recent_chooser_get_show_tips"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets whether @chooser should display tooltips containing the full path
+of a recently user resource.
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the recent chooser should show tooltips,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_sort_type"
+              c:identifier="gtk_recent_chooser_get_sort_type"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_recent_chooser_set_sort_type().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the sorting order of the @chooser.</doc>
+          <type name="RecentSortType" c:type="GtkRecentSortType"/>
+        </return-value>
+      </method>
+      <method name="get_uris"
+              c:identifier="gtk_recent_chooser_get_uris"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the URI of the recently used resources.
+The return value of this function is affected by the "sort-type" and "limit"
+properties of @chooser.
+Since the returned array is %NULL terminated, @length may be %NULL.
+of strings. Use g_strfreev() to free it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly allocated, %NULL-terminated array</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="length" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">return location for a the length of the URI list, or %NULL</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_filters"
+              c:identifier="gtk_recent_chooser_list_filters"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the #GtkRecentFilter objects held by @chooser.
+of #GtkRecentFilter objects.  You
+should just free the returned list using g_slist_free().</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">A singly linked list</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="RecentFilter"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="remove_filter"
+              c:identifier="gtk_recent_chooser_remove_filter"
+              version="2.10">
+        <doc xml:whitespace="preserve">Removes @filter from the list of #GtkRecentFilter objects held by @chooser.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkRecentFilter</doc>
+            <type name="RecentFilter" c:type="GtkRecentFilter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_all"
+              c:identifier="gtk_recent_chooser_select_all"
+              version="2.10">
+        <doc xml:whitespace="preserve">Selects all the items inside @chooser, if the @chooser supports
+multiple selection.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="select_uri"
+              c:identifier="gtk_recent_chooser_select_uri"
+              version="2.10"
+              throws="1">
+        <doc xml:whitespace="preserve">Selects @uri inside @chooser.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @uri was found.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a URI</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_current_uri"
+              c:identifier="gtk_recent_chooser_set_current_uri"
+              version="2.10"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets @uri as the current URI for @chooser.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the URI was found.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a URI</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_filter"
+              c:identifier="gtk_recent_chooser_set_filter"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets @filter as the current #GtkRecentFilter object used by @chooser
+to affect the displayed recently used resources.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkRecentFilter</doc>
+            <type name="RecentFilter" c:type="GtkRecentFilter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_limit"
+              c:identifier="gtk_recent_chooser_set_limit"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the number of items that should be returned by
+gtk_recent_chooser_get_items() and gtk_recent_chooser_get_uris().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="limit" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a positive integer, or -1 for all items</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_local_only"
+              c:identifier="gtk_recent_chooser_set_local_only"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets whether only local resources, that is resources using the file:// URI
+scheme, should be shown in the recently used resources selector.  If
+to be accessible through the operating system native file system.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="local_only" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if only local files can be shown</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_select_multiple"
+              c:identifier="gtk_recent_chooser_set_select_multiple"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets whether @chooser can select multiple items.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="select_multiple" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if @chooser can select more than one item</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_show_icons"
+              c:identifier="gtk_recent_chooser_set_show_icons"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets whether @chooser should show an icon near the resource when
+displaying it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_icons" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to show an icon near the resource</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_show_not_found"
+              c:identifier="gtk_recent_chooser_set_show_not_found"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets whether @chooser should display the recently used resources that
+it didn't find.  This only applies to local resources.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_not_found" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to show the local items we didn't find</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_show_private"
+              c:identifier="gtk_recent_chooser_set_show_private"
+              version="2.10">
+        <doc xml:whitespace="preserve">Whether to show recently used resources marked registered as private.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_private" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to show private items, %FALSE otherwise</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_show_tips"
+              c:identifier="gtk_recent_chooser_set_show_tips"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets whether to show a tooltips containing the full path of each
+recently used resource in a #GtkRecentChooser widget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_tips" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if tooltips should be shown</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sort_func"
+              c:identifier="gtk_recent_chooser_set_sort_func"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the comparison function used when sorting to be @sort_func.  If
+the @chooser has the sort type set to #GTK_RECENT_SORT_CUSTOM then
+the chooser will sort using this function.
+To the comparison function will be passed two #GtkRecentInfo structs and
+item comes before the second, zero if the two items are equal and
+a negative integer if the first item comes after the second.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">the comparison function</doc>
+            <type name="RecentSortFunc" c:type="GtkRecentSortFunc"/>
+          </parameter>
+          <parameter name="sort_data" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">user data to pass to @sort_func, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="data_destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="async">
+            <doc xml:whitespace="preserve">destroy notifier for @sort_data, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sort_type"
+              c:identifier="gtk_recent_chooser_set_sort_type"
+              version="2.10">
+        <doc xml:whitespace="preserve">Changes the sorting order of the recently used resources list displayed by</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">sort order that the chooser should use</doc>
+            <type name="RecentSortType" c:type="GtkRecentSortType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unselect_all"
+              c:identifier="gtk_recent_chooser_unselect_all"
+              version="2.10">
+        <doc xml:whitespace="preserve">Unselects all the items inside @chooser.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unselect_uri"
+              c:identifier="gtk_recent_chooser_unselect_uri"
+              version="2.10">
+        <doc xml:whitespace="preserve">Unselects @uri inside @chooser.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a URI</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="filter"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GtkRecentFilter object to be used when displaying
+the recently used resources.</doc>
+        <type name="RecentFilter"/>
+      </property>
+      <property name="limit"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The maximum number of recently used resources to be displayed,
+or -1 to display all items. By default, the
+override that limit on a particular instance of #GtkRecentChooser
+by setting this property.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="local-only"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether this #GtkRecentChooser should display only local (file:)
+resources.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="recent-manager"
+                version="2.10"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GtkRecentManager instance used by the #GtkRecentChooser to
+display the list of recently used resources.</doc>
+        <type name="RecentManager"/>
+      </property>
+      <property name="select-multiple"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Allow the user to select multiple resources.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="show-icons"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether this #GtkRecentChooser should display an icon near the item.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="show-not-found"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether this #GtkRecentChooser should display the recently used resources
+even if not present anymore. Setting this to %FALSE will perform a
+potentially expensive check on every local resource (every remote
+resource will always be displayed).</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="show-private" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="show-tips"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether this #GtkRecentChooser should display a tooltip containing the
+full path of the recently used resources.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="sort-type"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Sorting order to be used when displaying the recently used resources.</doc>
+        <type name="RecentSortType"/>
+      </property>
+      <glib:signal name="item-activated">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="selection-changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </interface>
+    <class name="RecentChooserDialog"
+           c:symbol-prefix="recent_chooser_dialog"
+           c:type="GtkRecentChooserDialog"
+           parent="Dialog"
+           glib:type-name="GtkRecentChooserDialog"
+           glib:get-type="gtk_recent_chooser_dialog_get_type"
+           glib:type-struct="RecentChooserDialogClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="RecentChooser"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new"
+                   c:identifier="gtk_recent_chooser_dialog_new"
+                   version="2.10"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #GtkRecentChooserDialog.  This function is analogous to
+gtk_dialog_new_with_buttons().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkRecentChooserDialog</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">Title of the dialog, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">Transient parent of the dialog, or %NULL,</doc>
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+          <parameter name="first_button_text"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">stock ID or text to go in the first button, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_for_manager"
+                   c:identifier="gtk_recent_chooser_dialog_new_for_manager"
+                   version="2.10"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #GtkRecentChooserDialog with a specified recent manager.
+This is useful if you have implemented your own recent manager, or if you
+have a customized instance of a #GtkRecentManager object.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkRecentChooserDialog</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">Title of the dialog, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">Transient parent of the dialog, or %NULL,</doc>
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+          <parameter name="manager" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkRecentManager</doc>
+            <type name="RecentManager" c:type="GtkRecentManager*"/>
+          </parameter>
+          <parameter name="first_button_text"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">stock ID or text to go in the first button, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <field name="parent_instance">
+        <type name="Dialog" c:type="GtkDialog"/>
+      </field>
+      <field name="priv">
+        <type name="RecentChooserDialogPrivate"
+              c:type="GtkRecentChooserDialogPrivate*"/>
+      </field>
+    </class>
+    <record name="RecentChooserDialogClass"
+            c:type="GtkRecentChooserDialogClass"
+            glib:is-gtype-struct-for="RecentChooserDialog">
+      <field name="parent_class">
+        <type name="DialogClass" c:type="GtkDialogClass"/>
+      </field>
+    </record>
+    <record name="RecentChooserDialogPrivate"
+            c:type="GtkRecentChooserDialogPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="RecentChooserError"
+                 version="2.10"
+                 glib:type-name="GtkRecentChooserError"
+                 glib:get-type="gtk_recent_chooser_error_get_type"
+                 c:type="GtkRecentChooserError"
+                 glib:error-quark="gtk_recent_chooser_error_quark">
+      <doc xml:whitespace="preserve">These identify the various errors that can occur while calling
+#GtkRecentChooser functions.</doc>
+      <member name="not_found"
+              value="0"
+              c:identifier="GTK_RECENT_CHOOSER_ERROR_NOT_FOUND"
+              glib:nick="not-found"/>
+      <member name="invalid_uri"
+              value="1"
+              c:identifier="GTK_RECENT_CHOOSER_ERROR_INVALID_URI"
+              glib:nick="invalid-uri"/>
+    </enumeration>
+    <record name="RecentChooserIface"
+            c:type="GtkRecentChooserIface"
+            glib:is-gtype-struct-for="RecentChooser">
+      <field name="base_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="set_current_uri">
+        <callback name="set_current_uri" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the URI was found.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="chooser" transfer-ownership="none">
+              <type name="RecentChooser" c:type="GtkRecentChooser*"/>
+            </parameter>
+            <parameter name="uri" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a URI</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_current_uri">
+        <callback name="get_current_uri">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a newly allocated string holding a URI.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="chooser" transfer-ownership="none">
+              <type name="RecentChooser" c:type="GtkRecentChooser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="select_uri">
+        <callback name="select_uri" throws="1">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if @uri was found.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="chooser" transfer-ownership="none">
+              <type name="RecentChooser" c:type="GtkRecentChooser*"/>
+            </parameter>
+            <parameter name="uri" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a URI</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unselect_uri">
+        <callback name="unselect_uri">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="chooser" transfer-ownership="none">
+              <type name="RecentChooser" c:type="GtkRecentChooser*"/>
+            </parameter>
+            <parameter name="uri" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a URI</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="select_all">
+        <callback name="select_all">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="chooser" transfer-ownership="none">
+              <type name="RecentChooser" c:type="GtkRecentChooser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unselect_all">
+        <callback name="unselect_all">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="chooser" transfer-ownership="none">
+              <type name="RecentChooser" c:type="GtkRecentChooser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_items">
+        <callback name="get_items">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">A newly allocated</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="RecentInfo"/>
+            </type>
+          </return-value>
+          <parameters>
+            <parameter name="chooser" transfer-ownership="none">
+              <type name="RecentChooser" c:type="GtkRecentChooser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_recent_manager" introspectable="0">
+        <callback name="get_recent_manager" introspectable="0">
+          <return-value>
+            <type name="RecentManager" c:type="GtkRecentManager*"/>
+          </return-value>
+          <parameters>
+            <parameter name="chooser" transfer-ownership="none">
+              <type name="RecentChooser" c:type="GtkRecentChooser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_filter">
+        <callback name="add_filter">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="chooser" transfer-ownership="none">
+              <type name="RecentChooser" c:type="GtkRecentChooser*"/>
+            </parameter>
+            <parameter name="filter" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GtkRecentFilter</doc>
+              <type name="RecentFilter" c:type="GtkRecentFilter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_filter">
+        <callback name="remove_filter">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="chooser" transfer-ownership="none">
+              <type name="RecentChooser" c:type="GtkRecentChooser*"/>
+            </parameter>
+            <parameter name="filter" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GtkRecentFilter</doc>
+              <type name="RecentFilter" c:type="GtkRecentFilter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="list_filters">
+        <callback name="list_filters">
+          <return-value transfer-ownership="container">
+            <doc xml:whitespace="preserve">A singly linked list</doc>
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="RecentFilter"/>
+            </type>
+          </return-value>
+          <parameters>
+            <parameter name="chooser" transfer-ownership="none">
+              <type name="RecentChooser" c:type="GtkRecentChooser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_sort_func">
+        <callback name="set_sort_func">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="chooser" transfer-ownership="none">
+              <type name="RecentChooser" c:type="GtkRecentChooser*"/>
+            </parameter>
+            <parameter name="sort_func"
+                       transfer-ownership="none"
+                       scope="notified"
+                       closure="2"
+                       destroy="3">
+              <doc xml:whitespace="preserve">the comparison function</doc>
+              <type name="RecentSortFunc" c:type="GtkRecentSortFunc"/>
+            </parameter>
+            <parameter name="sort_data"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">user data to pass to @sort_func, or %NULL</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+            <parameter name="data_destroy"
+                       transfer-ownership="none"
+                       allow-none="1"
+                       scope="async">
+              <doc xml:whitespace="preserve">destroy notifier for @sort_data, or %NULL</doc>
+              <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="item_activated">
+        <callback name="item_activated">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="chooser" transfer-ownership="none">
+              <type name="RecentChooser" c:type="GtkRecentChooser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="selection_changed">
+        <callback name="selection_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="chooser" transfer-ownership="none">
+              <type name="RecentChooser" c:type="GtkRecentChooser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="RecentChooserMenu"
+           c:symbol-prefix="recent_chooser_menu"
+           c:type="GtkRecentChooserMenu"
+           parent="Menu"
+           glib:type-name="GtkRecentChooserMenu"
+           glib:get-type="gtk_recent_chooser_menu_get_type"
+           glib:type-struct="RecentChooserMenuClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Activatable"/>
+      <implements name="Buildable"/>
+      <implements name="RecentChooser"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new"
+                   c:identifier="gtk_recent_chooser_menu_new"
+                   version="2.10">
+        <doc xml:whitespace="preserve">Creates a new #GtkRecentChooserMenu widget.
+This kind of widget shows the list of recently used resources as
+a menu, each item as a menu item.  Each item inside the menu might
+have an icon, representing its MIME type, and a number, for mnemonic
+access.
+This widget implements the #GtkRecentChooser interface.
+This widget creates its own #GtkRecentManager object.  See the
+gtk_recent_chooser_menu_new_for_manager() function to know how to create
+a #GtkRecentChooserMenu widget bound to another #GtkRecentManager object.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkRecentChooserMenu</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_for_manager"
+                   c:identifier="gtk_recent_chooser_menu_new_for_manager"
+                   version="2.10">
+        <doc xml:whitespace="preserve">Creates a new #GtkRecentChooserMenu widget using @manager as
+the underlying recently used resources manager.
+This is useful if you have implemented your own recent manager,
+or if you have a customized instance of a #GtkRecentManager
+object or if you wish to share a common #GtkRecentManager object
+among multiple #GtkRecentChooser widgets.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkRecentChooserMenu, bound to @manager.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="manager" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkRecentManager</doc>
+            <type name="RecentManager" c:type="GtkRecentManager*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_show_numbers"
+              c:identifier="gtk_recent_chooser_menu_get_show_numbers"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns the value set by gtk_recent_chooser_menu_set_show_numbers().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if numbers should be shown.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_show_numbers"
+              c:identifier="gtk_recent_chooser_menu_set_show_numbers"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets whether a number should be added to the items of @menu.  The
+numbers are shown to provide a unique character for a mnemonic to
+be used inside ten menu item's label.  Only the first the items
+get a number to avoid clashes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_numbers" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to show numbers</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="show-numbers" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Menu" c:type="GtkMenu"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="RecentChooserMenuPrivate"
+              c:type="GtkRecentChooserMenuPrivate*"/>
+      </field>
+    </class>
+    <record name="RecentChooserMenuClass"
+            c:type="GtkRecentChooserMenuClass"
+            glib:is-gtype-struct-for="RecentChooserMenu">
+      <field name="parent_class">
+        <type name="MenuClass" c:type="GtkMenuClass"/>
+      </field>
+      <field name="gtk_recent1">
+        <callback name="gtk_recent1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_recent2">
+        <callback name="gtk_recent2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_recent3">
+        <callback name="gtk_recent3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_recent4">
+        <callback name="gtk_recent4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="RecentChooserMenuPrivate"
+            c:type="GtkRecentChooserMenuPrivate"
+            disguised="1">
+    </record>
+    <class name="RecentChooserWidget"
+           c:symbol-prefix="recent_chooser_widget"
+           c:type="GtkRecentChooserWidget"
+           parent="VBox"
+           glib:type-name="GtkRecentChooserWidget"
+           glib:get-type="gtk_recent_chooser_widget_get_type"
+           glib:type-struct="RecentChooserWidgetClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="RecentChooser"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new"
+                   c:identifier="gtk_recent_chooser_widget_new"
+                   version="2.10">
+        <doc xml:whitespace="preserve">Creates a new #GtkRecentChooserWidget object.  This is an embeddable widget
+used to access the recently used resources list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkRecentChooserWidget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_for_manager"
+                   c:identifier="gtk_recent_chooser_widget_new_for_manager"
+                   version="2.10">
+        <doc xml:whitespace="preserve">Creates a new #GtkRecentChooserWidget with a specified recent manager.
+This is useful if you have implemented your own recent manager, or if you
+have a customized instance of a #GtkRecentManager object.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkRecentChooserWidget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="manager" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkRecentManager</doc>
+            <type name="RecentManager" c:type="GtkRecentManager*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <field name="parent_instance">
+        <type name="VBox" c:type="GtkVBox"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="RecentChooserWidgetPrivate"
+              c:type="GtkRecentChooserWidgetPrivate*"/>
+      </field>
+    </class>
+    <record name="RecentChooserWidgetClass"
+            c:type="GtkRecentChooserWidgetClass"
+            glib:is-gtype-struct-for="RecentChooserWidget">
+      <field name="parent_class">
+        <type name="VBoxClass" c:type="GtkVBoxClass"/>
+      </field>
+    </record>
+    <record name="RecentChooserWidgetPrivate"
+            c:type="GtkRecentChooserWidgetPrivate"
+            disguised="1">
+    </record>
+    <record name="RecentData" c:type="GtkRecentData">
+      <doc xml:whitespace="preserve">Meta-data to be passed to gtk_recent_manager_add_full() when
+registering a recently used resource.</doc>
+      <field name="display_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="mime_type" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="app_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="app_exec" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="groups" writable="1">
+        <type name="utf8" c:type="gchar**"/>
+      </field>
+      <field name="is_private" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+    </record>
+    <class name="RecentFilter"
+           c:symbol-prefix="recent_filter"
+           c:type="GtkRecentFilter"
+           parent="Object"
+           glib:type-name="GtkRecentFilter"
+           glib:get-type="gtk_recent_filter_get_type">
+      <constructor name="new"
+                   c:identifier="gtk_recent_filter_new"
+                   version="2.10">
+        <doc xml:whitespace="preserve">Creates a new #GtkRecentFilter with no rules added to it.
+Such filter does not accept any recently used resources, so is not
+particularly useful until you add rules with
+gtk_recent_filter_add_pattern(), gtk_recent_filter_add_mime_type(),
+gtk_recent_filter_add_application(), gtk_recent_filter_add_age().
+To create a filter that accepts any recently used resource, use:
+|[
+GtkRecentFilter *filter = gtk_recent_filter_new ();
+gtk_recent_filter_add_pattern (filter, "*");
+]|</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkRecentFilter</doc>
+          <type name="RecentFilter" c:type="GtkRecentFilter*"/>
+        </return-value>
+      </constructor>
+      <method name="add_age"
+              c:identifier="gtk_recent_filter_add_age"
+              version="2.10">
+        <doc xml:whitespace="preserve">Adds a rule that allows resources based on their age - that is, the number
+of days elapsed since they were last modified.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="days" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of days</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_application"
+              c:identifier="gtk_recent_filter_add_application"
+              version="2.10">
+        <doc xml:whitespace="preserve">Adds a rule that allows resources based on the name of the application
+that has registered them.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="application" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an application name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_custom"
+              c:identifier="gtk_recent_filter_add_custom"
+              version="2.10">
+        <doc xml:whitespace="preserve">Adds a rule to a filter that allows resources based on a custom callback
+function. The bitfield @needed which is passed in provides information
+about what sorts of information that the filter function needs;
+this allows GTK+ to avoid retrieving expensive information when
+it isn't needed by the filter.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="needed" transfer-ownership="none">
+            <doc xml:whitespace="preserve">bitfield of flags indicating the information that the custom filter function needs.</doc>
+            <type name="RecentFilterFlags" c:type="GtkRecentFilterFlags"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <doc xml:whitespace="preserve">callback function; if the function returns %TRUE, then the file will be displayed.</doc>
+            <type name="RecentFilterFunc" c:type="GtkRecentFilterFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to @func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="data_destroy"
+                     transfer-ownership="none"
+                     scope="async">
+            <doc xml:whitespace="preserve">function to call to free @data when it is no longer needed.</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_group"
+              c:identifier="gtk_recent_filter_add_group"
+              version="2.10">
+        <doc xml:whitespace="preserve">Adds a rule that allows resources based on the name of the group
+to which they belong</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a group name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_mime_type"
+              c:identifier="gtk_recent_filter_add_mime_type"
+              version="2.10">
+        <doc xml:whitespace="preserve">Adds a rule that allows resources based on their registered MIME type.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mime_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a MIME type</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_pattern"
+              c:identifier="gtk_recent_filter_add_pattern"
+              version="2.10">
+        <doc xml:whitespace="preserve">Adds a rule that allows resources based on a pattern matching their
+display name.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pattern" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file pattern</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_pixbuf_formats"
+              c:identifier="gtk_recent_filter_add_pixbuf_formats"
+              version="2.10">
+        <doc xml:whitespace="preserve">Adds a rule allowing image files in the formats supported
+by GdkPixbuf.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="filter"
+              c:identifier="gtk_recent_filter_filter"
+              version="2.10">
+        <doc xml:whitespace="preserve">Tests whether a file should be displayed according to @filter.
+The #GtkRecentFilterInfo structure @filter_info should include
+the fields returned from gtk_recent_filter_get_needed().
+This function will not typically be used by applications; it
+is intended principally for use in the implementation of
+#GtkRecentChooser.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the file should be displayed</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter_info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkRecentFilterInfo structure containing information about a recently used resource</doc>
+            <type name="RecentFilterInfo" c:type="GtkRecentFilterInfo*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_name"
+              c:identifier="gtk_recent_filter_get_name"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the human-readable name for the filter.
+See gtk_recent_filter_set_name().
+is owned by the filter object and should not be freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the filter, or %NULL.  The returned string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_needed"
+              c:identifier="gtk_recent_filter_get_needed"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the fields that need to be filled in for the structure
+passed to gtk_recent_filter_filter()
+This function will not typically be used by applications; it
+is intended principally for use in the implementation of
+#GtkRecentChooser.
+calling gtk_recent_filter_filter()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">bitfield of flags indicating needed fields when</doc>
+          <type name="RecentFilterFlags" c:type="GtkRecentFilterFlags"/>
+        </return-value>
+      </method>
+      <method name="set_name"
+              c:identifier="gtk_recent_filter_set_name"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the human-readable name of the filter; this is the string
+that will be displayed in the recently used resources selector
+user interface if there is a selectable list of filters.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">then human readable name of @filter</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <bitfield name="RecentFilterFlags"
+              glib:type-name="GtkRecentFilterFlags"
+              glib:get-type="gtk_recent_filter_flags_get_type"
+              c:type="GtkRecentFilterFlags">
+      <member name="uri"
+              value="1"
+              c:identifier="GTK_RECENT_FILTER_URI"
+              glib:nick="uri"/>
+      <member name="display_name"
+              value="2"
+              c:identifier="GTK_RECENT_FILTER_DISPLAY_NAME"
+              glib:nick="display-name"/>
+      <member name="mime_type"
+              value="4"
+              c:identifier="GTK_RECENT_FILTER_MIME_TYPE"
+              glib:nick="mime-type"/>
+      <member name="application"
+              value="8"
+              c:identifier="GTK_RECENT_FILTER_APPLICATION"
+              glib:nick="application"/>
+      <member name="group"
+              value="16"
+              c:identifier="GTK_RECENT_FILTER_GROUP"
+              glib:nick="group"/>
+      <member name="age"
+              value="32"
+              c:identifier="GTK_RECENT_FILTER_AGE"
+              glib:nick="age"/>
+    </bitfield>
+    <callback name="RecentFilterFunc" c:type="GtkRecentFilterFunc">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="filter_info" transfer-ownership="none">
+          <type name="RecentFilterInfo" c:type="GtkRecentFilterInfo*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="RecentFilterInfo" c:type="GtkRecentFilterInfo">
+      <field name="contains" writable="1">
+        <type name="RecentFilterFlags" c:type="GtkRecentFilterFlags"/>
+      </field>
+      <field name="uri" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="display_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="mime_type" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="applications" writable="1">
+        <type name="utf8" c:type="gchar**"/>
+      </field>
+      <field name="groups" writable="1">
+        <type name="utf8" c:type="gchar**"/>
+      </field>
+      <field name="age" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+    </record>
+    <record name="RecentInfo"
+            c:type="GtkRecentInfo"
+            version="2.10"
+            glib:type-name="GtkRecentInfo"
+            glib:get-type="gtk_recent_info_get_type"
+            c:symbol-prefix="recent_info">
+      <doc xml:whitespace="preserve">#GtkRecentInfo is an opaque data structure
+whose members can only be accessed using the provided API.
+#GtkRecentInfo constains all the meta-data
+associated with an entry in the recently used files list.</doc>
+      <method name="exists"
+              c:identifier="gtk_recent_info_exists"
+              version="2.10">
+        <doc xml:whitespace="preserve">Checks whether the resource pointed by @info still exists.  At
+the moment this check is done only on resources pointing to local files.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the resource exists</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_added"
+              c:identifier="gtk_recent_info_get_added"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the timestamp (seconds from system's Epoch) when the resource
+was added to the recently used resources list.
+the resource was added to the list, or -1 on failure.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of seconds elapsed from system's Epoch when</doc>
+          <type name="glong" c:type="time_t"/>
+        </return-value>
+      </method>
+      <method name="get_age"
+              c:identifier="gtk_recent_info_get_age"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the number of days elapsed since the last update of the resource
+pointed by @info.
+since the time this resource was last modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a positive integer containing the number of days elapsed</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_application_info"
+              c:identifier="gtk_recent_info_get_application_info"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the data regarding the application that has registered the resource
+pointed by @info.
+If the command line contains any escape characters defined inside the
+storage specification, they will be expanded.
+resource inside the recently used list, or %FALSE otherwise. The
+modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if an application with @app_name has registered this</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="app_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the application that has registered this item</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="app_exec"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the string containing the command line</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="count"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the number of times this item was registered</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="time_"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the timestamp this item was last registered for this application</doc>
+            <type name="glong" c:type="time_t*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_applications"
+              c:identifier="gtk_recent_info_get_applications"
+              version="2.10">
+        <doc xml:whitespace="preserve">Retrieves the list of applications that have registered this resource.
+a newly allocated %NULL-terminated array of strings.
+Use g_strfreev() to free it.</doc>
+        <return-value transfer-ownership="full">
+          <array length="0" c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="length"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the length of the returned list</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_description"
+              c:identifier="gtk_recent_info_get_description"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the (short) description of the resource.
+is owned by the recent manager, and should not be freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the description of the resource.  The returned string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_display_name"
+              c:identifier="gtk_recent_info_get_display_name"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the name of the resource.  If none has been defined, the basename
+of the resource is obtained.
+is owned by the recent manager, and should not be freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the display name of the resource.  The returned string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_groups"
+              c:identifier="gtk_recent_info_get_groups"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns all groups registered for the recently used item @info.  The
+array of returned group names will be %NULL terminated, so length might
+optionally be %NULL.
+a newly allocated %NULL terminated array of strings.
+Use g_strfreev() to free it.</doc>
+        <return-value transfer-ownership="full">
+          <array length="0" c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="length"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the number of groups returned</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon"
+              c:identifier="gtk_recent_info_get_icon"
+              version="2.10">
+        <doc xml:whitespace="preserve">Retrieves the icon of size @size associated to the resource MIME type.
+or %NULL. Use g_object_unref() when finished using the icon.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GdkPixbuf containing the icon,</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of the icon in pixels</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_mime_type"
+              c:identifier="gtk_recent_info_get_mime_type"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the MIME type of the resource.
+is owned by the recent manager, and should not be freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the MIME type of the resource.  The returned string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_modified"
+              c:identifier="gtk_recent_info_get_modified"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the timestamp (seconds from system's Epoch) when the resource
+was last modified.
+the resource was last modified, or -1 on failure.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of seconds elapsed from system's Epoch when</doc>
+          <type name="glong" c:type="time_t"/>
+        </return-value>
+      </method>
+      <method name="get_private_hint"
+              c:identifier="gtk_recent_info_get_private_hint"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the value of the "private" flag.  Resources in the recently used
+list that have this flag set to %TRUE should only be displayed by the
+applications that have registered them.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the private flag was found, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_short_name"
+              c:identifier="gtk_recent_info_get_short_name"
+              version="2.10">
+        <doc xml:whitespace="preserve">Computes a valid UTF-8 string that can be used as the name of the item in a
+menu or list.  For example, calling this function on an item that refers to
+"file:///foo/bar.txt" will yield "bar.txt".
+g_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly-allocated string in UTF-8 encoding; free it with</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_uri"
+              c:identifier="gtk_recent_info_get_uri"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the URI of the resource.
+owned by the recent manager, and should not be freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the URI of the resource.  The returned string is</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_uri_display"
+              c:identifier="gtk_recent_info_get_uri_display"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets a displayable version of the resource's URI.  If the resource
+is local, it returns a local path; if the resource is not local,
+it returns the UTF-8 encoded content of gtk_recent_info_get_uri().
+resource's URI or %NULL. Use g_free() when done using it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated UTF-8 string containing the</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_visited"
+              c:identifier="gtk_recent_info_get_visited"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the timestamp (seconds from system's Epoch) when the resource
+was last visited.
+the resource was last visited, or -1 on failure.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of seconds elapsed from system's Epoch when</doc>
+          <type name="glong" c:type="time_t"/>
+        </return-value>
+      </method>
+      <method name="has_application"
+              c:identifier="gtk_recent_info_has_application"
+              version="2.10">
+        <doc xml:whitespace="preserve">Checks whether an application registered this resource using @app_name.
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if an application with name @app_name was found,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="app_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing an application name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_group"
+              c:identifier="gtk_recent_info_has_group"
+              version="2.10">
+        <doc xml:whitespace="preserve">Checks whether @group_name appears inside the groups registered for the
+recently used item @info.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the group was found.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of a group</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_local"
+              c:identifier="gtk_recent_info_is_local"
+              version="2.10">
+        <doc xml:whitespace="preserve">Checks whether the resource is local or not by looking at the
+scheme of its URI.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the resource is local.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="last_application"
+              c:identifier="gtk_recent_info_last_application"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the name of the last application that have registered the
+recently used resource represented by @info.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">an application name.  Use g_free() to free it.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="match" c:identifier="gtk_recent_info_match" version="2.10">
+        <doc xml:whitespace="preserve">Checks whether two #GtkRecentInfo structures point to the same
+resource.
+resource, %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if both #GtkRecentInfo structures point to se same</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="info_b" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkRecentInfo</doc>
+            <type name="RecentInfo" c:type="GtkRecentInfo*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref" c:identifier="gtk_recent_info_ref" version="2.10">
+        <doc xml:whitespace="preserve">Increases the reference count of @recent_info by one.
+by one.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the recent info object with its reference count increased</doc>
+          <type name="RecentInfo" c:type="GtkRecentInfo*"/>
+        </return-value>
+      </method>
+      <method name="unref" c:identifier="gtk_recent_info_unref" version="2.10">
+        <doc xml:whitespace="preserve">Decreases the reference count of @info by one.  If the reference
+count reaches zero, @info is deallocated, and the memory freed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="RecentManager"
+           c:symbol-prefix="recent_manager"
+           c:type="GtkRecentManager"
+           version="2.10"
+           parent="GObject.Object"
+           glib:type-name="GtkRecentManager"
+           glib:get-type="gtk_recent_manager_get_type"
+           glib:type-struct="RecentManagerClass">
+      <doc xml:whitespace="preserve">#GtkRecentManager contains only private data
+and should be accessed using the provided API.</doc>
+      <constructor name="new"
+                   c:identifier="gtk_recent_manager_new"
+                   version="2.10">
+        <doc xml:whitespace="preserve">Creates a new recent manager object.  Recent manager objects are used to
+handle the list of recently used resources.  A #GtkRecentManager object
+monitors the recently used resources list, and emits the "changed" signal
+each time something inside the list changes.
+#GtkRecentManager objects are expensive: be sure to create them only when
+needed. You should use gtk_recent_manager_get_default() instead.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly created #GtkRecentManager object.</doc>
+          <type name="RecentManager" c:type="GtkRecentManager*"/>
+        </return-value>
+      </constructor>
+      <function name="get_default"
+                c:identifier="gtk_recent_manager_get_default"
+                version="2.10">
+        <doc xml:whitespace="preserve">Gets a unique instance of #GtkRecentManager, that you can share
+in your application without caring about memory management. The
+returned instance will be freed when you application terminates.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A unique #GtkRecentManager. Do not ref or unref it.</doc>
+          <type name="RecentManager" c:type="GtkRecentManager*"/>
+        </return-value>
+      </function>
+      <method name="add_full"
+              c:identifier="gtk_recent_manager_add_full"
+              version="2.10">
+        <doc xml:whitespace="preserve">Adds a new resource, pointed by @uri, into the recently used
+resources list, using the metadata specified inside the #GtkRecentData
+structure passed in @recent_data.
+The passed URI will be used to identify this resource inside the
+list.
+In order to register the new recently used resource, metadata about
+the resource must be passed as well as the URI; the metadata is
+stored in a #GtkRecentData structure, which must contain the MIME
+type of the resource pointed by the URI; the name of the application
+that is registering the item, and a command line to be used when
+launching the item.
+Optionally, a #GtkRecentData structure might contain a UTF-8 string
+to be used when viewing the item instead of the last component of the
+URI; a short description of the item; whether the item should be
+considered private - that is, should be displayed only by the
+applications that have registered it.
+recently used resources list, %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the new item was successfully added to the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid URI</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="recent_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">metadata of the resource</doc>
+            <type name="RecentData" c:type="GtkRecentData*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_item"
+              c:identifier="gtk_recent_manager_add_item"
+              version="2.10">
+        <doc xml:whitespace="preserve">Adds a new resource, pointed by @uri, into the recently used
+resources list.
+This function automatically retrieves some of the needed
+metadata and setting other metadata to common default values; it
+then feeds the data to gtk_recent_manager_add_full().
+See gtk_recent_manager_add_full() if you want to explicitly
+define the metadata for the resource pointed by @uri.
+to the recently used resources list</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the new item was successfully added</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid URI</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_items"
+              c:identifier="gtk_recent_manager_get_items"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the list of recently used resources.
+newly allocated #GtkRecentInfo objects. Use
+gtk_recent_info_unref() on each item inside the list, and then
+free the list itself using g_list_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a list of</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="RecentInfo"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="has_item"
+              c:identifier="gtk_recent_manager_has_item"
+              version="2.10">
+        <doc xml:whitespace="preserve">Checks whether there is a recently used resource registered
+with @uri inside the recent manager.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the resource was found, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a URI</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_item"
+              c:identifier="gtk_recent_manager_lookup_item"
+              version="2.10"
+              throws="1">
+        <doc xml:whitespace="preserve">Searches for a URI inside the recently used resources list, and
+returns a structure containing informations about the resource
+like its MIME type, or its display name.
+about the resource pointed by @uri, or %NULL if the URI was
+not registered in the recently used resources list.  Free with
+gtk_recent_info_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GtkRecentInfo structure containing information</doc>
+          <type name="RecentInfo" c:type="GtkRecentInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a URI</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_item"
+              c:identifier="gtk_recent_manager_move_item"
+              version="2.10"
+              throws="1">
+        <doc xml:whitespace="preserve">Changes the location of a recently used resource from @uri to @new_uri.
+Please note that this function will not affect the resource pointed
+by the URIs, but only the URI used in the recently used resources list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the URI of a recently used resource</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="new_uri" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the new URI of the recently used resource, or %NULL to remove the item pointed by @uri in the list</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="purge_items"
+              c:identifier="gtk_recent_manager_purge_items"
+              version="2.10"
+              throws="1">
+        <doc xml:whitespace="preserve">Purges every item from the recently used resources list.
+recently used resources list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of items that have been removed from the</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="remove_item"
+              c:identifier="gtk_recent_manager_remove_item"
+              version="2.10"
+              throws="1">
+        <doc xml:whitespace="preserve">Removes a resource pointed by @uri from the recently used resources
+list handled by a recent manager.
+removed by the recently used resources list, and %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the item pointed by @uri has been successfully</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the URI of the item you wish to remove</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="filename"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="size" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="RecentManagerPrivate" c:type="GtkRecentManagerPrivate*"/>
+      </field>
+      <glib:signal name="changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="RecentManagerClass"
+            c:type="GtkRecentManagerClass"
+            glib:is-gtype-struct-for="RecentManager"
+            version="2.10">
+      <doc xml:whitespace="preserve">#GtkRecentManagerClass contains only private data.</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="changed">
+        <callback name="changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="RecentManager" c:type="GtkRecentManager*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_recent1" introspectable="0">
+        <callback name="_gtk_recent1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_recent2" introspectable="0">
+        <callback name="_gtk_recent2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_recent3" introspectable="0">
+        <callback name="_gtk_recent3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_recent4" introspectable="0">
+        <callback name="_gtk_recent4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="RecentManagerError"
+                 version="2.10"
+                 glib:type-name="GtkRecentManagerError"
+                 glib:get-type="gtk_recent_manager_error_get_type"
+                 c:type="GtkRecentManagerError"
+                 glib:error-quark="gtk_recent_manager_error_quark">
+      <doc xml:whitespace="preserve">Error codes for #GtkRecentManager operations</doc>
+      <member name="not_found"
+              value="0"
+              c:identifier="GTK_RECENT_MANAGER_ERROR_NOT_FOUND"
+              glib:nick="not-found"/>
+      <member name="invalid_uri"
+              value="1"
+              c:identifier="GTK_RECENT_MANAGER_ERROR_INVALID_URI"
+              glib:nick="invalid-uri"/>
+      <member name="invalid_encoding"
+              value="2"
+              c:identifier="GTK_RECENT_MANAGER_ERROR_INVALID_ENCODING"
+              glib:nick="invalid-encoding"/>
+      <member name="not_registered"
+              value="3"
+              c:identifier="GTK_RECENT_MANAGER_ERROR_NOT_REGISTERED"
+              glib:nick="not-registered"/>
+      <member name="read"
+              value="4"
+              c:identifier="GTK_RECENT_MANAGER_ERROR_READ"
+              glib:nick="read"/>
+      <member name="write"
+              value="5"
+              c:identifier="GTK_RECENT_MANAGER_ERROR_WRITE"
+              glib:nick="write"/>
+      <member name="unknown"
+              value="6"
+              c:identifier="GTK_RECENT_MANAGER_ERROR_UNKNOWN"
+              glib:nick="unknown"/>
+    </enumeration>
+    <record name="RecentManagerPrivate"
+            c:type="GtkRecentManagerPrivate"
+            disguised="1">
+    </record>
+    <callback name="RecentSortFunc" c:type="GtkRecentSortFunc">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="RecentInfo" c:type="GtkRecentInfo*"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="RecentInfo" c:type="GtkRecentInfo*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="RecentSortType"
+                 version="2.10"
+                 glib:type-name="GtkRecentSortType"
+                 glib:get-type="gtk_recent_sort_type_get_type"
+                 c:type="GtkRecentSortType">
+      <doc xml:whitespace="preserve">Used to specify the sorting method to be applyed to the recently
+used resource list.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="GTK_RECENT_SORT_NONE"
+              glib:nick="none"/>
+      <member name="mru"
+              value="1"
+              c:identifier="GTK_RECENT_SORT_MRU"
+              glib:nick="mru"/>
+      <member name="lru"
+              value="2"
+              c:identifier="GTK_RECENT_SORT_LRU"
+              glib:nick="lru"/>
+      <member name="custom"
+              value="3"
+              c:identifier="GTK_RECENT_SORT_CUSTOM"
+              glib:nick="custom"/>
+    </enumeration>
+    <enumeration name="ReliefStyle"
+                 glib:type-name="GtkReliefStyle"
+                 glib:get-type="gtk_relief_style_get_type"
+                 c:type="GtkReliefStyle">
+      <member name="normal"
+              value="0"
+              c:identifier="GTK_RELIEF_NORMAL"
+              glib:nick="normal"/>
+      <member name="half"
+              value="1"
+              c:identifier="GTK_RELIEF_HALF"
+              glib:nick="half"/>
+      <member name="none"
+              value="2"
+              c:identifier="GTK_RELIEF_NONE"
+              glib:nick="none"/>
+    </enumeration>
+    <record name="RequestedSize" c:type="GtkRequestedSize">
+      <doc xml:whitespace="preserve">Represents a request of a screen object in a given orientation. These
+are primarily used in container implementations when allocating a natural
+size for children calling. See gtk_distribute_natural_allocation().</doc>
+      <field name="data" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="minimum_size" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="natural_size" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+    </record>
+    <record name="Requisition"
+            c:type="GtkRequisition"
+            glib:type-name="GtkRequisition"
+            glib:get-type="gtk_requisition_get_type"
+            c:symbol-prefix="requisition">
+      <doc xml:whitespace="preserve">A &lt;structname&gt;GtkRequisition&lt;/structname&gt; represents the desired size of a widget. See
+&lt;xref linkend="size-requisition"/&gt; for more information.</doc>
+      <field name="width" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="height" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <constructor name="new" c:identifier="gtk_requisition_new" version="3.0">
+        <doc xml:whitespace="preserve">Allocates a new #GtkRequisition structure and initializes its elements to zero.
+be freed with gtk_requisition_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new empty #GtkRequisition. The newly allocated #GtkRequisition should</doc>
+          <type name="Requisition" c:type="GtkRequisition*"/>
+        </return-value>
+      </constructor>
+      <method name="copy" c:identifier="gtk_requisition_copy">
+        <doc xml:whitespace="preserve">Copies a #GtkRequisition.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a copy of @requisition</doc>
+          <type name="Requisition" c:type="GtkRequisition*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gtk_requisition_free">
+        <doc xml:whitespace="preserve">Frees a #GtkRequisition.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="ResizeMode"
+                 glib:type-name="GtkResizeMode"
+                 glib:get-type="gtk_resize_mode_get_type"
+                 c:type="GtkResizeMode">
+      <member name="parent"
+              value="0"
+              c:identifier="GTK_RESIZE_PARENT"
+              glib:nick="parent"/>
+      <member name="queue"
+              value="1"
+              c:identifier="GTK_RESIZE_QUEUE"
+              glib:nick="queue"/>
+      <member name="immediate"
+              value="2"
+              c:identifier="GTK_RESIZE_IMMEDIATE"
+              glib:nick="immediate"/>
+    </enumeration>
+    <enumeration name="ResponseType"
+                 glib:type-name="GtkResponseType"
+                 glib:get-type="gtk_response_type_get_type"
+                 c:type="GtkResponseType">
+      <member name="none"
+              value="-1"
+              c:identifier="GTK_RESPONSE_NONE"
+              glib:nick="none"/>
+      <member name="reject"
+              value="-2"
+              c:identifier="GTK_RESPONSE_REJECT"
+              glib:nick="reject"/>
+      <member name="accept"
+              value="-3"
+              c:identifier="GTK_RESPONSE_ACCEPT"
+              glib:nick="accept"/>
+      <member name="delete_event"
+              value="-4"
+              c:identifier="GTK_RESPONSE_DELETE_EVENT"
+              glib:nick="delete-event"/>
+      <member name="ok"
+              value="-5"
+              c:identifier="GTK_RESPONSE_OK"
+              glib:nick="ok"/>
+      <member name="cancel"
+              value="-6"
+              c:identifier="GTK_RESPONSE_CANCEL"
+              glib:nick="cancel"/>
+      <member name="close"
+              value="-7"
+              c:identifier="GTK_RESPONSE_CLOSE"
+              glib:nick="close"/>
+      <member name="yes"
+              value="-8"
+              c:identifier="GTK_RESPONSE_YES"
+              glib:nick="yes"/>
+      <member name="no"
+              value="-9"
+              c:identifier="GTK_RESPONSE_NO"
+              glib:nick="no"/>
+      <member name="apply"
+              value="-10"
+              c:identifier="GTK_RESPONSE_APPLY"
+              glib:nick="apply"/>
+      <member name="help"
+              value="-11"
+              c:identifier="GTK_RESPONSE_HELP"
+              glib:nick="help"/>
+    </enumeration>
+    <class name="Ruler"
+           c:symbol-prefix="ruler"
+           c:type="GtkRuler"
+           parent="Widget"
+           glib:type-name="GtkRuler"
+           glib:get-type="gtk_ruler_get_type"
+           glib:type-struct="RulerClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_ruler_new" version="3.0">
+        <doc xml:whitespace="preserve">Creates a new #GtkRuler with the given orientation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkRuler.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ruler's orientation.</doc>
+            <type name="Orientation" c:type="GtkOrientation"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="draw_pos" invoker="draw_pos">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="draw_ticks" invoker="draw_ticks">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="draw_pos" c:identifier="gtk_ruler_draw_pos">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="draw_ticks" c:identifier="gtk_ruler_draw_ticks">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_metric" c:identifier="gtk_ruler_get_metric">
+        <doc xml:whitespace="preserve">Gets the units used for a #GtkRuler. See gtk_ruler_set_metric().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the units currently used for @ruler</doc>
+          <type name="MetricType" c:type="GtkMetricType"/>
+        </return-value>
+      </method>
+      <method name="get_range" c:identifier="gtk_ruler_get_range">
+        <doc xml:whitespace="preserve">Retrieves values indicating the range and current position of a #GtkRuler.
+See gtk_ruler_set_range().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="lower" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store lower limit of the ruler, or %NULL</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="upper" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store upper limit of the ruler, or %NULL</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store the current position of the mark on the ruler, or %NULL</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="max_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the maximum size of the ruler used when calculating the space to leave for the text, or %NULL.</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_metric" c:identifier="gtk_ruler_set_metric">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="metric" transfer-ownership="none">
+            <type name="MetricType" c:type="GtkMetricType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_range" c:identifier="gtk_ruler_set_range">
+        <doc xml:whitespace="preserve">This sets the range of the ruler.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="lower" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the lower limit of the ruler</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="upper" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the upper limit of the ruler</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mark on the ruler</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="max_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the maximum size of the ruler used when calculating the space to leave for the text</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="lower" writable="1" transfer-ownership="none">
+        <type name="gdouble"/>
+      </property>
+      <property name="max-size" writable="1" transfer-ownership="none">
+        <type name="gdouble"/>
+      </property>
+      <property name="metric"
+                version="2.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The metric used for the ruler.</doc>
+        <type name="MetricType"/>
+      </property>
+      <property name="position" writable="1" transfer-ownership="none">
+        <type name="gdouble"/>
+      </property>
+      <property name="upper" writable="1" transfer-ownership="none">
+        <type name="gdouble"/>
+      </property>
+      <field name="widget">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="RulerPrivate" c:type="GtkRulerPrivate*"/>
+      </field>
+    </class>
+    <record name="RulerClass"
+            c:type="GtkRulerClass"
+            glib:is-gtype-struct-for="Ruler">
+      <field name="parent_class">
+        <type name="WidgetClass" c:type="GtkWidgetClass"/>
+      </field>
+      <field name="draw_ticks">
+        <callback name="draw_ticks">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="ruler" transfer-ownership="none">
+              <type name="Ruler" c:type="GtkRuler*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_pos">
+        <callback name="draw_pos">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="ruler" transfer-ownership="none">
+              <type name="Ruler" c:type="GtkRuler*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="RulerMetric" c:type="GtkRulerMetric">
+      <field name="metric_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="abbrev" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="pixels_per_unit" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="ruler_scale" writable="1">
+        <array zero-terminated="0" c:type="gdouble" fixed-size="10">
+          <type name="gdouble" c:type="gdouble"/>
+        </array>
+      </field>
+      <field name="subdivide" writable="1">
+        <array zero-terminated="0" c:type="gint" fixed-size="5">
+          <type name="gint" c:type="gint"/>
+        </array>
+      </field>
+    </record>
+    <record name="RulerPrivate" c:type="GtkRulerPrivate" disguised="1">
+    </record>
+    <constant name="SIZE_REQUEST_CACHED_SIZES" value="3">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="STOCK_ABOUT" value="gtk-about">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_ADD" value="gtk-add">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_APPLY" value="gtk-apply">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_BOLD" value="gtk-bold">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_CANCEL" value="gtk-cancel">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_CAPS_LOCK_WARNING" value="gtk-caps-lock-warning">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_CDROM" value="gtk-cdrom">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_CLEAR" value="gtk-clear">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_CLOSE" value="gtk-close">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_COLOR_PICKER" value="gtk-color-picker">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_CONNECT" value="gtk-connect">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_CONVERT" value="gtk-convert">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_COPY" value="gtk-copy">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_CUT" value="gtk-cut">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_DELETE" value="gtk-delete">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_DIALOG_AUTHENTICATION"
+              value="gtk-dialog-authentication">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_DIALOG_ERROR" value="gtk-dialog-error">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_DIALOG_INFO" value="gtk-dialog-info">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_DIALOG_QUESTION" value="gtk-dialog-question">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_DIALOG_WARNING" value="gtk-dialog-warning">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_DIRECTORY" value="gtk-directory">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_DISCARD" value="gtk-discard">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_DISCONNECT" value="gtk-disconnect">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_DND" value="gtk-dnd">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_DND_MULTIPLE" value="gtk-dnd-multiple">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_EDIT" value="gtk-edit">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_EXECUTE" value="gtk-execute">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_FILE" value="gtk-file">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_FIND" value="gtk-find">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_FIND_AND_REPLACE" value="gtk-find-and-replace">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_FLOPPY" value="gtk-floppy">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_FULLSCREEN" value="gtk-fullscreen">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_GOTO_BOTTOM" value="gtk-goto-bottom">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_GOTO_FIRST" value="gtk-goto-first">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_GOTO_LAST" value="gtk-goto-last">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_GOTO_TOP" value="gtk-goto-top">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_GO_BACK" value="gtk-go-back">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_GO_DOWN" value="gtk-go-down">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_GO_FORWARD" value="gtk-go-forward">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_GO_UP" value="gtk-go-up">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_HARDDISK" value="gtk-harddisk">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_HELP" value="gtk-help">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_HOME" value="gtk-home">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_INDENT" value="gtk-indent">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_INDEX" value="gtk-index">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_INFO" value="gtk-info">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_ITALIC" value="gtk-italic">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_JUMP_TO" value="gtk-jump-to">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_JUSTIFY_CENTER" value="gtk-justify-center">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_JUSTIFY_FILL" value="gtk-justify-fill">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_JUSTIFY_LEFT" value="gtk-justify-left">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_JUSTIFY_RIGHT" value="gtk-justify-right">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_LEAVE_FULLSCREEN" value="gtk-leave-fullscreen">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_MEDIA_FORWARD" value="gtk-media-forward">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_MEDIA_NEXT" value="gtk-media-next">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_MEDIA_PAUSE" value="gtk-media-pause">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_MEDIA_PLAY" value="gtk-media-play">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_MEDIA_PREVIOUS" value="gtk-media-previous">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_MEDIA_RECORD" value="gtk-media-record">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_MEDIA_REWIND" value="gtk-media-rewind">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_MEDIA_STOP" value="gtk-media-stop">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_MISSING_IMAGE" value="gtk-missing-image">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_NETWORK" value="gtk-network">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_NEW" value="gtk-new">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_NO" value="gtk-no">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_OK" value="gtk-ok">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_OPEN" value="gtk-open">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_ORIENTATION_LANDSCAPE"
+              value="gtk-orientation-landscape">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_ORIENTATION_PORTRAIT"
+              value="gtk-orientation-portrait">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_ORIENTATION_REVERSE_LANDSCAPE"
+              value="gtk-orientation-reverse-landscape">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_ORIENTATION_REVERSE_PORTRAIT"
+              value="gtk-orientation-reverse-portrait">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_PAGE_SETUP" value="gtk-page-setup">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_PASTE" value="gtk-paste">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_PREFERENCES" value="gtk-preferences">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_PRINT" value="gtk-print">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_PRINT_ERROR" value="gtk-print-error">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_PRINT_PAUSED" value="gtk-print-paused">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_PRINT_PREVIEW" value="gtk-print-preview">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_PRINT_REPORT" value="gtk-print-report">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_PRINT_WARNING" value="gtk-print-warning">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_PROPERTIES" value="gtk-properties">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_QUIT" value="gtk-quit">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_REDO" value="gtk-redo">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_REFRESH" value="gtk-refresh">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_REMOVE" value="gtk-remove">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_REVERT_TO_SAVED" value="gtk-revert-to-saved">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_SAVE" value="gtk-save">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_SAVE_AS" value="gtk-save-as">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_SELECT_ALL" value="gtk-select-all">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_SELECT_COLOR" value="gtk-select-color">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_SELECT_FONT" value="gtk-select-font">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_SORT_ASCENDING" value="gtk-sort-ascending">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_SORT_DESCENDING" value="gtk-sort-descending">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_SPELL_CHECK" value="gtk-spell-check">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_STOP" value="gtk-stop">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_STRIKETHROUGH" value="gtk-strikethrough">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_UNDELETE" value="gtk-undelete">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_UNDERLINE" value="gtk-underline">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_UNDO" value="gtk-undo">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_UNINDENT" value="gtk-unindent">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_YES" value="gtk-yes">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_ZOOM_100" value="gtk-zoom-100">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_ZOOM_FIT" value="gtk-zoom-fit">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_ZOOM_IN" value="gtk-zoom-in">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="STOCK_ZOOM_OUT" value="gtk-zoom-out">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <class name="Scale"
+           c:symbol-prefix="scale"
+           c:type="GtkScale"
+           parent="Range"
+           glib:type-name="GtkScale"
+           glib:get-type="gtk_scale_get_type"
+           glib:type-struct="ScaleClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_scale_new" version="3.0">
+        <doc xml:whitespace="preserve">Creates a new #GtkScale.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkScale</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the scale's orientation.</doc>
+            <type name="Orientation" c:type="GtkOrientation"/>
+          </parameter>
+          <parameter name="adjustment" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkAdjustment which sets the range of the scale, or %NULL to create a new adjustment.</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_range"
+                   c:identifier="gtk_scale_new_with_range"
+                   version="3.0">
+        <doc xml:whitespace="preserve">Creates a new scale widget with the given orientation that lets the
+user input a number between @min and @max (including @min and @max)
+with the increment @step.  @step must be nonzero; it's the distance
+the slider moves when using the arrow keys to adjust the scale
+value.
+Note that the way in which the precision is derived works best if @step
+is a power of ten. If the resulting precision is not suitable for your
+needs, use gtk_scale_set_digits() to correct it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkScale</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the scale's orientation.</doc>
+            <type name="Orientation" c:type="GtkOrientation"/>
+          </parameter>
+          <parameter name="min" transfer-ownership="none">
+            <doc xml:whitespace="preserve">minimum value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="max" transfer-ownership="none">
+            <doc xml:whitespace="preserve">maximum value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="step" transfer-ownership="none">
+            <doc xml:whitespace="preserve">step increment (tick size) used with keyboard shortcuts</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="draw_value">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_layout_offsets"
+                      invoker="get_layout_offsets"
+                      version="2.4">
+        <doc xml:whitespace="preserve">Obtains the coordinates where the scale will draw the 
+#PangoLayout representing the text in the scale. Remember
+when using the #PangoLayout function you need to convert to
+and from pixels using PANGO_PIXELS() or #PANGO_SCALE. 
+If the #GtkScale:draw-value property is %FALSE, the return 
+values are undefined.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store X offset of layout, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store Y offset of layout, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_mark" c:identifier="gtk_scale_add_mark" version="2.16">
+        <doc xml:whitespace="preserve">Adds a mark at @value. 
+A mark is indicated visually by drawing a tick mark next to the scale, 
+and GTK+ makes it easy for the user to position the scale exactly at the 
+marks value.
+If @markup is not %NULL, text is shown next to the tick mark. 
+To remove marks from a scale, use gtk_scale_clear_marks().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value at which the mark is placed, must be between the lower and upper limits of the scales' adjustment</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">where to draw the mark. For a horizontal scale, #GTK_POS_TOP is drawn above the scale, anything else below. For a vertical scale, #GTK_POS_LEFT is drawn to the left of the scale, anything else to the right.</doc>
+            <type name="PositionType" c:type="GtkPositionType"/>
+          </parameter>
+          <parameter name="markup" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">Text to be shown at the mark, using &lt;link linkend="PangoMarkupFormat"&gt;Pango markup&lt;/link&gt;, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear_marks"
+              c:identifier="gtk_scale_clear_marks"
+              version="2.16">
+        <doc xml:whitespace="preserve">Removes any marks that have been added with gtk_scale_add_mark().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_digits" c:identifier="gtk_scale_get_digits">
+        <doc xml:whitespace="preserve">Gets the number of decimal places that are displayed in the value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of decimal places that are displayed</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_draw_value" c:identifier="gtk_scale_get_draw_value">
+        <doc xml:whitespace="preserve">Returns whether the current value is displayed as a string 
+next to the slider.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the current value is displayed as a string</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_layout"
+              c:identifier="gtk_scale_get_layout"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the #PangoLayout used to display the scale. The returned
+object is owned by the scale so does not need to be freed by
+the caller.
+or %NULL if the #GtkScale:draw-value property is %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #PangoLayout for this scale,</doc>
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </return-value>
+      </method>
+      <method name="get_layout_offsets"
+              c:identifier="gtk_scale_get_layout_offsets"
+              version="2.4">
+        <doc xml:whitespace="preserve">Obtains the coordinates where the scale will draw the 
+#PangoLayout representing the text in the scale. Remember
+when using the #PangoLayout function you need to convert to
+and from pixels using PANGO_PIXELS() or #PANGO_SCALE. 
+If the #GtkScale:draw-value property is %FALSE, the return 
+values are undefined.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store X offset of layout, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store Y offset of layout, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_pos" c:identifier="gtk_scale_get_value_pos">
+        <doc xml:whitespace="preserve">Gets the position in which the current value is displayed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the position in which the current value is displayed</doc>
+          <type name="PositionType" c:type="GtkPositionType"/>
+        </return-value>
+      </method>
+      <method name="set_digits" c:identifier="gtk_scale_set_digits">
+        <doc xml:whitespace="preserve">Sets the number of decimal places that are displayed in the value.
+Also causes the value of the adjustment to be rounded off to this
+number of digits, so the retrieved value matches the value the user saw.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="digits" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of decimal places to display, e.g. use 1 to display 1.0, 2 to display 1.00, etc</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_draw_value" c:identifier="gtk_scale_set_draw_value">
+        <doc xml:whitespace="preserve">Specifies whether the current value is displayed as a string next 
+to the slider.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="draw_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to draw the value</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value_pos" c:identifier="gtk_scale_set_value_pos">
+        <doc xml:whitespace="preserve">Sets the position in which the current value is displayed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position in which the current value is displayed</doc>
+            <type name="PositionType" c:type="GtkPositionType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="digits" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="draw-value" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="value-pos" writable="1" transfer-ownership="none">
+        <type name="PositionType"/>
+      </property>
+      <field name="range">
+        <type name="Range" c:type="GtkRange"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="ScalePrivate" c:type="GtkScalePrivate*"/>
+      </field>
+      <glib:signal name="format-value">
+        <doc xml:whitespace="preserve">Signal which allows you to change how the scale value is displayed.
+Connect a signal handler which returns an allocated string representing 
+Here's an example signal handler which displays a value 1.0 as
+with "--&amp;gt;1.0&amp;lt;--".
+|[
+static gchar*
+format_value_callback (GtkScale *scale,
+gdouble   value)
+{
+return g_strdup_printf ("--&amp;gt;&amp;percnt;0.*g&amp;lt;--",
+gtk_scale_get_digits (scale), value);
+}
+]|</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">allocated string representing @value</doc>
+          <type name="utf8"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value to format</doc>
+            <type name="gdouble"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <class name="ScaleButton"
+           c:symbol-prefix="scale_button"
+           c:type="GtkScaleButton"
+           parent="Button"
+           glib:type-name="GtkScaleButton"
+           glib:get-type="gtk_scale_button_get_type"
+           glib:type-struct="ScaleButtonClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Activatable"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new"
+                   c:identifier="gtk_scale_button_new"
+                   version="2.12">
+        <doc xml:whitespace="preserve">Creates a #GtkScaleButton, with a range between @min and @max, with
+a stepping of @step.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkScaleButton</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a stock icon size</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="min" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the minimum value of the scale (usually 0)</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="max" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the maximum value of the scale (usually 100)</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="step" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the stepping of value when a scroll-wheel event, or up/down arrow event occurs (usually 2)</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="icons" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a %NULL-terminated array of icon names, or %NULL if you want to set the list later with gtk_scale_button_set_icons()</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_adjustment"
+              c:identifier="gtk_scale_button_get_adjustment"
+              version="2.12">
+        <doc xml:whitespace="preserve">Gets the #GtkAdjustment associated with the #GtkScaleButton's scale.
+See gtk_range_get_adjustment() for details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the adjustment associated with the scale</doc>
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="get_minus_button"
+              c:identifier="gtk_scale_button_get_minus_button"
+              version="2.14">
+        <doc xml:whitespace="preserve">Retrieves the minus button of the #GtkScaleButton.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the minus button of the #GtkScaleButton</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_plus_button"
+              c:identifier="gtk_scale_button_get_plus_button"
+              version="2.14">
+        <doc xml:whitespace="preserve">Retrieves the plus button of the #GtkScaleButton.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the plus button of the #GtkScaleButton</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_popup"
+              c:identifier="gtk_scale_button_get_popup"
+              version="2.14">
+        <doc xml:whitespace="preserve">Retrieves the popup of the #GtkScaleButton.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the popup of the #GtkScaleButton</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_value"
+              c:identifier="gtk_scale_button_get_value"
+              version="2.12">
+        <doc xml:whitespace="preserve">Gets the current value of the scale button.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">current value of the scale button</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_adjustment"
+              c:identifier="gtk_scale_button_set_adjustment"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets the #GtkAdjustment to be used as a model
+for the #GtkScaleButton's scale.
+See gtk_range_set_adjustment() for details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkAdjustment</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icons"
+              c:identifier="gtk_scale_button_set_icons"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets the icons to be used by the scale button.
+For details, see the #GtkScaleButton:icons property.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icons" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a %NULL-terminated array of icon names</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value"
+              c:identifier="gtk_scale_button_set_value"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets the current value of the scale; if the value is outside
+the minimum or maximum range values, it will be clamped to fit
+inside them. The scale button emits the #GtkScaleButton::value-changed
+signal if the value changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new value of the scale button</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="adjustment" writable="1" transfer-ownership="none">
+        <type name="Adjustment"/>
+      </property>
+      <property name="icons"
+                version="2.12"
+                introspectable="0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The names of the icons to be used by the scale button.
+The first item in the array will be used in the button
+when the current value is the lowest value, the second
+item for the highest value. All the subsequent icons will
+be used for all the other values, spread evenly over the
+range of values.
+If there's only one icon name in the @icons array, it will
+be used for all the values. If only two icon names are in
+the @icons array, the first one will be used for the bottom
+50% of the scale, and the second one for the top 50%.
+It is recommended to use at least 3 icons so that the
+#GtkScaleButton reflects the current value of the scale
+better for the users.</doc>
+        <type/>
+      </property>
+      <property name="size" writable="1" transfer-ownership="none">
+        <type name="IconSize"/>
+      </property>
+      <property name="value" writable="1" transfer-ownership="none">
+        <type name="gdouble"/>
+      </property>
+      <field name="parent">
+        <type name="Button" c:type="GtkButton"/>
+      </field>
+      <field name="priv">
+        <type name="ScaleButtonPrivate" c:type="GtkScaleButtonPrivate*"/>
+      </field>
+      <glib:signal name="popdown" version="2.12">
+        <doc xml:whitespace="preserve">The ::popdown signal is a
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted to popdown the scale widget.
+The default binding for this signal is Escape.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="popup" version="2.12">
+        <doc xml:whitespace="preserve">The ::popup signal is a
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted to popup the scale widget.
+The default bindings for this signal are Space, Enter and Return.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="value-changed" version="2.12">
+        <doc xml:whitespace="preserve">The ::value-changed signal is emitted when the value field has
+changed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new value</doc>
+            <type name="gdouble"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ScaleButtonClass"
+            c:type="GtkScaleButtonClass"
+            glib:is-gtype-struct-for="ScaleButton">
+      <field name="parent_class">
+        <type name="ButtonClass" c:type="GtkButtonClass"/>
+      </field>
+      <field name="value_changed">
+        <callback name="value_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="button" transfer-ownership="none">
+              <type name="ScaleButton" c:type="GtkScaleButton*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="gdouble" c:type="gdouble"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ScaleButtonPrivate"
+            c:type="GtkScaleButtonPrivate"
+            disguised="1">
+    </record>
+    <record name="ScaleClass"
+            c:type="GtkScaleClass"
+            glib:is-gtype-struct-for="Scale">
+      <field name="parent_class">
+        <type name="RangeClass" c:type="GtkRangeClass"/>
+      </field>
+      <field name="format_value">
+        <callback name="format_value">
+          <return-value transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="scale" transfer-ownership="none">
+              <type name="Scale" c:type="GtkScale*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="gdouble" c:type="gdouble"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_value">
+        <callback name="draw_value">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="scale" transfer-ownership="none">
+              <type name="Scale" c:type="GtkScale*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_layout_offsets">
+        <callback name="get_layout_offsets">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="scale" transfer-ownership="none">
+              <type name="Scale" c:type="GtkScale*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">location to store X offset of layout, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">location to store Y offset of layout, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ScalePrivate" c:type="GtkScalePrivate" disguised="1">
+    </record>
+    <enumeration name="ScrollStep"
+                 glib:type-name="GtkScrollStep"
+                 glib:get-type="gtk_scroll_step_get_type"
+                 c:type="GtkScrollStep">
+      <member name="steps"
+              value="0"
+              c:identifier="GTK_SCROLL_STEPS"
+              glib:nick="steps"/>
+      <member name="pages"
+              value="1"
+              c:identifier="GTK_SCROLL_PAGES"
+              glib:nick="pages"/>
+      <member name="ends"
+              value="2"
+              c:identifier="GTK_SCROLL_ENDS"
+              glib:nick="ends"/>
+      <member name="horizontal_steps"
+              value="3"
+              c:identifier="GTK_SCROLL_HORIZONTAL_STEPS"
+              glib:nick="horizontal-steps"/>
+      <member name="horizontal_pages"
+              value="4"
+              c:identifier="GTK_SCROLL_HORIZONTAL_PAGES"
+              glib:nick="horizontal-pages"/>
+      <member name="horizontal_ends"
+              value="5"
+              c:identifier="GTK_SCROLL_HORIZONTAL_ENDS"
+              glib:nick="horizontal-ends"/>
+    </enumeration>
+    <enumeration name="ScrollType"
+                 glib:type-name="GtkScrollType"
+                 glib:get-type="gtk_scroll_type_get_type"
+                 c:type="GtkScrollType">
+      <member name="none"
+              value="0"
+              c:identifier="GTK_SCROLL_NONE"
+              glib:nick="none"/>
+      <member name="jump"
+              value="1"
+              c:identifier="GTK_SCROLL_JUMP"
+              glib:nick="jump"/>
+      <member name="step_backward"
+              value="2"
+              c:identifier="GTK_SCROLL_STEP_BACKWARD"
+              glib:nick="step-backward"/>
+      <member name="step_forward"
+              value="3"
+              c:identifier="GTK_SCROLL_STEP_FORWARD"
+              glib:nick="step-forward"/>
+      <member name="page_backward"
+              value="4"
+              c:identifier="GTK_SCROLL_PAGE_BACKWARD"
+              glib:nick="page-backward"/>
+      <member name="page_forward"
+              value="5"
+              c:identifier="GTK_SCROLL_PAGE_FORWARD"
+              glib:nick="page-forward"/>
+      <member name="step_up"
+              value="6"
+              c:identifier="GTK_SCROLL_STEP_UP"
+              glib:nick="step-up"/>
+      <member name="step_down"
+              value="7"
+              c:identifier="GTK_SCROLL_STEP_DOWN"
+              glib:nick="step-down"/>
+      <member name="page_up"
+              value="8"
+              c:identifier="GTK_SCROLL_PAGE_UP"
+              glib:nick="page-up"/>
+      <member name="page_down"
+              value="9"
+              c:identifier="GTK_SCROLL_PAGE_DOWN"
+              glib:nick="page-down"/>
+      <member name="step_left"
+              value="10"
+              c:identifier="GTK_SCROLL_STEP_LEFT"
+              glib:nick="step-left"/>
+      <member name="step_right"
+              value="11"
+              c:identifier="GTK_SCROLL_STEP_RIGHT"
+              glib:nick="step-right"/>
+      <member name="page_left"
+              value="12"
+              c:identifier="GTK_SCROLL_PAGE_LEFT"
+              glib:nick="page-left"/>
+      <member name="page_right"
+              value="13"
+              c:identifier="GTK_SCROLL_PAGE_RIGHT"
+              glib:nick="page-right"/>
+      <member name="start"
+              value="14"
+              c:identifier="GTK_SCROLL_START"
+              glib:nick="start"/>
+      <member name="end"
+              value="15"
+              c:identifier="GTK_SCROLL_END"
+              glib:nick="end"/>
+    </enumeration>
+    <class name="Scrollbar"
+           c:symbol-prefix="scrollbar"
+           c:type="GtkScrollbar"
+           parent="Range"
+           glib:type-name="GtkScrollbar"
+           glib:get-type="gtk_scrollbar_get_type"
+           glib:type-struct="ScrollbarClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_scrollbar_new" version="3.0">
+        <doc xml:whitespace="preserve">Creates a new scrollbar with the given orientation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new #GtkScrollbar.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the scrollbar's orientation.</doc>
+            <type name="Orientation" c:type="GtkOrientation"/>
+          </parameter>
+          <parameter name="adjustment"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the #GtkAdjustment to use, or %NULL to create a new adjustment.</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <field name="range">
+        <type name="Range" c:type="GtkRange"/>
+      </field>
+    </class>
+    <record name="ScrollbarClass"
+            c:type="GtkScrollbarClass"
+            glib:is-gtype-struct-for="Scrollbar">
+      <field name="parent_class">
+        <type name="RangeClass" c:type="GtkRangeClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="ScrolledWindow"
+           c:symbol-prefix="scrolled_window"
+           c:type="GtkScrolledWindow"
+           parent="Bin"
+           glib:type-name="GtkScrolledWindow"
+           glib:get-type="gtk_scrolled_window_get_type"
+           glib:type-struct="ScrolledWindowClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_scrolled_window_new">
+        <doc xml:whitespace="preserve">Creates a new scrolled window.
+The two arguments are the scrolled window's adjustments; these will be
+shared with the scrollbars and the child widget to keep the bars in sync 
+with the child. Usually you want to pass %NULL for the adjustments, which 
+will cause the scrolled window to create them for you.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new scrolled window</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="hadjustment"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">horizontal adjustment</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+          <parameter name="vadjustment"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">vertical adjustment</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add_with_viewport"
+              c:identifier="gtk_scrolled_window_add_with_viewport">
+        <doc xml:whitespace="preserve">Used to add children without native scrolling capabilities. This
+is simply a convenience function; it is equivalent to adding the
+unscrollable child to a viewport, then adding the viewport to the
+scrolled window. If a child has native scrolling, use
+gtk_container_add() instead of this function.
+The viewport scrolls the child by moving its #GdkWindow, and takes
+the size of the child to be the size of its toplevel #GdkWindow. 
+This will be very wrong for most widgets that support native scrolling;
+for example, if you add a widget such as #GtkTreeView with a viewport,
+the whole widget will scroll, including the column headings. Thus, 
+widgets with native scrolling support should not be used with the 
+#GtkViewport proxy.
+A widget supports scrolling natively if the 
+set_scroll_adjustments_signal field in #GtkWidgetClass is non-zero,
+i.e. has been filled in with a valid signal identifier.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the widget you want to scroll</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_hadjustment"
+              c:identifier="gtk_scrolled_window_get_hadjustment">
+        <doc xml:whitespace="preserve">Returns the horizontal scrollbar's adjustment, used to connect the
+horizontal scrollbar to the child widget's horizontal scroll
+functionality.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the horizontal #GtkAdjustment</doc>
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="get_hscrollbar"
+              c:identifier="gtk_scrolled_window_get_hscrollbar"
+              version="2.8">
+        <doc xml:whitespace="preserve">Returns the horizontal scrollbar of @scrolled_window.
+or %NULL if it does not have one.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the horizontal scrollbar of the scrolled window,</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_placement"
+              c:identifier="gtk_scrolled_window_get_placement">
+        <doc xml:whitespace="preserve">Gets the placement of the contents with respect to the scrollbars
+for the scrolled window. See gtk_scrolled_window_set_placement().
+See also gtk_scrolled_window_set_placement() and
+gtk_scrolled_window_unset_placement().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current placement value.</doc>
+          <type name="CornerType" c:type="GtkCornerType"/>
+        </return-value>
+      </method>
+      <method name="get_policy" c:identifier="gtk_scrolled_window_get_policy">
+        <doc xml:whitespace="preserve">Retrieves the current policy values for the horizontal and vertical
+scrollbars. See gtk_scrolled_window_set_policy().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hscrollbar_policy" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the policy for the horizontal scrollbar, or %NULL.</doc>
+            <type name="PolicyType" c:type="GtkPolicyType*"/>
+          </parameter>
+          <parameter name="vscrollbar_policy" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the policy for the vertical scrollbar, or %NULL.</doc>
+            <type name="PolicyType" c:type="GtkPolicyType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_shadow_type"
+              c:identifier="gtk_scrolled_window_get_shadow_type">
+        <doc xml:whitespace="preserve">Gets the shadow type of the scrolled window. See 
+gtk_scrolled_window_set_shadow_type().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current shadow type</doc>
+          <type name="ShadowType" c:type="GtkShadowType"/>
+        </return-value>
+      </method>
+      <method name="get_vadjustment"
+              c:identifier="gtk_scrolled_window_get_vadjustment">
+        <doc xml:whitespace="preserve">Returns the vertical scrollbar's adjustment, used to connect the
+vertical scrollbar to the child widget's vertical scroll functionality.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the vertical #GtkAdjustment</doc>
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="get_vscrollbar"
+              c:identifier="gtk_scrolled_window_get_vscrollbar"
+              version="2.8">
+        <doc xml:whitespace="preserve">Returns the vertical scrollbar of @scrolled_window.
+or %NULL if it does not have one.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the vertical scrollbar of the scrolled window,</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="set_hadjustment"
+              c:identifier="gtk_scrolled_window_set_hadjustment">
+        <doc xml:whitespace="preserve">Sets the #GtkAdjustment for the horizontal scrollbar.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hadjustment" transfer-ownership="none">
+            <doc xml:whitespace="preserve">horizontal scroll adjustment</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_placement"
+              c:identifier="gtk_scrolled_window_set_placement">
+        <doc xml:whitespace="preserve">Sets the placement of the contents with respect to the scrollbars
+for the scrolled window.
+The default is %GTK_CORNER_TOP_LEFT, meaning the child is
+in the top left, with the scrollbars underneath and to the right.
+Other values in #GtkCornerType are %GTK_CORNER_TOP_RIGHT,
+%GTK_CORNER_BOTTOM_LEFT, and %GTK_CORNER_BOTTOM_RIGHT.
+See also gtk_scrolled_window_get_placement() and
+gtk_scrolled_window_unset_placement().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window_placement" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position of the child window</doc>
+            <type name="CornerType" c:type="GtkCornerType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_policy" c:identifier="gtk_scrolled_window_set_policy">
+        <doc xml:whitespace="preserve">Sets the scrollbar policy for the horizontal and vertical scrollbars.
+The policy determines when the scrollbar should appear; it is a value
+from the #GtkPolicyType enumeration. If %GTK_POLICY_ALWAYS, the
+scrollbar is always present; if %GTK_POLICY_NEVER, the scrollbar is
+never present; if %GTK_POLICY_AUTOMATIC, the scrollbar is present only
+if needed (that is, if the slider part of the bar would be smaller
+than the trough - the display is larger than the page size).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hscrollbar_policy" transfer-ownership="none">
+            <doc xml:whitespace="preserve">policy for horizontal bar</doc>
+            <type name="PolicyType" c:type="GtkPolicyType"/>
+          </parameter>
+          <parameter name="vscrollbar_policy" transfer-ownership="none">
+            <doc xml:whitespace="preserve">policy for vertical bar</doc>
+            <type name="PolicyType" c:type="GtkPolicyType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_shadow_type"
+              c:identifier="gtk_scrolled_window_set_shadow_type">
+        <doc xml:whitespace="preserve">Changes the type of shadow drawn around the contents of</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">kind of shadow to draw around scrolled window contents</doc>
+            <type name="ShadowType" c:type="GtkShadowType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_vadjustment"
+              c:identifier="gtk_scrolled_window_set_vadjustment">
+        <doc xml:whitespace="preserve">Sets the #GtkAdjustment for the vertical scrollbar.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="vadjustment" transfer-ownership="none">
+            <doc xml:whitespace="preserve">vertical scroll adjustment</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_placement"
+              c:identifier="gtk_scrolled_window_unset_placement"
+              version="2.10">
+        <doc xml:whitespace="preserve">Unsets the placement of the contents with respect to the scrollbars
+for the scrolled window. If no window placement is set for a scrolled
+window, it obeys the "gtk-scrolled-window-placement" XSETTING.
+See also gtk_scrolled_window_set_placement() and
+gtk_scrolled_window_get_placement().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="hadjustment"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="Adjustment"/>
+      </property>
+      <property name="hscrollbar-policy"
+                writable="1"
+                transfer-ownership="none">
+        <type name="PolicyType"/>
+      </property>
+      <property name="shadow-type" writable="1" transfer-ownership="none">
+        <type name="ShadowType"/>
+      </property>
+      <property name="vadjustment"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="Adjustment"/>
+      </property>
+      <property name="vscrollbar-policy"
+                writable="1"
+                transfer-ownership="none">
+        <type name="PolicyType"/>
+      </property>
+      <property name="window-placement" writable="1" transfer-ownership="none">
+        <type name="CornerType"/>
+      </property>
+      <property name="window-placement-set"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether "window-placement" should be used to determine the location 
+of the contents with respect to the scrollbars. Otherwise, the 
+"gtk-scrolled-window-placement" setting is used.</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="container">
+        <type name="Bin" c:type="GtkBin"/>
+      </field>
+      <field name="priv">
+        <type name="ScrolledWindowPrivate" c:type="GtkScrolledWindowPrivate*"/>
+      </field>
+      <glib:signal name="move-focus-out">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="DirectionType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="scroll-child">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="ScrollType"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ScrolledWindowClass"
+            c:type="GtkScrolledWindowClass"
+            glib:is-gtype-struct-for="ScrolledWindow">
+      <field name="parent_class">
+        <type name="BinClass" c:type="GtkBinClass"/>
+      </field>
+      <field name="scrollbar_spacing">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="scroll_child">
+        <callback name="scroll_child">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="scrolled_window" transfer-ownership="none">
+              <type name="ScrolledWindow" c:type="GtkScrolledWindow*"/>
+            </parameter>
+            <parameter name="scroll" transfer-ownership="none">
+              <type name="ScrollType" c:type="GtkScrollType"/>
+            </parameter>
+            <parameter name="horizontal" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="move_focus_out">
+        <callback name="move_focus_out">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="scrolled_window" transfer-ownership="none">
+              <type name="ScrolledWindow" c:type="GtkScrolledWindow*"/>
+            </parameter>
+            <parameter name="direction" transfer-ownership="none">
+              <type name="DirectionType" c:type="GtkDirectionType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ScrolledWindowPrivate"
+            c:type="GtkScrolledWindowPrivate"
+            disguised="1">
+    </record>
+    <record name="SelectionData"
+            c:type="GtkSelectionData"
+            glib:type-name="GtkSelectionData"
+            glib:get-type="gtk_selection_data_get_type"
+            c:symbol-prefix="selection_data">
+      <field name="selection" writable="1">
+        <type name="Gdk.Atom" c:type="GdkAtom"/>
+      </field>
+      <field name="target" writable="1">
+        <type name="Gdk.Atom" c:type="GdkAtom"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="Gdk.Atom" c:type="GdkAtom"/>
+      </field>
+      <field name="format" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="data" writable="1">
+        <type name="guint8" c:type="guchar*"/>
+      </field>
+      <field name="length" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="display" writable="1">
+        <type name="Gdk.Display" c:type="GdkDisplay*"/>
+      </field>
+      <method name="copy" c:identifier="gtk_selection_data_copy">
+        <doc xml:whitespace="preserve">Makes a copy of a #GtkSelectionData structure and its data.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to a copy of @data.</doc>
+          <type name="SelectionData" c:type="GtkSelectionData*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gtk_selection_data_free">
+        <doc xml:whitespace="preserve">Frees a #GtkSelectionData structure returned from
+gtk_selection_data_copy().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_data"
+              c:identifier="gtk_selection_data_get_data"
+              version="2.14">
+        <doc xml:whitespace="preserve">Retrieves the raw data of the selection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the raw data of the selection.</doc>
+          <type name="guint8" c:type="guchar*"/>
+        </return-value>
+      </method>
+      <method name="get_data_type"
+              c:identifier="gtk_selection_data_get_data_type"
+              version="2.14"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Retrieves the data type of the selection.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the data type of the selection.</doc>
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </return-value>
+      </method>
+      <method name="get_display"
+              c:identifier="gtk_selection_data_get_display"
+              version="2.14">
+        <doc xml:whitespace="preserve">Retrieves the display of the selection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the display of the selection.</doc>
+          <type name="Gdk.Display" c:type="GdkDisplay*"/>
+        </return-value>
+      </method>
+      <method name="get_format"
+              c:identifier="gtk_selection_data_get_format"
+              version="2.14">
+        <doc xml:whitespace="preserve">Retrieves the format of the selection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the format of the selection.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_length"
+              c:identifier="gtk_selection_data_get_length"
+              version="2.14">
+        <doc xml:whitespace="preserve">Retrieves the length of the raw data of the selection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the length of the data of the selection.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_pixbuf"
+              c:identifier="gtk_selection_data_get_pixbuf"
+              version="2.6">
+        <doc xml:whitespace="preserve">Gets the contents of the selection data as a #GdkPixbuf.
+image type and it could be converted to a #GdkPixbuf, a 
+newly allocated pixbuf is returned, otherwise %NULL.
+If the result is non-%NULL it must be freed with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">if the selection data contained a recognized</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="get_selection"
+              c:identifier="gtk_selection_data_get_selection"
+              version="2.16"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Retrieves the selection #GdkAtom of the selection data.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the selection #GdkAtom of the selection data.</doc>
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </return-value>
+      </method>
+      <method name="get_target"
+              c:identifier="gtk_selection_data_get_target"
+              version="2.14"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Retrieves the target of the selection.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the target of the selection.</doc>
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </return-value>
+      </method>
+      <method name="get_targets" c:identifier="gtk_selection_data_get_targets">
+        <doc xml:whitespace="preserve">Gets the contents of @selection_data as an array of targets.
+This can be used to interpret the results of getting
+the standard TARGETS target that is always supplied for
+any selection.
+array of targets, otherwise %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @selection_data contains a valid</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="targets" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store an array of targets. The result stored here must be freed with g_free().</doc>
+            <type name="Gdk.Atom" c:type="GdkAtom**"/>
+          </parameter>
+          <parameter name="n_atoms" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store number of items in @targets.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_text" c:identifier="gtk_selection_data_get_text">
+        <doc xml:whitespace="preserve">Gets the contents of the selection data as a UTF-8 string.
+text type and it could be converted to UTF-8, a newly allocated
+string containing the converted text, otherwise %NULL.
+If the result is non-%NULL it must be freed with g_free().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">if the selection data contained a recognized</doc>
+          <type name="guint8" c:type="guchar*"/>
+        </return-value>
+      </method>
+      <method name="get_uris"
+              c:identifier="gtk_selection_data_get_uris"
+              version="2.6">
+        <doc xml:whitespace="preserve">Gets the contents of the selection data as array of URIs.
+the selection data contains a list of
+URIs, a newly allocated %NULL-terminated string array
+containing the URIs, otherwise %NULL. If the result is
+non-%NULL it must be freed with g_strfreev().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">if</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="set" c:identifier="gtk_selection_data_set">
+        <doc xml:whitespace="preserve">Stores new data into a #GtkSelectionData object. Should
+&lt;emphasis&gt;only&lt;/emphasis&gt; be called from a selection handler callback.
+Zero-terminates the stored data.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of selection data</doc>
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">format (number of bits in a unit)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer to the data (will be copied)</doc>
+            <type name="guint8" c:type="guchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">length of the data</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pixbuf"
+              c:identifier="gtk_selection_data_set_pixbuf"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the contents of the selection from a #GdkPixbuf
+The pixbuf is converted to the form determined by
+otherwise %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the selection was successfully set,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkPixbuf</doc>
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_text" c:identifier="gtk_selection_data_set_text">
+        <doc xml:whitespace="preserve">Sets the contents of the selection from a UTF-8 encoded string.
+The string is converted to the form determined by
+otherwise %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the selection was successfully set,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a UTF-8 string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of @str, or -1 if @str is nul-terminated.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_uris"
+              c:identifier="gtk_selection_data_set_uris"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the contents of the selection from a list of URIs.
+The string is converted to the form determined by
+otherwise %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the selection was successfully set,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uris" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a %NULL-terminated array of strings holding URIs</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="targets_include_image"
+              c:identifier="gtk_selection_data_targets_include_image"
+              version="2.6">
+        <doc xml:whitespace="preserve">Given a #GtkSelectionData object holding a list of targets,
+determines if any of the targets in @targets can be used to
+provide a #GdkPixbuf.
+and a suitable target for images is included, otherwise %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @selection_data holds a list of targets,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="writable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to accept only targets for which GTK+ knows how to convert a pixbuf into the format</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="targets_include_rich_text"
+              c:identifier="gtk_selection_data_targets_include_rich_text"
+              version="2.10">
+        <doc xml:whitespace="preserve">Given a #GtkSelectionData object holding a list of targets,
+determines if any of the targets in @targets can be used to
+provide rich text.
+and a suitable target for rich text is included,
+otherwise %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @selection_data holds a list of targets,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextBuffer</doc>
+            <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="targets_include_text"
+              c:identifier="gtk_selection_data_targets_include_text">
+        <doc xml:whitespace="preserve">Given a #GtkSelectionData object holding a list of targets,
+determines if any of the targets in @targets can be used to
+provide text.
+and a suitable target for text is included, otherwise %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @selection_data holds a list of targets,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="targets_include_uri"
+              c:identifier="gtk_selection_data_targets_include_uri"
+              version="2.10">
+        <doc xml:whitespace="preserve">Given a #GtkSelectionData object holding a list of targets,
+determines if any of the targets in @targets can be used to
+provide a list or URIs.
+and a suitable target for URI lists is included, otherwise %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @selection_data holds a list of targets,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="SelectionMode"
+                 glib:type-name="GtkSelectionMode"
+                 glib:get-type="gtk_selection_mode_get_type"
+                 c:type="GtkSelectionMode">
+      <member name="none"
+              value="0"
+              c:identifier="GTK_SELECTION_NONE"
+              glib:nick="none"/>
+      <member name="single"
+              value="1"
+              c:identifier="GTK_SELECTION_SINGLE"
+              glib:nick="single"/>
+      <member name="browse"
+              value="2"
+              c:identifier="GTK_SELECTION_BROWSE"
+              glib:nick="browse"/>
+      <member name="multiple"
+              value="3"
+              c:identifier="GTK_SELECTION_MULTIPLE"
+              glib:nick="multiple"/>
+    </enumeration>
+    <enumeration name="SensitivityType"
+                 glib:type-name="GtkSensitivityType"
+                 glib:get-type="gtk_sensitivity_type_get_type"
+                 c:type="GtkSensitivityType">
+      <doc xml:whitespace="preserve">Determines how GTK+ handles the sensitivity of stepper arrows
+at the end of range widgets.</doc>
+      <member name="auto"
+              value="0"
+              c:identifier="GTK_SENSITIVITY_AUTO"
+              glib:nick="auto"/>
+      <member name="on"
+              value="1"
+              c:identifier="GTK_SENSITIVITY_ON"
+              glib:nick="on"/>
+      <member name="off"
+              value="2"
+              c:identifier="GTK_SENSITIVITY_OFF"
+              glib:nick="off"/>
+    </enumeration>
+    <class name="Separator"
+           c:symbol-prefix="separator"
+           c:type="GtkSeparator"
+           parent="Widget"
+           glib:type-name="GtkSeparator"
+           glib:get-type="gtk_separator_get_type"
+           glib:type-struct="SeparatorClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_separator_new" version="3.0">
+        <doc xml:whitespace="preserve">Creates a new #GtkSeparator with the given orientation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkSeparator.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the separator's orientation.</doc>
+            <type name="Orientation" c:type="GtkOrientation"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <field name="widget">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="priv">
+        <type name="SeparatorPrivate" c:type="GtkSeparatorPrivate*"/>
+      </field>
+    </class>
+    <record name="SeparatorClass"
+            c:type="GtkSeparatorClass"
+            glib:is-gtype-struct-for="Separator">
+      <field name="parent_class">
+        <type name="WidgetClass" c:type="GtkWidgetClass"/>
+      </field>
+    </record>
+    <class name="SeparatorMenuItem"
+           c:symbol-prefix="separator_menu_item"
+           c:type="GtkSeparatorMenuItem"
+           parent="MenuItem"
+           glib:type-name="GtkSeparatorMenuItem"
+           glib:get-type="gtk_separator_menu_item_get_type"
+           glib:type-struct="SeparatorMenuItemClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Activatable"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_separator_menu_item_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkSeparatorMenuItem.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkSeparatorMenuItem.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <field name="menu_item">
+        <type name="MenuItem" c:type="GtkMenuItem"/>
+      </field>
+    </class>
+    <record name="SeparatorMenuItemClass"
+            c:type="GtkSeparatorMenuItemClass"
+            glib:is-gtype-struct-for="SeparatorMenuItem">
+      <field name="parent_class">
+        <type name="MenuItemClass" c:type="GtkMenuItemClass"/>
+      </field>
+    </record>
+    <record name="SeparatorPrivate" c:type="GtkSeparatorPrivate" disguised="1">
+    </record>
+    <class name="SeparatorToolItem"
+           c:symbol-prefix="separator_tool_item"
+           c:type="GtkSeparatorToolItem"
+           parent="ToolItem"
+           glib:type-name="GtkSeparatorToolItem"
+           glib:get-type="gtk_separator_tool_item_get_type"
+           glib:type-struct="SeparatorToolItemClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Activatable"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new"
+                   c:identifier="gtk_separator_tool_item_new"
+                   version="2.4">
+        <doc xml:whitespace="preserve">Create a new #GtkSeparatorToolItem</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new #GtkSeparatorToolItem</doc>
+          <type name="ToolItem" c:type="GtkToolItem*"/>
+        </return-value>
+      </constructor>
+      <method name="get_draw"
+              c:identifier="gtk_separator_tool_item_get_draw"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether @item is drawn as a line, or just blank. 
+See gtk_separator_tool_item_set_draw().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @item is drawn as a line, or just blank.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_draw"
+              c:identifier="gtk_separator_tool_item_set_draw"
+              version="2.4">
+        <doc xml:whitespace="preserve">Whether @item is drawn as a vertical line, or just blank.
+Setting this to %FALSE along with gtk_tool_item_set_expand() is useful
+to create an item that forces following items to the end of the toolbar.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="draw" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether @item is drawn as a vertical line</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="draw" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="parent">
+        <type name="ToolItem" c:type="GtkToolItem"/>
+      </field>
+      <field name="priv">
+        <type name="SeparatorToolItemPrivate"
+              c:type="GtkSeparatorToolItemPrivate*"/>
+      </field>
+    </class>
+    <record name="SeparatorToolItemClass"
+            c:type="GtkSeparatorToolItemClass"
+            glib:is-gtype-struct-for="SeparatorToolItem">
+      <field name="parent_class">
+        <type name="ToolItemClass" c:type="GtkToolItemClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="SeparatorToolItemPrivate"
+            c:type="GtkSeparatorToolItemPrivate"
+            disguised="1">
+    </record>
+    <class name="Settings"
+           c:symbol-prefix="settings"
+           c:type="GtkSettings"
+           parent="GObject.Object"
+           glib:type-name="GtkSettings"
+           glib:get-type="gtk_settings_get_type"
+           glib:type-struct="SettingsClass">
+      <function name="get_default" c:identifier="gtk_settings_get_default">
+        <doc xml:whitespace="preserve">Gets the #GtkSettings object for the default GDK screen, creating
+it if necessary. See gtk_settings_get_for_screen().
+screen, then returns %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkSettings object. If there is no default</doc>
+          <type name="Settings" c:type="GtkSettings*"/>
+        </return-value>
+      </function>
+      <function name="get_for_screen"
+                c:identifier="gtk_settings_get_for_screen"
+                version="2.2">
+        <doc xml:whitespace="preserve">Gets the #GtkSettings object for @screen, creating it if necessary.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkSettings object.</doc>
+          <type name="Settings" c:type="GtkSettings*"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkScreen.</doc>
+            <type name="Gdk.Screen" c:type="GdkScreen*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="install_property"
+                c:identifier="gtk_settings_install_property">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="install_property_parser"
+                c:identifier="gtk_settings_install_property_parser"
+                introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+          <parameter name="parser" transfer-ownership="none">
+            <type name="RcPropertyParser" c:type="GtkRcPropertyParser"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="set_double_property"
+              c:identifier="gtk_settings_set_double_property">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="v_double" transfer-ownership="none">
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="origin" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_long_property"
+              c:identifier="gtk_settings_set_long_property">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="v_long" transfer-ownership="none">
+            <type name="glong" c:type="glong"/>
+          </parameter>
+          <parameter name="origin" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_property_value"
+              c:identifier="gtk_settings_set_property_value">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="svalue" transfer-ownership="none">
+            <type name="SettingsValue" c:type="GtkSettingsValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_string_property"
+              c:identifier="gtk_settings_set_string_property">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="v_string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="origin" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="color-hash" version="2.10" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Holds a hash table representation of the #GtkSettings:gtk-color-scheme 
+setting, mapping color names to #GdkColor&lt;!-- --&gt;s.</doc>
+        <type name="GLib.HashTable">
+          <type name="gpointer" c:type="gpointer"/>
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </property>
+      <property name="gtk-alternative-button-order"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="gtk-alternative-sort-arrows"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Controls the direction of the sort indicators in sorted list and tree
+views. By default an arrow pointing down means the column is sorted
+in ascending order. When set to %TRUE, this order will be inverted.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="gtk-application-prefer-dark-theme"
+                version="2.22"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the application prefers to use a dark theme. If a GTK+ theme
+includes a dark variant, it will be used instead of the configured
+theme.
+Some applications benefit from minimizing the amount of light pollution that
+interferes with the content. Good candidates for dark themes are photo and
+video editors that make the actual content get all the attention and minimize
+the distraction of the chrome.
+Dark themes should not be used for documents, where large spaces are white/light
+and the dark chrome creates too much contrast (web browser, text editor...).</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="gtk-auto-mnemonics"
+                version="2.20"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether mnemonics should be automatically shown and hidden when the user
+presses the mnemonic activator.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="gtk-color-scheme"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A palette of named colors for use in themes. The format of the string is
+&lt;programlisting&gt;
+...
+&lt;/programlisting&gt;
+Color names must be acceptable as identifiers in the 
+&lt;link linkend="gtk-Resource-Files"&gt;gtkrc&lt;/link&gt; syntax, and
+color specifications must be in the format accepted by
+gdk_color_parse().
+Note that due to the way the color tables from different sources are
+merged, color specifications will be converted to hexadecimal form
+when getting this property.
+Starting with GTK+ 2.12, the entries can alternatively be separated
+by ';' instead of newlines:
+&lt;programlisting&gt;
+&lt;/programlisting&gt;</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="gtk-cursor-blink" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the cursor should blink. 
+Also see the #GtkSettings:gtk-cursor-blink-timeout setting, 
+which allows more flexible control over cursor blinking.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="gtk-cursor-blink-time"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="gtk-cursor-blink-timeout"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Time after which the cursor stops blinking, in seconds.
+The timer is reset after each user interaction.
+Setting this to zero has the same effect as setting
+#GtkSettings:gtk-cursor-blink to %FALSE.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="gtk-cursor-theme-name"
+                writable="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="gtk-cursor-theme-size"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="gtk-dnd-drag-threshold"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="gtk-double-click-distance"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="gtk-double-click-time"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="gtk-enable-accels"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether menu items should have visible accelerators which can be
+activated.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="gtk-enable-animations"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="gtk-enable-event-sounds"
+                version="2.14"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether to play any event sounds at all.
+See the &lt;ulink url="http://www.freedesktop.org/wiki/Specifications/sound-theme-spec"&gt;Sound Theme spec&lt;/ulink&gt; 
+for more information on event sounds and sound themes.
+GTK+ itself does not support event sounds, you have to use a loadable 
+module like the one that comes with libcanberra.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="gtk-enable-input-feedback-sounds"
+                version="2.14"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether to play event sounds as feedback to user input.
+See the &lt;ulink url="http://www.freedesktop.org/wiki/Specifications/sound-theme-spec"&gt;Sound Theme spec&lt;/ulink&gt; 
+for more information on event sounds and sound themes.
+GTK+ itself does not support event sounds, you have to use a loadable 
+module like the one that comes with libcanberra.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="gtk-enable-mnemonics"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether labels and menu items should have visible mnemonics which
+can be activated.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="gtk-enable-tooltips"
+                version="2.14"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether tooltips should be shown on widgets.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="gtk-error-bell"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">When %TRUE, keyboard navigation and other input-related errors
+will cause a beep. Since the error bell is implemented using
+gdk_window_beep(), the windowing system may offer ways to
+configure the error bell in many ways, such as flashing the
+window or similar visual effects.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="gtk-fallback-icon-theme"
+                writable="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="gtk-file-chooser-backend"
+                writable="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="gtk-font-name" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="gtk-fontconfig-timestamp"
+                writable="1"
+                transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <property name="gtk-icon-sizes" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">A list of icon sizes. The list is separated by colons, and
+item has the form:
+&lt;replaceable&gt;size-name&lt;/replaceable&gt; = &lt;replaceable&gt;width&lt;/replaceable&gt; , &lt;replaceable&gt;height&lt;/replaceable&gt;
+E.g. "gtk-menu=16,16:gtk-button=20,20:gtk-dialog=48,48". 
+gtk-button, gtk-small-toolbar, gtk-large-toolbar, gtk-dnd, 
+gtk-dialog. Applications can register their own named icon 
+sizes with gtk_icon_size_register().</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="gtk-icon-theme-name"
+                writable="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="gtk-im-module" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Which IM (input method) module should be used by default. This is the 
+input method that will be used if the user has not explicitly chosen 
+another input method from the IM context menu.  
+See #GtkIMContext and see the #GtkSettings:gtk-show-input-method-menu property.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="gtk-key-theme-name"
+                writable="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="gtk-keynav-cursor-only"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">When %TRUE, keyboard navigation should be able to reach all widgets
+by using the cursor keys only. Tab, Shift etc. keys can't be expected
+to be present on the used input device.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="gtk-keynav-wrap-around"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">When %TRUE, some widgets will wrap around when doing keyboard
+navigation, such as menus, menubars and notebooks.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="gtk-menu-bar-accel"
+                writable="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="gtk-modules" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="gtk-print-backends"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A comma-separated list of print backends to use in the print
+dialog. Available print backends depend on the GTK+ installation,
+and may include "file", "cups", "lpr" or "papi".</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="gtk-print-preview-command"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A command to run for displaying the print preview. The command
+should contain a %f placeholder, which will get replaced by
+the path to the pdf file. The command may also contain a %s
+placeholder, which will get replaced by the path to a file
+containing the print settings in the format produced by 
+gtk_print_settings_to_file().
+The preview application is responsible for removing the pdf file
+and the print settings file when it is done.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="gtk-recent-files-limit"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The number of recently used files that should be displayed by default by
+#GtkRecentChooser implementations and by the #GtkFileChooser. A value of
+-1 means every recently used file stored.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="gtk-recent-files-max-age"
+                version="2.14"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The maximum age, in days, of the items inside the recently used
+resources list. Items older than this setting will be excised
+from the list. If set to 0, the list will always be empty; if
+set to -1, no item will be removed.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="gtk-show-input-method-menu"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="gtk-show-unicode-menu"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="gtk-sound-theme-name"
+                version="2.14"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The XDG sound theme to use for event sounds.
+See the &lt;ulink url="http://www.freedesktop.org/wiki/Specifications/sound-theme-spec"&gt;Sound Theme spec&lt;/ulink&gt; 
+for more information on event sounds and sound themes.
+GTK+ itself does not support event sounds, you have to use a loadable 
+module like the one that comes with libcanberra.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="gtk-split-cursor" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="gtk-theme-name" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="gtk-timeout-expand"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="gtk-timeout-initial"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="gtk-timeout-repeat"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="gtk-toolbar-icon-size"
+                writable="1"
+                transfer-ownership="none">
+        <type name="IconSize"/>
+      </property>
+      <property name="gtk-toolbar-style"
+                writable="1"
+                transfer-ownership="none">
+        <type name="ToolbarStyle"/>
+      </property>
+      <property name="gtk-tooltip-browse-mode-timeout"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Amount of time, in milliseconds, after which the browse mode
+will be disabled.
+See #GtkSettings:gtk-tooltip-browse-timeout for more information
+about browse mode.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="gtk-tooltip-browse-timeout"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Controls the time after which tooltips will appear when
+browse mode is enabled, in milliseconds.
+Browse mode is enabled when the mouse pointer moves off an object
+where a tooltip was currently being displayed. If the mouse pointer
+hits another object before the browse mode timeout expires (see
+#GtkSettings:gtk-tooltip-browse-mode-timeout), it will take the 
+amount of milliseconds specified by this setting to popup the tooltip
+for the new object.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="gtk-tooltip-timeout"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Time, in milliseconds, after which a tooltip could appear if the
+cursor is hovering on top of a widget.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="gtk-touchscreen-mode"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">When %TRUE, there are no motion notify events delivered on this screen,
+and widgets can't use the pointer hovering them for any essential
+functionality.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="gtk-xft-antialias"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="gtk-xft-dpi" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="gtk-xft-hinting" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="gtk-xft-hintstyle"
+                writable="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="gtk-xft-rgba" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="queued_settings">
+        <type name="GLib.Data" c:type="GData*"/>
+      </field>
+      <field name="property_values">
+        <type name="SettingsPropertyValue" c:type="GtkSettingsPropertyValue*"/>
+      </field>
+      <field name="rc_context">
+        <type name="RcContext" c:type="GtkRcContext*"/>
+      </field>
+      <field name="screen">
+        <type name="Gdk.Screen" c:type="GdkScreen*"/>
+      </field>
+    </class>
+    <record name="SettingsClass"
+            c:type="GtkSettingsClass"
+            glib:is-gtype-struct-for="Settings">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <record name="SettingsPropertyValue"
+            c:type="GtkSettingsPropertyValue"
+            disguised="1">
+    </record>
+    <record name="SettingsValue" c:type="GtkSettingsValue">
+      <field name="origin" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="GObject.Value" c:type="GValue"/>
+      </field>
+    </record>
+    <enumeration name="ShadowType"
+                 glib:type-name="GtkShadowType"
+                 glib:get-type="gtk_shadow_type_get_type"
+                 c:type="GtkShadowType">
+      <member name="none"
+              value="0"
+              c:identifier="GTK_SHADOW_NONE"
+              glib:nick="none"/>
+      <member name="in" value="1" c:identifier="GTK_SHADOW_IN" glib:nick="in"/>
+      <member name="out"
+              value="2"
+              c:identifier="GTK_SHADOW_OUT"
+              glib:nick="out"/>
+      <member name="etched_in"
+              value="3"
+              c:identifier="GTK_SHADOW_ETCHED_IN"
+              glib:nick="etched-in"/>
+      <member name="etched_out"
+              value="4"
+              c:identifier="GTK_SHADOW_ETCHED_OUT"
+              glib:nick="etched-out"/>
+    </enumeration>
+    <class name="SizeGroup"
+           c:symbol-prefix="size_group"
+           c:type="GtkSizeGroup"
+           parent="GObject.Object"
+           glib:type-name="GtkSizeGroup"
+           glib:get-type="gtk_size_group_get_type"
+           glib:type-struct="SizeGroupClass">
+      <implements name="Buildable"/>
+      <constructor name="new" c:identifier="gtk_size_group_new">
+        <doc xml:whitespace="preserve">Create a new #GtkSizeGroup.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly created #GtkSizeGroup</doc>
+          <type name="SizeGroup" c:type="GtkSizeGroup*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mode for the new size group.</doc>
+            <type name="SizeGroupMode" c:type="GtkSizeGroupMode"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add_widget" c:identifier="gtk_size_group_add_widget">
+        <doc xml:whitespace="preserve">Adds a widget to a #GtkSizeGroup. In the future, the requisition
+of the widget will be determined as the maximum of its requisition
+and the requisition of the other widgets in the size group.
+Whether this applies horizontally, vertically, or in both directions
+depends on the mode of the size group. See gtk_size_group_set_mode().
+When the widget is destroyed or no longer referenced elsewhere, it will 
+be removed from the size group.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkWidget to add</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ignore_hidden"
+              c:identifier="gtk_size_group_get_ignore_hidden"
+              version="2.8">
+        <doc xml:whitespace="preserve">Returns if invisible widgets are ignored when calculating the size.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if invisible widgets are ignored.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_mode" c:identifier="gtk_size_group_get_mode">
+        <doc xml:whitespace="preserve">Gets the current mode of the size group. See gtk_size_group_set_mode().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current mode of the size group.</doc>
+          <type name="SizeGroupMode" c:type="GtkSizeGroupMode"/>
+        </return-value>
+      </method>
+      <method name="get_widgets"
+              c:identifier="gtk_size_group_get_widgets"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns the list of widgets associated with @size_group.
+widgets. The list is owned by GTK+ and should not be modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GSList of</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Widget"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="remove_widget" c:identifier="gtk_size_group_remove_widget">
+        <doc xml:whitespace="preserve">Removes a widget from a #GtkSizeGroup.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkWidget to remove</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_ignore_hidden"
+              c:identifier="gtk_size_group_set_ignore_hidden"
+              version="2.8">
+        <doc xml:whitespace="preserve">Sets whether unmapped widgets should be ignored when
+calculating the size.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ignore_hidden" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether unmapped widgets should be ignored when calculating the size</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_mode" c:identifier="gtk_size_group_set_mode">
+        <doc xml:whitespace="preserve">Sets the #GtkSizeGroupMode of the size group. The mode of the size
+group determines whether the widgets in the size group should
+all have the same horizontal requisition (%GTK_SIZE_GROUP_MODE_HORIZONTAL)
+all have the same vertical requisition (%GTK_SIZE_GROUP_MODE_VERTICAL),
+or should all have the same requisition in both directions
+(%GTK_SIZE_GROUP_MODE_BOTH).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mode to set for the size group.</doc>
+            <type name="SizeGroupMode" c:type="GtkSizeGroupMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="ignore-hidden"
+                version="2.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If %TRUE, unmapped widgets are ignored when determining 
+the size of the group.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="mode" writable="1" transfer-ownership="none">
+        <type name="SizeGroupMode"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="SizeGroupPrivate" c:type="GtkSizeGroupPrivate*"/>
+      </field>
+    </class>
+    <record name="SizeGroupClass"
+            c:type="GtkSizeGroupClass"
+            glib:is-gtype-struct-for="SizeGroup">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="SizeGroupMode"
+                 glib:type-name="GtkSizeGroupMode"
+                 glib:get-type="gtk_size_group_mode_get_type"
+                 c:type="GtkSizeGroupMode">
+      <doc xml:whitespace="preserve">The mode of the size group determines the directions in which the size
+group affects the requested sizes of its component widgets.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="GTK_SIZE_GROUP_NONE"
+              glib:nick="none"/>
+      <member name="horizontal"
+              value="1"
+              c:identifier="GTK_SIZE_GROUP_HORIZONTAL"
+              glib:nick="horizontal"/>
+      <member name="vertical"
+              value="2"
+              c:identifier="GTK_SIZE_GROUP_VERTICAL"
+              glib:nick="vertical"/>
+      <member name="both"
+              value="3"
+              c:identifier="GTK_SIZE_GROUP_BOTH"
+              glib:nick="both"/>
+    </enumeration>
+    <record name="SizeGroupPrivate" c:type="GtkSizeGroupPrivate" disguised="1">
+    </record>
+    <interface name="SizeRequest"
+               c:symbol-prefix="size_request"
+               c:type="GtkSizeRequest"
+               glib:type-name="GtkSizeRequest"
+               glib:get-type="gtk_size_request_get_type"
+               glib:type-struct="SizeRequestIface">
+      <prerequisite name="Widget"/>
+      <virtual-method name="get_height" invoker="get_height" version="3.0">
+        <doc xml:whitespace="preserve">Retrieves a widget's initial minimum and natural height.
+&lt;note&gt;&lt;para&gt;This call is specific to width-for-height requests.&lt;/para&gt;&lt;/note&gt;
+The returned request will be modified by the
+GtkWidgetClass::adjust_size_request virtual method and by any
+#GtkSizeGroup that have been applied. That is, the returned request
+is the one that should be used for layout, not necessarily the one
+returned by the widget itself.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="minimum_height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the minimum height, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="natural_height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the natural height, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_height_for_width"
+                      invoker="get_height_for_width"
+                      version="3.0">
+        <doc xml:whitespace="preserve">Retrieves a widget's minimum and natural height if it would be given
+the specified @width.
+The returned request will be modified by the
+GtkWidgetClass::adjust_size_request virtual method and by any
+#GtkSizeGroup that have been applied. That is, the returned request
+is the one that should be used for layout, not necessarily the one
+returned by the widget itself.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the width which is available for allocation</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="minimum_height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location for storing the minimum height, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="natural_height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location for storing the natural height, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_request_mode"
+                      invoker="get_request_mode"
+                      version="3.0">
+        <doc xml:whitespace="preserve">Gets whether the widget prefers a height-for-width layout
+or a width-for-height layout.
+&lt;note&gt;&lt;para&gt;#GtkBin widgets generally propagate the preference of
+their child, container widgets need to request something either in
+context of their children or in context of their allocation
+capabilities.&lt;/para&gt;&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GtkSizeRequestMode preferred by @widget.</doc>
+          <type name="SizeRequestMode" c:type="GtkSizeRequestMode"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_width" invoker="get_width" version="3.0">
+        <doc xml:whitespace="preserve">Retrieves a widget's initial minimum and natural width.
+&lt;note&gt;&lt;para&gt;This call is specific to height-for-width
+requests.&lt;/para&gt;&lt;/note&gt;
+The returned request will be modified by the
+GtkWidgetClass::adjust_size_request virtual method and by any
+#GtkSizeGroup that have been applied. That is, the returned request
+is the one that should be used for layout, not necessarily the one
+returned by the widget itself.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="minimum_width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the minimum width, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="natural_width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the natural width, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_width_for_height"
+                      invoker="get_width_for_height"
+                      version="3.0">
+        <doc xml:whitespace="preserve">Retrieves a widget's minimum and natural width if it would be given
+the specified @height.
+The returned request will be modified by the
+GtkWidgetClass::adjust_size_request virtual method and by any
+#GtkSizeGroup that have been applied. That is, the returned request
+is the one that should be used for layout, not necessarily the one
+returned by the widget itself.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the height which is available for allocation</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="minimum_width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location for storing the minimum width, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="natural_width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location for storing the natural width, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_height"
+              c:identifier="gtk_size_request_get_height"
+              version="3.0">
+        <doc xml:whitespace="preserve">Retrieves a widget's initial minimum and natural height.
+&lt;note&gt;&lt;para&gt;This call is specific to width-for-height requests.&lt;/para&gt;&lt;/note&gt;
+The returned request will be modified by the
+GtkWidgetClass::adjust_size_request virtual method and by any
+#GtkSizeGroup that have been applied. That is, the returned request
+is the one that should be used for layout, not necessarily the one
+returned by the widget itself.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="minimum_height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the minimum height, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="natural_height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the natural height, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_height_for_width"
+              c:identifier="gtk_size_request_get_height_for_width"
+              version="3.0">
+        <doc xml:whitespace="preserve">Retrieves a widget's minimum and natural height if it would be given
+the specified @width.
+The returned request will be modified by the
+GtkWidgetClass::adjust_size_request virtual method and by any
+#GtkSizeGroup that have been applied. That is, the returned request
+is the one that should be used for layout, not necessarily the one
+returned by the widget itself.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the width which is available for allocation</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="minimum_height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location for storing the minimum height, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="natural_height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location for storing the natural height, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_request_mode"
+              c:identifier="gtk_size_request_get_request_mode"
+              version="3.0">
+        <doc xml:whitespace="preserve">Gets whether the widget prefers a height-for-width layout
+or a width-for-height layout.
+&lt;note&gt;&lt;para&gt;#GtkBin widgets generally propagate the preference of
+their child, container widgets need to request something either in
+context of their children or in context of their allocation
+capabilities.&lt;/para&gt;&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GtkSizeRequestMode preferred by @widget.</doc>
+          <type name="SizeRequestMode" c:type="GtkSizeRequestMode"/>
+        </return-value>
+      </method>
+      <method name="get_size"
+              c:identifier="gtk_size_request_get_size"
+              version="3.0">
+        <doc xml:whitespace="preserve">Retrieves the minimum and natural size of a widget taking
+into account the widget's preference for height-for-width management.
+This is used to retrieve a suitable size by container widgets which do
+not impose any restrictions on the child placement.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="minimum_size"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location for storing the minimum size, or %NULL</doc>
+            <type name="Requisition" c:type="GtkRequisition*"/>
+          </parameter>
+          <parameter name="natural_size"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location for storing the natural size, or %NULL</doc>
+            <type name="Requisition" c:type="GtkRequisition*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_width"
+              c:identifier="gtk_size_request_get_width"
+              version="3.0">
+        <doc xml:whitespace="preserve">Retrieves a widget's initial minimum and natural width.
+&lt;note&gt;&lt;para&gt;This call is specific to height-for-width
+requests.&lt;/para&gt;&lt;/note&gt;
+The returned request will be modified by the
+GtkWidgetClass::adjust_size_request virtual method and by any
+#GtkSizeGroup that have been applied. That is, the returned request
+is the one that should be used for layout, not necessarily the one
+returned by the widget itself.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="minimum_width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the minimum width, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="natural_width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the natural width, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_width_for_height"
+              c:identifier="gtk_size_request_get_width_for_height"
+              version="3.0">
+        <doc xml:whitespace="preserve">Retrieves a widget's minimum and natural width if it would be given
+the specified @height.
+The returned request will be modified by the
+GtkWidgetClass::adjust_size_request virtual method and by any
+#GtkSizeGroup that have been applied. That is, the returned request
+is the one that should be used for layout, not necessarily the one
+returned by the widget itself.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the height which is available for allocation</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="minimum_width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location for storing the minimum width, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="natural_width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location for storing the natural width, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="SizeRequestIface"
+            c:type="GtkSizeRequestIface"
+            glib:is-gtype-struct-for="SizeRequest">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_request_mode">
+        <callback name="get_request_mode">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkSizeRequestMode preferred by @widget.</doc>
+            <type name="SizeRequestMode" c:type="GtkSizeRequestMode"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="SizeRequest" c:type="GtkSizeRequest*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_height">
+        <callback name="get_height">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="SizeRequest" c:type="GtkSizeRequest*"/>
+            </parameter>
+            <parameter name="minimum_height"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">location to store the minimum height, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="natural_height"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">location to store the natural height, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_width_for_height">
+        <callback name="get_width_for_height">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="SizeRequest" c:type="GtkSizeRequest*"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the height which is available for allocation</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="minimum_width"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">location for storing the minimum width, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="natural_width"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">location for storing the natural width, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_width">
+        <callback name="get_width">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="SizeRequest" c:type="GtkSizeRequest*"/>
+            </parameter>
+            <parameter name="minimum_width"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">location to store the minimum width, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="natural_width"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">location to store the natural width, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_height_for_width">
+        <callback name="get_height_for_width">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="SizeRequest" c:type="GtkSizeRequest*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the width which is available for allocation</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="minimum_height"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">location for storing the minimum height, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="natural_height"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">location for storing the natural height, or %NULL</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="SizeRequestMode"
+                 glib:type-name="GtkSizeRequestMode"
+                 glib:get-type="gtk_size_request_mode_get_type"
+                 c:type="GtkSizeRequestMode">
+      <doc xml:whitespace="preserve">Specifies a preference for height-for-width or
+width-for-height geometry management.</doc>
+      <member name="height_for_width"
+              value="0"
+              c:identifier="GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH"
+              glib:nick="height-for-width"/>
+      <member name="width_for_height"
+              value="1"
+              c:identifier="GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT"
+              glib:nick="width-for-height"/>
+    </enumeration>
+    <class name="Socket"
+           c:symbol-prefix="socket"
+           c:type="GtkSocket"
+           parent="Container"
+           glib:type-name="GtkSocket"
+           glib:get-type="gtk_socket_get_type"
+           glib:type-struct="SocketClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_socket_new">
+        <doc xml:whitespace="preserve">Create a new empty #GtkSocket.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new #GtkSocket.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="add_id" c:identifier="gtk_socket_add_id">
+        <doc xml:whitespace="preserve">Adds an XEMBED client, such as a #GtkPlug, to the #GtkSocket.  The
+client may be in the same process or in a different process. 
+To embed a #GtkPlug in a #GtkSocket, you can either create the
+#GtkPlug with &lt;literal&gt;gtk_plug_new (0)&lt;/literal&gt;, call 
+gtk_plug_get_id() to get the window ID of the plug, and then pass that to the
+gtk_socket_add_id(), or you can call gtk_socket_get_id() to get the
+window ID for the socket, and call gtk_plug_new() passing in that
+ID.
+The #GtkSocket must have already be added into a toplevel window
+before you can make this call.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the window ID of a client participating in the XEMBED protocol.</doc>
+            <type name="Gdk.NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_id" c:identifier="gtk_socket_get_id">
+        <doc xml:whitespace="preserve">Gets the window ID of a #GtkSocket widget, which can then
+be used to create a client embedded inside the socket, for
+instance with gtk_plug_new(). 
+The #GtkSocket must have already be added into a toplevel window 
+before you can make this call.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the window ID for the socket</doc>
+          <type name="Gdk.NativeWindow" c:type="GdkNativeWindow"/>
+        </return-value>
+      </method>
+      <method name="get_plug_window"
+              c:identifier="gtk_socket_get_plug_window"
+              version=" 2.14">
+        <doc xml:whitespace="preserve">Retrieves the window of the plug. Use this to check if the plug has
+been created inside of the socket.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the window of the plug if available, or %NULL</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <field name="container">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="request_width">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="request_height">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="current_width">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="current_height">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="plug_window">
+        <type name="Gdk.Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="plug_widget">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="xembed_version">
+        <type name="gshort" c:type="gshort"/>
+      </field>
+      <field name="same_app" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="focus_in" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="have_size" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="need_map" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="is_mapped" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="active" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="accel_group">
+        <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+      </field>
+      <field name="toplevel">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <glib:signal name="plug-added">
+        <doc xml:whitespace="preserve">This signal is emitted when a client is successfully
+added to the socket.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="plug-removed">
+        <doc xml:whitespace="preserve">This signal is emitted when a client is removed from the socket. 
+The default action is to destroy the #GtkSocket widget, so if you 
+want to reuse it you must add a signal handler that returns %TRUE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked.</doc>
+          <type name="gboolean"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="SocketClass"
+            c:type="GtkSocketClass"
+            glib:is-gtype-struct-for="Socket">
+      <field name="parent_class">
+        <type name="ContainerClass" c:type="GtkContainerClass"/>
+      </field>
+      <field name="plug_added">
+        <callback name="plug_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="socket_" transfer-ownership="none">
+              <type name="Socket" c:type="GtkSocket*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="plug_removed">
+        <callback name="plug_removed">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="socket_" transfer-ownership="none">
+              <type name="Socket" c:type="GtkSocket*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="SortType"
+                 glib:type-name="GtkSortType"
+                 glib:get-type="gtk_sort_type_get_type"
+                 c:type="GtkSortType">
+      <member name="ascending"
+              value="0"
+              c:identifier="GTK_SORT_ASCENDING"
+              glib:nick="ascending"/>
+      <member name="descending"
+              value="1"
+              c:identifier="GTK_SORT_DESCENDING"
+              glib:nick="descending"/>
+    </enumeration>
+    <class name="SpinButton"
+           c:symbol-prefix="spin_button"
+           c:type="GtkSpinButton"
+           parent="Entry"
+           glib:type-name="GtkSpinButton"
+           glib:get-type="gtk_spin_button_get_type"
+           glib:type-struct="SpinButtonClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="CellEditable"/>
+      <implements name="Editable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_spin_button_new">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment" transfer-ownership="none">
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+          <parameter name="climb_rate" transfer-ownership="none">
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="digits" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_range"
+                   c:identifier="gtk_spin_button_new_with_range">
+        <doc xml:whitespace="preserve">This is a convenience constructor that allows creation of a numeric 
+#GtkSpinButton without manually creating an adjustment. The value is 
+initially set to the minimum value and a page increment of 10 * @step
+is the default. The precision of the spin button is equivalent to the 
+precision of @step. 
+Note that the way in which the precision is derived works best if @step 
+is a power of ten. If the resulting precision is not suitable for your 
+needs, use gtk_spin_button_set_digits() to correct it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The new spin button as a #GtkWidget.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="min" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Minimum allowable value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="max" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Maximum allowable value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="step" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Increment added or subtracted by spinning the widget</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="configure" c:identifier="gtk_spin_button_configure">
+        <doc xml:whitespace="preserve">Changes the properties of an existing spin button. The adjustment, climb rate,
+and number of decimal places are all changed accordingly, after this function call.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkAdjustment.</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+          <parameter name="climb_rate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new climb rate.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="digits" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of decimal places to display in the spin button.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_adjustment"
+              c:identifier="gtk_spin_button_get_adjustment">
+        <doc xml:whitespace="preserve">Get the adjustment associated with a #GtkSpinButton</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GtkAdjustment of @spin_button</doc>
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="get_digits" c:identifier="gtk_spin_button_get_digits">
+        <doc xml:whitespace="preserve">Fetches the precision of @spin_button. See gtk_spin_button_set_digits().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current precision</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_increments"
+              c:identifier="gtk_spin_button_get_increments">
+        <doc xml:whitespace="preserve">Gets the current step and page the increments used by @spin_button. See
+gtk_spin_button_set_increments().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="step" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store step increment, or %NULL</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="page" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store page increment, or %NULL</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_numeric" c:identifier="gtk_spin_button_get_numeric">
+        <doc xml:whitespace="preserve">Returns whether non-numeric text can be typed into the spin button.
+See gtk_spin_button_set_numeric().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if only numeric text can be entered</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_range" c:identifier="gtk_spin_button_get_range">
+        <doc xml:whitespace="preserve">Gets the range allowed for @spin_button. See
+gtk_spin_button_set_range().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store minimum allowed value, or %NULL</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="max" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to store maximum allowed value, or %NULL</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_snap_to_ticks"
+              c:identifier="gtk_spin_button_get_snap_to_ticks">
+        <doc xml:whitespace="preserve">Returns whether the values are corrected to the nearest step. See
+gtk_spin_button_set_snap_to_ticks().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if values are snapped to the nearest step.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_update_policy"
+              c:identifier="gtk_spin_button_get_update_policy">
+        <doc xml:whitespace="preserve">Gets the update behavior of a spin button. See
+gtk_spin_button_set_update_policy().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current update policy</doc>
+          <type name="SpinButtonUpdatePolicy"
+                c:type="GtkSpinButtonUpdatePolicy"/>
+        </return-value>
+      </method>
+      <method name="get_value" c:identifier="gtk_spin_button_get_value">
+        <doc xml:whitespace="preserve">Get the value in the @spin_button.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value of @spin_button</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_value_as_int"
+              c:identifier="gtk_spin_button_get_value_as_int">
+        <doc xml:whitespace="preserve">Get the value @spin_button represented as an integer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value of @spin_button</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_wrap" c:identifier="gtk_spin_button_get_wrap">
+        <doc xml:whitespace="preserve">Returns whether the spin button's value wraps around to the
+opposite limit when the upper or lower limit of the range is
+exceeded. See gtk_spin_button_set_wrap().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the spin button wraps around</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_adjustment"
+              c:identifier="gtk_spin_button_set_adjustment">
+        <doc xml:whitespace="preserve">Replaces the #GtkAdjustment associated with @spin_button.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkAdjustment to replace the existing adjustment</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_digits" c:identifier="gtk_spin_button_set_digits">
+        <doc xml:whitespace="preserve">Set the precision to be displayed by @spin_button. Up to 20 digit precision
+is allowed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="digits" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of digits after the decimal point to be displayed for the spin button's value</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_increments"
+              c:identifier="gtk_spin_button_set_increments">
+        <doc xml:whitespace="preserve">Sets the step and page increments for spin_button.  This affects how 
+quickly the value changes when the spin button's arrows are activated.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="step" transfer-ownership="none">
+            <doc xml:whitespace="preserve">increment applied for a button 1 press.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="page" transfer-ownership="none">
+            <doc xml:whitespace="preserve">increment applied for a button 2 press.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_numeric" c:identifier="gtk_spin_button_set_numeric">
+        <doc xml:whitespace="preserve">Sets the flag that determines if non-numeric text can be typed into
+the spin button.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="numeric" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flag indicating if only numeric entry is allowed.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_range" c:identifier="gtk_spin_button_set_range">
+        <doc xml:whitespace="preserve">Sets the minimum and maximum allowable values for @spin_button</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min" transfer-ownership="none">
+            <doc xml:whitespace="preserve">minimum allowable value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="max" transfer-ownership="none">
+            <doc xml:whitespace="preserve">maximum allowable value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_snap_to_ticks"
+              c:identifier="gtk_spin_button_set_snap_to_ticks">
+        <doc xml:whitespace="preserve">Sets the policy as to whether values are corrected to the nearest step 
+increment when a spin button is activated after providing an invalid value.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="snap_to_ticks" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a flag indicating if invalid values should be corrected.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_update_policy"
+              c:identifier="gtk_spin_button_set_update_policy">
+        <doc xml:whitespace="preserve">Sets the update behavior of a spin button. This determines whether the
+spin button is always updated or only when a valid value is set.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="policy" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkSpinButtonUpdatePolicy value</doc>
+            <type name="SpinButtonUpdatePolicy"
+                  c:type="GtkSpinButtonUpdatePolicy"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value" c:identifier="gtk_spin_button_set_value">
+        <doc xml:whitespace="preserve">Set the value of @spin_button.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_wrap" c:identifier="gtk_spin_button_set_wrap">
+        <doc xml:whitespace="preserve">Sets the flag that determines if a spin button value wraps around to the
+opposite limit when the upper or lower limit of the range is exceeded.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wrap" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a flag indicating if wrapping behavior is performed.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="spin" c:identifier="gtk_spin_button_spin">
+        <doc xml:whitespace="preserve">Increment or decrement a spin button's value in a specified direction
+by a specified amount.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkSpinType indicating the direction to spin.</doc>
+            <type name="SpinType" c:type="GtkSpinType"/>
+          </parameter>
+          <parameter name="increment" transfer-ownership="none">
+            <doc xml:whitespace="preserve">step increment to apply in the specified direction.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="update" c:identifier="gtk_spin_button_update">
+        <doc xml:whitespace="preserve">Manually force an update of the spin button.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="adjustment" writable="1" transfer-ownership="none">
+        <type name="Adjustment"/>
+      </property>
+      <property name="climb-rate" writable="1" transfer-ownership="none">
+        <type name="gdouble"/>
+      </property>
+      <property name="digits" writable="1" transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <property name="numeric" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="snap-to-ticks" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="update-policy" writable="1" transfer-ownership="none">
+        <type name="SpinButtonUpdatePolicy"/>
+      </property>
+      <property name="value" writable="1" transfer-ownership="none">
+        <type name="gdouble"/>
+      </property>
+      <property name="wrap" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="entry">
+        <type name="Entry" c:type="GtkEntry"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="SpinButtonPrivate" c:type="GtkSpinButtonPrivate*"/>
+      </field>
+      <glib:signal name="change-value">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="ScrollType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="input">
+        <return-value transfer-ownership="none">
+          <type name="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="output">
+        <doc xml:whitespace="preserve">The ::output signal can be used to change to formatting
+of the value that is displayed in the spin buttons entry.
+|[
+/&amp;ast; show leading zeros &amp;ast;/
+static gboolean
+on_output (GtkSpinButton *spin,
+gpointer       data)
+{
+GtkAdjustment *adj;
+gchar *text;
+int value;
+adj = gtk_spin_button_get_adjustment (spin);
+value = (int)gtk_adjustment_get_value (adj);
+text = g_strdup_printf ("%02d", value);
+gtk_entry_set_text (GTK_ENTRY (spin), text);
+g_free (text);
+return TRUE;
+}
+]|</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value has been displayed.</doc>
+          <type name="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="value-changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="wrapped" version="2.10">
+        <doc xml:whitespace="preserve">The wrapped signal is emitted right after the spinbutton wraps
+from its maximum to minimum value or vice-versa.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="SpinButtonClass"
+            c:type="GtkSpinButtonClass"
+            glib:is-gtype-struct-for="SpinButton">
+      <field name="parent_class">
+        <type name="EntryClass" c:type="GtkEntryClass"/>
+      </field>
+      <field name="input">
+        <callback name="input">
+          <return-value transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="spin_button" transfer-ownership="none">
+              <type name="SpinButton" c:type="GtkSpinButton*"/>
+            </parameter>
+            <parameter name="new_value" transfer-ownership="none">
+              <type name="gdouble" c:type="gdouble*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="output">
+        <callback name="output">
+          <return-value transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="spin_button" transfer-ownership="none">
+              <type name="SpinButton" c:type="GtkSpinButton*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="value_changed">
+        <callback name="value_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="spin_button" transfer-ownership="none">
+              <type name="SpinButton" c:type="GtkSpinButton*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="change_value">
+        <callback name="change_value">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="spin_button" transfer-ownership="none">
+              <type name="SpinButton" c:type="GtkSpinButton*"/>
+            </parameter>
+            <parameter name="scroll" transfer-ownership="none">
+              <type name="ScrollType" c:type="GtkScrollType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="wrapped">
+        <callback name="wrapped">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="spin_button" transfer-ownership="none">
+              <type name="SpinButton" c:type="GtkSpinButton*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="SpinButtonPrivate"
+            c:type="GtkSpinButtonPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="SpinButtonUpdatePolicy"
+                 glib:type-name="GtkSpinButtonUpdatePolicy"
+                 glib:get-type="gtk_spin_button_update_policy_get_type"
+                 c:type="GtkSpinButtonUpdatePolicy">
+      <member name="always"
+              value="0"
+              c:identifier="GTK_UPDATE_ALWAYS"
+              glib:nick="always"/>
+      <member name="if_valid"
+              value="1"
+              c:identifier="GTK_UPDATE_IF_VALID"
+              glib:nick="if-valid"/>
+    </enumeration>
+    <enumeration name="SpinType"
+                 glib:type-name="GtkSpinType"
+                 glib:get-type="gtk_spin_type_get_type"
+                 c:type="GtkSpinType">
+      <member name="step_forward"
+              value="0"
+              c:identifier="GTK_SPIN_STEP_FORWARD"
+              glib:nick="step-forward"/>
+      <member name="step_backward"
+              value="1"
+              c:identifier="GTK_SPIN_STEP_BACKWARD"
+              glib:nick="step-backward"/>
+      <member name="page_forward"
+              value="2"
+              c:identifier="GTK_SPIN_PAGE_FORWARD"
+              glib:nick="page-forward"/>
+      <member name="page_backward"
+              value="3"
+              c:identifier="GTK_SPIN_PAGE_BACKWARD"
+              glib:nick="page-backward"/>
+      <member name="home"
+              value="4"
+              c:identifier="GTK_SPIN_HOME"
+              glib:nick="home"/>
+      <member name="end"
+              value="5"
+              c:identifier="GTK_SPIN_END"
+              glib:nick="end"/>
+      <member name="user_defined"
+              value="6"
+              c:identifier="GTK_SPIN_USER_DEFINED"
+              glib:nick="user-defined"/>
+    </enumeration>
+    <class name="Spinner"
+           c:symbol-prefix="spinner"
+           c:type="GtkSpinner"
+           parent="Widget"
+           glib:type-name="GtkSpinner"
+           glib:get-type="gtk_spinner_get_type"
+           glib:type-struct="SpinnerClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_spinner_new" version="2.20">
+        <doc xml:whitespace="preserve">Returns a new spinner widget. Not yet started.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkSpinner</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="start" c:identifier="gtk_spinner_start" version="2.20">
+        <doc xml:whitespace="preserve">Starts the animation of the spinner.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="stop" c:identifier="gtk_spinner_stop" version="2.20">
+        <doc xml:whitespace="preserve">Stops the animation of the spinner.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="active" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="parent">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="SpinnerPrivate" c:type="GtkSpinnerPrivate*"/>
+      </field>
+    </class>
+    <record name="SpinnerClass"
+            c:type="GtkSpinnerClass"
+            glib:is-gtype-struct-for="Spinner">
+      <field name="parent_class">
+        <type name="WidgetClass" c:type="GtkWidgetClass"/>
+      </field>
+    </record>
+    <record name="SpinnerPrivate" c:type="GtkSpinnerPrivate" disguised="1">
+    </record>
+    <enumeration name="StateType"
+                 glib:type-name="GtkStateType"
+                 glib:get-type="gtk_state_type_get_type"
+                 c:type="GtkStateType">
+      <member name="normal"
+              value="0"
+              c:identifier="GTK_STATE_NORMAL"
+              glib:nick="normal"/>
+      <member name="active"
+              value="1"
+              c:identifier="GTK_STATE_ACTIVE"
+              glib:nick="active"/>
+      <member name="prelight"
+              value="2"
+              c:identifier="GTK_STATE_PRELIGHT"
+              glib:nick="prelight"/>
+      <member name="selected"
+              value="3"
+              c:identifier="GTK_STATE_SELECTED"
+              glib:nick="selected"/>
+      <member name="insensitive"
+              value="4"
+              c:identifier="GTK_STATE_INSENSITIVE"
+              glib:nick="insensitive"/>
+    </enumeration>
+    <class name="StatusIcon"
+           c:symbol-prefix="status_icon"
+           c:type="GtkStatusIcon"
+           parent="GObject.Object"
+           glib:type-name="GtkStatusIcon"
+           glib:get-type="gtk_status_icon_get_type"
+           glib:type-struct="StatusIconClass">
+      <constructor name="new"
+                   c:identifier="gtk_status_icon_new"
+                   version="2.10">
+        <doc xml:whitespace="preserve">Creates an empty status icon object.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkStatusIcon</doc>
+          <type name="StatusIcon" c:type="GtkStatusIcon*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_file"
+                   c:identifier="gtk_status_icon_new_from_file"
+                   version="2.10">
+        <doc xml:whitespace="preserve">Creates a status icon displaying the file @filename. 
+The image will be scaled down to fit in the available 
+space in the notification area, if necessary.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkStatusIcon</doc>
+          <type name="StatusIcon" c:type="GtkStatusIcon*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a filename</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_gicon"
+                   c:identifier="gtk_status_icon_new_from_gicon"
+                   version="2.14">
+        <doc xml:whitespace="preserve">Creates a status icon displaying a #GIcon. If the icon is a
+themed icon, it will be updated when the theme changes.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkStatusIcon</doc>
+          <type name="StatusIcon" c:type="GtkStatusIcon*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GIcon</doc>
+            <type name="Gio.Icon" c:type="GIcon*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_icon_name"
+                   c:identifier="gtk_status_icon_new_from_icon_name"
+                   version="2.10">
+        <doc xml:whitespace="preserve">Creates a status icon displaying an icon from the current icon theme.
+If the current icon theme is changed, the icon will be updated 
+appropriately.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkStatusIcon</doc>
+          <type name="StatusIcon" c:type="GtkStatusIcon*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an icon name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_pixbuf"
+                   c:identifier="gtk_status_icon_new_from_pixbuf"
+                   version="2.10">
+        <doc xml:whitespace="preserve">Creates a status icon displaying @pixbuf. 
+The image will be scaled down to fit in the available 
+space in the notification area, if necessary.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkStatusIcon</doc>
+          <type name="StatusIcon" c:type="GtkStatusIcon*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkPixbuf</doc>
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_stock"
+                   c:identifier="gtk_status_icon_new_from_stock"
+                   version="2.10">
+        <doc xml:whitespace="preserve">Creates a status icon displaying a stock icon. Sample stock icon
+names are #GTK_STOCK_OPEN, #GTK_STOCK_QUIT. You can register your 
+own stock icon names, see gtk_icon_factory_add_default() and 
+gtk_icon_factory_add().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkStatusIcon</doc>
+          <type name="StatusIcon" c:type="GtkStatusIcon*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a stock icon id</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="position_menu"
+                c:identifier="gtk_status_icon_position_menu"
+                version="2.10">
+        <doc xml:whitespace="preserve">Menu positioning function to use with gtk_menu_popup()
+to position @menu aligned to the status icon @user_data.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="menu" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkMenu</doc>
+            <type name="Menu" c:type="GtkMenu*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the x position</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the y position</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="push_in" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the first menu item should be offset (pushed in) to be aligned with the menu popup position (only useful for GtkOptionMenu).</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the status icon to position the menu on</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_geometry"
+              c:identifier="gtk_status_icon_get_geometry"
+              version="2.10">
+        <doc xml:whitespace="preserve">Obtains information about the location of the status icon
+on screen. This information can be used to e.g. position 
+popups like notification bubbles. 
+See gtk_status_icon_position_menu() for a more convenient 
+alternative for positioning menus.
+Note that some platforms do not allow GTK+ to provide 
+this information, and even on platforms that do allow it,
+the information is not reliable unless the status icon
+is embedded in a notification area, see
+gtk_status_icon_is_embedded().
+been filled in</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the location information has</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the screen, or %NULL if the information is not needed</doc>
+            <type name="Gdk.Screen" c:type="GdkScreen**"/>
+          </parameter>
+          <parameter name="area"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the area occupied by the status icon, or %NULL</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="orientation"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the orientation of the panel in which the status icon is embedded, or %NULL. A panel at the top or bottom of the screen is horizontal, a panel at the left or right is vertical.</doc>
+            <type name="Orientation" c:type="GtkOrientation*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_gicon"
+              c:identifier="gtk_status_icon_get_gicon"
+              version="2.14">
+        <doc xml:whitespace="preserve">Retrieves the #GIcon being displayed by the #GtkStatusIcon.
+The storage type of the status icon must be %GTK_IMAGE_EMPTY or
+%GTK_IMAGE_GICON (see gtk_status_icon_get_storage_type()).
+The caller of this function does not own a reference to the
+returned #GIcon.
+If this function fails, @icon is left unchanged;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the displayed icon, or %NULL if the image is empty</doc>
+          <type name="Gio.Icon" c:type="GIcon*"/>
+        </return-value>
+      </method>
+      <method name="get_has_tooltip"
+              c:identifier="gtk_status_icon_get_has_tooltip"
+              version="2.16">
+        <doc xml:whitespace="preserve">Returns the current value of the has-tooltip property.
+See #GtkStatusIcon:has-tooltip for more information.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">current value of has-tooltip on @status_icon.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_icon_name"
+              c:identifier="gtk_status_icon_get_icon_name"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the name of the icon being displayed by the #GtkStatusIcon.
+The storage type of the status icon must be %GTK_IMAGE_EMPTY or
+%GTK_IMAGE_ICON_NAME (see gtk_status_icon_get_storage_type()).
+The returned string is owned by the #GtkStatusIcon and should not
+be freed or modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the displayed icon, or %NULL if the image is empty.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_pixbuf"
+              c:identifier="gtk_status_icon_get_pixbuf"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the #GdkPixbuf being displayed by the #GtkStatusIcon.
+The storage type of the status icon must be %GTK_IMAGE_EMPTY or
+%GTK_IMAGE_PIXBUF (see gtk_status_icon_get_storage_type()).
+The caller of this function does not own a reference to the
+returned pixbuf.
+or %NULL if the image is empty.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the displayed pixbuf,</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="get_screen"
+              c:identifier="gtk_status_icon_get_screen"
+              version="2.12">
+        <doc xml:whitespace="preserve">Returns the #GdkScreen associated with @status_icon.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkScreen.</doc>
+          <type name="Gdk.Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </method>
+      <method name="get_size"
+              c:identifier="gtk_status_icon_get_size"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the size in pixels that is available for the image. 
+Stock icons and named icons adapt their size automatically
+if the size of the notification area changes. For other
+storage types, the size-changed signal can be used to
+react to size changes.
+Note that the returned size is only meaningful while the 
+status icon is embedded (see gtk_status_icon_is_embedded()).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the size that is available for the image</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_stock"
+              c:identifier="gtk_status_icon_get_stock"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the id of the stock icon being displayed by the #GtkStatusIcon.
+The storage type of the status icon must be %GTK_IMAGE_EMPTY or
+%GTK_IMAGE_STOCK (see gtk_status_icon_get_storage_type()).
+The returned string is owned by the #GtkStatusIcon and should not
+be freed or modified.
+or %NULL if the image is empty.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">stock id of the displayed stock icon,</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_storage_type"
+              c:identifier="gtk_status_icon_get_storage_type"
+              version="2.10">
+        <doc xml:whitespace="preserve">Gets the type of representation being used by the #GtkStatusIcon
+to store image data. If the #GtkStatusIcon has no image data,
+the return value will be %GTK_IMAGE_EMPTY.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the image representation being used</doc>
+          <type name="ImageType" c:type="GtkImageType"/>
+        </return-value>
+      </method>
+      <method name="get_title"
+              c:identifier="gtk_status_icon_get_title"
+              version="2.18">
+        <doc xml:whitespace="preserve">Gets the title of this tray icon. See gtk_status_icon_set_title().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the title of the status icon</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_tooltip_markup"
+              c:identifier="gtk_status_icon_get_tooltip_markup"
+              version="2.16">
+        <doc xml:whitespace="preserve">Gets the contents of the tooltip for @status_icon.
+returned string with g_free() when done.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the tooltip text, or %NULL. You should free the</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_tooltip_text"
+              c:identifier="gtk_status_icon_get_tooltip_text"
+              version="2.16">
+        <doc xml:whitespace="preserve">Gets the contents of the tooltip for @status_icon.
+returned string with g_free() when done.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the tooltip text, or %NULL. You should free the</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_visible"
+              c:identifier="gtk_status_icon_get_visible"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns whether the status icon is visible or not. 
+Note that being visible does not guarantee that 
+the user can actually see the icon, see also 
+gtk_status_icon_is_embedded().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the status icon is visible</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_x11_window_id"
+              c:identifier="gtk_status_icon_get_x11_window_id"
+              version="2.14">
+        <doc xml:whitespace="preserve">This function is only useful on the X11/freedesktop.org platform.
+It returns a window ID for the widget in the underlying
+status icon implementation.  This is useful for the Galago 
+notification service, which can send a window ID in the protocol 
+in order for the server to position notification windows 
+pointing to a status icon reliably.
+This function is not intended for other use cases which are
+more likely to be met by one of the non-X11 specific methods, such
+as gtk_status_icon_position_menu().
+underlying X11 Window</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">An 32 bit unsigned integer identifier for the</doc>
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="is_embedded"
+              c:identifier="gtk_status_icon_is_embedded"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns whether the status icon is embedded in a notification
+area. 
+a notification area.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the status icon is embedded in</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_from_file"
+              c:identifier="gtk_status_icon_set_from_file"
+              version="2.10 ">
+        <doc xml:whitespace="preserve">Makes @status_icon display the file @filename.
+See gtk_status_icon_new_from_file() for details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a filename</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_gicon"
+              c:identifier="gtk_status_icon_set_from_gicon"
+              version="2.14">
+        <doc xml:whitespace="preserve">Makes @status_icon display the #GIcon.
+See gtk_status_icon_new_from_gicon() for details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a GIcon</doc>
+            <type name="Gio.Icon" c:type="GIcon*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_icon_name"
+              c:identifier="gtk_status_icon_set_from_icon_name"
+              version="2.10 ">
+        <doc xml:whitespace="preserve">Makes @status_icon display the icon named @icon_name from the 
+current icon theme.
+See gtk_status_icon_new_from_icon_name() for details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an icon name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_pixbuf"
+              c:identifier="gtk_status_icon_set_from_pixbuf"
+              version="2.10">
+        <doc xml:whitespace="preserve">Makes @status_icon display @pixbuf.
+See gtk_status_icon_new_from_pixbuf() for details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdkPixbuf or %NULL</doc>
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_stock"
+              c:identifier="gtk_status_icon_set_from_stock"
+              version="2.10 ">
+        <doc xml:whitespace="preserve">Makes @status_icon display the stock icon with the id @stock_id.
+See gtk_status_icon_new_from_stock() for details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a stock icon id</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_has_tooltip"
+              c:identifier="gtk_status_icon_set_has_tooltip"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets the has-tooltip property on @status_icon to @has_tooltip.
+See #GtkStatusIcon:has-tooltip for more information.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="has_tooltip" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether or not @status_icon has a tooltip</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_name"
+              c:identifier="gtk_status_icon_set_name"
+              version="2.20">
+        <doc xml:whitespace="preserve">Sets the name of this tray icon.
+This should be a string identifying this icon. It is may be
+used for sorting the icons in the tray and will not be shown to
+the user.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_screen"
+              c:identifier="gtk_status_icon_set_screen"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets the #GdkScreen where @status_icon is displayed; if
+the icon is already mapped, it will be unmapped, and
+then remapped on the new screen.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkScreen</doc>
+            <type name="Gdk.Screen" c:type="GdkScreen*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_title"
+              c:identifier="gtk_status_icon_set_title"
+              version="2.18">
+        <doc xml:whitespace="preserve">Sets the title of this tray icon.
+This should be a short, human-readable, localized string 
+describing the tray icon. It may be used by tools like screen
+readers to render the tray icon.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the title</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tooltip_markup"
+              c:identifier="gtk_status_icon_set_tooltip_markup"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets @markup as the contents of the tooltip, which is marked up with
+the &lt;link linkend="PangoMarkupFormat"&gt;Pango text markup language&lt;/link&gt;.
+This function will take care of setting #GtkStatusIcon:has-tooltip to %TRUE
+and of the default handler for the #GtkStatusIcon::query-tooltip signal.
+See also the #GtkStatusIcon:tooltip-markup property and
+gtk_tooltip_set_markup().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="markup" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the contents of the tooltip for @status_icon, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tooltip_text"
+              c:identifier="gtk_status_icon_set_tooltip_text"
+              version="2.16">
+        <doc xml:whitespace="preserve">Sets @text as the contents of the tooltip.
+This function will take care of setting #GtkStatusIcon:has-tooltip to
+%TRUE and of the default handler for the #GtkStatusIcon::query-tooltip
+signal.
+See also the #GtkStatusIcon:tooltip-text property and
+gtk_tooltip_set_text().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the contents of the tooltip for @status_icon</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_visible"
+              c:identifier="gtk_status_icon_set_visible"
+              version="2.10">
+        <doc xml:whitespace="preserve">Shows or hides a status icon.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to show the status icon, %FALSE to hide it</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="embedded" version="2.12" transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the statusicon is embedded in a notification area.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="file"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="gicon"
+                version="2.14"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GIcon displayed in the #GtkStatusIcon. For themed icons,
+the image will be updated automatically if the theme changes.</doc>
+        <type name="Gio.Icon"/>
+      </property>
+      <property name="has-tooltip"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Enables or disables the emission of #GtkStatusIcon::query-tooltip on
+tooltip, in this case the status icon will be queried using
+#GtkStatusIcon::query-tooltip to determine whether it will provide a
+tooltip or not.
+Note that setting this property to %TRUE for the first time will change
+the event masks of the windows of this status icon to include leave-notify
+and motion-notify events. This will not be undone when the property is set
+to %FALSE again.
+Whether this property is respected is platform dependent.
+For plain text tooltips, use #GtkStatusIcon:tooltip-text in preference.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="icon-name" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="orientation" version="2.12" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The orientation of the tray in which the statusicon 
+is embedded.</doc>
+        <type name="Orientation"/>
+      </property>
+      <property name="pixbuf" writable="1" transfer-ownership="none">
+        <type name="GdkPixbuf.Pixbuf"/>
+      </property>
+      <property name="screen" writable="1" transfer-ownership="none">
+        <type name="Gdk.Screen"/>
+      </property>
+      <property name="size" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="stock" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="storage-type" transfer-ownership="none">
+        <type name="ImageType"/>
+      </property>
+      <property name="title"
+                version="2.18"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The title of this tray icon. This should be a short, human-readable,
+localized string describing the tray icon. It may be used by tools
+like screen readers to render the tray icon.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="tooltip-markup"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Sets the text of tooltip to be the given string, which is marked up
+with the &lt;link linkend="PangoMarkupFormat"&gt;Pango text markup 
+language&lt;/link&gt;. Also see gtk_tooltip_set_markup().
+This is a convenience property which will take care of getting the
+tooltip shown if the given string is not %NULL.
+#GtkStatusIcon:has-tooltip will automatically be set to %TRUE and
+the default handler for the #GtkStatusIcon::query-tooltip signal
+will take care of displaying the tooltip.
+On some platforms, embedded markup will be ignored.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="tooltip-text"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Sets the text of tooltip to be the given string.
+Also see gtk_tooltip_set_text().
+This is a convenience property which will take care of getting the
+tooltip shown if the given string is not %NULL.
+#GtkStatusIcon:has-tooltip will automatically be set to %TRUE and
+the default handler for the #GtkStatusIcon::query-tooltip signal
+will take care of displaying the tooltip.
+Note that some platforms have limitations on the length of tooltips
+that they allow on status icons, e.g. Windows only shows the first
+64 characters.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="visible" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="StatusIconPrivate" c:type="GtkStatusIconPrivate*"/>
+      </field>
+      <glib:signal name="activate" version="2.10">
+        <doc xml:whitespace="preserve">Gets emitted when the user activates the status icon. 
+If and how status icons can activated is platform-dependent.
+Unlike most G_SIGNAL_ACTION signals, this signal is meant to 
+be used by applications and should be wrapped by language bindings.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="button-press-event" version="2.14">
+        <doc xml:whitespace="preserve">The ::button-press-event signal will be emitted when a button
+(typically from a mouse) is pressed.
+Whether this event is emitted is platform-dependent.  Use the ::activate
+and ::popup-menu signals in preference.
+for the event. %FALSE to propagate the event further.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkEventButton which triggered this signal</doc>
+            <type name="Gdk.Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="button-release-event" version="2.14">
+        <doc xml:whitespace="preserve">The ::button-release-event signal will be emitted when a button
+(typically from a mouse) is released.
+Whether this event is emitted is platform-dependent.  Use the ::activate
+and ::popup-menu signals in preference.
+for the event. %FALSE to propagate the event further.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkEventButton which triggered this signal</doc>
+            <type name="Gdk.Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="popup-menu" version="2.10">
+        <doc xml:whitespace="preserve">Gets emitted when the user brings up the context menu
+of the status icon. Whether status icons can have context 
+menus and how these are activated is platform-dependent.
+The @button and @activate_time parameters should be 
+passed as the last to arguments to gtk_menu_popup().
+Unlike most G_SIGNAL_ACTION signals, this signal is meant to 
+be used by applications and should be wrapped by language bindings.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the button that was pressed, or 0 if the signal is not emitted in response to a button press event</doc>
+            <type name="guint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the timestamp of the event that triggered the signal emission</doc>
+            <type name="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="query-tooltip" version="2.16">
+        <doc xml:whitespace="preserve">Emitted when the #GtkSettings:gtk-tooltip-timeout has expired with the
+cursor hovering above @status_icon; or emitted when @status_icon got
+focus in keyboard mode.
+Using the given coordinates, the signal handler should determine
+whether a tooltip should be shown for @status_icon. If this is
+the case %TRUE should be returned, %FALSE otherwise. Note that if
+should not be used.
+The signal handler is free to manipulate @tooltip with the therefore
+destined function calls.
+Whether this signal is emitted is platform-dependent.
+For plain text tooltips, use #GtkStatusIcon:tooltip-text in preference.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @tooltip should be shown right now, %FALSE otherwise.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate of the cursor position where the request has been emitted, relative to @status_icon</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate of the cursor position where the request has been emitted, relative to @status_icon</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the tooltip was trigged using the keyboard</doc>
+            <type name="gboolean"/>
+          </parameter>
+          <parameter name="p2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTooltip</doc>
+            <type name="Tooltip"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="scroll-event" version="2.16">
+        <doc xml:whitespace="preserve">The ::scroll-event signal is emitted when a button in the 4 to 7
+range is pressed. Wheel mice are usually configured to generate
+button press events for buttons 4 and 5 when the wheel is turned.
+Whether this event is emitted is platform-dependent.
+%FALSE to propagate the event further.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for the event.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkEventScroll which triggered this signal</doc>
+            <type name="Gdk.Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="size-changed" version="2.10">
+        <doc xml:whitespace="preserve">Gets emitted when the size available for the image
+changes, e.g. because the notification area got resized.
+size. Otherwise, GTK+ will scale the icon as necessary.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the icon was updated for the new</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new size</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="StatusIconClass"
+            c:type="GtkStatusIconClass"
+            glib:is-gtype-struct-for="StatusIcon">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="activate">
+        <callback name="activate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="status_icon" transfer-ownership="none">
+              <type name="StatusIcon" c:type="GtkStatusIcon*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="popup_menu">
+        <callback name="popup_menu">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="status_icon" transfer-ownership="none">
+              <type name="StatusIcon" c:type="GtkStatusIcon*"/>
+            </parameter>
+            <parameter name="button" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="activate_time" transfer-ownership="none">
+              <type name="guint32" c:type="guint32"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="size_changed">
+        <callback name="size_changed">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="status_icon" transfer-ownership="none">
+              <type name="StatusIcon" c:type="GtkStatusIcon*"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="button_press_event">
+        <callback name="button_press_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="status_icon" transfer-ownership="none">
+              <type name="StatusIcon" c:type="GtkStatusIcon*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventButton" c:type="GdkEventButton*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="button_release_event">
+        <callback name="button_release_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="status_icon" transfer-ownership="none">
+              <type name="StatusIcon" c:type="GtkStatusIcon*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventButton" c:type="GdkEventButton*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="scroll_event">
+        <callback name="scroll_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="status_icon" transfer-ownership="none">
+              <type name="StatusIcon" c:type="GtkStatusIcon*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventScroll" c:type="GdkEventScroll*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_tooltip">
+        <callback name="query_tooltip">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="status_icon" transfer-ownership="none">
+              <type name="StatusIcon" c:type="GtkStatusIcon*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="keyboard_mode" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="tooltip" transfer-ownership="none">
+              <type name="Tooltip" c:type="GtkTooltip*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="__gtk_reserved1">
+        <type name="gpointer" c:type="void*"/>
+      </field>
+      <field name="__gtk_reserved2">
+        <type name="gpointer" c:type="void*"/>
+      </field>
+    </record>
+    <record name="StatusIconPrivate"
+            c:type="GtkStatusIconPrivate"
+            disguised="1">
+    </record>
+    <class name="Statusbar"
+           c:symbol-prefix="statusbar"
+           c:type="GtkStatusbar"
+           parent="HBox"
+           glib:type-name="GtkStatusbar"
+           glib:get-type="gtk_statusbar_get_type"
+           glib:type-struct="StatusbarClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_statusbar_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkStatusbar ready for messages.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new #GtkStatusbar</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="get_context_id"
+              c:identifier="gtk_statusbar_get_context_id">
+        <doc xml:whitespace="preserve">Returns a new context identifier, given a description 
+of the actual context. Note that the description is 
+&lt;emphasis&gt;not&lt;/emphasis&gt; shown in the UI.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an integer id</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="context_description" transfer-ownership="none">
+            <doc xml:whitespace="preserve">textual description of what context the new message is being used in</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_has_resize_grip"
+              c:identifier="gtk_statusbar_get_has_resize_grip">
+        <doc xml:whitespace="preserve">Returns whether the statusbar has a resize grip.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the statusbar has a resize grip.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_message_area"
+              c:identifier="gtk_statusbar_get_message_area"
+              version="2.20">
+        <doc xml:whitespace="preserve">Retrieves the box containing the label widget.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkBox</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="pop" c:identifier="gtk_statusbar_pop">
+        <doc xml:whitespace="preserve">Removes the first message in the #GtkStatusBar's stack
+with the given context id. 
+Note that this may not change the displayed message, if 
+the message at the top of the stack has a different 
+context id.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="context_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a context identifier</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push" c:identifier="gtk_statusbar_push">
+        <doc xml:whitespace="preserve">Pushes a new message onto a statusbar's stack.
+gtk_statusbar_remove().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a message id that can be used with</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="context_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the message's context id, as returned by gtk_statusbar_get_context_id()</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the message to add to the statusbar</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove" c:identifier="gtk_statusbar_remove">
+        <doc xml:whitespace="preserve">Forces the removal of a message from a statusbar's stack. 
+The exact @context_id and @message_id must be specified.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="context_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a context identifier</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="message_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a message identifier, as returned by gtk_statusbar_push()</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_all"
+              c:identifier="gtk_statusbar_remove_all"
+              version="2.22">
+        <doc xml:whitespace="preserve">Forces the removal of all messages from a statusbar's
+stack with the exact @context_id.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="context_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a context identifier</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_has_resize_grip"
+              c:identifier="gtk_statusbar_set_has_resize_grip">
+        <doc xml:whitespace="preserve">Sets whether the statusbar has a resize grip. 
+%TRUE by default.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to have a resize grip</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="has-resize-grip"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the statusbar has a grip for resizing the toplevel window.</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_widget">
+        <type name="HBox" c:type="GtkHBox"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="StatusbarPrivate" c:type="GtkStatusbarPrivate*"/>
+      </field>
+      <glib:signal name="text-popped">
+        <doc xml:whitespace="preserve">Is emitted whenever a new message is popped off a statusbar's stack.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the context id of the relevant message/statusbar.</doc>
+            <type name="guint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the message that was just popped.</doc>
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="text-pushed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="guint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="StatusbarClass"
+            c:type="GtkStatusbarClass"
+            glib:is-gtype-struct-for="Statusbar">
+      <field name="parent_class">
+        <type name="HBoxClass" c:type="GtkHBoxClass"/>
+      </field>
+      <field name="reserved">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="text_pushed">
+        <callback name="text_pushed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="statusbar" transfer-ownership="none">
+              <type name="Statusbar" c:type="GtkStatusbar*"/>
+            </parameter>
+            <parameter name="context_id" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="text" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="text_popped">
+        <callback name="text_popped">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="statusbar" transfer-ownership="none">
+              <type name="Statusbar" c:type="GtkStatusbar*"/>
+            </parameter>
+            <parameter name="context_id" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="text" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="StatusbarPrivate" c:type="GtkStatusbarPrivate" disguised="1">
+    </record>
+    <record name="StockItem" c:type="GtkStockItem">
+      <field name="stock_id" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="label" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="modifier" writable="1">
+        <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+      </field>
+      <field name="keyval" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="translation_domain" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <method name="copy"
+              c:identifier="gtk_stock_item_copy"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Copies a stock item, mostly useful for language bindings and not in applications.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a new #GtkStockItem</doc>
+          <type name="StockItem" c:type="GtkStockItem*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gtk_stock_item_free">
+        <doc xml:whitespace="preserve">Frees a stock item allocated on the heap, such as one returned by
+gtk_stock_item_copy(). Also frees the fields inside the stock item,
+if they are not %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="Style"
+           c:symbol-prefix="style"
+           c:type="GtkStyle"
+           parent="GObject.Object"
+           glib:type-name="GtkStyle"
+           glib:get-type="gtk_style_get_type"
+           glib:type-struct="StyleClass">
+      <constructor name="new" c:identifier="gtk_style_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkStyle.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkStyle.</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="clone" introspectable="0">
+        <return-value>
+          <type name="Style" c:type="GtkStyle*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="copy">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Style" c:type="GtkStyle*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_arrow">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="state_type" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="shadow_type" transfer-ownership="none">
+            <type name="ShadowType" c:type="GtkShadowType"/>
+          </parameter>
+          <parameter name="area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="arrow_type" transfer-ownership="none">
+            <type name="ArrowType" c:type="GtkArrowType"/>
+          </parameter>
+          <parameter name="fill" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_box">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="state_type" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="shadow_type" transfer-ownership="none">
+            <type name="ShadowType" c:type="GtkShadowType"/>
+          </parameter>
+          <parameter name="area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_box_gap">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="state_type" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="shadow_type" transfer-ownership="none">
+            <type name="ShadowType" c:type="GtkShadowType"/>
+          </parameter>
+          <parameter name="area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="gap_side" transfer-ownership="none">
+            <type name="PositionType" c:type="GtkPositionType"/>
+          </parameter>
+          <parameter name="gap_x" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="gap_width" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_check">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="state_type" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="shadow_type" transfer-ownership="none">
+            <type name="ShadowType" c:type="GtkShadowType"/>
+          </parameter>
+          <parameter name="area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_diamond">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="state_type" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="shadow_type" transfer-ownership="none">
+            <type name="ShadowType" c:type="GtkShadowType"/>
+          </parameter>
+          <parameter name="area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_expander">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="state_type" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="expander_style" transfer-ownership="none">
+            <type name="ExpanderStyle" c:type="GtkExpanderStyle"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_extension">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="state_type" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="shadow_type" transfer-ownership="none">
+            <type name="ShadowType" c:type="GtkShadowType"/>
+          </parameter>
+          <parameter name="area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="gap_side" transfer-ownership="none">
+            <type name="PositionType" c:type="GtkPositionType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_flat_box">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="state_type" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="shadow_type" transfer-ownership="none">
+            <type name="ShadowType" c:type="GtkShadowType"/>
+          </parameter>
+          <parameter name="area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_focus">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="state_type" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_handle">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="state_type" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="shadow_type" transfer-ownership="none">
+            <type name="ShadowType" c:type="GtkShadowType"/>
+          </parameter>
+          <parameter name="area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="orientation" transfer-ownership="none">
+            <type name="Orientation" c:type="GtkOrientation"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_hline">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="state_type" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="x1" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="x2" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_layout">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="state_type" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="use_text" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="layout" transfer-ownership="none">
+            <type name="Pango.Layout" c:type="PangoLayout*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_option">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="state_type" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="shadow_type" transfer-ownership="none">
+            <type name="ShadowType" c:type="GtkShadowType"/>
+          </parameter>
+          <parameter name="area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_resize_grip">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="state_type" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="edge" transfer-ownership="none">
+            <type name="Gdk.WindowEdge" c:type="GdkWindowEdge"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_shadow">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="state_type" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="shadow_type" transfer-ownership="none">
+            <type name="ShadowType" c:type="GtkShadowType"/>
+          </parameter>
+          <parameter name="area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_shadow_gap">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="state_type" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="shadow_type" transfer-ownership="none">
+            <type name="ShadowType" c:type="GtkShadowType"/>
+          </parameter>
+          <parameter name="area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="gap_side" transfer-ownership="none">
+            <type name="PositionType" c:type="GtkPositionType"/>
+          </parameter>
+          <parameter name="gap_x" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="gap_width" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_slider">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="state_type" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="shadow_type" transfer-ownership="none">
+            <type name="ShadowType" c:type="GtkShadowType"/>
+          </parameter>
+          <parameter name="area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="orientation" transfer-ownership="none">
+            <type name="Orientation" c:type="GtkOrientation"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_spinner">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="state_type" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="step" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_tab">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="state_type" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="shadow_type" transfer-ownership="none">
+            <type name="ShadowType" c:type="GtkShadowType"/>
+          </parameter>
+          <parameter name="area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_vline">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="state_type" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="y1_" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y2_" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="init_from_rc">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rc_style" transfer-ownership="none">
+            <type name="RcStyle" c:type="GtkRcStyle*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="render_icon" invoker="render_icon">
+        <doc xml:whitespace="preserve">Renders the icon specified by @source at the given @size
+according to the given parameters and returns the result in a
+pixbuf.
+containing the rendered icon</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly-created #GdkPixbuf</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkIconSource specifying the icon to render</doc>
+            <type name="IconSource" c:type="GtkIconSource*"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a text direction</doc>
+            <type name="TextDirection" c:type="GtkTextDirection"/>
+          </parameter>
+          <parameter name="state" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a state</doc>
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size to render the icon at. A size of (GtkIconSize)-1 means render at the size of the source and don't scale.</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the widget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a style detail</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_background" invoker="set_background">
+        <doc xml:whitespace="preserve">Sets the background of @window to the background color or pixmap
+specified by @style for the given state.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkWindow</doc>
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="state_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a state</doc>
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="apply_default_background"
+              c:identifier="gtk_style_apply_default_background">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="set_bg" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="state_type" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="area" transfer-ownership="none" allow-none="1">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="attach" c:identifier="gtk_style_attach" introspectable="0">
+        <doc xml:whitespace="preserve">Attaches a style to a window; this process allocates the
+colors and creates the GC's for the style - it specializes
+it to a particular visual and colormap. The process may
+involve the creation of a new style if the style has already
+been attached to a window with a different style and colormap.
+Since this function may return a new object, you have to use it
+in the following way:
+&lt;literal&gt;style = gtk_style_attach (style, window)&lt;/literal&gt;
+If the style is newly created, the style parameter
+will be unref'ed, and the new style will have
+a reference count belonging to the caller.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">Either @style, or a newly-created #GtkStyle.</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkWindow.</doc>
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="gtk_style_copy">
+        <doc xml:whitespace="preserve">Creates a copy of the passed in #GtkStyle object.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a copy of @style</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </return-value>
+      </method>
+      <method name="detach" c:identifier="gtk_style_detach">
+        <doc xml:whitespace="preserve">Detaches a style from a window. If the style is not attached
+to any windows anymore, it is unrealized. See gtk_style_attach().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get"
+              c:identifier="gtk_style_get"
+              version="2.16"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the values of a multiple style properties for @widget_type
+from @style.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GType of a descendant of #GtkWidget</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first style property to get</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_style_property"
+              c:identifier="gtk_style_get_style_property"
+              version="2.16">
+        <doc xml:whitespace="preserve">Queries the value of a style property corresponding to a
+widget class is in the given style.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GType of a descendant of #GtkWidget</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the style property to get</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue where the value of the property being queried will be stored</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_valist"
+              c:identifier="gtk_style_get_valist"
+              version="2.16"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Non-vararg variant of gtk_style_get().
+Used primarily by language bindings.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GType of a descendant of #GtkWidget</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first style property to get</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="var_args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a &lt;type&gt;va_list&lt;/type&gt; of pairs of property names and locations to return the property values, starting with the location for @first_property_name.</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_color"
+              c:identifier="gtk_style_lookup_color"
+              version="2.10">
+        <doc xml:whitespace="preserve">Looks up @color_name in the style's logical color mappings,
+filling in @color and returning %TRUE if found, otherwise
+returning %FALSE. Do not cache the found mapping, because
+it depends on the #GtkStyle and might change when a theme
+switch occurs.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the mapping was found.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="color_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the logical color to look up</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkColor to fill in</doc>
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_icon_set" c:identifier="gtk_style_lookup_icon_set">
+        <doc xml:whitespace="preserve">Looks up @stock_id in the icon factories associated with @style
+and the default icon factory, returning an icon set if found,
+otherwise %NULL.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">icon set of @stock_id</doc>
+          <type name="IconSet" c:type="GtkIconSet*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an icon name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="render_icon" c:identifier="gtk_style_render_icon">
+        <doc xml:whitespace="preserve">Renders the icon specified by @source at the given @size
+according to the given parameters and returns the result in a
+pixbuf.
+containing the rendered icon</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly-created #GdkPixbuf</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkIconSource specifying the icon to render</doc>
+            <type name="IconSource" c:type="GtkIconSource*"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a text direction</doc>
+            <type name="TextDirection" c:type="GtkTextDirection"/>
+          </parameter>
+          <parameter name="state" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a state</doc>
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size to render the icon at. A size of (GtkIconSize)-1 means render at the size of the source and don't scale.</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the widget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a style detail</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_background" c:identifier="gtk_style_set_background">
+        <doc xml:whitespace="preserve">Sets the background of @window to the background color or pixmap
+specified by @style for the given state.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkWindow</doc>
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="state_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a state</doc>
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="fg">
+        <array zero-terminated="0" c:type="GdkColor" fixed-size="5">
+          <type name="Gdk.Color" c:type="GdkColor"/>
+        </array>
+      </field>
+      <field name="bg">
+        <array zero-terminated="0" c:type="GdkColor" fixed-size="5">
+          <type name="Gdk.Color" c:type="GdkColor"/>
+        </array>
+      </field>
+      <field name="light">
+        <array zero-terminated="0" c:type="GdkColor" fixed-size="5">
+          <type name="Gdk.Color" c:type="GdkColor"/>
+        </array>
+      </field>
+      <field name="dark">
+        <array zero-terminated="0" c:type="GdkColor" fixed-size="5">
+          <type name="Gdk.Color" c:type="GdkColor"/>
+        </array>
+      </field>
+      <field name="mid">
+        <array zero-terminated="0" c:type="GdkColor" fixed-size="5">
+          <type name="Gdk.Color" c:type="GdkColor"/>
+        </array>
+      </field>
+      <field name="text">
+        <array zero-terminated="0" c:type="GdkColor" fixed-size="5">
+          <type name="Gdk.Color" c:type="GdkColor"/>
+        </array>
+      </field>
+      <field name="base">
+        <array zero-terminated="0" c:type="GdkColor" fixed-size="5">
+          <type name="Gdk.Color" c:type="GdkColor"/>
+        </array>
+      </field>
+      <field name="text_aa">
+        <array zero-terminated="0" c:type="GdkColor" fixed-size="5">
+          <type name="Gdk.Color" c:type="GdkColor"/>
+        </array>
+      </field>
+      <field name="black">
+        <type name="Gdk.Color" c:type="GdkColor"/>
+      </field>
+      <field name="white">
+        <type name="Gdk.Color" c:type="GdkColor"/>
+      </field>
+      <field name="font_desc">
+        <type name="Pango.FontDescription" c:type="PangoFontDescription*"/>
+      </field>
+      <field name="xthickness">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="ythickness">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="bg_pixmap">
+        <array zero-terminated="0" c:type="GdkPixmap" fixed-size="5">
+          <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+        </array>
+      </field>
+      <field name="attach_count">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="depth">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="colormap">
+        <type name="Gdk.Colormap" c:type="GdkColormap*"/>
+      </field>
+      <field name="private_font_desc">
+        <type name="Pango.FontDescription" c:type="PangoFontDescription*"/>
+      </field>
+      <field name="rc_style">
+        <type name="RcStyle" c:type="GtkRcStyle*"/>
+      </field>
+      <field name="styles">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="property_cache">
+        <array name="GLib.Array" c:type="GArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+      <field name="icon_factories">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <glib:signal name="realize" version="2.4">
+        <doc xml:whitespace="preserve">Emitted when the style has been initialized for a particular
+colormap and depth. Connecting to this signal is probably seldom
+useful since most of the time applications and widgets only
+deal with styles that have been already realized.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unrealize" version="2.4">
+        <doc xml:whitespace="preserve">Emitted when the aspects of the style specific to a particular colormap
+and depth are being cleaned up. A connection to this signal can be useful
+if a widget wants to cache objects as object data on #GtkStyle.
+This signal provides a convenient place to free such cached objects.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="StyleClass"
+            c:type="GtkStyleClass"
+            glib:is-gtype-struct-for="Style">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="realize">
+        <callback name="realize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unrealize">
+        <callback name="unrealize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="copy">
+        <callback name="copy">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+            <parameter name="src" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clone" introspectable="0">
+        <callback name="clone" introspectable="0">
+          <return-value>
+            <type name="Style" c:type="GtkStyle*"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="init_from_rc">
+        <callback name="init_from_rc">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+            <parameter name="rc_style" transfer-ownership="none">
+              <type name="RcStyle" c:type="GtkRcStyle*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_background">
+        <callback name="set_background">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GdkWindow</doc>
+              <type name="Gdk.Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="state_type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a state</doc>
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="render_icon">
+        <callback name="render_icon">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a newly-created #GdkPixbuf</doc>
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+            <parameter name="source" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the #GtkIconSource specifying the icon to render</doc>
+              <type name="IconSource" c:type="GtkIconSource*"/>
+            </parameter>
+            <parameter name="direction" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a text direction</doc>
+              <type name="TextDirection" c:type="GtkTextDirection"/>
+            </parameter>
+            <parameter name="state" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a state</doc>
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the size to render the icon at. A size of (GtkIconSize)-1 means render at the size of the source and don't scale.</doc>
+              <type name="gint"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">the widget</doc>
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="detail" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">a style detail</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_hline">
+        <callback name="draw_hline">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Gdk.Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="state_type" transfer-ownership="none">
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+            <parameter name="area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="detail" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="x1" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="x2" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_vline">
+        <callback name="draw_vline">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Gdk.Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="state_type" transfer-ownership="none">
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+            <parameter name="area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="detail" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="y1_" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y2_" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_shadow">
+        <callback name="draw_shadow">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Gdk.Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="state_type" transfer-ownership="none">
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+            <parameter name="shadow_type" transfer-ownership="none">
+              <type name="ShadowType" c:type="GtkShadowType"/>
+            </parameter>
+            <parameter name="area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="detail" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_arrow">
+        <callback name="draw_arrow">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Gdk.Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="state_type" transfer-ownership="none">
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+            <parameter name="shadow_type" transfer-ownership="none">
+              <type name="ShadowType" c:type="GtkShadowType"/>
+            </parameter>
+            <parameter name="area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="detail" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="arrow_type" transfer-ownership="none">
+              <type name="ArrowType" c:type="GtkArrowType"/>
+            </parameter>
+            <parameter name="fill" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_diamond">
+        <callback name="draw_diamond">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Gdk.Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="state_type" transfer-ownership="none">
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+            <parameter name="shadow_type" transfer-ownership="none">
+              <type name="ShadowType" c:type="GtkShadowType"/>
+            </parameter>
+            <parameter name="area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="detail" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_box">
+        <callback name="draw_box">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Gdk.Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="state_type" transfer-ownership="none">
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+            <parameter name="shadow_type" transfer-ownership="none">
+              <type name="ShadowType" c:type="GtkShadowType"/>
+            </parameter>
+            <parameter name="area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="detail" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_flat_box">
+        <callback name="draw_flat_box">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Gdk.Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="state_type" transfer-ownership="none">
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+            <parameter name="shadow_type" transfer-ownership="none">
+              <type name="ShadowType" c:type="GtkShadowType"/>
+            </parameter>
+            <parameter name="area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="detail" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_check">
+        <callback name="draw_check">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Gdk.Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="state_type" transfer-ownership="none">
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+            <parameter name="shadow_type" transfer-ownership="none">
+              <type name="ShadowType" c:type="GtkShadowType"/>
+            </parameter>
+            <parameter name="area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="detail" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_option">
+        <callback name="draw_option">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Gdk.Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="state_type" transfer-ownership="none">
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+            <parameter name="shadow_type" transfer-ownership="none">
+              <type name="ShadowType" c:type="GtkShadowType"/>
+            </parameter>
+            <parameter name="area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="detail" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_tab">
+        <callback name="draw_tab">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Gdk.Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="state_type" transfer-ownership="none">
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+            <parameter name="shadow_type" transfer-ownership="none">
+              <type name="ShadowType" c:type="GtkShadowType"/>
+            </parameter>
+            <parameter name="area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="detail" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_shadow_gap">
+        <callback name="draw_shadow_gap">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Gdk.Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="state_type" transfer-ownership="none">
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+            <parameter name="shadow_type" transfer-ownership="none">
+              <type name="ShadowType" c:type="GtkShadowType"/>
+            </parameter>
+            <parameter name="area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="detail" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="gap_side" transfer-ownership="none">
+              <type name="PositionType" c:type="GtkPositionType"/>
+            </parameter>
+            <parameter name="gap_x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="gap_width" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_box_gap">
+        <callback name="draw_box_gap">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Gdk.Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="state_type" transfer-ownership="none">
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+            <parameter name="shadow_type" transfer-ownership="none">
+              <type name="ShadowType" c:type="GtkShadowType"/>
+            </parameter>
+            <parameter name="area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="detail" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="gap_side" transfer-ownership="none">
+              <type name="PositionType" c:type="GtkPositionType"/>
+            </parameter>
+            <parameter name="gap_x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="gap_width" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_extension">
+        <callback name="draw_extension">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Gdk.Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="state_type" transfer-ownership="none">
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+            <parameter name="shadow_type" transfer-ownership="none">
+              <type name="ShadowType" c:type="GtkShadowType"/>
+            </parameter>
+            <parameter name="area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="detail" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="gap_side" transfer-ownership="none">
+              <type name="PositionType" c:type="GtkPositionType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_focus">
+        <callback name="draw_focus">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Gdk.Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="state_type" transfer-ownership="none">
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+            <parameter name="area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="detail" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_slider">
+        <callback name="draw_slider">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Gdk.Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="state_type" transfer-ownership="none">
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+            <parameter name="shadow_type" transfer-ownership="none">
+              <type name="ShadowType" c:type="GtkShadowType"/>
+            </parameter>
+            <parameter name="area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="detail" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="orientation" transfer-ownership="none">
+              <type name="Orientation" c:type="GtkOrientation"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_handle">
+        <callback name="draw_handle">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Gdk.Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="state_type" transfer-ownership="none">
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+            <parameter name="shadow_type" transfer-ownership="none">
+              <type name="ShadowType" c:type="GtkShadowType"/>
+            </parameter>
+            <parameter name="area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="detail" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="orientation" transfer-ownership="none">
+              <type name="Orientation" c:type="GtkOrientation"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_expander">
+        <callback name="draw_expander">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Gdk.Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="state_type" transfer-ownership="none">
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+            <parameter name="area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="detail" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="expander_style" transfer-ownership="none">
+              <type name="ExpanderStyle" c:type="GtkExpanderStyle"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_layout">
+        <callback name="draw_layout">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Gdk.Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="state_type" transfer-ownership="none">
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+            <parameter name="use_text" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="detail" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="layout" transfer-ownership="none">
+              <type name="Pango.Layout" c:type="PangoLayout*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_resize_grip">
+        <callback name="draw_resize_grip">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Gdk.Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="state_type" transfer-ownership="none">
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+            <parameter name="area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="detail" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="edge" transfer-ownership="none">
+              <type name="Gdk.WindowEdge" c:type="GdkWindowEdge"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_spinner">
+        <callback name="draw_spinner">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Gdk.Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="state_type" transfer-ownership="none">
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+            <parameter name="area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="detail" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="step" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved5" introspectable="0">
+        <callback name="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved6" introspectable="0">
+        <callback name="_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved7" introspectable="0">
+        <callback name="_gtk_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved8" introspectable="0">
+        <callback name="_gtk_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved9" introspectable="0">
+        <callback name="_gtk_reserved9">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved10" introspectable="0">
+        <callback name="_gtk_reserved10">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved11" introspectable="0">
+        <callback name="_gtk_reserved11">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <constant name="TEXT_VIEW_PRIORITY_VALIDATE" value="5">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Table"
+           c:symbol-prefix="table"
+           c:type="GtkTable"
+           parent="Container"
+           glib:type-name="GtkTable"
+           glib:get-type="gtk_table_get_type"
+           glib:type-struct="TableClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_table_new">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="rows" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="columns" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="homogeneous" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="attach" c:identifier="gtk_table_attach">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="left_attach" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="right_attach" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="top_attach" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="bottom_attach" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="xoptions" transfer-ownership="none">
+            <type name="AttachOptions" c:type="GtkAttachOptions"/>
+          </parameter>
+          <parameter name="yoptions" transfer-ownership="none">
+            <type name="AttachOptions" c:type="GtkAttachOptions"/>
+          </parameter>
+          <parameter name="xpadding" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="ypadding" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="attach_defaults" c:identifier="gtk_table_attach_defaults">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="left_attach" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="right_attach" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="top_attach" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="bottom_attach" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_col_spacing" c:identifier="gtk_table_get_col_spacing">
+        <doc xml:whitespace="preserve">Gets the amount of space between column @col, and
+column @col + 1. See gtk_table_set_col_spacing().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the column spacing</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a column in the table, 0 indicates the first column</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_default_col_spacing"
+              c:identifier="gtk_table_get_default_col_spacing">
+        <doc xml:whitespace="preserve">Gets the default column spacing for the table. This is
+the spacing that will be used for newly added columns.
+(See gtk_table_set_col_spacings())</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the default column spacing</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_default_row_spacing"
+              c:identifier="gtk_table_get_default_row_spacing">
+        <doc xml:whitespace="preserve">Gets the default row spacing for the table. This is
+the spacing that will be used for newly added rows.
+(See gtk_table_set_row_spacings())</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the default row spacing</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_homogeneous" c:identifier="gtk_table_get_homogeneous">
+        <doc xml:whitespace="preserve">Returns whether the table cells are all constrained to the same
+width and height. (See gtk_table_set_homogenous ())</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the cells are all constrained to the same size</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_row_spacing" c:identifier="gtk_table_get_row_spacing">
+        <doc xml:whitespace="preserve">Gets the amount of space between row @row, and
+row @row + 1. See gtk_table_set_row_spacing().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the row spacing</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a row in the table, 0 indicates the first row</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size" c:identifier="gtk_table_get_size" version="2.22">
+        <doc xml:whitespace="preserve">Returns the number of rows and columns in the table.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rows"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the number of rows, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="columns"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the number of columns, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="resize" c:identifier="gtk_table_resize">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rows" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="columns" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_col_spacing" c:identifier="gtk_table_set_col_spacing">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_col_spacings"
+              c:identifier="gtk_table_set_col_spacings">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_homogeneous" c:identifier="gtk_table_set_homogeneous">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="homogeneous" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_row_spacing" c:identifier="gtk_table_set_row_spacing">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_row_spacings"
+              c:identifier="gtk_table_set_row_spacings">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="column-spacing" writable="1" transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <property name="homogeneous" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="n-columns" writable="1" transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <property name="n-rows" writable="1" transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <property name="row-spacing" writable="1" transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <field name="container">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="TablePrivate" c:type="GtkTablePrivate*"/>
+      </field>
+    </class>
+    <record name="TableChild" c:type="GtkTableChild">
+      <field name="widget" writable="1">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="left_attach" writable="1">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="right_attach" writable="1">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="top_attach" writable="1">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="bottom_attach" writable="1">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="xpadding" writable="1">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="ypadding" writable="1">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="xexpand" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="yexpand" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="xshrink" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="yshrink" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="xfill" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="yfill" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="TableClass"
+            c:type="GtkTableClass"
+            glib:is-gtype-struct-for="Table">
+      <field name="parent_class">
+        <type name="ContainerClass" c:type="GtkContainerClass"/>
+      </field>
+    </record>
+    <record name="TablePrivate" c:type="GtkTablePrivate" disguised="1">
+    </record>
+    <record name="TableRowCol" c:type="GtkTableRowCol">
+      <field name="requisition" writable="1">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="allocation" writable="1">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="spacing" writable="1">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="need_expand" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="need_shrink" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="expand" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="shrink" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="empty" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="TargetEntry" c:type="GtkTargetEntry">
+      <field name="target" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="info" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <bitfield name="TargetFlags"
+              glib:type-name="GtkTargetFlags"
+              glib:get-type="gtk_target_flags_get_type"
+              c:type="GtkTargetFlags">
+      <member name="same_app"
+              value="1"
+              c:identifier="GTK_TARGET_SAME_APP"
+              glib:nick="same-app"/>
+      <member name="same_widget"
+              value="2"
+              c:identifier="GTK_TARGET_SAME_WIDGET"
+              glib:nick="same-widget"/>
+      <member name="other_app"
+              value="4"
+              c:identifier="GTK_TARGET_OTHER_APP"
+              glib:nick="other-app"/>
+      <member name="other_widget"
+              value="8"
+              c:identifier="GTK_TARGET_OTHER_WIDGET"
+              glib:nick="other-widget"/>
+    </bitfield>
+    <record name="TargetList"
+            c:type="GtkTargetList"
+            glib:type-name="GtkTargetList"
+            glib:get-type="gtk_target_list_get_type"
+            c:symbol-prefix="target_list">
+      <field name="list" writable="1">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="ref_count" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <constructor name="new" c:identifier="gtk_target_list_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkTargetList from an array of #GtkTargetEntry.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GtkTargetList.</doc>
+          <type name="TargetList" c:type="GtkTargetList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="targets" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to an array of #GtkTargetEntry</doc>
+            <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+          </parameter>
+          <parameter name="ntargets" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of entries in @targets.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add" c:identifier="gtk_target_list_add">
+        <doc xml:whitespace="preserve">Appends another target to a #GtkTargetList.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="target" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the interned atom representing the target</doc>
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the flags for this target</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an ID that will be passed back to the application</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_image_targets"
+              c:identifier="gtk_target_list_add_image_targets"
+              version="2.6">
+        <doc xml:whitespace="preserve">Appends the image targets supported by #GtkSelection to
+the target list. All targets are added with the same @info.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an ID that will be passed back to the application</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="writable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to add only targets for which GTK+ knows how to convert a pixbuf into the format</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_rich_text_targets"
+              c:identifier="gtk_target_list_add_rich_text_targets"
+              version="2.10">
+        <doc xml:whitespace="preserve">Appends the rich text targets registered with
+gtk_text_buffer_register_serialize_format() or
+gtk_text_buffer_register_deserialize_format() to the target list. All
+targets are added with the same @info.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an ID that will be passed back to the application</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="deserializable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">if %TRUE, then deserializable rich text formats will be added, serializable formats otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextBuffer.</doc>
+            <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_table" c:identifier="gtk_target_list_add_table">
+        <doc xml:whitespace="preserve">Prepends a table of #GtkTargetEntry to a target list.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="targets" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the table of #GtkTargetEntry</doc>
+            <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+          </parameter>
+          <parameter name="ntargets" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of targets in the table</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_text_targets"
+              c:identifier="gtk_target_list_add_text_targets"
+              version="2.6">
+        <doc xml:whitespace="preserve">Appends the text targets supported by #GtkSelection to
+the target list. All targets are added with the same @info.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an ID that will be passed back to the application</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_uri_targets"
+              c:identifier="gtk_target_list_add_uri_targets"
+              version="2.6">
+        <doc xml:whitespace="preserve">Appends the URI targets supported by #GtkSelection to
+the target list. All targets are added with the same @info.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an ID that will be passed back to the application</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find" c:identifier="gtk_target_list_find">
+        <doc xml:whitespace="preserve">Looks up a given target in a #GtkTargetList.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the target was found, otherwise %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="target" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an interned atom representing the target to search for</doc>
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+          <parameter name="info" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to the location to store application info for target, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref" c:identifier="gtk_target_list_ref">
+        <doc xml:whitespace="preserve">Increases the reference count of a #GtkTargetList by one.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the passed in #GtkTargetList.</doc>
+          <type name="TargetList" c:type="GtkTargetList*"/>
+        </return-value>
+      </method>
+      <method name="remove" c:identifier="gtk_target_list_remove">
+        <doc xml:whitespace="preserve">Removes a target from a target list.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="target" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the interned atom representing the target</doc>
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unref" c:identifier="gtk_target_list_unref">
+        <doc xml:whitespace="preserve">Decreases the reference count of a #GtkTargetList by one.
+If the resulting reference count is zero, frees the list.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="TargetPair" c:type="GtkTargetPair">
+      <field name="target" writable="1">
+        <type name="Gdk.Atom" c:type="GdkAtom"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="info" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <class name="TearoffMenuItem"
+           c:symbol-prefix="tearoff_menu_item"
+           c:type="GtkTearoffMenuItem"
+           parent="MenuItem"
+           glib:type-name="GtkTearoffMenuItem"
+           glib:get-type="gtk_tearoff_menu_item_get_type"
+           glib:type-struct="TearoffMenuItemClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Activatable"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_tearoff_menu_item_new">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <field name="menu_item">
+        <type name="MenuItem" c:type="GtkMenuItem"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="TearoffMenuItemPrivate"
+              c:type="GtkTearoffMenuItemPrivate*"/>
+      </field>
+    </class>
+    <record name="TearoffMenuItemClass"
+            c:type="GtkTearoffMenuItemClass"
+            glib:is-gtype-struct-for="TearoffMenuItem">
+      <field name="parent_class">
+        <type name="MenuItemClass" c:type="GtkMenuItemClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="TearoffMenuItemPrivate"
+            c:type="GtkTearoffMenuItemPrivate"
+            disguised="1">
+    </record>
+    <record name="TextAppearance" c:type="GtkTextAppearance">
+      <field name="bg_color" writable="1">
+        <type name="Gdk.Color" c:type="GdkColor"/>
+      </field>
+      <field name="fg_color" writable="1">
+        <type name="Gdk.Color" c:type="GdkColor"/>
+      </field>
+      <field name="rise" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="padding1" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="underline" writable="1" bits="4">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="strikethrough" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="draw_bg" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="inside_selection" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="is_text" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="pad1" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="pad2" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="pad3" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="pad4" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="TextAttributes"
+            c:type="GtkTextAttributes"
+            glib:type-name="GtkTextAttributes"
+            glib:get-type="gtk_text_attributes_get_type"
+            c:symbol-prefix="text_attributes">
+      <field name="refcount" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="appearance" writable="1">
+        <type name="TextAppearance" c:type="GtkTextAppearance"/>
+      </field>
+      <field name="justification" writable="1">
+        <type name="Justification" c:type="GtkJustification"/>
+      </field>
+      <field name="direction" writable="1">
+        <type name="TextDirection" c:type="GtkTextDirection"/>
+      </field>
+      <field name="font" writable="1">
+        <type name="Pango.FontDescription" c:type="PangoFontDescription*"/>
+      </field>
+      <field name="font_scale" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="left_margin" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="indent" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="right_margin" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="pixels_above_lines" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="pixels_below_lines" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="pixels_inside_wrap" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="tabs" writable="1">
+        <type name="Pango.TabArray" c:type="PangoTabArray*"/>
+      </field>
+      <field name="wrap_mode" writable="1">
+        <type name="WrapMode" c:type="GtkWrapMode"/>
+      </field>
+      <field name="language" writable="1">
+        <type name="Pango.Language" c:type="PangoLanguage*"/>
+      </field>
+      <field name="pg_bg_color" writable="1">
+        <type name="Gdk.Color" c:type="GdkColor*"/>
+      </field>
+      <field name="invisible" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="bg_full_height" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="editable" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="pad1" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="pad2" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="pad3" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="pad4" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <constructor name="new" c:identifier="gtk_text_attributes_new">
+        <doc xml:whitespace="preserve">Creates a #GtkTextAttributes, which describes
+a set of properties on some text.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkTextAttributes</doc>
+          <type name="TextAttributes" c:type="GtkTextAttributes*"/>
+        </return-value>
+      </constructor>
+      <method name="copy" c:identifier="gtk_text_attributes_copy">
+        <doc xml:whitespace="preserve">Copies @src and returns a new #GtkTextAttributes.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a copy of @src</doc>
+          <type name="TextAttributes" c:type="GtkTextAttributes*"/>
+        </return-value>
+      </method>
+      <method name="copy_values"
+              c:identifier="gtk_text_attributes_copy_values">
+        <doc xml:whitespace="preserve">Copies the values from @src to @dest so that @dest has the same values
+as @src. Frees existing values in @dest.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <doc xml:whitespace="preserve">another #GtkTextAttributes</doc>
+            <type name="TextAttributes" c:type="GtkTextAttributes*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref" c:identifier="gtk_text_attributes_ref">
+        <doc xml:whitespace="preserve">Increments the reference count on @values.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GtkTextAttributes that were passed in</doc>
+          <type name="TextAttributes" c:type="GtkTextAttributes*"/>
+        </return-value>
+      </method>
+      <method name="unref" c:identifier="gtk_text_attributes_unref">
+        <doc xml:whitespace="preserve">Decrements the reference count on @values, freeing the structure
+if the reference count reaches 0.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="TextBTree" c:type="GtkTextBTree" disguised="1">
+    </record>
+    <class name="TextBuffer"
+           c:symbol-prefix="text_buffer"
+           c:type="GtkTextBuffer"
+           parent="GObject.Object"
+           glib:type-name="GtkTextBuffer"
+           glib:get-type="gtk_text_buffer_get_type"
+           glib:type-struct="TextBufferClass">
+      <constructor name="new" c:identifier="gtk_text_buffer_new">
+        <doc xml:whitespace="preserve">Creates a new text buffer.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new text buffer</doc>
+          <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="table" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a tag table, or %NULL to create a new one</doc>
+            <type name="TextTagTable" c:type="GtkTextTagTable*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add_mark"
+              c:identifier="gtk_text_buffer_add_mark"
+              version="2.12">
+        <doc xml:whitespace="preserve">Adds the mark at position @where. The mark must not be added to
+another buffer, and if its name is not %NULL then there must not
+be another mark in the buffer with the same name.
+Emits the "mark-set" signal as notification of the mark's initial
+placement.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mark" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mark to add</doc>
+            <type name="TextMark" c:type="GtkTextMark*"/>
+          </parameter>
+          <parameter name="where" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to place mark</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_selection_clipboard"
+              c:identifier="gtk_text_buffer_add_selection_clipboard">
+        <doc xml:whitespace="preserve">Adds @clipboard to the list of clipboards in which the selection 
+contents of @buffer are available. In most cases, @clipboard will be 
+the #GtkClipboard of type %GDK_SELECTION_PRIMARY for a view of @buffer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clipboard" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkClipboard</doc>
+            <type name="Clipboard" c:type="GtkClipboard*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="apply_tag" c:identifier="gtk_text_buffer_apply_tag">
+        <doc xml:whitespace="preserve">Emits the "apply-tag" signal on @buffer. The default
+handler for the signal applies @tag to the given range.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextTag</doc>
+            <type name="TextTag" c:type="GtkTextTag*"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">one bound of range to be tagged</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">other bound of range to be tagged</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="apply_tag_by_name"
+              c:identifier="gtk_text_buffer_apply_tag_by_name">
+        <doc xml:whitespace="preserve">Calls gtk_text_tag_table_lookup() on the buffer's tag table to
+get a #GtkTextTag, then calls gtk_text_buffer_apply_tag().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of a named #GtkTextTag</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">one bound of range to be tagged</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">other bound of range to be tagged</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backspace"
+              c:identifier="gtk_text_buffer_backspace"
+              version="2.6">
+        <doc xml:whitespace="preserve">Performs the appropriate action as if the user hit the delete
+key with the cursor at the position specified by @iter. In the
+normal case a single character will be deleted, but when
+combining accents are involved, more than one character can
+be deleted, and when precomposed character and accent combinations
+are involved, less than one character will be deleted.
+Because the buffer is modified, all outstanding iterators become 
+invalid after calling this function; however, the @iter will be
+re-initialized to point to the location where text was deleted.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the buffer was modified</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a position in @buffer</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="interactive" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the deletion is caused by user interaction</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="default_editable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the buffer is editable by default</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="begin_user_action"
+              c:identifier="gtk_text_buffer_begin_user_action">
+        <doc xml:whitespace="preserve">Called to indicate that the buffer operations between here and a
+call to gtk_text_buffer_end_user_action() are part of a single
+user-visible operation. The operations between
+gtk_text_buffer_begin_user_action() and
+gtk_text_buffer_end_user_action() can then be grouped when creating
+an undo stack. #GtkTextBuffer maintains a count of calls to
+gtk_text_buffer_begin_user_action() that have not been closed with
+a call to gtk_text_buffer_end_user_action(), and emits the 
+"begin-user-action" and "end-user-action" signals only for the 
+outermost pair of calls. This allows you to build user actions 
+from other user actions.
+The "interactive" buffer mutation functions, such as
+gtk_text_buffer_insert_interactive(), automatically call begin/end
+user action around the buffer operations they perform, so there's
+no need to add extra calls if you user action consists solely of a
+single call to one of those functions.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="copy_clipboard"
+              c:identifier="gtk_text_buffer_copy_clipboard">
+        <doc xml:whitespace="preserve">Copies the currently-selected text to a clipboard.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clipboard" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkClipboard object to copy to</doc>
+            <type name="Clipboard" c:type="GtkClipboard*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_child_anchor"
+              c:identifier="gtk_text_buffer_create_child_anchor">
+        <doc xml:whitespace="preserve">This is a convenience function which simply creates a child anchor
+with gtk_text_child_anchor_new() and inserts it into the buffer
+with gtk_text_buffer_insert_child_anchor(). The new anchor is
+owned by the buffer; no reference count is returned to
+the caller of gtk_text_buffer_create_child_anchor().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the created child anchor</doc>
+          <type name="TextChildAnchor" c:type="GtkTextChildAnchor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location in the buffer</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_mark" c:identifier="gtk_text_buffer_create_mark">
+        <doc xml:whitespace="preserve">Creates a mark at position @where. If @mark_name is %NULL, the mark
+is anonymous; otherwise, the mark can be retrieved by name using
+gtk_text_buffer_get_mark(). If a mark has left gravity, and text is
+inserted at the mark's current location, the mark will be moved to
+the left of the newly-inserted text. If the mark has right gravity
+(@left_gravity = %FALSE), the mark will end up on the right of
+newly-inserted text. The standard left-to-right cursor is a mark
+with right gravity (when you type, the cursor stays on the right
+side of the text you're typing).
+The caller of this function does &lt;emphasis&gt;not&lt;/emphasis&gt; own a 
+reference to the returned #GtkTextMark, so you can ignore the 
+return value if you like. Marks are owned by the buffer and go 
+away when the buffer does.
+Emits the "mark-set" signal as notification of the mark's initial
+placement.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new #GtkTextMark object</doc>
+          <type name="TextMark" c:type="GtkTextMark*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mark_name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">name for mark, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="where" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to place mark</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="left_gravity" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the mark has left gravity</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_tag"
+              c:identifier="gtk_text_buffer_create_tag"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Creates a tag and adds it to the tag table for @buffer.
+Equivalent to calling gtk_text_tag_new() and then adding the
+tag to the buffer's tag table. The returned tag is owned by
+the buffer's tag table, so the ref count will be equal to one.
+If @tag_name is %NULL, the tag is anonymous.
+If @tag_name is non-%NULL, a tag called @tag_name must not already
+exist in the tag table for this buffer.
+The @first_property_name argument and subsequent arguments are a list
+of properties to set on the tag, as with g_object_set().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new tag</doc>
+          <type name="TextTag" c:type="GtkTextTag*"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag_name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">name of the new tag, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="first_property_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">name of first property to set, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="cut_clipboard"
+              c:identifier="gtk_text_buffer_cut_clipboard">
+        <doc xml:whitespace="preserve">Copies the currently-selected text to a clipboard, then deletes
+said text if it's editable.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clipboard" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkClipboard object to cut to</doc>
+            <type name="Clipboard" c:type="GtkClipboard*"/>
+          </parameter>
+          <parameter name="default_editable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">default editability of the buffer</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete" c:identifier="gtk_text_buffer_delete">
+        <doc xml:whitespace="preserve">Deletes text between @start and @end. The order of @start and @end
+is not actually relevant; gtk_text_buffer_delete() will reorder
+them. This function actually emits the "delete-range" signal, and
+the default handler of that signal deletes the text. Because the
+buffer is modified, all outstanding iterators become invalid after
+calling this function; however, the @start and @end will be
+re-initialized to point to the location where text was deleted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a position in @buffer</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">another position in @buffer</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_interactive"
+              c:identifier="gtk_text_buffer_delete_interactive">
+        <doc xml:whitespace="preserve">Deletes all &lt;emphasis&gt;editable&lt;/emphasis&gt; text in the given range.
+Calls gtk_text_buffer_delete() for each editable sub-range of
+[@start,@end). @start and @end are revalidated to point to
+the location of the last deleted range, or left untouched if
+no text was deleted.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether some text was actually deleted</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start of range to delete</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="end_iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">end of range</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="default_editable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the buffer is editable by default</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_mark" c:identifier="gtk_text_buffer_delete_mark">
+        <doc xml:whitespace="preserve">Deletes @mark, so that it's no longer located anywhere in the
+buffer. Removes the reference the buffer holds to the mark, so if
+you haven't called g_object_ref() on the mark, it will be freed. Even
+if the mark isn't freed, most operations on @mark become
+invalid, until it gets added to a buffer again with 
+gtk_text_buffer_add_mark(). Use gtk_text_mark_get_deleted() to  
+find out if a mark has been removed from its buffer.
+The "mark-deleted" signal will be emitted as notification after 
+the mark is deleted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mark" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextMark in @buffer</doc>
+            <type name="TextMark" c:type="GtkTextMark*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_mark_by_name"
+              c:identifier="gtk_text_buffer_delete_mark_by_name">
+        <doc xml:whitespace="preserve">Deletes the mark named @name; the mark must exist. See
+gtk_text_buffer_delete_mark() for details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of a mark in @buffer</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_selection"
+              c:identifier="gtk_text_buffer_delete_selection">
+        <doc xml:whitespace="preserve">Deletes the range between the "insert" and "selection_bound" marks,
+that is, the currently-selected text. If @interactive is %TRUE,
+the editability of the selection will be considered (users can't delete
+uneditable text).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether there was a non-empty selection to delete</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="interactive" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the deletion is caused by user interaction</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="default_editable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the buffer is editable by default</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="deserialize"
+              c:identifier="gtk_text_buffer_deserialize"
+              version="2.10"
+              throws="1">
+        <doc xml:whitespace="preserve">This function deserializes rich text in format @format and inserts
+it at @iter.
+gtk_text_buffer_register_deserialize_format() or
+gtk_text_buffer_register_deserialize_tagset() beforehand.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="content_buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkTextBuffer to deserialize into</doc>
+            <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the rich text format to use for deserializing</doc>
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">insertion point for the deserialized text</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to deserialize</doc>
+            <type name="guint8" c:type="guint8*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">length of @data</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="deserialize_get_can_create_tags"
+              c:identifier="gtk_text_buffer_deserialize_get_can_create_tags"
+              version="2.10">
+        <doc xml:whitespace="preserve">This functions returns the value set with
+gtk_text_buffer_deserialize_set_can_create_tags()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether deserializing this format may create tags</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkAtom representing a registered rich text format</doc>
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="deserialize_set_can_create_tags"
+              c:identifier="gtk_text_buffer_deserialize_set_can_create_tags"
+              version="2.10">
+        <doc xml:whitespace="preserve">Use this function to allow a rich text deserialization function to
+create new tags in the receiving buffer. Note that using this
+function is almost always a bad idea, because the rich text
+functions you register should know how to map the rich text format
+they handler to your text buffers set of tags.
+The ability of creating new (arbitrary!) tags in the receiving buffer
+is meant for special rich text formats like the internal one that
+is registered using gtk_text_buffer_register_deserialize_tagset(),
+because that format is essentially a dump of the internal structure
+of the source buffer, including its tag names.
+You should allow creation of tags only if you know what you are
+doing, e.g. if you defined a tagset name for your application
+suite's text buffers and you know that it's fine to receive new
+tags from these buffers, because you know that your application can
+handle the newly created tags.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkAtom representing a registered rich text format</doc>
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+          <parameter name="can_create_tags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether deserializing this format may create tags</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="end_user_action"
+              c:identifier="gtk_text_buffer_end_user_action">
+        <doc xml:whitespace="preserve">Should be paired with a call to gtk_text_buffer_begin_user_action().
+See that function for a full explanation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_bounds" c:identifier="gtk_text_buffer_get_bounds">
+        <doc xml:whitespace="preserve">Retrieves the first and last iterators in the buffer, i.e. the
+entire buffer lies within the range [@start,@end).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">iterator to initialize with first position in the buffer</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="end"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">iterator to initialize with the end iterator</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_char_count"
+              c:identifier="gtk_text_buffer_get_char_count">
+        <doc xml:whitespace="preserve">Gets the number of characters in the buffer; note that characters
+and bytes are not the same, you can't e.g. expect the contents of
+the buffer in string form to be this many bytes long. The character
+count is cached, so this function is very fast.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of characters in the buffer</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_copy_target_list"
+              c:identifier="gtk_text_buffer_get_copy_target_list"
+              version="2.10">
+        <doc xml:whitespace="preserve">This function returns the list of targets this text buffer can
+provide for copying and as DND source. The targets in the list are
+added with %info values from the #GtkTextBufferTargetInfo enum,
+using gtk_target_list_add_rich_text_targets() and
+gtk_target_list_add_text_targets().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GtkTargetList</doc>
+          <type name="TargetList" c:type="GtkTargetList*"/>
+        </return-value>
+      </method>
+      <method name="get_deserialize_formats"
+              c:identifier="gtk_text_buffer_get_deserialize_formats"
+              version="2.10"
+              introspectable="0">
+        <doc xml:whitespace="preserve">This function returns the rich text deserialize formats registered
+with @buffer using gtk_text_buffer_register_deserialize_format() or
+gtk_text_buffer_register_deserialize_tagset()
+formats.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">an array of #GdkAtom&lt;!-- --&gt;s representing the registered</doc>
+          <type name="Gdk.Atom" c:type="GdkAtom*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_formats" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the number of formats</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_end_iter" c:identifier="gtk_text_buffer_get_end_iter">
+        <doc xml:whitespace="preserve">Initializes @iter with the "end iterator," one past the last valid
+character in the text buffer. If dereferenced with
+gtk_text_iter_get_char(), the end iterator has a character value of
+0. The entire buffer lies in the range from the first position in
+the buffer (call gtk_text_buffer_get_start_iter() to get
+character position 0) to the end iterator.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">iterator to initialize</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_has_selection"
+              c:identifier="gtk_text_buffer_get_has_selection"
+              version="2.10">
+        <doc xml:whitespace="preserve">Indicates whether the buffer has some text currently selected.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the there is text selected</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_insert" c:identifier="gtk_text_buffer_get_insert">
+        <doc xml:whitespace="preserve">Returns the mark that represents the cursor (insertion point).
+Equivalent to calling gtk_text_buffer_get_mark() to get the mark
+named "insert", but very slightly more efficient, and involves less
+typing.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">insertion point mark</doc>
+          <type name="TextMark" c:type="GtkTextMark*"/>
+        </return-value>
+      </method>
+      <method name="get_iter_at_child_anchor"
+              c:identifier="gtk_text_buffer_get_iter_at_child_anchor">
+        <doc xml:whitespace="preserve">Obtains the location of @anchor within @buffer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">an iterator to be initialized</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="anchor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a child anchor that appears in @buffer</doc>
+            <type name="TextChildAnchor" c:type="GtkTextChildAnchor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_iter_at_line"
+              c:identifier="gtk_text_buffer_get_iter_at_line">
+        <doc xml:whitespace="preserve">Initializes @iter to the start of the given line.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">iterator to initialize</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="line_number" transfer-ownership="none">
+            <doc xml:whitespace="preserve">line number counting from 0</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_iter_at_line_index"
+              c:identifier="gtk_text_buffer_get_iter_at_line_index">
+        <doc xml:whitespace="preserve">Obtains an iterator pointing to @byte_index within the given line.
+beyond the end of the line.  Note &lt;emphasis&gt;bytes&lt;/emphasis&gt;, not
+characters; UTF-8 may encode one character as multiple bytes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">iterator to initialize</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="line_number" transfer-ownership="none">
+            <doc xml:whitespace="preserve">line number counting from 0</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="byte_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">byte index from start of line</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_iter_at_line_offset"
+              c:identifier="gtk_text_buffer_get_iter_at_line_offset">
+        <doc xml:whitespace="preserve">Obtains an iterator pointing to @char_offset within the given
+line. The @char_offset must exist, offsets off the end of the line
+are not allowed. Note &lt;emphasis&gt;characters&lt;/emphasis&gt;, not bytes;
+UTF-8 may encode one character as multiple bytes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">iterator to initialize</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="line_number" transfer-ownership="none">
+            <doc xml:whitespace="preserve">line number counting from 0</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="char_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">char offset from start of line</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_iter_at_mark"
+              c:identifier="gtk_text_buffer_get_iter_at_mark">
+        <doc xml:whitespace="preserve">Initializes @iter with the current position of @mark.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">iterator to initialize</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="mark" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextMark in @buffer</doc>
+            <type name="TextMark" c:type="GtkTextMark*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_iter_at_offset"
+              c:identifier="gtk_text_buffer_get_iter_at_offset">
+        <doc xml:whitespace="preserve">Initializes @iter to a position @char_offset chars from the start
+of the entire buffer. If @char_offset is -1 or greater than the number
+of characters in the buffer, @iter is initialized to the end iterator,
+the iterator one past the last valid character in the buffer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">iterator to initialize</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="char_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">char offset from start of buffer, counting from 0, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_line_count"
+              c:identifier="gtk_text_buffer_get_line_count">
+        <doc xml:whitespace="preserve">Obtains the number of lines in the buffer. This value is cached, so
+the function is very fast.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of lines in the buffer</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_mark" c:identifier="gtk_text_buffer_get_mark">
+        <doc xml:whitespace="preserve">Returns the mark named @name in buffer @buffer, or %NULL if no such
+mark exists in the buffer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkTextMark, or %NULL</doc>
+          <type name="TextMark" c:type="GtkTextMark*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a mark name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_modified" c:identifier="gtk_text_buffer_get_modified">
+        <doc xml:whitespace="preserve">Indicates whether the buffer has been modified since the last call
+to gtk_text_buffer_set_modified() set the modification flag to
+%FALSE. Used for example to enable a "save" function in a text
+editor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the buffer has been modified</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_paste_target_list"
+              c:identifier="gtk_text_buffer_get_paste_target_list"
+              version="2.10">
+        <doc xml:whitespace="preserve">This function returns the list of targets this text buffer supports
+for pasting and as DND destination. The targets in the list are
+added with %info values from the #GtkTextBufferTargetInfo enum,
+using gtk_target_list_add_rich_text_targets() and
+gtk_target_list_add_text_targets().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GtkTargetList</doc>
+          <type name="TargetList" c:type="GtkTargetList*"/>
+        </return-value>
+      </method>
+      <method name="get_selection_bound"
+              c:identifier="gtk_text_buffer_get_selection_bound">
+        <doc xml:whitespace="preserve">Returns the mark that represents the selection bound.  Equivalent
+to calling gtk_text_buffer_get_mark() to get the mark named
+"selection_bound", but very slightly more efficient, and involves
+less typing.
+The currently-selected text in @buffer is the region between the
+"selection_bound" and "insert" marks. If "selection_bound" and
+"insert" are in the same place, then there is no current selection.
+gtk_text_buffer_get_selection_bounds() is another convenient function
+for handling the selection, if you just want to know whether there's a
+selection and what its bounds are.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">selection bound mark</doc>
+          <type name="TextMark" c:type="GtkTextMark*"/>
+        </return-value>
+      </method>
+      <method name="get_selection_bounds"
+              c:identifier="gtk_text_buffer_get_selection_bounds">
+        <doc xml:whitespace="preserve">Returns %TRUE if some text is selected; places the bounds
+of the selection in @start and @end (if the selection has length 0,
+then @start and @end are filled in with the same value).
+NULL, then they are not filled in, but the return value still indicates
+whether text is selected.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the selection has nonzero length</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="start"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">iterator to initialize with selection start</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="end"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">iterator to initialize with selection end</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_serialize_formats"
+              c:identifier="gtk_text_buffer_get_serialize_formats"
+              version="2.10"
+              introspectable="0">
+        <doc xml:whitespace="preserve">This function returns the rich text serialize formats registered
+with @buffer using gtk_text_buffer_register_serialize_format() or
+gtk_text_buffer_register_serialize_tagset()
+formats.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">an array of #GdkAtom&lt;!-- --&gt;s representing the registered</doc>
+          <type name="Gdk.Atom" c:type="GdkAtom*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_formats" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the number of formats</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_slice" c:identifier="gtk_text_buffer_get_slice">
+        <doc xml:whitespace="preserve">Returns the text in the range [@start,@end). Excludes undisplayed
+text (text marked with tags that set the invisibility attribute) if
+0xFFFC character whenever the buffer contains
+embedded images, so byte and character indexes into
+the returned string &lt;emphasis&gt;do&lt;/emphasis&gt; correspond to byte
+and character indexes into the buffer. Contrast with
+gtk_text_buffer_get_text(). Note that 0xFFFC can occur in normal
+text as well, so it is not a reliable indicator that a pixbuf or
+widget is in the buffer.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">an allocated UTF-8 string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start of a range</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">end of a range</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="include_hidden_chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to include invisible text</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_start_iter"
+              c:identifier="gtk_text_buffer_get_start_iter">
+        <doc xml:whitespace="preserve">Initialized @iter with the first position in the text buffer. This
+is the same as using gtk_text_buffer_get_iter_at_offset() to get
+the iter at character offset 0.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">iterator to initialize</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tag_table"
+              c:identifier="gtk_text_buffer_get_tag_table">
+        <doc xml:whitespace="preserve">Get the #GtkTextTagTable associated with this buffer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the buffer's tag table</doc>
+          <type name="TextTagTable" c:type="GtkTextTagTable*"/>
+        </return-value>
+      </method>
+      <method name="get_text" c:identifier="gtk_text_buffer_get_text">
+        <doc xml:whitespace="preserve">Returns the text in the range [@start,@end). Excludes undisplayed
+text (text marked with tags that set the invisibility attribute) if
+representing embedded images, so byte and character indexes into
+the returned string do &lt;emphasis&gt;not&lt;/emphasis&gt; correspond to byte
+and character indexes into the buffer. Contrast with
+gtk_text_buffer_get_slice().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">an allocated UTF-8 string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start of a range</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">end of a range</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="include_hidden_chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to include invisible text</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert" c:identifier="gtk_text_buffer_insert">
+        <doc xml:whitespace="preserve">Inserts @len bytes of @text at position @iter.  If @len is -1,
+entirety. Emits the "insert-text" signal; insertion actually occurs
+in the default handler for the signal. @iter is invalidated when
+insertion occurs (because the buffer contents change), but the
+default signal handler revalidates it to point to the end of the
+inserted text.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a position in the buffer</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">text in UTF-8 format</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">length of text in bytes, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_at_cursor"
+              c:identifier="gtk_text_buffer_insert_at_cursor">
+        <doc xml:whitespace="preserve">Simply calls gtk_text_buffer_insert(), using the current
+cursor position as the insertion point.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">text in UTF-8 format</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">length of text, in bytes</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_child_anchor"
+              c:identifier="gtk_text_buffer_insert_child_anchor">
+        <doc xml:whitespace="preserve">Inserts a child widget anchor into the text buffer at @iter. The
+anchor will be counted as one character in character counts, and
+when obtaining the buffer contents as a string, will be represented
+by the Unicode "object replacement character" 0xFFFC. Note that the
+"slice" variants for obtaining portions of the buffer as a string
+include this character for child anchors, but the "text" variants do
+not. E.g. see gtk_text_buffer_get_slice() and
+gtk_text_buffer_get_text(). Consider
+gtk_text_buffer_create_child_anchor() as a more convenient
+alternative to this function. The buffer will add a reference to
+the anchor, so you can unref it after insertion.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to insert the anchor</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="anchor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextChildAnchor</doc>
+            <type name="TextChildAnchor" c:type="GtkTextChildAnchor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_interactive"
+              c:identifier="gtk_text_buffer_insert_interactive">
+        <doc xml:whitespace="preserve">Like gtk_text_buffer_insert(), but the insertion will not occur if
+want to prevent insertions at ineditable locations if the insertion
+results from a user action (is interactive).
+have a tag affecting editability applied to it. Typically the
+result of gtk_text_view_get_editable() is appropriate here.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether text was actually inserted</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a position in @buffer</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">some UTF-8 text</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">length of text in bytes, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="default_editable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">default editability of buffer</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_interactive_at_cursor"
+              c:identifier="gtk_text_buffer_insert_interactive_at_cursor">
+        <doc xml:whitespace="preserve">Calls gtk_text_buffer_insert_interactive() at the cursor
+position.
+have a tag affecting editability applied to it. Typically the
+result of gtk_text_view_get_editable() is appropriate here.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether text was actually inserted</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">text in UTF-8 format</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">length of text in bytes, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="default_editable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">default editability of buffer</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_pixbuf"
+              c:identifier="gtk_text_buffer_insert_pixbuf">
+        <doc xml:whitespace="preserve">Inserts an image into the text buffer at @iter. The image will be
+counted as one character in character counts, and when obtaining
+the buffer contents as a string, will be represented by the Unicode
+"object replacement character" 0xFFFC. Note that the "slice"
+variants for obtaining portions of the buffer as a string include
+this character for pixbufs, but the "text" variants do
+not. e.g. see gtk_text_buffer_get_slice() and
+gtk_text_buffer_get_text().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to insert the pixbuf</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkPixbuf</doc>
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_range" c:identifier="gtk_text_buffer_insert_range">
+        <doc xml:whitespace="preserve">Copies text, tags, and pixbufs between @start and @end (the order
+of @start and @end doesn't matter) and inserts the copy at @iter.
+Used instead of simply getting/inserting text because it preserves
+images and tags. If @start and @end are in a different buffer from
+Implemented via emissions of the insert_text and apply_tag signals,
+so expect those.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a position in @buffer</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a position in a #GtkTextBuffer</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">another position in the same buffer as @start</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_range_interactive"
+              c:identifier="gtk_text_buffer_insert_range_interactive">
+        <doc xml:whitespace="preserve">Same as gtk_text_buffer_insert_range(), but does nothing if the
+insertion point isn't editable. The @default_editable parameter
+indicates whether the text is editable at @iter if no tags
+enclosing @iter affect editability. Typically the result of
+gtk_text_view_get_editable() is appropriate here.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether an insertion was possible at @iter</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a position in @buffer</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a position in a #GtkTextBuffer</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">another position in the same buffer as @start</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="default_editable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">default editability of the buffer</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_with_tags"
+              c:identifier="gtk_text_buffer_insert_with_tags"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Inserts @text into @buffer at @iter, applying the list of tags to
+the newly-inserted text. The last tag specified must be NULL to
+terminate the list. Equivalent to calling gtk_text_buffer_insert(),
+then gtk_text_buffer_apply_tag() on the inserted text;
+gtk_text_buffer_insert_with_tags() is just a convenience function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an iterator in @buffer</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">UTF-8 text</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">length of @text, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="first_tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">first tag to apply to @text</doc>
+            <type name="TextTag" c:type="GtkTextTag*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_with_tags_by_name"
+              c:identifier="gtk_text_buffer_insert_with_tags_by_name"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Same as gtk_text_buffer_insert_with_tags(), but allows you
+to pass in tag names instead of tag objects.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position in @buffer</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">UTF-8 text</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">length of @text, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="first_tag_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of a tag to apply to @text</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_mark" c:identifier="gtk_text_buffer_move_mark">
+        <doc xml:whitespace="preserve">Moves @mark to the new location @where. Emits the "mark-set" signal
+as notification of the move.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mark" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextMark</doc>
+            <type name="TextMark" c:type="GtkTextMark*"/>
+          </parameter>
+          <parameter name="where" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new location for @mark in @buffer</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_mark_by_name"
+              c:identifier="gtk_text_buffer_move_mark_by_name">
+        <doc xml:whitespace="preserve">Moves the mark named @name (which must exist) to location @where.
+See gtk_text_buffer_move_mark() for details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of a mark</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="where" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new location for mark</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="paste_clipboard"
+              c:identifier="gtk_text_buffer_paste_clipboard">
+        <doc xml:whitespace="preserve">Pastes the contents of a clipboard at the insertion point, or
+we'll ask for the paste data and return, and at some point later
+after the main loop runs, the paste data will be inserted.)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clipboard" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkClipboard to paste from</doc>
+            <type name="Clipboard" c:type="GtkClipboard*"/>
+          </parameter>
+          <parameter name="override_location"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to insert pasted text, or %NULL for at the cursor</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="default_editable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the buffer is editable by default</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="place_cursor" c:identifier="gtk_text_buffer_place_cursor">
+        <doc xml:whitespace="preserve">This function moves the "insert" and "selection_bound" marks
+simultaneously.  If you move them to the same place in two steps
+with gtk_text_buffer_move_mark(), you will temporarily select a
+region in between their old and new locations, which can be pretty
+inefficient since the temporarily-selected region will force stuff
+to be recalculated. This function moves them as a unit, which can
+be optimized.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="where" transfer-ownership="none">
+            <doc xml:whitespace="preserve">where to put the cursor</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="register_deserialize_format"
+              c:identifier="gtk_text_buffer_register_deserialize_format"
+              version="2.10"
+              introspectable="0">
+        <doc xml:whitespace="preserve">This function registers a rich text deserialization @function along with
+its @mime_type with the passed @buffer.
+format's mime-type.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the #GdkAtom that corresponds to the newly registered</doc>
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </return-value>
+        <parameters>
+          <parameter name="mime_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format's mime-type</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="function"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <doc xml:whitespace="preserve">the deserialize function to register</doc>
+            <type name="TextBufferDeserializeFunc"
+                  c:type="GtkTextBufferDeserializeFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">@function's user_data</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="user_data_destroy"
+                     transfer-ownership="none"
+                     scope="async">
+            <doc xml:whitespace="preserve">a function to call when @user_data is no longer needed</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="register_deserialize_tagset"
+              c:identifier="gtk_text_buffer_register_deserialize_tagset"
+              version="2.10"
+              introspectable="0">
+        <doc xml:whitespace="preserve">This function registers GTK+'s internal rich text serialization
+format with the passed @buffer. See
+gtk_text_buffer_register_serialize_tagset() for details.
+format's mime-type.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the #GdkAtom that corresponds to the newly registered</doc>
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </return-value>
+        <parameters>
+          <parameter name="tagset_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">an optional tagset name, on %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="register_serialize_format"
+              c:identifier="gtk_text_buffer_register_serialize_format"
+              version="2.10"
+              introspectable="0">
+        <doc xml:whitespace="preserve">This function registers a rich text serialization @function along with
+its @mime_type with the passed @buffer.
+format's mime-type.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the #GdkAtom that corresponds to the newly registered</doc>
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </return-value>
+        <parameters>
+          <parameter name="mime_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format's mime-type</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="function"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <doc xml:whitespace="preserve">the serialize function to register</doc>
+            <type name="TextBufferSerializeFunc"
+                  c:type="GtkTextBufferSerializeFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%function's user_data</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="user_data_destroy"
+                     transfer-ownership="none"
+                     scope="async">
+            <doc xml:whitespace="preserve">a function to call when @user_data is no longer needed</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="register_serialize_tagset"
+              c:identifier="gtk_text_buffer_register_serialize_tagset"
+              version="2.10"
+              introspectable="0">
+        <doc xml:whitespace="preserve">This function registers GTK+'s internal rich text serialization
+format with the passed @buffer. The internal format does not comply
+to any standard rich text format and only works between #GtkTextBuffer
+instances. It is capable of serializing all of a text buffer's tags
+and embedded pixbufs.
+This function is just a wrapper around
+gtk_text_buffer_register_serialize_format(). The mime type used
+for registering is "application/x-gtk-text-buffer-rich-text", or
+"application/x-gtk-text-buffer-rich-text;format=@tagset_name" if a
+The @tagset_name can be used to restrict the transfer of rich text
+to buffers with compatible sets of tags, in order to avoid unknown
+tags from being pasted. It is probably the common case to pass an
+identifier != %NULL here, since the %NULL tagset requires the
+receiving buffer to deal with with pasting of arbitrary tags.
+format's mime-type.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the #GdkAtom that corresponds to the newly registered</doc>
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </return-value>
+        <parameters>
+          <parameter name="tagset_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">an optional tagset name, on %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_all_tags"
+              c:identifier="gtk_text_buffer_remove_all_tags">
+        <doc xml:whitespace="preserve">Removes all tags in the range between @start and @end.  Be careful
+with this function; it could remove tags added in code unrelated to
+the code you're currently writing. That is, using this function is
+probably a bad idea if you have two or more unrelated code sections
+that add tags.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">one bound of range to be untagged</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">other bound of range to be untagged</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_selection_clipboard"
+              c:identifier="gtk_text_buffer_remove_selection_clipboard">
+        <doc xml:whitespace="preserve">Removes a #GtkClipboard added with 
+gtk_text_buffer_add_selection_clipboard().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clipboard" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkClipboard added to @buffer by gtk_text_buffer_add_selection_clipboard()</doc>
+            <type name="Clipboard" c:type="GtkClipboard*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_tag" c:identifier="gtk_text_buffer_remove_tag">
+        <doc xml:whitespace="preserve">Emits the "remove-tag" signal. The default handler for the signal
+removes all occurrences of @tag from the given range. @start and</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextTag</doc>
+            <type name="TextTag" c:type="GtkTextTag*"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">one bound of range to be untagged</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">other bound of range to be untagged</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_tag_by_name"
+              c:identifier="gtk_text_buffer_remove_tag_by_name">
+        <doc xml:whitespace="preserve">Calls gtk_text_tag_table_lookup() on the buffer's tag table to
+get a #GtkTextTag, then calls gtk_text_buffer_remove_tag().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of a #GtkTextTag</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">one bound of range to be untagged</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">other bound of range to be untagged</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_range"
+              c:identifier="gtk_text_buffer_select_range"
+              version="2.4">
+        <doc xml:whitespace="preserve">This function moves the "insert" and "selection_bound" marks
+simultaneously.  If you move them in two steps
+with gtk_text_buffer_move_mark(), you will temporarily select a
+region in between their old and new locations, which can be pretty
+inefficient since the temporarily-selected region will force stuff
+to be recalculated. This function moves them as a unit, which can
+be optimized.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ins" transfer-ownership="none">
+            <doc xml:whitespace="preserve">where to put the "insert" mark</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="bound" transfer-ownership="none">
+            <doc xml:whitespace="preserve">where to put the "selection_bound" mark</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="serialize"
+              c:identifier="gtk_text_buffer_serialize"
+              version="2.10">
+        <doc xml:whitespace="preserve">This function serializes the portion of text between @start
+and @end in the rich text format represented by @format.
+gtk_text_buffer_register_serialize_format() or
+gtk_text_buffer_register_serialize_tagset() beforehand.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the serialized data, encoded as @format</doc>
+          <type name="guint8" c:type="guint8*"/>
+        </return-value>
+        <parameters>
+          <parameter name="content_buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkTextBuffer to serialize</doc>
+            <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the rich text format to use for serializing</doc>
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start of block of text to serialize</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">end of block of test to serialize</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the length of the serialized data</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_modified" c:identifier="gtk_text_buffer_set_modified">
+        <doc xml:whitespace="preserve">Used to keep track of whether the buffer has been modified since the
+last time it was saved. Whenever the buffer is saved to disk, call
+gtk_text_buffer_set_modified (@buffer, FALSE). When the buffer is modified,
+it will automatically toggled on the modified bit again. When the modified
+bit flips, the buffer emits a "modified-changed" signal.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">modification flag setting</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_text" c:identifier="gtk_text_buffer_set_text">
+        <doc xml:whitespace="preserve">Deletes current contents of @buffer, and inserts @text instead. If</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">UTF-8 text to insert</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">length of @text in bytes</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unregister_deserialize_format"
+              c:identifier="gtk_text_buffer_unregister_deserialize_format"
+              version="2.10">
+        <doc xml:whitespace="preserve">This function unregisters a rich text format that was previously
+registered using gtk_text_buffer_register_deserialize_format() or
+gtk_text_buffer_register_deserialize_tagset().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkAtom representing a registered rich text format.</doc>
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unregister_serialize_format"
+              c:identifier="gtk_text_buffer_unregister_serialize_format"
+              version="2.10">
+        <doc xml:whitespace="preserve">This function unregisters a rich text format that was previously
+registered using gtk_text_buffer_register_serialize_format() or
+gtk_text_buffer_register_serialize_tagset()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkAtom representing a registered rich text format.</doc>
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="copy-target-list"
+                version="2.10"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The list of targets this buffer supports for clipboard copying
+and as DND source.</doc>
+        <type name="TargetList"/>
+      </property>
+      <property name="cursor-position"
+                version="2.10"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The position of the insert mark (as offset from the beginning 
+of the buffer). It is useful for getting notified when the 
+cursor moves.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="has-selection" version="2.10" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the buffer has some text currently selected.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="paste-target-list"
+                version="2.10"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The list of targets this buffer supports for clipboard pasting
+and as DND destination.</doc>
+        <type name="TargetList"/>
+      </property>
+      <property name="tag-table"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="TextTagTable"/>
+      </property>
+      <property name="text"
+                version="2.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The text content of the buffer. Without child widgets and images,
+see gtk_text_buffer_get_text() for more information.</doc>
+        <type name="utf8"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="TextBufferPrivate" c:type="GtkTextBufferPrivate*"/>
+      </field>
+      <glib:signal name="apply-tag">
+        <doc xml:whitespace="preserve">The ::apply-tag signal is emitted to apply a tag to a
+range of text in a #GtkTextBuffer. 
+Applying actually occurs in the default handler.
+Note that if your handler runs before the default handler it must not 
+invalidate the @start and @end iters (or has to revalidate them). 
+gtk_text_buffer_apply_tag(),
+gtk_text_buffer_insert_with_tags(),
+gtk_text_buffer_insert_range().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the applied tag</doc>
+            <type name="TextTag"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the start of the range the tag is applied to</doc>
+            <type name="TextIter"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the end of the range the tag is applied to</doc>
+            <type name="TextIter"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="begin-user-action">
+        <doc xml:whitespace="preserve">The ::begin-user-action signal is emitted at the beginning of a single
+user-visible operation on a #GtkTextBuffer.
+gtk_text_buffer_begin_user_action(),
+gtk_text_buffer_insert_interactive(),
+gtk_text_buffer_insert_range_interactive(),
+gtk_text_buffer_delete_interactive(),
+gtk_text_buffer_backspace(),
+gtk_text_buffer_delete_selection().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="changed">
+        <doc xml:whitespace="preserve">The ::changed signal is emitted when the content of a #GtkTextBuffer 
+has changed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="delete-range">
+        <doc xml:whitespace="preserve">The ::delete-range signal is emitted to delete a range 
+from a #GtkTextBuffer. 
+Note that if your handler runs before the default handler it must not 
+invalidate the @start and @end iters (or has to revalidate them). 
+The default signal handler revalidates the @start and @end iters to 
+both point point to the location where text was deleted. Handlers
+which run after the default handler (see g_signal_connect_after())
+do not have access to the deleted text.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the start of the range to be deleted</doc>
+            <type name="TextIter"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the end of the range to be deleted</doc>
+            <type name="TextIter"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="end-user-action">
+        <doc xml:whitespace="preserve">The ::end-user-action signal is emitted at the end of a single
+user-visible operation on the #GtkTextBuffer.
+gtk_text_buffer_end_user_action(),
+gtk_text_buffer_insert_interactive(),
+gtk_text_buffer_insert_range_interactive(),
+gtk_text_buffer_delete_interactive(),
+gtk_text_buffer_backspace(),
+gtk_text_buffer_delete_selection(),
+gtk_text_buffer_backspace().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="insert-child-anchor">
+        <doc xml:whitespace="preserve">The ::insert-child-anchor signal is emitted to insert a
+#GtkTextChildAnchor in a #GtkTextBuffer.
+Insertion actually occurs in the default handler.
+Note that if your handler runs before the default handler it must
+not invalidate the @location iter (or has to revalidate it). 
+The default signal handler revalidates it to be placed after the 
+inserted @anchor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position to insert @anchor in @textbuffer</doc>
+            <type name="TextIter"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkTextChildAnchor to be inserted</doc>
+            <type name="TextChildAnchor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="insert-pixbuf">
+        <doc xml:whitespace="preserve">The ::insert-pixbuf signal is emitted to insert a #GdkPixbuf 
+in a #GtkTextBuffer. Insertion actually occurs in the default handler.
+Note that if your handler runs before the default handler it must not 
+invalidate the @location iter (or has to revalidate it). 
+The default signal handler revalidates it to be placed after the 
+inserted @pixbuf.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position to insert @pixbuf in @textbuffer</doc>
+            <type name="TextIter"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkPixbuf to be inserted</doc>
+            <type name="GdkPixbuf.Pixbuf"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="insert-text">
+        <doc xml:whitespace="preserve">The ::insert-text signal is emitted to insert text in a #GtkTextBuffer.
+Insertion actually occurs in the default handler.  
+Note that if your handler runs before the default handler it must not 
+invalidate the @location iter (or has to revalidate it). 
+The default signal handler revalidates it to point to the end of the 
+inserted text.
+gtk_text_buffer_insert(), 
+gtk_text_buffer_insert_range().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position to insert @text in @textbuffer</doc>
+            <type name="TextIter"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the UTF-8 text to be inserted</doc>
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">length of the inserted text in bytes</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="mark-deleted">
+        <doc xml:whitespace="preserve">The ::mark-deleted signal is emitted as notification
+after a #GtkTextMark is deleted. 
+See also:
+gtk_text_buffer_delete_mark().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The mark that was deleted</doc>
+            <type name="TextMark"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="mark-set">
+        <doc xml:whitespace="preserve">The ::mark-set signal is emitted as notification
+after a #GtkTextMark is set.
+gtk_text_buffer_create_mark(),
+gtk_text_buffer_move_mark().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The location of @mark in @textbuffer</doc>
+            <type name="TextIter"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The mark that is set</doc>
+            <type name="TextMark"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="modified-changed">
+        <doc xml:whitespace="preserve">The ::modified-changed signal is emitted when the modified bit of a 
+#GtkTextBuffer flips.
+See also:
+gtk_text_buffer_set_modified().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="paste-done" version="2.16">
+        <doc xml:whitespace="preserve">The paste-done signal is emitted after paste operation has been completed.
+This is useful to properly scroll the view to the end of the pasted text.
+See gtk_text_buffer_paste_clipboard() for more details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Clipboard"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="remove-tag">
+        <doc xml:whitespace="preserve">The ::remove-tag signal is emitted to remove all occurrences of @tag from
+a range of text in a #GtkTextBuffer. 
+Removal actually occurs in the default handler.
+Note that if your handler runs before the default handler it must not 
+invalidate the @start and @end iters (or has to revalidate them). 
+gtk_text_buffer_remove_tag().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the tag to be removed</doc>
+            <type name="TextTag"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the start of the range the tag is removed from</doc>
+            <type name="TextIter"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the end of the range the tag is removed from</doc>
+            <type name="TextIter"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="TextBufferClass"
+            c:type="GtkTextBufferClass"
+            glib:is-gtype-struct-for="TextBuffer">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="insert_text">
+        <callback name="insert_text">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+            </parameter>
+            <parameter name="pos" transfer-ownership="none">
+              <type name="TextIter" c:type="GtkTextIter*"/>
+            </parameter>
+            <parameter name="text" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="length" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="insert_pixbuf">
+        <callback name="insert_pixbuf">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+            </parameter>
+            <parameter name="pos" transfer-ownership="none">
+              <type name="TextIter" c:type="GtkTextIter*"/>
+            </parameter>
+            <parameter name="pixbuf" transfer-ownership="none">
+              <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="insert_child_anchor">
+        <callback name="insert_child_anchor">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+            </parameter>
+            <parameter name="pos" transfer-ownership="none">
+              <type name="TextIter" c:type="GtkTextIter*"/>
+            </parameter>
+            <parameter name="anchor" transfer-ownership="none">
+              <type name="TextChildAnchor" c:type="GtkTextChildAnchor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delete_range">
+        <callback name="delete_range">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+            </parameter>
+            <parameter name="start" transfer-ownership="none">
+              <type name="TextIter" c:type="GtkTextIter*"/>
+            </parameter>
+            <parameter name="end" transfer-ownership="none">
+              <type name="TextIter" c:type="GtkTextIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="changed">
+        <callback name="changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="modified_changed">
+        <callback name="modified_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="mark_set">
+        <callback name="mark_set">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+            </parameter>
+            <parameter name="location" transfer-ownership="none">
+              <type name="TextIter" c:type="GtkTextIter*"/>
+            </parameter>
+            <parameter name="mark" transfer-ownership="none">
+              <type name="TextMark" c:type="GtkTextMark*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="mark_deleted">
+        <callback name="mark_deleted">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+            </parameter>
+            <parameter name="mark" transfer-ownership="none">
+              <type name="TextMark" c:type="GtkTextMark*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="apply_tag">
+        <callback name="apply_tag">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+            </parameter>
+            <parameter name="tag" transfer-ownership="none">
+              <type name="TextTag" c:type="GtkTextTag*"/>
+            </parameter>
+            <parameter name="start_char" transfer-ownership="none">
+              <type name="TextIter" c:type="GtkTextIter*"/>
+            </parameter>
+            <parameter name="end_char" transfer-ownership="none">
+              <type name="TextIter" c:type="GtkTextIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_tag">
+        <callback name="remove_tag">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+            </parameter>
+            <parameter name="tag" transfer-ownership="none">
+              <type name="TextTag" c:type="GtkTextTag*"/>
+            </parameter>
+            <parameter name="start_char" transfer-ownership="none">
+              <type name="TextIter" c:type="GtkTextIter*"/>
+            </parameter>
+            <parameter name="end_char" transfer-ownership="none">
+              <type name="TextIter" c:type="GtkTextIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="begin_user_action">
+        <callback name="begin_user_action">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="end_user_action">
+        <callback name="end_user_action">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="paste_done">
+        <callback name="paste_done">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+            </parameter>
+            <parameter name="clipboard" transfer-ownership="none">
+              <type name="Clipboard" c:type="GtkClipboard*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved5" introspectable="0">
+        <callback name="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="TextBufferDeserializeFunc"
+              c:type="GtkTextBufferDeserializeFunc"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="register_buffer" transfer-ownership="none">
+          <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+        </parameter>
+        <parameter name="content_buffer" transfer-ownership="none">
+          <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+        </parameter>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="TextIter" c:type="GtkTextIter*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="guint8" c:type="guint8*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+        <parameter name="create_tags" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="6">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="TextBufferPrivate"
+            c:type="GtkTextBufferPrivate"
+            disguised="1">
+    </record>
+    <callback name="TextBufferSerializeFunc"
+              c:type="GtkTextBufferSerializeFunc">
+      <return-value transfer-ownership="none">
+        <type name="guint8" c:type="guint8*"/>
+      </return-value>
+      <parameters>
+        <parameter name="register_buffer" transfer-ownership="none">
+          <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+        </parameter>
+        <parameter name="content_buffer" transfer-ownership="none">
+          <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <type name="TextIter" c:type="GtkTextIter*"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="TextIter" c:type="GtkTextIter*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="5">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="TextBufferTargetInfo"
+                 glib:type-name="GtkTextBufferTargetInfo"
+                 glib:get-type="gtk_text_buffer_target_info_get_type"
+                 c:type="GtkTextBufferTargetInfo">
+      <member name="buffer_contents"
+              value="-1"
+              c:identifier="GTK_TEXT_BUFFER_TARGET_INFO_BUFFER_CONTENTS"
+              glib:nick="buffer-contents"/>
+      <member name="rich_text"
+              value="-2"
+              c:identifier="GTK_TEXT_BUFFER_TARGET_INFO_RICH_TEXT"
+              glib:nick="rich-text"/>
+      <member name="text"
+              value="-3"
+              c:identifier="GTK_TEXT_BUFFER_TARGET_INFO_TEXT"
+              glib:nick="text"/>
+    </enumeration>
+    <callback name="TextCharPredicate"
+              c:type="GtkTextCharPredicate"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="ch" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="TextChildAnchor"
+           c:symbol-prefix="text_child_anchor"
+           c:type="GtkTextChildAnchor"
+           parent="GObject.Object"
+           glib:type-name="GtkTextChildAnchor"
+           glib:get-type="gtk_text_child_anchor_get_type"
+           glib:type-struct="TextChildAnchorClass">
+      <constructor name="new" c:identifier="gtk_text_child_anchor_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkTextChildAnchor. Usually you would then insert
+it into a #GtkTextBuffer with gtk_text_buffer_insert_child_anchor().
+To perform the creation and insertion in one step, use the
+convenience function gtk_text_buffer_create_child_anchor().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkTextChildAnchor</doc>
+          <type name="TextChildAnchor" c:type="GtkTextChildAnchor*"/>
+        </return-value>
+      </constructor>
+      <method name="get_deleted"
+              c:identifier="gtk_text_child_anchor_get_deleted">
+        <doc xml:whitespace="preserve">Determines whether a child anchor has been deleted from
+the buffer. Keep in mind that the child anchor will be
+unreferenced when removed from the buffer, so you need to
+hold your own reference (with g_object_ref()) if you plan
+to use this function &amp;mdash; otherwise all deleted child anchors
+will also be finalized.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the child anchor has been deleted from its buffer</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_widgets"
+              c:identifier="gtk_text_child_anchor_get_widgets">
+        <doc xml:whitespace="preserve">Gets a list of all widgets anchored at this child anchor.
+The returned list should be freed with g_list_free().</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">list of widgets anchored at @anchor</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Widget"/>
+          </type>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="segment">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </class>
+    <record name="TextChildAnchorClass"
+            c:type="GtkTextChildAnchorClass"
+            glib:is-gtype-struct-for="TextChildAnchor">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="TextDirection"
+                 glib:type-name="GtkTextDirection"
+                 glib:get-type="gtk_text_direction_get_type"
+                 c:type="GtkTextDirection">
+      <member name="none"
+              value="0"
+              c:identifier="GTK_TEXT_DIR_NONE"
+              glib:nick="none"/>
+      <member name="ltr"
+              value="1"
+              c:identifier="GTK_TEXT_DIR_LTR"
+              glib:nick="ltr"/>
+      <member name="rtl"
+              value="2"
+              c:identifier="GTK_TEXT_DIR_RTL"
+              glib:nick="rtl"/>
+    </enumeration>
+    <record name="TextIter"
+            c:type="GtkTextIter"
+            glib:type-name="GtkTextIter"
+            glib:get-type="gtk_text_iter_get_type"
+            c:symbol-prefix="text_iter">
+      <field name="dummy1" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="dummy2" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="dummy3" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="dummy4" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="dummy5" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="dummy6" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="dummy7" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="dummy8" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="dummy9" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="dummy10" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="dummy11" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="dummy12" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="dummy13" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="dummy14" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <method name="backward_char" c:identifier="gtk_text_iter_backward_char">
+        <doc xml:whitespace="preserve">Moves backward by one character offset. Returns %TRUE if movement
+was possible; if @iter was the first in the buffer (character
+offset 0), gtk_text_iter_backward_char () returns %FALSE for convenience when
+writing loops.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether movement was possible</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="backward_chars"
+              c:identifier="gtk_text_iter_backward_chars">
+        <doc xml:whitespace="preserve">Moves @count characters backward, if possible (if @count would move
+past the start or end of the buffer, moves to the start or end of
+the buffer).  The return value indicates whether the iterator moved
+onto a dereferenceable position; if the iterator didn't move, or
+moved onto the end iterator, then %FALSE is returned. If @count is 0,
+the function does nothing and returns %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @iter moved and is dereferenceable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of characters to move</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backward_cursor_position"
+              c:identifier="gtk_text_iter_backward_cursor_position">
+        <doc xml:whitespace="preserve">Like gtk_text_iter_forward_cursor_position(), but moves backward.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if we moved</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="backward_cursor_positions"
+              c:identifier="gtk_text_iter_backward_cursor_positions">
+        <doc xml:whitespace="preserve">Moves up to @count cursor positions. See
+gtk_text_iter_forward_cursor_position() for details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if we moved and the new position is dereferenceable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of positions to move</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backward_find_char"
+              c:identifier="gtk_text_iter_backward_find_char"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Same as gtk_text_iter_forward_find_char(), but goes backward from @iter.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether a match was found</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pred"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">function to be called on each character</doc>
+            <type name="TextCharPredicate" c:type="GtkTextCharPredicate"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data for @pred</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="limit" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">search limit, or %NULL for none</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backward_line" c:identifier="gtk_text_iter_backward_line">
+        <doc xml:whitespace="preserve">Moves @iter to the start of the previous line. Returns %TRUE if
+function returns %FALSE. Therefore if @iter was already on line 0,
+but not at the start of the line, @iter is snapped to the start of
+the line and the function returns %TRUE. (Note that this implies that
+in a loop calling this function, the line number may not change on
+every iteration, if your first iteration is on line 0.)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @iter moved</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="backward_lines"
+              c:identifier="gtk_text_iter_backward_lines">
+        <doc xml:whitespace="preserve">Moves @count lines backward, if possible (if @count would move
+past the start or end of the buffer, moves to the start or end of
+the buffer).  The return value indicates whether the iterator moved
+onto a dereferenceable position; if the iterator didn't move, or
+moved onto the end iterator, then %FALSE is returned. If @count is 0,
+the function does nothing and returns %FALSE. If @count is negative,
+moves forward by 0 - @count lines.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @iter moved and is dereferenceable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of lines to move backward</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backward_search"
+              c:identifier="gtk_text_iter_backward_search">
+        <doc xml:whitespace="preserve">Same as gtk_text_iter_forward_search(), but moves backward.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether a match was found</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">search string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">bitmask of flags affecting the search</doc>
+            <type name="TextSearchFlags" c:type="GtkTextSearchFlags"/>
+          </parameter>
+          <parameter name="match_start"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for start of match, or %NULL</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="match_end"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for end of match, or %NULL</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="limit" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location of last possible @match_start, or %NULL for start of buffer</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backward_sentence_start"
+              c:identifier="gtk_text_iter_backward_sentence_start">
+        <doc xml:whitespace="preserve">Moves backward to the previous sentence start; if @iter is already at
+the start of a sentence, moves backward to the next one.  Sentence
+boundaries are determined by Pango and should be correct for nearly
+any language (if not, the correct fix would be to the Pango text
+boundary algorithms).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter moved and is not the end iterator</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="backward_sentence_starts"
+              c:identifier="gtk_text_iter_backward_sentence_starts">
+        <doc xml:whitespace="preserve">Calls gtk_text_iter_backward_sentence_start() up to @count times,
+or until it returns %FALSE. If @count is negative, moves forward
+instead of backward.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter moved and is not the end iterator</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of sentences to move</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backward_to_tag_toggle"
+              c:identifier="gtk_text_iter_backward_to_tag_toggle">
+        <doc xml:whitespace="preserve">Moves backward to the next toggle (on or off) of the
+#GtkTextTag @tag, or to the next toggle of any tag if
+returns %FALSE, otherwise %TRUE. Does not return toggles
+located at @iter, only toggles before @iter. Sets @iter
+to the location of the toggle, or the start of the buffer
+if no toggle is found.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether we found a tag toggle before @iter</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkTextTag, or %NULL</doc>
+            <type name="TextTag" c:type="GtkTextTag*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backward_visible_cursor_position"
+              c:identifier="gtk_text_iter_backward_visible_cursor_position"
+              version="2.4">
+        <doc xml:whitespace="preserve">Moves @iter forward to the previous visible cursor position. See 
+gtk_text_iter_backward_cursor_position() for details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if we moved and the new position is dereferenceable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="backward_visible_cursor_positions"
+              c:identifier="gtk_text_iter_backward_visible_cursor_positions"
+              version="2.4">
+        <doc xml:whitespace="preserve">Moves up to @count visible cursor positions. See
+gtk_text_iter_backward_cursor_position() for details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if we moved and the new position is dereferenceable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of positions to move</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backward_visible_line"
+              c:identifier="gtk_text_iter_backward_visible_line"
+              version="2.8">
+        <doc xml:whitespace="preserve">Moves @iter to the start of the previous visible line. Returns %TRUE if
+function returns %FALSE. Therefore if @iter was already on line 0,
+but not at the start of the line, @iter is snapped to the start of
+the line and the function returns %TRUE. (Note that this implies that
+in a loop calling this function, the line number may not change on
+every iteration, if your first iteration is on line 0.)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @iter moved</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="backward_visible_lines"
+              c:identifier="gtk_text_iter_backward_visible_lines"
+              version="2.8">
+        <doc xml:whitespace="preserve">Moves @count visible lines backward, if possible (if @count would move
+past the start or end of the buffer, moves to the start or end of
+the buffer).  The return value indicates whether the iterator moved
+onto a dereferenceable position; if the iterator didn't move, or
+moved onto the end iterator, then %FALSE is returned. If @count is 0,
+the function does nothing and returns %FALSE. If @count is negative,
+moves forward by 0 - @count lines.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @iter moved and is dereferenceable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of lines to move backward</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backward_visible_word_start"
+              c:identifier="gtk_text_iter_backward_visible_word_start"
+              version="2.4">
+        <doc xml:whitespace="preserve">Moves backward to the previous visible word start. (If @iter is currently 
+on a word start, moves backward to the next one after that.) Word breaks
+are determined by Pango and should be correct for nearly any
+language (if not, the correct fix would be to the Pango word break
+algorithms).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter moved and is not the end iterator</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="backward_visible_word_starts"
+              c:identifier="gtk_text_iter_backward_visible_word_starts"
+              version="2.4">
+        <doc xml:whitespace="preserve">Calls gtk_text_iter_backward_visible_word_start() up to @count times.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter moved and is not the end iterator</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of times to move</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backward_word_start"
+              c:identifier="gtk_text_iter_backward_word_start">
+        <doc xml:whitespace="preserve">Moves backward to the previous word start. (If @iter is currently on a
+word start, moves backward to the next one after that.) Word breaks
+are determined by Pango and should be correct for nearly any
+language (if not, the correct fix would be to the Pango word break
+algorithms).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter moved and is not the end iterator</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="backward_word_starts"
+              c:identifier="gtk_text_iter_backward_word_starts">
+        <doc xml:whitespace="preserve">Calls gtk_text_iter_backward_word_start() up to @count times.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter moved and is not the end iterator</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of times to move</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="begins_tag" c:identifier="gtk_text_iter_begins_tag">
+        <doc xml:whitespace="preserve">Returns %TRUE if @tag is toggled on at exactly this point. If @tag
+is %NULL, returns %TRUE if any tag is toggled on at this point. Note
+that the gtk_text_iter_begins_tag () returns %TRUE if @iter is the
+&lt;emphasis&gt;start&lt;/emphasis&gt; of the tagged range;
+gtk_text_iter_has_tag () tells you whether an iterator is
+&lt;emphasis&gt;within&lt;/emphasis&gt; a tagged range.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @iter is the start of a range tagged with @tag</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkTextTag, or %NULL</doc>
+            <type name="TextTag" c:type="GtkTextTag*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_insert" c:identifier="gtk_text_iter_can_insert">
+        <doc xml:whitespace="preserve">Considering the default editability of the buffer, and tags that
+affect editability, determines whether text inserted at @iter would
+be editable. If text inserted at @iter would be editable then the
+user should be allowed to insert text at @iter.
+gtk_text_buffer_insert_interactive() uses this function to decide
+whether insertions are allowed at a given position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether text inserted at @iter would be editable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="default_editability" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if text is editable by default</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="compare" c:identifier="gtk_text_iter_compare">
+        <doc xml:whitespace="preserve">A qsort()-style function that returns negative if @lhs is less than
+Ordering is in character offset order, i.e. the first character in the buffer
+is less than the second character in the buffer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">-1 if @lhs is less than @rhs, 1 if @lhs is greater, 0 if they are equal</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="rhs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">another #GtkTextIter</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="gtk_text_iter_copy">
+        <doc xml:whitespace="preserve">Creates a dynamically-allocated copy of an iterator. This function
+is not useful in applications, because iterators can be copied with a
+simple assignment (&lt;literal&gt;GtkTextIter i = j;&lt;/literal&gt;). The
+function is used by language bindings.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a copy of the @iter, free with gtk_text_iter_free ()</doc>
+          <type name="TextIter" c:type="GtkTextIter*"/>
+        </return-value>
+      </method>
+      <method name="editable" c:identifier="gtk_text_iter_editable">
+        <doc xml:whitespace="preserve">Returns whether the character at @iter is within an editable region
+of text.  Non-editable text is "locked" and can't be changed by the
+user via #GtkTextView. This function is simply a convenience
+wrapper around gtk_text_iter_get_attributes (). If no tags applied
+to this text affect editability, @default_setting will be returned.
+You don't want to use this function to decide whether text can be
+inserted at @iter, because for insertion you don't want to know
+whether the char at @iter is inside an editable range, you want to
+know whether a new character inserted at @iter would be inside an
+editable range. Use gtk_text_iter_can_insert() to handle this
+case.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @iter is inside an editable range</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="default_setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if text is editable by default</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ends_line" c:identifier="gtk_text_iter_ends_line">
+        <doc xml:whitespace="preserve">Returns %TRUE if @iter points to the start of the paragraph
+delimiter characters for a line (delimiters will be either a
+newline, a carriage return, a carriage return followed by a
+newline, or a Unicode paragraph separator character). Note that an
+iterator pointing to the \n of a \r\n pair will not be counted as
+the end of a line, the line ends before the \r. The end iterator is
+considered to be at the end of a line, even though there are no
+paragraph delimiter chars there.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @iter is at the end of a line</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="ends_sentence" c:identifier="gtk_text_iter_ends_sentence">
+        <doc xml:whitespace="preserve">Determines whether @iter ends a sentence.  Sentence boundaries are
+determined by Pango and should be correct for nearly any language
+(if not, the correct fix would be to the Pango text boundary
+algorithms).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter is at the end of a sentence.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="ends_tag" c:identifier="gtk_text_iter_ends_tag">
+        <doc xml:whitespace="preserve">Returns %TRUE if @tag is toggled off at exactly this point. If @tag
+is %NULL, returns %TRUE if any tag is toggled off at this point. Note
+that the gtk_text_iter_ends_tag () returns %TRUE if @iter is the
+&lt;emphasis&gt;end&lt;/emphasis&gt; of the tagged range;
+gtk_text_iter_has_tag () tells you whether an iterator is
+&lt;emphasis&gt;within&lt;/emphasis&gt; a tagged range.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @iter is the end of a range tagged with @tag</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkTextTag, or %NULL</doc>
+            <type name="TextTag" c:type="GtkTextTag*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ends_word" c:identifier="gtk_text_iter_ends_word">
+        <doc xml:whitespace="preserve">Determines whether @iter ends a natural-language word.  Word breaks
+are determined by Pango and should be correct for nearly any
+language (if not, the correct fix would be to the Pango word break
+algorithms).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter is at the end of a word</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="equal" c:identifier="gtk_text_iter_equal">
+        <doc xml:whitespace="preserve">Tests whether two iterators are equal, using the fastest possible
+mechanism. This function is very fast; you can expect it to perform
+better than e.g. getting the character offset for each iterator and
+comparing the offsets yourself. Also, it's a bit faster than
+gtk_text_iter_compare().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the iterators point to the same place in the buffer</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="rhs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">another #GtkTextIter</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_char" c:identifier="gtk_text_iter_forward_char">
+        <doc xml:whitespace="preserve">Moves @iter forward by one character offset. Note that images
+embedded in the buffer occupy 1 character slot, so
+gtk_text_iter_forward_char () may actually move onto an image instead
+of a character, if you have images in your buffer.  If @iter is the
+end iterator or one character before it, @iter will now point at
+the end iterator, and gtk_text_iter_forward_char () returns %FALSE for
+convenience when writing loops.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @iter moved and is dereferenceable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="forward_chars" c:identifier="gtk_text_iter_forward_chars">
+        <doc xml:whitespace="preserve">Moves @count characters if possible (if @count would move past the
+start or end of the buffer, moves to the start or end of the
+buffer). The return value indicates whether the new position of
+(the last iterator in the buffer is not dereferenceable). If @count
+is 0, the function does nothing and returns %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @iter moved and is dereferenceable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of characters to move, may be negative</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_cursor_position"
+              c:identifier="gtk_text_iter_forward_cursor_position">
+        <doc xml:whitespace="preserve">Moves @iter forward by a single cursor position. Cursor positions
+are (unsurprisingly) positions where the cursor can appear. Perhaps
+surprisingly, there may not be a cursor position between all
+characters. The most common example for European languages would be
+a carriage return/newline sequence. For some Unicode characters,
+the equivalent of say the letter "a" with an accent mark will be
+represented as two characters, first the letter then a "combining
+mark" that causes the accent to be rendered; so the cursor can't go
+between those two characters. See also the #PangoLogAttr structure and
+pango_break() function.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if we moved and the new position is dereferenceable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="forward_cursor_positions"
+              c:identifier="gtk_text_iter_forward_cursor_positions">
+        <doc xml:whitespace="preserve">Moves up to @count cursor positions. See
+gtk_text_iter_forward_cursor_position() for details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if we moved and the new position is dereferenceable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of positions to move</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_find_char"
+              c:identifier="gtk_text_iter_forward_find_char"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Advances @iter, calling @pred on each character. If
+If @pred never returns %TRUE, @iter is set to @limit if</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether a match was found</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pred"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">a function to be called on each character</doc>
+            <type name="TextCharPredicate" c:type="GtkTextCharPredicate"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data for @pred</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="limit" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">search limit, or %NULL for none</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_line" c:identifier="gtk_text_iter_forward_line">
+        <doc xml:whitespace="preserve">Moves @iter to the start of the next line. If the iter is already on the
+last line of the buffer, moves the iter to the end of the current line.
+If after the operation, the iter is at the end of the buffer and not
+dereferencable, returns %FALSE. Otherwise, returns %TRUE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @iter can be dereferenced</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="forward_lines" c:identifier="gtk_text_iter_forward_lines">
+        <doc xml:whitespace="preserve">Moves @count lines forward, if possible (if @count would move
+past the start or end of the buffer, moves to the start or end of
+the buffer).  The return value indicates whether the iterator moved
+onto a dereferenceable position; if the iterator didn't move, or
+moved onto the end iterator, then %FALSE is returned. If @count is 0,
+the function does nothing and returns %FALSE. If @count is negative,
+moves backward by 0 - @count lines.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @iter moved and is dereferenceable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of lines to move forward</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_search"
+              c:identifier="gtk_text_iter_forward_search">
+        <doc xml:whitespace="preserve">Searches forward for @str. Any match is returned by setting
+first character after the match. The search will not continue past
+may wish to use @limit to avoid locking up your UI on large
+buffers.
+If the #GTK_TEXT_SEARCH_VISIBLE_ONLY flag is present, the match may
+have invisible text interspersed in @str. i.e. @str will be a
+possibly-noncontiguous subsequence of the matched range. similarly,
+if you specify #GTK_TEXT_SEARCH_TEXT_ONLY, the match may have
+pixbufs or child widgets mixed inside the matched range. If these
+flags are not given, the match must be exact; the special 0xFFFC
+character in @str will match embedded pixbufs or child widgets.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether a match was found</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a search string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags affecting how the search is done</doc>
+            <type name="TextSearchFlags" c:type="GtkTextSearchFlags"/>
+          </parameter>
+          <parameter name="match_start"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for start of match, or %NULL</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="match_end"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for end of match, or %NULL</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="limit" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">bound for the search, or %NULL for the end of the buffer</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_sentence_end"
+              c:identifier="gtk_text_iter_forward_sentence_end">
+        <doc xml:whitespace="preserve">Moves forward to the next sentence end. (If @iter is at the end of
+a sentence, moves to the next end of sentence.)  Sentence
+boundaries are determined by Pango and should be correct for nearly
+any language (if not, the correct fix would be to the Pango text
+boundary algorithms).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter moved and is not the end iterator</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="forward_sentence_ends"
+              c:identifier="gtk_text_iter_forward_sentence_ends">
+        <doc xml:whitespace="preserve">Calls gtk_text_iter_forward_sentence_end() @count times (or until
+gtk_text_iter_forward_sentence_end() returns %FALSE). If @count is
+negative, moves backward instead of forward.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter moved and is not the end iterator</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of sentences to move</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_to_end"
+              c:identifier="gtk_text_iter_forward_to_end">
+        <doc xml:whitespace="preserve">Moves @iter forward to the "end iterator," which points one past the last
+valid character in the buffer. gtk_text_iter_get_char() called on the
+end iterator returns 0, which is convenient for writing loops.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="forward_to_line_end"
+              c:identifier="gtk_text_iter_forward_to_line_end">
+        <doc xml:whitespace="preserve">Moves the iterator to point to the paragraph delimiter characters,
+which will be either a newline, a carriage return, a carriage
+return/newline in sequence, or the Unicode paragraph separator
+character. If the iterator is already at the paragraph delimiter
+characters, moves to the paragraph delimiter characters for the
+next line. If @iter is on the last line in the buffer, which does
+not end in paragraph delimiters, moves to the end iterator (end of
+the last line), and returns %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if we moved and the new location is not the end iterator</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="forward_to_tag_toggle"
+              c:identifier="gtk_text_iter_forward_to_tag_toggle">
+        <doc xml:whitespace="preserve">Moves forward to the next toggle (on or off) of the
+#GtkTextTag @tag, or to the next toggle of any tag if
+returns %FALSE, otherwise %TRUE. Does not return toggles
+located at @iter, only toggles after @iter. Sets @iter to
+the location of the toggle, or to the end of the buffer
+if no toggle is found.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether we found a tag toggle after @iter</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkTextTag, or %NULL</doc>
+            <type name="TextTag" c:type="GtkTextTag*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_visible_cursor_position"
+              c:identifier="gtk_text_iter_forward_visible_cursor_position"
+              version="2.4">
+        <doc xml:whitespace="preserve">Moves @iter forward to the next visible cursor position. See 
+gtk_text_iter_forward_cursor_position() for details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if we moved and the new position is dereferenceable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="forward_visible_cursor_positions"
+              c:identifier="gtk_text_iter_forward_visible_cursor_positions"
+              version="2.4">
+        <doc xml:whitespace="preserve">Moves up to @count visible cursor positions. See
+gtk_text_iter_forward_cursor_position() for details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if we moved and the new position is dereferenceable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of positions to move</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_visible_line"
+              c:identifier="gtk_text_iter_forward_visible_line"
+              version="2.8">
+        <doc xml:whitespace="preserve">Moves @iter to the start of the next visible line. Returns %TRUE if there
+was a next line to move to, and %FALSE if @iter was simply moved to
+the end of the buffer and is now not dereferenceable, or if @iter was
+already at the end of the buffer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @iter can be dereferenced</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="forward_visible_lines"
+              c:identifier="gtk_text_iter_forward_visible_lines"
+              version="2.8">
+        <doc xml:whitespace="preserve">Moves @count visible lines forward, if possible (if @count would move
+past the start or end of the buffer, moves to the start or end of
+the buffer).  The return value indicates whether the iterator moved
+onto a dereferenceable position; if the iterator didn't move, or
+moved onto the end iterator, then %FALSE is returned. If @count is 0,
+the function does nothing and returns %FALSE. If @count is negative,
+moves backward by 0 - @count lines.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @iter moved and is dereferenceable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of lines to move forward</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_visible_word_end"
+              c:identifier="gtk_text_iter_forward_visible_word_end"
+              version="2.4">
+        <doc xml:whitespace="preserve">Moves forward to the next visible word end. (If @iter is currently on a
+word end, moves forward to the next one after that.) Word breaks
+are determined by Pango and should be correct for nearly any
+language (if not, the correct fix would be to the Pango word break
+algorithms).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter moved and is not the end iterator</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="forward_visible_word_ends"
+              c:identifier="gtk_text_iter_forward_visible_word_ends"
+              version="2.4">
+        <doc xml:whitespace="preserve">Calls gtk_text_iter_forward_visible_word_end() up to @count times.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter moved and is not the end iterator</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of times to move</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_word_end"
+              c:identifier="gtk_text_iter_forward_word_end">
+        <doc xml:whitespace="preserve">Moves forward to the next word end. (If @iter is currently on a
+word end, moves forward to the next one after that.) Word breaks
+are determined by Pango and should be correct for nearly any
+language (if not, the correct fix would be to the Pango word break
+algorithms).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter moved and is not the end iterator</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="forward_word_ends"
+              c:identifier="gtk_text_iter_forward_word_ends">
+        <doc xml:whitespace="preserve">Calls gtk_text_iter_forward_word_end() up to @count times.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter moved and is not the end iterator</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of times to move</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="gtk_text_iter_free">
+        <doc xml:whitespace="preserve">Free an iterator allocated on the heap. This function
+is intended for use in language bindings, and is not
+especially useful for applications, because iterators can
+simply be allocated on the stack.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_attributes"
+              c:identifier="gtk_text_iter_get_attributes">
+        <doc xml:whitespace="preserve">Computes the effect of any tags applied to this spot in the
+text. The @values parameter should be initialized to the default
+settings you wish to use if no tags are in effect. You'd typically
+obtain the defaults from gtk_text_view_get_default_attributes().
+gtk_text_iter_get_attributes () will modify @values, applying the
+effects of any tags present at @iter. If any tags affected @values,
+the function returns %TRUE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @values was modified</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextAttributes to be filled in</doc>
+            <type name="TextAttributes" c:type="GtkTextAttributes*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_buffer" c:identifier="gtk_text_iter_get_buffer">
+        <doc xml:whitespace="preserve">Returns the #GtkTextBuffer this iterator is associated with.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the buffer</doc>
+          <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+        </return-value>
+      </method>
+      <method name="get_bytes_in_line"
+              c:identifier="gtk_text_iter_get_bytes_in_line">
+        <doc xml:whitespace="preserve">Returns the number of bytes in the line containing @iter,
+including the paragraph delimiters.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of bytes in the line</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_char"
+              c:identifier="gtk_text_iter_get_char"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns the Unicode character at this iterator.  (Equivalent to
+operator* on a C++ iterator.)  If the element at this iterator is a
+non-character element, such as an image embedded in the buffer, the
+Unicode "unknown" character 0xFFFC is returned. If invoked on
+the end iterator, zero is returned; zero is not a valid Unicode character.
+So you can write a loop which ends when gtk_text_iter_get_char ()
+returns 0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a Unicode character, or 0 if @iter is not dereferenceable</doc>
+          <type name="gunichar" c:type="gunichar"/>
+        </return-value>
+      </method>
+      <method name="get_chars_in_line"
+              c:identifier="gtk_text_iter_get_chars_in_line">
+        <doc xml:whitespace="preserve">Returns the number of characters in the line containing @iter,
+including the paragraph delimiters.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of characters in the line</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_child_anchor"
+              c:identifier="gtk_text_iter_get_child_anchor">
+        <doc xml:whitespace="preserve">If the location at @iter contains a child anchor, the
+anchor is returned (with no new reference count added). Otherwise,
+%NULL is returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the anchor at @iter</doc>
+          <type name="TextChildAnchor" c:type="GtkTextChildAnchor*"/>
+        </return-value>
+      </method>
+      <method name="get_language" c:identifier="gtk_text_iter_get_language">
+        <doc xml:whitespace="preserve">A convenience wrapper around gtk_text_iter_get_attributes (),
+which returns the language in effect at @iter. If no tags affecting
+language apply to @iter, the return value is identical to that of
+gtk_get_default_language ().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">language in effect at @iter</doc>
+          <type name="Pango.Language" c:type="PangoLanguage*"/>
+        </return-value>
+      </method>
+      <method name="get_line" c:identifier="gtk_text_iter_get_line">
+        <doc xml:whitespace="preserve">Returns the line number containing the iterator. Lines in
+a #GtkTextBuffer are numbered beginning with 0 for the first
+line in the buffer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a line number</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_line_index"
+              c:identifier="gtk_text_iter_get_line_index">
+        <doc xml:whitespace="preserve">Returns the byte index of the iterator, counting
+from the start of a newline-terminated line.
+Remember that #GtkTextBuffer encodes text in
+UTF-8, and that characters can require a variable
+number of bytes to represent.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">distance from start of line, in bytes</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_line_offset"
+              c:identifier="gtk_text_iter_get_line_offset">
+        <doc xml:whitespace="preserve">Returns the character offset of the iterator,
+counting from the start of a newline-terminated line.
+The first character on the line has offset 0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">offset from start of line</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_marks" c:identifier="gtk_text_iter_get_marks">
+        <doc xml:whitespace="preserve">Returns a list of all #GtkTextMark at this location. Because marks
+are not iterable (they don't take up any "space" in the buffer,
+they are just marks in between iterable locations), multiple marks
+can exist in the same place. The returned list is not in any
+meaningful order.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">list of #GtkTextMark</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="TextMark"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_offset" c:identifier="gtk_text_iter_get_offset">
+        <doc xml:whitespace="preserve">Returns the character offset of an iterator.
+Each character in a #GtkTextBuffer has an offset,
+starting with 0 for the first character in the buffer.
+Use gtk_text_buffer_get_iter_at_offset () to convert an
+offset back into an iterator.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a character offset</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_pixbuf" c:identifier="gtk_text_iter_get_pixbuf">
+        <doc xml:whitespace="preserve">If the element at @iter is a pixbuf, the pixbuf is returned
+(with no new reference count added). Otherwise,
+%NULL is returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the pixbuf at @iter</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="get_slice" c:identifier="gtk_text_iter_get_slice">
+        <doc xml:whitespace="preserve">Returns the text in the given range. A "slice" is an array of
+characters encoded in UTF-8 format, including the Unicode "unknown"
+character 0xFFFC for iterable non-character elements in the buffer,
+such as images.  Because images are encoded in the slice, byte and
+character offsets in the returned array will correspond to byte
+offsets in the text buffer. Note that 0xFFFC can occur in normal
+text as well, so it is not a reliable indicator that a pixbuf or
+widget is in the buffer.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">slice of text from the buffer</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">iterator at end of a range</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tags" c:identifier="gtk_text_iter_get_tags">
+        <doc xml:whitespace="preserve">Returns a list of tags that apply to @iter, in ascending order of
+priority (highest-priority tags are last). The #GtkTextTag in the
+list don't have a reference added, but you have to free the list
+itself.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">list of #GtkTextTag</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="TextTag"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_text" c:identifier="gtk_text_iter_get_text">
+        <doc xml:whitespace="preserve">Returns &lt;emphasis&gt;text&lt;/emphasis&gt; in the given range.  If the range
+contains non-text elements such as images, the character and byte
+offsets in the returned string will not correspond to character and
+byte offsets in the buffer. If you want offsets to correspond, see
+gtk_text_iter_get_slice ().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">array of characters from the buffer</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">iterator at end of a range</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_toggled_tags"
+              c:identifier="gtk_text_iter_get_toggled_tags">
+        <doc xml:whitespace="preserve">Returns a list of #GtkTextTag that are toggled on or off at this
+point.  (If @toggled_on is %TRUE, the list contains tags that are
+toggled on.) If a tag is toggled on at @iter, then some non-empty
+range of characters following @iter has that tag applied to it.  If
+a tag is toggled off, then some non-empty range following @iter
+does &lt;emphasis&gt;not&lt;/emphasis&gt; have the tag applied to it.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">tags toggled at this point</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="TextTag"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="toggled_on" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to get toggled-on tags</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_visible_line_index"
+              c:identifier="gtk_text_iter_get_visible_line_index">
+        <doc xml:whitespace="preserve">Returns the number of bytes from the start of the
+line to the given @iter, not counting bytes that
+are invisible due to tags with the "invisible" flag
+toggled on.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">byte index of @iter with respect to the start of the line</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_visible_line_offset"
+              c:identifier="gtk_text_iter_get_visible_line_offset">
+        <doc xml:whitespace="preserve">Returns the offset in characters from the start of the
+line to the given @iter, not counting characters that
+are invisible due to tags with the "invisible" flag
+toggled on.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">offset in visible characters from the start of the line</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_visible_slice"
+              c:identifier="gtk_text_iter_get_visible_slice">
+        <doc xml:whitespace="preserve">Like gtk_text_iter_get_slice (), but invisible text is not included.
+Invisible text is usually invisible because a #GtkTextTag with the
+"invisible" attribute turned on has been applied to it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">slice of text from the buffer</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">iterator at end of range</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_visible_text"
+              c:identifier="gtk_text_iter_get_visible_text">
+        <doc xml:whitespace="preserve">Like gtk_text_iter_get_text (), but invisible text is not included.
+Invisible text is usually invisible because a #GtkTextTag with the
+"invisible" attribute turned on has been applied to it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">string containing visible text in the range</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">iterator at end of range</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_tag" c:identifier="gtk_text_iter_has_tag">
+        <doc xml:whitespace="preserve">Returns %TRUE if @iter is within a range tagged with @tag.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @iter is tagged with @tag</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextTag</doc>
+            <type name="TextTag" c:type="GtkTextTag*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="in_range" c:identifier="gtk_text_iter_in_range">
+        <doc xml:whitespace="preserve">Checks whether @iter falls in the range [@start, @end).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter is in the range</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start of range</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">end of range</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="inside_sentence"
+              c:identifier="gtk_text_iter_inside_sentence">
+        <doc xml:whitespace="preserve">Determines whether @iter is inside a sentence (as opposed to in
+between two sentences, e.g. after a period and before the first
+letter of the next sentence).  Sentence boundaries are determined
+by Pango and should be correct for nearly any language (if not, the
+correct fix would be to the Pango text boundary algorithms).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter is inside a sentence.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="inside_word" c:identifier="gtk_text_iter_inside_word">
+        <doc xml:whitespace="preserve">Determines whether @iter is inside a natural-language word (as
+opposed to say inside some whitespace).  Word breaks are determined
+by Pango and should be correct for nearly any language (if not, the
+correct fix would be to the Pango word break algorithms).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter is inside a word</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_cursor_position"
+              c:identifier="gtk_text_iter_is_cursor_position">
+        <doc xml:whitespace="preserve">See gtk_text_iter_forward_cursor_position() or #PangoLogAttr or
+pango_break() for details on what a cursor position is.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the cursor can be placed at @iter</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_end" c:identifier="gtk_text_iter_is_end">
+        <doc xml:whitespace="preserve">Returns %TRUE if @iter is the end iterator, i.e. one past the last
+dereferenceable iterator in the buffer. gtk_text_iter_is_end () is
+the most efficient way to check whether an iterator is the end
+iterator.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @iter is the end iterator</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_start" c:identifier="gtk_text_iter_is_start">
+        <doc xml:whitespace="preserve">Returns %TRUE if @iter is the first iterator in the buffer, that is
+if @iter has a character offset of 0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @iter is the first in the buffer</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="order" c:identifier="gtk_text_iter_order">
+        <doc xml:whitespace="preserve">Swaps the value of @first and @second if @second comes before
+in sequence. Most text buffer functions that take a range call this
+automatically on your behalf, so there's no real reason to call it yourself
+in those cases. There are some exceptions, such as gtk_text_iter_in_range(),
+that expect a pre-sorted range.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="second" transfer-ownership="none">
+            <doc xml:whitespace="preserve">another #GtkTextIter</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_line" c:identifier="gtk_text_iter_set_line">
+        <doc xml:whitespace="preserve">Moves iterator @iter to the start of the line @line_number.  If
+buffer, moves @iter to the start of the last line in the buffer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="line_number" transfer-ownership="none">
+            <doc xml:whitespace="preserve">line number (counted from 0)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_line_index"
+              c:identifier="gtk_text_iter_set_line_index">
+        <doc xml:whitespace="preserve">Same as gtk_text_iter_set_line_offset(), but works with a
+&lt;emphasis&gt;byte&lt;/emphasis&gt; index. The given byte index must be at
+the start of a character, it can't be in the middle of a UTF-8
+encoded character.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="byte_on_line" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a byte index relative to the start of @iter's current line</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_line_offset"
+              c:identifier="gtk_text_iter_set_line_offset">
+        <doc xml:whitespace="preserve">Moves @iter within a line, to a new &lt;emphasis&gt;character&lt;/emphasis&gt;
+(not byte) offset. The given character offset must be less than or
+equal to the number of characters in the line; if equal, @iter
+moves to the start of the next line. See
+gtk_text_iter_set_line_index() if you have a byte index rather than
+a character offset.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="char_on_line" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a character offset relative to the start of @iter's current line</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_offset" c:identifier="gtk_text_iter_set_offset">
+        <doc xml:whitespace="preserve">Sets @iter to point to @char_offset. @char_offset counts from the start
+of the entire text buffer, starting with 0.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="char_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a character number</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_visible_line_index"
+              c:identifier="gtk_text_iter_set_visible_line_index">
+        <doc xml:whitespace="preserve">Like gtk_text_iter_set_line_index(), but the index is in visible
+bytes, i.e. text with a tag making it invisible is not counted
+in the index.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="byte_on_line" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a byte index</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_visible_line_offset"
+              c:identifier="gtk_text_iter_set_visible_line_offset">
+        <doc xml:whitespace="preserve">Like gtk_text_iter_set_line_offset(), but the offset is in visible
+characters, i.e. text with a tag making it invisible is not
+counted in the offset.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="char_on_line" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a character offset</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="starts_line" c:identifier="gtk_text_iter_starts_line">
+        <doc xml:whitespace="preserve">Returns %TRUE if @iter begins a paragraph,
+i.e. if gtk_text_iter_get_line_offset () would return 0.
+However this function is potentially more efficient than
+gtk_text_iter_get_line_offset () because it doesn't have to compute
+the offset, it just has to see whether it's 0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @iter begins a line</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="starts_sentence"
+              c:identifier="gtk_text_iter_starts_sentence">
+        <doc xml:whitespace="preserve">Determines whether @iter begins a sentence.  Sentence boundaries are
+determined by Pango and should be correct for nearly any language
+(if not, the correct fix would be to the Pango text boundary
+algorithms).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter is at the start of a sentence.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="starts_word" c:identifier="gtk_text_iter_starts_word">
+        <doc xml:whitespace="preserve">Determines whether @iter begins a natural-language word.  Word
+breaks are determined by Pango and should be correct for nearly any
+language (if not, the correct fix would be to the Pango word break
+algorithms).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter is at the start of a word</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="toggles_tag" c:identifier="gtk_text_iter_toggles_tag">
+        <doc xml:whitespace="preserve">This is equivalent to (gtk_text_iter_begins_tag () ||
+gtk_text_iter_ends_tag ()), i.e. it tells you whether a range with</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @tag is toggled on or off at @iter</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkTextTag, or %NULL</doc>
+            <type name="TextTag" c:type="GtkTextTag*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <class name="TextMark"
+           c:symbol-prefix="text_mark"
+           c:type="GtkTextMark"
+           parent="GObject.Object"
+           glib:type-name="GtkTextMark"
+           glib:get-type="gtk_text_mark_get_type"
+           glib:type-struct="TextMarkClass">
+      <constructor name="new" c:identifier="gtk_text_mark_new" version="2.12">
+        <doc xml:whitespace="preserve">Creates a text mark. Add it to a buffer using gtk_text_buffer_add_mark().
+If @name is %NULL, the mark is anonymous; otherwise, the mark can be 
+retrieved by name using gtk_text_buffer_get_mark(). If a mark has left 
+gravity, and text is inserted at the mark's current location, the mark 
+will be moved to the left of the newly-inserted text. If the mark has 
+right gravity (@left_gravity = %FALSE), the mark will end up on the 
+right of newly-inserted text. The standard left-to-right cursor is a 
+mark with right gravity (when you type, the cursor stays on the right
+side of the text you're typing).</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">new #GtkTextMark</doc>
+          <type name="TextMark" c:type="GtkTextMark*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">mark name or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="left_gravity" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the mark should have left gravity</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_buffer" c:identifier="gtk_text_mark_get_buffer">
+        <doc xml:whitespace="preserve">Gets the buffer this mark is located inside,
+or %NULL if the mark is deleted.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the mark's #GtkTextBuffer</doc>
+          <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+        </return-value>
+      </method>
+      <method name="get_deleted" c:identifier="gtk_text_mark_get_deleted">
+        <doc xml:whitespace="preserve">Returns %TRUE if the mark has been removed from its buffer
+with gtk_text_buffer_delete_mark(). See gtk_text_buffer_add_mark()
+for a way to add it to a buffer again.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the mark is deleted</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_left_gravity"
+              c:identifier="gtk_text_mark_get_left_gravity">
+        <doc xml:whitespace="preserve">Determines whether the mark has left gravity.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the mark has left gravity, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_name" c:identifier="gtk_text_mark_get_name">
+        <doc xml:whitespace="preserve">Returns the mark name; returns NULL for anonymous marks.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">mark name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_visible" c:identifier="gtk_text_mark_get_visible">
+        <doc xml:whitespace="preserve">Returns %TRUE if the mark is visible (i.e. a cursor is displayed
+for it).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if visible</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_visible" c:identifier="gtk_text_mark_set_visible">
+        <doc xml:whitespace="preserve">Sets the visibility of @mark; the insertion point is normally
+visible, i.e. you can see it as a vertical bar. Also, the text
+widget uses a visible mark to indicate where a drop will occur when
+dragging-and-dropping text. Most other marks are not visible.
+Marks are not visible by default.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">visibility of mark</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="left-gravity"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="name"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="segment">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </class>
+    <record name="TextMarkClass"
+            c:type="GtkTextMarkClass"
+            glib:is-gtype-struct-for="TextMark">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <bitfield name="TextSearchFlags"
+              glib:type-name="GtkTextSearchFlags"
+              glib:get-type="gtk_text_search_flags_get_type"
+              c:type="GtkTextSearchFlags">
+      <member name="visible_only"
+              value="1"
+              c:identifier="GTK_TEXT_SEARCH_VISIBLE_ONLY"
+              glib:nick="visible-only"/>
+      <member name="text_only"
+              value="2"
+              c:identifier="GTK_TEXT_SEARCH_TEXT_ONLY"
+              glib:nick="text-only"/>
+    </bitfield>
+    <class name="TextTag"
+           c:symbol-prefix="text_tag"
+           c:type="GtkTextTag"
+           parent="GObject.Object"
+           glib:type-name="GtkTextTag"
+           glib:get-type="gtk_text_tag_get_type"
+           glib:type-struct="TextTagClass">
+      <constructor name="new" c:identifier="gtk_text_tag_new">
+        <doc xml:whitespace="preserve">Creates a #GtkTextTag. Configure the tag using object arguments,
+i.e. using g_object_set().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkTextTag</doc>
+          <type name="TextTag" c:type="GtkTextTag*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">tag name, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="event" c:identifier="gtk_text_tag_event">
+        <doc xml:whitespace="preserve">Emits the "event" signal on the #GtkTextTag.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">result of signal emission (whether the event was handled)</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event_object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">object that received the event, such as a widget</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the event</doc>
+            <type name="Gdk.Event" c:type="GdkEvent*"/>
+          </parameter>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location where the event was received</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_priority" c:identifier="gtk_text_tag_get_priority">
+        <doc xml:whitespace="preserve">Get the tag priority.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The tag's priority.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_priority" c:identifier="gtk_text_tag_set_priority">
+        <doc xml:whitespace="preserve">Sets the priority of a #GtkTextTag. Valid priorities are
+start at 0 and go to one less than gtk_text_tag_table_get_size().
+Each tag in a table has a unique priority; setting the priority
+of one tag shifts the priorities of all the other tags in the
+table to maintain a unique priority for each tag. Higher priority
+tags "win" if two tags both set the same text attribute. When adding
+a tag to a tag table, it will be assigned the highest priority in
+the table by default; so normally the precedence of a set of tags
+is the order in which they were added to the table, or created with
+gtk_text_buffer_create_tag(), which adds the tag to the buffer's table
+automatically.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new priority</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="accumulative-margin"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the margins accumulate or override each other.
+When set to %TRUE the margins of this tag are added to the margins 
+of any other non-accumulative margins present. When set to %FALSE 
+the margins override one another (the default).</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="background"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="background-full-height"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="background-full-height-set"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="background-gdk" writable="1" transfer-ownership="none">
+        <type name="Gdk.Color"/>
+      </property>
+      <property name="background-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="direction" writable="1" transfer-ownership="none">
+        <type name="TextDirection"/>
+      </property>
+      <property name="editable" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="editable-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="family" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="family-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="font" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Font description as string, e.g. \"Sans Italic 12\". 
+Note that the initial value of this property depends on
+the internals of #PangoFontDescription.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="font-desc" writable="1" transfer-ownership="none">
+        <type name="Pango.FontDescription"/>
+      </property>
+      <property name="foreground"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="foreground-gdk" writable="1" transfer-ownership="none">
+        <type name="Gdk.Color"/>
+      </property>
+      <property name="foreground-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="indent" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="indent-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="invisible"
+                version="2.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether this text is hidden.
+Note that there may still be problems with the support for invisible 
+text, in particular when navigating programmatically inside a buffer
+containing invisible segments.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="invisible-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="justification" writable="1" transfer-ownership="none">
+        <type name="Justification"/>
+      </property>
+      <property name="justification-set"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="language" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The language this text is in, as an ISO code. Pango can use this as a 
+hint when rendering the text. If not set, an appropriate default will be 
+used.
+Note that the initial value of this property depends on the current
+locale, see also gtk_get_default_language().</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="language-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="left-margin" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="left-margin-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="name"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="paragraph-background"
+                version="2.8"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The paragraph background color as a string.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="paragraph-background-gdk"
+                version="2.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The paragraph background color as a as a (possibly unallocated) 
+#GdkColor.</doc>
+        <type name="Gdk.Color"/>
+      </property>
+      <property name="paragraph-background-set"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="pixels-above-lines"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="pixels-above-lines-set"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="pixels-below-lines"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="pixels-below-lines-set"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="pixels-inside-wrap"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="pixels-inside-wrap-set"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="right-margin" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="right-margin-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="rise" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="rise-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="scale" writable="1" transfer-ownership="none">
+        <type name="gdouble"/>
+      </property>
+      <property name="scale-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="size" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="size-points" writable="1" transfer-ownership="none">
+        <type name="gdouble"/>
+      </property>
+      <property name="size-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="stretch" writable="1" transfer-ownership="none">
+        <type name="Pango.Stretch"/>
+      </property>
+      <property name="stretch-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="strikethrough" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="strikethrough-set"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="style" writable="1" transfer-ownership="none">
+        <type name="Pango.Style"/>
+      </property>
+      <property name="style-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="tabs" writable="1" transfer-ownership="none">
+        <type name="Pango.TabArray"/>
+      </property>
+      <property name="tabs-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="underline" writable="1" transfer-ownership="none">
+        <type name="Pango.Underline"/>
+      </property>
+      <property name="underline-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="variant" writable="1" transfer-ownership="none">
+        <type name="Pango.Variant"/>
+      </property>
+      <property name="variant-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="weight" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="weight-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="wrap-mode" writable="1" transfer-ownership="none">
+        <type name="WrapMode"/>
+      </property>
+      <property name="wrap-mode-set" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="table">
+        <type name="TextTagTable" c:type="GtkTextTagTable*"/>
+      </field>
+      <field name="name">
+        <type name="utf8" c:type="char*"/>
+      </field>
+      <field name="priority">
+        <type name="gint" c:type="int"/>
+      </field>
+      <field name="values">
+        <type name="TextAttributes" c:type="GtkTextAttributes*"/>
+      </field>
+      <field name="bg_color_set" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="fg_color_set" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="scale_set" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="justification_set" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="left_margin_set" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="indent_set" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="rise_set" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="strikethrough_set" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="right_margin_set" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="pixels_above_lines_set" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="pixels_below_lines_set" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="pixels_inside_wrap_set" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="tabs_set" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="underline_set" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="wrap_mode_set" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="bg_full_height_set" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="invisible_set" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="editable_set" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="language_set" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="pg_bg_color_set" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="accumulative_margin" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="pad1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <glib:signal name="event">
+        <doc xml:whitespace="preserve">The ::event signal is emitted when an event occurs on a region of the
+buffer marked with this tag.
+event. %FALSE to propagate the event further.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for the</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the object the event was fired from (typically a #GtkTextView)</doc>
+            <type name="GObject.Object"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the event which triggered the signal</doc>
+            <type name="Gdk.Event"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextIter pointing at the location the event occured</doc>
+            <type name="TextIter"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="TextTagClass"
+            c:type="GtkTextTagClass"
+            glib:is-gtype-struct-for="TextTag">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="event">
+        <callback name="event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="tag" transfer-ownership="none">
+              <type name="TextTag" c:type="GtkTextTag*"/>
+            </parameter>
+            <parameter name="event_object" transfer-ownership="none">
+              <type name="GObject.Object" c:type="GObject*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.Event" c:type="GdkEvent*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="TextIter" c:type="GtkTextIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="TextTagTable"
+           c:symbol-prefix="text_tag_table"
+           c:type="GtkTextTagTable"
+           parent="GObject.Object"
+           glib:type-name="GtkTextTagTable"
+           glib:get-type="gtk_text_tag_table_get_type"
+           glib:type-struct="TextTagTableClass">
+      <constructor name="new" c:identifier="gtk_text_tag_table_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkTextTagTable. The table contains no tags by
+default.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkTextTagTable</doc>
+          <type name="TextTagTable" c:type="GtkTextTagTable*"/>
+        </return-value>
+      </constructor>
+      <method name="add" c:identifier="gtk_text_tag_table_add">
+        <doc xml:whitespace="preserve">Add a tag to the table. The tag is assigned the highest priority
+in the table.
+the same name as an already-added tag.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextTag</doc>
+            <type name="TextTag" c:type="GtkTextTag*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach" c:identifier="gtk_text_tag_table_foreach">
+        <doc xml:whitespace="preserve">Calls @func on each tag in @table, with user data @data.
+Note that the table may not be modified while iterating 
+over it (you can't add/remove tags).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">a function to call on each tag</doc>
+            <type name="TextTagTableForeach" c:type="GtkTextTagTableForeach"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size" c:identifier="gtk_text_tag_table_get_size">
+        <doc xml:whitespace="preserve">Returns the size of the table (number of tags)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of tags in @table</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="lookup" c:identifier="gtk_text_tag_table_lookup">
+        <doc xml:whitespace="preserve">Look up a named tag.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The tag, or %NULL if none by that name is in the table.</doc>
+          <type name="TextTag" c:type="GtkTextTag*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of a tag</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove" c:identifier="gtk_text_tag_table_remove">
+        <doc xml:whitespace="preserve">Remove a tag from the table. This will remove the table's
+reference to the tag, so be careful - the tag will end
+up destroyed if you don't have a reference to it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextTag</doc>
+            <type name="TextTag" c:type="GtkTextTag*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="TextTagTablePrivate" c:type="GtkTextTagTablePrivate*"/>
+      </field>
+      <glib:signal name="tag-added">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the added tag.</doc>
+            <type name="TextTag"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="tag-changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the changed tag.</doc>
+            <type name="TextTag"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the size has been changed.</doc>
+            <type name="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="tag-removed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the removed tag.</doc>
+            <type name="TextTag"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="TextTagTableClass"
+            c:type="GtkTextTagTableClass"
+            glib:is-gtype-struct-for="TextTagTable">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="tag_changed">
+        <callback name="tag_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="TextTagTable" c:type="GtkTextTagTable*"/>
+            </parameter>
+            <parameter name="tag" transfer-ownership="none">
+              <type name="TextTag" c:type="GtkTextTag*"/>
+            </parameter>
+            <parameter name="size_changed" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="tag_added">
+        <callback name="tag_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="TextTagTable" c:type="GtkTextTagTable*"/>
+            </parameter>
+            <parameter name="tag" transfer-ownership="none">
+              <type name="TextTag" c:type="GtkTextTag*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="tag_removed">
+        <callback name="tag_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="TextTagTable" c:type="GtkTextTagTable*"/>
+            </parameter>
+            <parameter name="tag" transfer-ownership="none">
+              <type name="TextTag" c:type="GtkTextTag*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="TextTagTableForeach" c:type="GtkTextTagTableForeach">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="TextTag" c:type="GtkTextTag*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="TextTagTablePrivate"
+            c:type="GtkTextTagTablePrivate"
+            disguised="1">
+    </record>
+    <class name="TextView"
+           c:symbol-prefix="text_view"
+           c:type="GtkTextView"
+           parent="Container"
+           glib:type-name="GtkTextView"
+           glib:get-type="gtk_text_view_get_type"
+           glib:type-struct="TextViewClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_text_view_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkTextView. If you don't call gtk_text_view_set_buffer()
+before using the text view, an empty default buffer will be created
+for you. Get the buffer with gtk_text_view_get_buffer(). If you want
+to specify your own buffer, consider gtk_text_view_new_with_buffer().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkTextView</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_buffer"
+                   c:identifier="gtk_text_view_new_with_buffer">
+        <doc xml:whitespace="preserve">Creates a new #GtkTextView widget displaying the buffer
+this function is equivalent to gtk_text_view_new(). The
+text view adds its own reference count to the buffer; it does not
+take over an existing reference.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkTextView.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextBuffer</doc>
+            <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="move_focus">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="DirectionType" c:type="GtkDirectionType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_child_at_anchor"
+              c:identifier="gtk_text_view_add_child_at_anchor">
+        <doc xml:whitespace="preserve">Adds a child widget in the text buffer, at the given @anchor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkWidget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="anchor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextChildAnchor in the #GtkTextBuffer for @text_view</doc>
+            <type name="TextChildAnchor" c:type="GtkTextChildAnchor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_child_in_window"
+              c:identifier="gtk_text_view_add_child_in_window">
+        <doc xml:whitespace="preserve">Adds a child at fixed coordinates in one of the text widget's
+windows. The window must have nonzero size (see
+gtk_text_view_set_border_window_size()). Note that the child
+coordinates are given relative to the #GdkWindow in question, and
+that these coordinates have no sane relationship to scrolling. When
+placing a child in #GTK_TEXT_WINDOW_WIDGET, scrolling is
+irrelevant, the child floats above all scrollable areas. But when
+placing a child in one of the scrollable windows (border windows or
+text window), you'll need to compute the child's correct position
+in buffer coordinates any time scrolling occurs or buffer changes
+occur, and then call gtk_text_view_move_child() to update the
+child's position. Unfortunately there's no good way to detect that
+scrolling has occurred, using the current API; a possible hack
+would be to update all child positions when the scroll adjustments
+change or the text buffer changes. See bug 64518 on
+bugzilla.gnome.org for status of fixing this issue.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkWidget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="which_window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">which window the child should appear in</doc>
+            <type name="TextWindowType" c:type="GtkTextWindowType"/>
+          </parameter>
+          <parameter name="xpos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X position of child in window coordinates</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="ypos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y position of child in window coordinates</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backward_display_line"
+              c:identifier="gtk_text_view_backward_display_line">
+        <doc xml:whitespace="preserve">Moves the given @iter backward by one display (wrapped) line.
+A display line is different from a paragraph. Paragraphs are
+separated by newlines or other paragraph separator characters.
+Display lines are created by line-wrapping a paragraph. If
+wrapping is turned off, display lines and paragraphs will be the
+same. Display lines are divided differently for each view, since
+they depend on the view's width; paragraphs are the same in all
+views, since they depend on the contents of the #GtkTextBuffer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter was moved and is not on the end iterator</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextIter</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backward_display_line_start"
+              c:identifier="gtk_text_view_backward_display_line_start">
+        <doc xml:whitespace="preserve">Moves the given @iter backward to the next display line start.
+A display line is different from a paragraph. Paragraphs are
+separated by newlines or other paragraph separator characters.
+Display lines are created by line-wrapping a paragraph. If
+wrapping is turned off, display lines and paragraphs will be the
+same. Display lines are divided differently for each view, since
+they depend on the view's width; paragraphs are the same in all
+views, since they depend on the contents of the #GtkTextBuffer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter was moved and is not on the end iterator</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextIter</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="buffer_to_window_coords"
+              c:identifier="gtk_text_view_buffer_to_window_coords">
+        <doc xml:whitespace="preserve">Converts coordinate (@buffer_x, @buffer_y) to coordinates for the window
+Note that you can't convert coordinates for a nonexisting window (see 
+gtk_text_view_set_border_window_size()).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="win" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextWindowType except #GTK_TEXT_WINDOW_PRIVATE</doc>
+            <type name="TextWindowType" c:type="GtkTextWindowType"/>
+          </parameter>
+          <parameter name="buffer_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">buffer x coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="buffer_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">buffer y coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="window_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">window x coordinate return location or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="window_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">window y coordinate return location or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_display_line"
+              c:identifier="gtk_text_view_forward_display_line">
+        <doc xml:whitespace="preserve">Moves the given @iter forward by one display (wrapped) line.
+A display line is different from a paragraph. Paragraphs are
+separated by newlines or other paragraph separator characters.
+Display lines are created by line-wrapping a paragraph. If
+wrapping is turned off, display lines and paragraphs will be the
+same. Display lines are divided differently for each view, since
+they depend on the view's width; paragraphs are the same in all
+views, since they depend on the contents of the #GtkTextBuffer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter was moved and is not on the end iterator</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextIter</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_display_line_end"
+              c:identifier="gtk_text_view_forward_display_line_end">
+        <doc xml:whitespace="preserve">Moves the given @iter forward to the next display line end.
+A display line is different from a paragraph. Paragraphs are
+separated by newlines or other paragraph separator characters.
+Display lines are created by line-wrapping a paragraph. If
+wrapping is turned off, display lines and paragraphs will be the
+same. Display lines are divided differently for each view, since
+they depend on the view's width; paragraphs are the same in all
+views, since they depend on the contents of the #GtkTextBuffer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter was moved and is not on the end iterator</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextIter</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_accepts_tab"
+              c:identifier="gtk_text_view_get_accepts_tab"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether pressing the Tab key inserts a tab characters.
+gtk_text_view_set_accepts_tab().
+%FALSE if pressing the Tab key moves the keyboard focus.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if pressing the Tab key inserts a tab character,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_border_window_size"
+              c:identifier="gtk_text_view_get_border_window_size">
+        <doc xml:whitespace="preserve">Gets the width of the specified border window. See
+gtk_text_view_set_border_window_size().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of window</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">window to return size from</doc>
+            <type name="TextWindowType" c:type="GtkTextWindowType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_buffer" c:identifier="gtk_text_view_get_buffer">
+        <doc xml:whitespace="preserve">Returns the #GtkTextBuffer being displayed by this text view.
+The reference count on the buffer is not incremented; the caller
+of this function won't own a new reference.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkTextBuffer</doc>
+          <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+        </return-value>
+      </method>
+      <method name="get_cursor_visible"
+              c:identifier="gtk_text_view_get_cursor_visible">
+        <doc xml:whitespace="preserve">Find out whether the cursor is being displayed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the insertion mark is visible</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_default_attributes"
+              c:identifier="gtk_text_view_get_default_attributes">
+        <doc xml:whitespace="preserve">Obtains a copy of the default text attributes. These are the
+attributes used for text unless a tag overrides them.
+You'd typically pass the default attributes in to
+gtk_text_iter_get_attributes() in order to get the
+attributes in effect at a given text position.
+The return value is a copy owned by the caller of this function,
+and should be freed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkTextAttributes</doc>
+          <type name="TextAttributes" c:type="GtkTextAttributes*"/>
+        </return-value>
+      </method>
+      <method name="get_editable" c:identifier="gtk_text_view_get_editable">
+        <doc xml:whitespace="preserve">Returns the default editability of the #GtkTextView. Tags in the
+buffer may override this setting for some ranges of text.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether text is editable by default</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_hadjustment"
+              c:identifier="gtk_text_view_get_hadjustment"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the horizontal-scrolling #GtkAdjustment.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">pointer to the horizontal #GtkAdjustment</doc>
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="get_indent" c:identifier="gtk_text_view_get_indent">
+        <doc xml:whitespace="preserve">Gets the default indentation of paragraphs in @text_view.
+Tags in the view's buffer may override the default.
+The indentation may be negative.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of pixels of indentation</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_iter_at_location"
+              c:identifier="gtk_text_view_get_iter_at_location">
+        <doc xml:whitespace="preserve">Retrieves the iterator at buffer coordinates @x and @y. Buffer
+coordinates are coordinates for the entire buffer, not just the
+currently-displayed portion.  If you have coordinates from an
+event, you have to convert those to buffer coordinates with
+gtk_text_view_window_to_buffer_coords().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextIter</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x position, in buffer coordinates</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y position, in buffer coordinates</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_iter_at_position"
+              c:identifier="gtk_text_view_get_iter_at_position"
+              version="2.6">
+        <doc xml:whitespace="preserve">Retrieves the iterator pointing to the character at buffer 
+coordinates @x and @y. Buffer coordinates are coordinates for 
+the entire buffer, not just the currently-displayed portion.  
+If you have coordinates from an event, you have to convert 
+those to buffer coordinates with 
+gtk_text_view_window_to_buffer_coords().
+Note that this is different from gtk_text_view_get_iter_at_location(),
+which returns cursor locations, i.e. positions &lt;emphasis&gt;between&lt;/emphasis&gt;
+characters.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextIter</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="trailing"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">if non-%NULL, location to store an integer indicating where in the grapheme the user clicked. It will either be zero, or the number of characters in the grapheme. 0 represents the trailing edge of the grapheme.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x position, in buffer coordinates</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y position, in buffer coordinates</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_iter_location"
+              c:identifier="gtk_text_view_get_iter_location">
+        <doc xml:whitespace="preserve">Gets a rectangle which roughly contains the character at @iter.
+The rectangle position is in buffer coordinates; use
+gtk_text_view_buffer_to_window_coords() to convert these
+coordinates to coordinates for one of the windows in the text view.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextIter</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="location"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">bounds of the character at @iter</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_justification"
+              c:identifier="gtk_text_view_get_justification">
+        <doc xml:whitespace="preserve">Gets the default justification of paragraphs in @text_view.
+Tags in the buffer may override the default.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">default justification</doc>
+          <type name="Justification" c:type="GtkJustification"/>
+        </return-value>
+      </method>
+      <method name="get_left_margin"
+              c:identifier="gtk_text_view_get_left_margin">
+        <doc xml:whitespace="preserve">Gets the default left margin size of paragraphs in the @text_view.
+Tags in the buffer may override the default.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">left margin in pixels</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_line_at_y" c:identifier="gtk_text_view_get_line_at_y">
+        <doc xml:whitespace="preserve">Gets the #GtkTextIter at the start of the line containing
+the coordinate @y. @y is in buffer coordinates, convert from
+window coordinates with gtk_text_view_window_to_buffer_coords().
+If non-%NULL, @line_top will be filled with the coordinate of the top
+edge of the line.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="target_iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextIter</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a y coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="line_top"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for top coordinate of the line</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_line_yrange"
+              c:identifier="gtk_text_view_get_line_yrange">
+        <doc xml:whitespace="preserve">Gets the y coordinate of the top of the line containing @iter,
+and the height of the line. The coordinate is a buffer coordinate;
+convert to window coordinates with gtk_text_view_buffer_to_window_coords().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextIter</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for a y coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for a height</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_overwrite"
+              c:identifier="gtk_text_view_get_overwrite"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether the #GtkTextView is in overwrite mode or not.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @text_view is in overwrite mode or not.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_pixels_above_lines"
+              c:identifier="gtk_text_view_get_pixels_above_lines">
+        <doc xml:whitespace="preserve">Gets the default number of pixels to put above paragraphs.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">default number of pixels above paragraphs</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_pixels_below_lines"
+              c:identifier="gtk_text_view_get_pixels_below_lines">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_text_view_set_pixels_below_lines().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">default number of blank pixels below paragraphs</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_pixels_inside_wrap"
+              c:identifier="gtk_text_view_get_pixels_inside_wrap">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_text_view_set_pixels_inside_wrap().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">default number of pixels of blank space between wrapped lines</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_right_margin"
+              c:identifier="gtk_text_view_get_right_margin">
+        <doc xml:whitespace="preserve">Gets the default right margin for text in @text_view. Tags
+in the buffer may override the default.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">right margin in pixels</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_tabs" c:identifier="gtk_text_view_get_tabs">
+        <doc xml:whitespace="preserve">Gets the default tabs for @text_view. Tags in the buffer may
+override the defaults. The returned array will be %NULL if
+"standard" (8-space) tabs are used. Free the return value
+with pango_tab_array_free().
+tabs are used; must be freed with pango_tab_array_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">copy of default tab array, or %NULL if "standard"</doc>
+          <type name="Pango.TabArray" c:type="PangoTabArray*"/>
+        </return-value>
+      </method>
+      <method name="get_vadjustment"
+              c:identifier="gtk_text_view_get_vadjustment"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the vertical-scrolling #GtkAdjustment.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">pointer to the vertical #GtkAdjustment</doc>
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="get_visible_rect"
+              c:identifier="gtk_text_view_get_visible_rect">
+        <doc xml:whitespace="preserve">Fills @visible_rect with the currently-visible
+region of the buffer, in buffer coordinates. Convert to window coordinates
+with gtk_text_view_buffer_to_window_coords().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle to fill</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_window" c:identifier="gtk_text_view_get_window">
+        <doc xml:whitespace="preserve">Retrieves the #GdkWindow corresponding to an area of the text view;
+possible windows include the overall widget window, child windows
+on the left, right, top, bottom, and the window that displays the
+text buffer. Windows are %NULL and nonexistent if their width or
+height is 0, and are nonexistent before the widget has been
+realized.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow, or %NULL</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="win" transfer-ownership="none">
+            <doc xml:whitespace="preserve">window to get</doc>
+            <type name="TextWindowType" c:type="GtkTextWindowType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_window_type"
+              c:identifier="gtk_text_view_get_window_type">
+        <doc xml:whitespace="preserve">Usually used to find out which window an event corresponds to.
+If you connect to an event signal on @text_view, this function
+should be called on &lt;literal&gt;event-&amp;gt;window&lt;/literal&gt; to
+see which window it was.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the window type.</doc>
+          <type name="TextWindowType" c:type="GtkTextWindowType"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a window type</doc>
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_wrap_mode" c:identifier="gtk_text_view_get_wrap_mode">
+        <doc xml:whitespace="preserve">Gets the line wrapping for the view.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the line wrap setting</doc>
+          <type name="WrapMode" c:type="GtkWrapMode"/>
+        </return-value>
+      </method>
+      <method name="im_context_filter_keypress"
+              c:identifier="gtk_text_view_im_context_filter_keypress"
+              version="2.22">
+        <doc xml:whitespace="preserve">Allow the #GtkTextView input method to internally handle key press
+and release events. If this function returns %TRUE, then no further
+processing should be done for this key event. See
+gtk_im_context_filter_keypress().
+Note that you are expected to call this function from your handler
+when overriding key event handling. This is needed in the case when
+you need to insert your own key handling between the input method
+and the default key event handling of the #GtkTextView.
+|[
+static gboolean
+gtk_foo_bar_key_press_event (GtkWidget   *widget,
+GdkEventKey *event)
+{
+if ((key-&gt;keyval == GDK_Return || key-&gt;keyval == GDK_KP_Enter))
+{
+if (gtk_text_view_im_context_filter_keypress (GTK_TEXT_VIEW (view), event))
+return TRUE;
+}
+/&amp;ast; Do some stuff &amp;ast;/
+return GTK_WIDGET_CLASS (gtk_foo_bar_parent_class)-&gt;key_press_event (widget, event);
+}
+]|</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the input method handled the key event.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the key event</doc>
+            <type name="Gdk.EventKey" c:type="GdkEventKey*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_child" c:identifier="gtk_text_view_move_child">
+        <doc xml:whitespace="preserve">Updates the position of a child, as for gtk_text_view_add_child_in_window().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">child widget already added to the text view</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="xpos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new X position in window coordinates</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="ypos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new Y position in window coordinates</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_mark_onscreen"
+              c:identifier="gtk_text_view_move_mark_onscreen">
+        <doc xml:whitespace="preserve">Moves a mark within the buffer so that it's
+located within the currently-visible text area.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the mark moved (wasn't already onscreen)</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="mark" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextMark</doc>
+            <type name="TextMark" c:type="GtkTextMark*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_visually" c:identifier="gtk_text_view_move_visually">
+        <doc xml:whitespace="preserve">Move the iterator a given number of characters visually, treating
+it as the strong cursor position. If @count is positive, then the
+new strong cursor position will be @count positions to the right of
+the old cursor position. If @count is negative then the new strong
+cursor position will be @count positions to the left of the old
+cursor position.
+In the presence of bi-directional text, the correspondence
+between logical and visual order will depend on the direction
+of the current run, and there may be jumps when the cursor
+is moved off of the end of a run.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter moved and is not on the end iterator</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextIter</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of characters to move (negative moves left, positive moves right)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="place_cursor_onscreen"
+              c:identifier="gtk_text_view_place_cursor_onscreen">
+        <doc xml:whitespace="preserve">Moves the cursor to the currently visible region of the
+buffer, it it isn't there already.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the cursor had to be moved.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="reset_im_context"
+              c:identifier="gtk_text_view_reset_im_context"
+              version="2.22">
+        <doc xml:whitespace="preserve">Reset the input method context of the text view if needed.
+This can be necessary in the case where modifying the buffer
+would confuse on-going input method behavior.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="scroll_mark_onscreen"
+              c:identifier="gtk_text_view_scroll_mark_onscreen">
+        <doc xml:whitespace="preserve">Scrolls @text_view the minimum distance such that @mark is contained
+within the visible area of the widget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mark" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a mark in the buffer for @text_view</doc>
+            <type name="TextMark" c:type="GtkTextMark*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scroll_to_iter"
+              c:identifier="gtk_text_view_scroll_to_iter">
+        <doc xml:whitespace="preserve">Scrolls @text_view so that @iter is on the screen in the position
+indicated by @xalign and @yalign. An alignment of 0.0 indicates
+left or top, 1.0 indicates right or bottom, 0.5 means center. 
+If @use_align is %FALSE, the text scrolls the minimal distance to 
+get the mark onscreen, possibly not scrolling at all. The effective 
+screen for purposes of this function is reduced by a margin of size 
+Note that this function uses the currently-computed height of the
+lines in the text buffer. Line heights are computed in an idle 
+handler; so this function may not have the desired effect if it's 
+called before the height computations. To avoid oddness, consider 
+using gtk_text_view_scroll_to_mark() which saves a point to be 
+scrolled to after line validation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if scrolling occurred</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextIter</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="within_margin" transfer-ownership="none">
+            <doc xml:whitespace="preserve">margin as a [0.0,0.5) fraction of screen size</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="use_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to use alignment arguments (if %FALSE, just get the mark onscreen)</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="xalign" transfer-ownership="none">
+            <doc xml:whitespace="preserve">horizontal alignment of mark within visible area</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="yalign" transfer-ownership="none">
+            <doc xml:whitespace="preserve">vertical alignment of mark within visible area</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scroll_to_mark"
+              c:identifier="gtk_text_view_scroll_to_mark">
+        <doc xml:whitespace="preserve">Scrolls @text_view so that @mark is on the screen in the position
+indicated by @xalign and @yalign. An alignment of 0.0 indicates
+left or top, 1.0 indicates right or bottom, 0.5 means center. 
+If @use_align is %FALSE, the text scrolls the minimal distance to 
+get the mark onscreen, possibly not scrolling at all. The effective 
+screen for purposes of this function is reduced by a margin of size</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mark" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextMark</doc>
+            <type name="TextMark" c:type="GtkTextMark*"/>
+          </parameter>
+          <parameter name="within_margin" transfer-ownership="none">
+            <doc xml:whitespace="preserve">margin as a [0.0,0.5) fraction of screen size</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="use_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to use alignment arguments (if %FALSE, just get the mark onscreen)</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="xalign" transfer-ownership="none">
+            <doc xml:whitespace="preserve">horizontal alignment of mark within visible area</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="yalign" transfer-ownership="none">
+            <doc xml:whitespace="preserve">vertical alignment of mark within visible area</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_accepts_tab"
+              c:identifier="gtk_text_view_set_accepts_tab"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the behavior of the text widget when the Tab key is pressed. 
+If @accepts_tab is %TRUE, a tab character is inserted. If @accepts_tab 
+is %FALSE the keyboard focus is moved to the next widget in the focus 
+chain.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accepts_tab" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if pressing the Tab key should insert a tab character, %FALSE, if pressing the Tab key should move the keyboard focus.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_border_window_size"
+              c:identifier="gtk_text_view_set_border_window_size">
+        <doc xml:whitespace="preserve">Sets the width of %GTK_TEXT_WINDOW_LEFT or %GTK_TEXT_WINDOW_RIGHT,
+or the height of %GTK_TEXT_WINDOW_TOP or %GTK_TEXT_WINDOW_BOTTOM.
+Automatically destroys the corresponding window if the size is set
+to 0, and creates the window if the size is set to non-zero.  This
+function can only be used for the "border windows," it doesn't work
+with #GTK_TEXT_WINDOW_WIDGET, #GTK_TEXT_WINDOW_TEXT, or
+#GTK_TEXT_WINDOW_PRIVATE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">window to affect</doc>
+            <type name="TextWindowType" c:type="GtkTextWindowType"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width or height of the window</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_buffer" c:identifier="gtk_text_view_set_buffer">
+        <doc xml:whitespace="preserve">Sets @buffer as the buffer being displayed by @text_view. The previous
+buffer displayed by the text view is unreferenced, and a reference is
+added to @buffer. If you owned a reference to @buffer before passing it
+to this function, you must remove that reference yourself; #GtkTextView
+will not "adopt" it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkTextBuffer</doc>
+            <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor_visible"
+              c:identifier="gtk_text_view_set_cursor_visible">
+        <doc xml:whitespace="preserve">Toggles whether the insertion point is displayed. A buffer with no editable
+text probably shouldn't have a visible cursor, so you may want to turn
+the cursor off.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to show the insertion cursor</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_editable" c:identifier="gtk_text_view_set_editable">
+        <doc xml:whitespace="preserve">Sets the default editability of the #GtkTextView. You can override
+this default setting with tags in the buffer, using the "editable"
+attribute of tags.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether it's editable</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_indent" c:identifier="gtk_text_view_set_indent">
+        <doc xml:whitespace="preserve">Sets the default indentation for paragraphs in @text_view.
+Tags in the buffer may override the default.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="indent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">indentation in pixels</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_justification"
+              c:identifier="gtk_text_view_set_justification">
+        <doc xml:whitespace="preserve">Sets the default justification of text in @text_view.
+Tags in the view's buffer may override the default.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="justification" transfer-ownership="none">
+            <doc xml:whitespace="preserve">justification</doc>
+            <type name="Justification" c:type="GtkJustification"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_left_margin"
+              c:identifier="gtk_text_view_set_left_margin">
+        <doc xml:whitespace="preserve">Sets the default left margin for text in @text_view.
+Tags in the buffer may override the default.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="left_margin" transfer-ownership="none">
+            <doc xml:whitespace="preserve">left margin in pixels</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_overwrite"
+              c:identifier="gtk_text_view_set_overwrite"
+              version="2.4">
+        <doc xml:whitespace="preserve">Changes the #GtkTextView overwrite mode.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="overwrite" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to turn on overwrite mode, %FALSE to turn it off</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pixels_above_lines"
+              c:identifier="gtk_text_view_set_pixels_above_lines">
+        <doc xml:whitespace="preserve">Sets the default number of blank pixels above paragraphs in @text_view.
+Tags in the buffer for @text_view may override the defaults.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixels_above_lines" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pixels above paragraphs</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pixels_below_lines"
+              c:identifier="gtk_text_view_set_pixels_below_lines">
+        <doc xml:whitespace="preserve">Sets the default number of pixels of blank space
+to put below paragraphs in @text_view. May be overridden
+by tags applied to @text_view's buffer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixels_below_lines" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pixels below paragraphs</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pixels_inside_wrap"
+              c:identifier="gtk_text_view_set_pixels_inside_wrap">
+        <doc xml:whitespace="preserve">Sets the default number of pixels of blank space to leave between
+display/wrapped lines within a paragraph. May be overridden by
+tags in @text_view's buffer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixels_inside_wrap" transfer-ownership="none">
+            <doc xml:whitespace="preserve">default number of pixels between wrapped lines</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_right_margin"
+              c:identifier="gtk_text_view_set_right_margin">
+        <doc xml:whitespace="preserve">Sets the default right margin for text in the text view.
+Tags in the buffer may override the default.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="right_margin" transfer-ownership="none">
+            <doc xml:whitespace="preserve">right margin in pixels</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tabs" c:identifier="gtk_text_view_set_tabs">
+        <doc xml:whitespace="preserve">Sets the default tab stops for paragraphs in @text_view.
+Tags in the buffer may override the default.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tabs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tabs as a #PangoTabArray</doc>
+            <type name="Pango.TabArray" c:type="PangoTabArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_wrap_mode" c:identifier="gtk_text_view_set_wrap_mode">
+        <doc xml:whitespace="preserve">Sets the line wrapping for the view.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wrap_mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkWrapMode</doc>
+            <type name="WrapMode" c:type="GtkWrapMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="starts_display_line"
+              c:identifier="gtk_text_view_starts_display_line">
+        <doc xml:whitespace="preserve">Determines whether @iter is at the start of a display line.
+See gtk_text_view_forward_display_line() for an explanation of
+display lines vs. paragraphs.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter begins a wrapped line</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextIter</doc>
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="window_to_buffer_coords"
+              c:identifier="gtk_text_view_window_to_buffer_coords">
+        <doc xml:whitespace="preserve">Converts coordinates on the window identified by @win to buffer
+coordinates, storing the result in (@buffer_x,@buffer_y).
+Note that you can't convert coordinates for a nonexisting window (see 
+gtk_text_view_set_border_window_size()).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="win" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTextWindowType except #GTK_TEXT_WINDOW_PRIVATE</doc>
+            <type name="TextWindowType" c:type="GtkTextWindowType"/>
+          </parameter>
+          <parameter name="window_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">window x coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="window_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">window y coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="buffer_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">buffer x coordinate return location or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="buffer_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">buffer y coordinate return location or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="accepts-tab" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="buffer" writable="1" transfer-ownership="none">
+        <type name="TextBuffer"/>
+      </property>
+      <property name="cursor-visible" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="editable" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="im-module"
+                version="2.16"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Which IM (input method) module should be used for this entry. 
+See #GtkIMContext.
+Setting this to a non-%NULL value overrides the
+system-wide IM module setting. See the GtkSettings 
+#GtkSettings:gtk-im-module property.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="indent" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="justification" writable="1" transfer-ownership="none">
+        <type name="Justification"/>
+      </property>
+      <property name="left-margin" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="overwrite" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="pixels-above-lines"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="pixels-below-lines"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="pixels-inside-wrap"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="right-margin" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="tabs" writable="1" transfer-ownership="none">
+        <type name="Pango.TabArray"/>
+      </property>
+      <property name="wrap-mode" writable="1" transfer-ownership="none">
+        <type name="WrapMode"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="priv">
+        <type name="TextViewPrivate" c:type="GtkTextViewPrivate*"/>
+      </field>
+      <glib:signal name="backspace">
+        <doc xml:whitespace="preserve">The ::backspace signal is a 
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt; 
+which gets emitted when the user asks for it.
+The default bindings for this signal are
+Backspace and Shift-Backspace.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="copy-clipboard">
+        <doc xml:whitespace="preserve">The ::copy-clipboard signal is a 
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt; 
+which gets emitted to copy the selection to the clipboard.
+The default bindings for this signal are
+Ctrl-c and Ctrl-Insert.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="cut-clipboard">
+        <doc xml:whitespace="preserve">The ::cut-clipboard signal is a 
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt; 
+which gets emitted to cut the selection to the clipboard.
+The default bindings for this signal are
+Ctrl-x and Shift-Delete.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="delete-from-cursor">
+        <doc xml:whitespace="preserve">The ::delete-from-cursor signal is a 
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt; 
+which gets emitted when the user initiates a text deletion.
+If the @type is %GTK_DELETE_CHARS, GTK+ deletes the selection
+if there is one, otherwise it deletes the requested number
+of characters.
+The default bindings for this signal are
+Delete for deleting a character, Ctrl-Delete for 
+deleting a word and Ctrl-Backspace for deleting a word 
+backwords.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the granularity of the deletion, as a #GtkDeleteType</doc>
+            <type name="DeleteType"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of @type units to delete</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="insert-at-cursor">
+        <doc xml:whitespace="preserve">The ::insert-at-cursor signal is a
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted when the user initiates the insertion of a 
+fixed string at the cursor.
+This signal has no default bindings.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the string to insert</doc>
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-cursor">
+        <doc xml:whitespace="preserve">The ::move-cursor signal is a 
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt; 
+which gets emitted when the user initiates a cursor movement. 
+If the cursor is not visible in @text_view, this signal causes
+the viewport to be moved instead.
+Applications should not connect to it, but may emit it with 
+g_signal_emit_by_name() if they need to control the cursor
+programmatically.
+The default bindings for this signal come in two variants,
+the variant with the Shift modifier extends the selection,
+the variant without the Shift modifer does not.
+There are too many key combinations to list them all here.
+&lt;itemizedlist&gt;
+&lt;listitem&gt;Arrow keys move by individual characters/lines&lt;/listitem&gt;
+&lt;listitem&gt;Ctrl-arrow key combinations move by words/paragraphs&lt;/listitem&gt;
+&lt;listitem&gt;Home/End keys move to the ends of the buffer&lt;/listitem&gt;
+&lt;listitem&gt;PageUp/PageDown keys move vertically by pages&lt;/listitem&gt;
+&lt;listitem&gt;Ctrl-PageUp/PageDown keys move horizontally by pages&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the granularity of the move, as a #GtkMovementStep</doc>
+            <type name="MovementStep"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of @step units to move</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the move should extend the selection</doc>
+            <type name="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-viewport">
+        <doc xml:whitespace="preserve">The ::move-viewport signal is a 
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt; 
+which can be bound to key combinations to allow the user
+to move the viewport, i.e. change what part of the text view
+is visible in a containing scrolled window.
+There are no default bindings for this signal.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the granularity of the move, as a #GtkMovementStep</doc>
+            <type name="ScrollStep"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of @step units to move</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="paste-clipboard">
+        <doc xml:whitespace="preserve">The ::paste-clipboard signal is a 
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt; 
+which gets emitted to paste the contents of the clipboard 
+into the text view.
+The default bindings for this signal are
+Ctrl-v and Shift-Insert.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="populate-popup">
+        <doc xml:whitespace="preserve">The ::populate-popup signal gets emitted before showing the 
+context menu of the text view.
+If you need to add items to the context menu, connect
+to this signal and append your menuitems to the @menu.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the menu that is being populated</doc>
+            <type name="Menu"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="preedit-changed" version="2.20">
+        <doc xml:whitespace="preserve">If an input method is used, the typed text will not immediately
+be committed to the buffer. So if you are interested in the text,
+connect to this signal.
+This signal is only emitted if the text at the given position
+is actually editable.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the current preedit string</doc>
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="select-all">
+        <doc xml:whitespace="preserve">The ::select-all signal is a 
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt; 
+which gets emitted to select or unselect the complete
+contents of the text view.
+The default bindings for this signal are Ctrl-a and Ctrl-/ 
+for selecting and Shift-Ctrl-a and Ctrl-\ for unselecting.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to select, %FALSE to unselect</doc>
+            <type name="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="set-anchor">
+        <doc xml:whitespace="preserve">The ::set-anchor signal is a
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted when the user initiates setting the "anchor" 
+mark. The "anchor" mark gets placed at the same position as the
+"insert" mark.
+This signal has no default bindings.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="set-scroll-adjustments">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Adjustment"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="Adjustment"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="toggle-cursor-visible">
+        <doc xml:whitespace="preserve">The ::toggle-cursor-visible signal is a 
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt; 
+which gets emitted to toggle the visibility of the cursor.
+The default binding for this signal is F7.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="toggle-overwrite">
+        <doc xml:whitespace="preserve">The ::toggle-overwrite signal is a 
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt; 
+which gets emitted to toggle the overwrite mode of the text view.
+The default bindings for this signal is Insert.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="TextViewClass"
+            c:type="GtkTextViewClass"
+            glib:is-gtype-struct-for="TextView">
+      <field name="parent_class">
+        <type name="ContainerClass" c:type="GtkContainerClass"/>
+      </field>
+      <field name="set_scroll_adjustments">
+        <callback name="set_scroll_adjustments">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="text_view" transfer-ownership="none">
+              <type name="TextView" c:type="GtkTextView*"/>
+            </parameter>
+            <parameter name="hadjustment" transfer-ownership="none">
+              <type name="Adjustment" c:type="GtkAdjustment*"/>
+            </parameter>
+            <parameter name="vadjustment" transfer-ownership="none">
+              <type name="Adjustment" c:type="GtkAdjustment*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="populate_popup">
+        <callback name="populate_popup">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="text_view" transfer-ownership="none">
+              <type name="TextView" c:type="GtkTextView*"/>
+            </parameter>
+            <parameter name="menu" transfer-ownership="none">
+              <type name="Menu" c:type="GtkMenu*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="move_cursor">
+        <callback name="move_cursor">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="text_view" transfer-ownership="none">
+              <type name="TextView" c:type="GtkTextView*"/>
+            </parameter>
+            <parameter name="step" transfer-ownership="none">
+              <type name="MovementStep" c:type="GtkMovementStep"/>
+            </parameter>
+            <parameter name="count" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="extend_selection" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_anchor">
+        <callback name="set_anchor">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="text_view" transfer-ownership="none">
+              <type name="TextView" c:type="GtkTextView*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="insert_at_cursor">
+        <callback name="insert_at_cursor">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="text_view" transfer-ownership="none">
+              <type name="TextView" c:type="GtkTextView*"/>
+            </parameter>
+            <parameter name="str" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delete_from_cursor">
+        <callback name="delete_from_cursor">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="text_view" transfer-ownership="none">
+              <type name="TextView" c:type="GtkTextView*"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <type name="DeleteType" c:type="GtkDeleteType"/>
+            </parameter>
+            <parameter name="count" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="backspace">
+        <callback name="backspace">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="text_view" transfer-ownership="none">
+              <type name="TextView" c:type="GtkTextView*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cut_clipboard">
+        <callback name="cut_clipboard">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="text_view" transfer-ownership="none">
+              <type name="TextView" c:type="GtkTextView*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="copy_clipboard">
+        <callback name="copy_clipboard">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="text_view" transfer-ownership="none">
+              <type name="TextView" c:type="GtkTextView*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="paste_clipboard">
+        <callback name="paste_clipboard">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="text_view" transfer-ownership="none">
+              <type name="TextView" c:type="GtkTextView*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="toggle_overwrite">
+        <callback name="toggle_overwrite">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="text_view" transfer-ownership="none">
+              <type name="TextView" c:type="GtkTextView*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="move_focus">
+        <callback name="move_focus">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="text_view" transfer-ownership="none">
+              <type name="TextView" c:type="GtkTextView*"/>
+            </parameter>
+            <parameter name="direction" transfer-ownership="none">
+              <type name="DirectionType" c:type="GtkDirectionType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved5" introspectable="0">
+        <callback name="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved6" introspectable="0">
+        <callback name="_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved7" introspectable="0">
+        <callback name="_gtk_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="TextViewPrivate" c:type="GtkTextViewPrivate" disguised="1">
+    </record>
+    <enumeration name="TextWindowType"
+                 glib:type-name="GtkTextWindowType"
+                 glib:get-type="gtk_text_window_type_get_type"
+                 c:type="GtkTextWindowType">
+      <member name="private"
+              value="0"
+              c:identifier="GTK_TEXT_WINDOW_PRIVATE"
+              glib:nick="private"/>
+      <member name="widget"
+              value="1"
+              c:identifier="GTK_TEXT_WINDOW_WIDGET"
+              glib:nick="widget"/>
+      <member name="text"
+              value="2"
+              c:identifier="GTK_TEXT_WINDOW_TEXT"
+              glib:nick="text"/>
+      <member name="left"
+              value="3"
+              c:identifier="GTK_TEXT_WINDOW_LEFT"
+              glib:nick="left"/>
+      <member name="right"
+              value="4"
+              c:identifier="GTK_TEXT_WINDOW_RIGHT"
+              glib:nick="right"/>
+      <member name="top"
+              value="5"
+              c:identifier="GTK_TEXT_WINDOW_TOP"
+              glib:nick="top"/>
+      <member name="bottom"
+              value="6"
+              c:identifier="GTK_TEXT_WINDOW_BOTTOM"
+              glib:nick="bottom"/>
+    </enumeration>
+    <record name="ThemeEngine" c:type="GtkThemeEngine" disguised="1">
+    </record>
+    <class name="ToggleAction"
+           c:symbol-prefix="toggle_action"
+           c:type="GtkToggleAction"
+           parent="Action"
+           glib:type-name="GtkToggleAction"
+           glib:get-type="gtk_toggle_action_get_type"
+           glib:type-struct="ToggleActionClass">
+      <implements name="Buildable"/>
+      <constructor name="new"
+                   c:identifier="gtk_toggle_action_new"
+                   version="2.4">
+        <doc xml:whitespace="preserve">Creates a new #GtkToggleAction object. To add the action to
+a #GtkActionGroup and set the accelerator for the action,
+call gtk_action_group_add_action_with_accel().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkToggleAction</doc>
+          <type name="ToggleAction" c:type="GtkToggleAction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A unique name for the action</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="label" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">The label displayed in menu items and on buttons, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tooltip" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A tooltip for the action, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="stock_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The stock icon to display in widgets representing the action, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_active"
+              c:identifier="gtk_toggle_action_get_active"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the checked state of the toggle action.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the checked state of the toggle action</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_draw_as_radio"
+              c:identifier="gtk_toggle_action_get_draw_as_radio"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether the action should have proxies like a radio action.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the action should have proxies like a radio action.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_active"
+              c:identifier="gtk_toggle_action_set_active"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the checked state on the toggle action.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_active" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the action should be checked or not</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_draw_as_radio"
+              c:identifier="gtk_toggle_action_set_draw_as_radio"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets whether the action should have proxies like a radio action.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="draw_as_radio" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the action should have proxies like a radio action</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="toggled"
+              c:identifier="gtk_toggle_action_toggled"
+              version="2.4">
+        <doc xml:whitespace="preserve">Emits the "toggled" signal on the toggle action.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="active"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the toggle action should be active.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="draw-as-radio" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the proxies for this action look like radio action proxies.
+This is an appearance property and thus only applies if 
+#GtkActivatable:use-action-appearance is %TRUE.</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent">
+        <type name="Action" c:type="GtkAction"/>
+      </field>
+      <field name="private_data">
+        <type name="ToggleActionPrivate" c:type="GtkToggleActionPrivate*"/>
+      </field>
+      <glib:signal name="toggled">
+        <doc xml:whitespace="preserve">Should be connected if you wish to perform an action
+whenever the #GtkToggleAction state is changed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ToggleActionClass"
+            c:type="GtkToggleActionClass"
+            glib:is-gtype-struct-for="ToggleAction">
+      <field name="parent_class">
+        <type name="ActionClass" c:type="GtkActionClass"/>
+      </field>
+      <field name="toggled">
+        <callback name="toggled">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="ToggleAction" c:type="GtkToggleAction*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ToggleActionEntry" c:type="GtkToggleActionEntry">
+      <doc xml:whitespace="preserve">#GtkToggleActionEntry structs are used with
+gtk_action_group_add_toggle_actions() to construct toggle actions.</doc>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="stock_id" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="label" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="accelerator" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="tooltip" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="callback" writable="1">
+        <type name="GObject.Callback" c:type="GCallback"/>
+      </field>
+      <field name="is_active" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+    </record>
+    <record name="ToggleActionPrivate"
+            c:type="GtkToggleActionPrivate"
+            disguised="1">
+    </record>
+    <class name="ToggleButton"
+           c:symbol-prefix="toggle_button"
+           c:type="GtkToggleButton"
+           parent="Button"
+           glib:type-name="GtkToggleButton"
+           glib:get-type="gtk_toggle_button_get_type"
+           glib:type-struct="ToggleButtonClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Activatable"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_toggle_button_new">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_label"
+                   c:identifier="gtk_toggle_button_new_with_label">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_mnemonic"
+                   c:identifier="gtk_toggle_button_new_with_mnemonic">
+        <doc xml:whitespace="preserve">Creates a new #GtkToggleButton containing a label. The label
+will be created using gtk_label_new_with_mnemonic(), so underscores
+in @label indicate the mnemonic for the button.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkToggleButton</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text of the button, with an underscore in front of the mnemonic character</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_active" c:identifier="gtk_toggle_button_get_active">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_inconsistent"
+              c:identifier="gtk_toggle_button_get_inconsistent">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_toggle_button_set_inconsistent().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the button is displayed as inconsistent, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_mode" c:identifier="gtk_toggle_button_get_mode">
+        <doc xml:whitespace="preserve">Retrieves whether the button is displayed as a separate indicator
+and label. See gtk_toggle_button_set_mode().
+and label.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the togglebutton is drawn as a separate indicator</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_active" c:identifier="gtk_toggle_button_set_active">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_active" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_inconsistent"
+              c:identifier="gtk_toggle_button_set_inconsistent">
+        <doc xml:whitespace="preserve">If the user has selected a range of elements (such as some text or
+spreadsheet cells) that are affected by a toggle button, and the
+current values in that range are inconsistent, you may want to
+display the toggle in an "in between" state. This function turns on
+"in between" display.  Normally you would turn off the inconsistent
+state again if the user toggles the toggle button. This has to be
+done manually, gtk_toggle_button_set_inconsistent() only affects
+visual appearance, it doesn't affect the semantics of the button.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if state is inconsistent</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_mode" c:identifier="gtk_toggle_button_set_mode">
+        <doc xml:whitespace="preserve">Sets whether the button is displayed as a separate indicator and label.
+You can call this function on a checkbutton or a radiobutton with
+This function only affects instances of classes like #GtkCheckButton
+and #GtkRadioButton that derive from #GtkToggleButton,
+not instances of #GtkToggleButton itself.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="draw_indicator" transfer-ownership="none">
+            <doc xml:whitespace="preserve">if %TRUE, draw the button as a separate indicator and label; if %FALSE, draw the button like a normal button</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="toggled" c:identifier="gtk_toggle_button_toggled">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="active" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="draw-indicator" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="inconsistent" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="button">
+        <type name="Button" c:type="GtkButton"/>
+      </field>
+      <field name="active" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="draw_indicator" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="inconsistent" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <glib:signal name="toggled">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ToggleButtonClass"
+            c:type="GtkToggleButtonClass"
+            glib:is-gtype-struct-for="ToggleButton">
+      <field name="parent_class">
+        <type name="ButtonClass" c:type="GtkButtonClass"/>
+      </field>
+      <field name="toggled">
+        <callback name="toggled">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="toggle_button" transfer-ownership="none">
+              <type name="ToggleButton" c:type="GtkToggleButton*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="ToggleToolButton"
+           c:symbol-prefix="toggle_tool_button"
+           c:type="GtkToggleToolButton"
+           parent="ToolButton"
+           glib:type-name="GtkToggleToolButton"
+           glib:get-type="gtk_toggle_tool_button_get_type"
+           glib:type-struct="ToggleToolButtonClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Activatable"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new"
+                   c:identifier="gtk_toggle_tool_button_new"
+                   version="2.4">
+        <doc xml:whitespace="preserve">Returns a new #GtkToggleToolButton</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a newly created #GtkToggleToolButton</doc>
+          <type name="ToolItem" c:type="GtkToolItem*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_stock"
+                   c:identifier="gtk_toggle_tool_button_new_from_stock"
+                   version="2.4">
+        <doc xml:whitespace="preserve">Creates a new #GtkToggleToolButton containing the image and text from a
+stock item. Some stock ids have preprocessor macros like #GTK_STOCK_OK
+and #GTK_STOCK_APPLY.
+It is an error if @stock_id is not a name of a stock item.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A new #GtkToggleToolButton</doc>
+          <type name="ToolItem" c:type="GtkToolItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the stock item</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_active"
+              c:identifier="gtk_toggle_tool_button_get_active"
+              version="2.4">
+        <doc xml:whitespace="preserve">Queries a #GtkToggleToolButton and returns its current state.
+Returns %TRUE if the toggle button is pressed in and %FALSE if it is raised.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the toggle tool button is pressed in, %FALSE if not</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_active"
+              c:identifier="gtk_toggle_tool_button_set_active"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the status of the toggle tool button. Set to %TRUE if you
+want the GtkToggleButton to be 'pressed in', and %FALSE to raise it.
+This action causes the toggled signal to be emitted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_active" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether @button should be active</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="active"
+                version="2.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If the toggle tool button should be pressed in.</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent">
+        <type name="ToolButton" c:type="GtkToolButton"/>
+      </field>
+      <field name="priv">
+        <type name="ToggleToolButtonPrivate"
+              c:type="GtkToggleToolButtonPrivate*"/>
+      </field>
+      <glib:signal name="toggled">
+        <doc xml:whitespace="preserve">Emitted whenever the toggle tool button changes state.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ToggleToolButtonClass"
+            c:type="GtkToggleToolButtonClass"
+            glib:is-gtype-struct-for="ToggleToolButton">
+      <field name="parent_class">
+        <type name="ToolButtonClass" c:type="GtkToolButtonClass"/>
+      </field>
+      <field name="toggled">
+        <callback name="toggled">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="button" transfer-ownership="none">
+              <type name="ToggleToolButton" c:type="GtkToggleToolButton*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ToggleToolButtonPrivate"
+            c:type="GtkToggleToolButtonPrivate"
+            disguised="1">
+    </record>
+    <class name="ToolButton"
+           c:symbol-prefix="tool_button"
+           c:type="GtkToolButton"
+           parent="ToolItem"
+           glib:type-name="GtkToolButton"
+           glib:get-type="gtk_tool_button_get_type"
+           glib:type-struct="ToolButtonClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Activatable"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_tool_button_new" version="2.4">
+        <doc xml:whitespace="preserve">Creates a new %GtkToolButton using @icon_widget as icon and @label as
+label.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A new #GtkToolButton</doc>
+          <type name="ToolItem" c:type="GtkToolItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_widget"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkMisc widget that will be used as icon widget, or %NULL</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="label" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a string that will be used as label, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_stock"
+                   c:identifier="gtk_tool_button_new_from_stock"
+                   version="2.4">
+        <doc xml:whitespace="preserve">Creates a new #GtkToolButton containing the image and text from a
+stock item. Some stock ids have preprocessor macros like #GTK_STOCK_OK
+and #GTK_STOCK_APPLY.
+It is an error if @stock_id is not a name of a stock item.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A new #GtkToolButton</doc>
+          <type name="ToolItem" c:type="GtkToolItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the stock item</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_icon_name"
+              c:identifier="gtk_tool_button_get_icon_name">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_icon_widget"
+              c:identifier="gtk_tool_button_get_icon_widget"
+              version="2.4">
+        <doc xml:whitespace="preserve">Return the widget used as icon widget on @button.
+See gtk_tool_button_set_icon_widget().
+on @button, or %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The widget used as icon</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_label"
+              c:identifier="gtk_tool_button_get_label"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the label used by the tool button, or %NULL if the tool button
+doesn't have a label. or uses a the label from a stock item. The returned
+string is owned by GTK+, and must not be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The label, or %NULL</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_label_widget"
+              c:identifier="gtk_tool_button_get_label_widget"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the widget used as label on @button.
+See gtk_tool_button_set_label_widget().
+on @button, or %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The widget used as label</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_stock_id"
+              c:identifier="gtk_tool_button_get_stock_id"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the name of the stock item. See gtk_tool_button_set_stock_id().
+The returned string is owned by GTK+ and must not be freed or modifed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the stock item for @button.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_use_underline"
+              c:identifier="gtk_tool_button_get_use_underline"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether underscores in the label property are used as mnemonics
+on menu items on the overflow menu. See gtk_tool_button_set_use_underline().
+mnemonics on menu items on the overflow menu.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if underscores in the label property are used as</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_icon_name"
+              c:identifier="gtk_tool_button_set_icon_name">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_widget"
+              c:identifier="gtk_tool_button_set_icon_widget"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets @icon as the widget used as icon on @button. If @icon_widget is
+%NULL the icon is determined by the "stock_id" property. If the
+"stock_id" property is also %NULL, @button will not have an icon.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_widget"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the widget used as icon, or %NULL</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_label"
+              c:identifier="gtk_tool_button_set_label"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets @label as the label used for the tool button. The "label" property
+only has an effect if not overridden by a non-%NULL "label_widget" property.
+If both the "label_widget" and "label" properties are %NULL, the label
+is determined by the "stock_id" property. If the "stock_id" property is also
+%NULL, @button will not have a label.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a string that will be used as label, or %NULL.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_label_widget"
+              c:identifier="gtk_tool_button_set_label_widget"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets @label_widget as the widget that will be used as the label
+for @button. If @label_widget is %NULL the "label" property is used
+as label. If "label" is also %NULL, the label in the stock item
+determined by the "stock_id" property is used as label. If
+"stock_id" is also %NULL, @button does not have a label.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label_widget"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the widget used as label, or %NULL</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_stock_id"
+              c:identifier="gtk_tool_button_set_stock_id"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the name of the stock item. See gtk_tool_button_new_from_stock().
+The stock_id property only has an effect if not
+overridden by non-%NULL "label" and "icon_widget" properties.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a name of a stock item, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_underline"
+              c:identifier="gtk_tool_button_set_use_underline"
+              version="2.4">
+        <doc xml:whitespace="preserve">If set, an underline in the label property indicates that the next character
+should be used for the mnemonic accelerator key in the overflow menu. For
+example, if the label property is "_Open" and @use_underline is %TRUE,
+the label on the tool button will be "Open" and the item on the overflow
+menu will have an underlined 'O'.
+Labels shown on tool buttons never have mnemonics on them; this property
+only affects the menu item on the overflow menu.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_underline" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the button label has the form "_Open"</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="icon-name"
+                version="2.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The name of the themed icon displayed on the item.
+This property only has an effect if not overridden by "label", 
+"icon_widget" or "stock_id" properties.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="icon-widget" writable="1" transfer-ownership="none">
+        <type name="Widget"/>
+      </property>
+      <property name="label" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="label-widget" writable="1" transfer-ownership="none">
+        <type name="Widget"/>
+      </property>
+      <property name="stock-id" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="use-underline" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="parent">
+        <type name="ToolItem" c:type="GtkToolItem"/>
+      </field>
+      <field name="priv">
+        <type name="ToolButtonPrivate" c:type="GtkToolButtonPrivate*"/>
+      </field>
+      <glib:signal name="clicked">
+        <doc xml:whitespace="preserve">This signal is emitted when the tool button is clicked with the mouse
+or activated with the keyboard.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ToolButtonClass"
+            c:type="GtkToolButtonClass"
+            glib:is-gtype-struct-for="ToolButton">
+      <field name="parent_class">
+        <type name="ToolItemClass" c:type="GtkToolItemClass"/>
+      </field>
+      <field name="button_type">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="clicked">
+        <callback name="clicked">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tool_item" transfer-ownership="none">
+              <type name="ToolButton" c:type="GtkToolButton*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ToolButtonPrivate"
+            c:type="GtkToolButtonPrivate"
+            disguised="1">
+    </record>
+    <class name="ToolItem"
+           c:symbol-prefix="tool_item"
+           c:type="GtkToolItem"
+           parent="Bin"
+           glib:type-name="GtkToolItem"
+           glib:get-type="gtk_tool_item_get_type"
+           glib:type-struct="ToolItemClass">
+      <doc xml:whitespace="preserve">The GtkToolItem struct contains only private data.
+It should only be accessed through the functions described below.</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Activatable"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_tool_item_new" version="2.4">
+        <doc xml:whitespace="preserve">Creates a new #GtkToolItem</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new #GtkToolItem</doc>
+          <type name="ToolItem" c:type="GtkToolItem*"/>
+        </return-value>
+      </constructor>
+      <method name="get_ellipsize_mode"
+              c:identifier="gtk_tool_item_get_ellipsize_mode"
+              version="2.20">
+        <doc xml:whitespace="preserve">Returns the ellipsize mode used for @tool_item. Custom subclasses of
+#GtkToolItem should call this function to find out how text should
+be ellipsized.
+should be ellipsized.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoEllipsizeMode indicating how text in @tool_item</doc>
+          <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+        </return-value>
+      </method>
+      <method name="get_expand"
+              c:identifier="gtk_tool_item_get_expand"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether @tool_item is allocated extra space.
+See gtk_tool_item_set_expand().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @tool_item is allocated extra space.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_homogeneous"
+              c:identifier="gtk_tool_item_get_homogeneous"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether @tool_item is the same size as other homogeneous
+items. See gtk_tool_item_set_homogeneous().
+items.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the item is the same size as other homogeneous</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_icon_size"
+              c:identifier="gtk_tool_item_get_icon_size"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the icon size used for @tool_item. Custom subclasses of
+#GtkToolItem should call this function to find out what size icons
+they should use.
+used for @tool_item</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkIconSize indicating the icon size</doc>
+          <type name="gint"/>
+        </return-value>
+      </method>
+      <method name="get_is_important"
+              c:identifier="gtk_tool_item_get_is_important"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether @tool_item is considered important. See
+gtk_tool_item_set_is_important()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @tool_item is considered important.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_orientation"
+              c:identifier="gtk_tool_item_get_orientation"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the orientation used for @tool_item. Custom subclasses of
+#GtkToolItem should call this function to find out what size icons
+they should use.
+used for @tool_item</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkOrientation indicating the orientation</doc>
+          <type name="Orientation" c:type="GtkOrientation"/>
+        </return-value>
+      </method>
+      <method name="get_proxy_menu_item"
+              c:identifier="gtk_tool_item_get_proxy_menu_item"
+              version="2.4">
+        <doc xml:whitespace="preserve">If @menu_item_id matches the string passed to
+gtk_tool_item_set_proxy_menu_item() return the corresponding #GtkMenuItem.
+Custom subclasses of #GtkToolItem should use this function to
+update their menu item when the #GtkToolItem changes. That the
+will not inadvertently change a menu item that they did not create.
+gtk_tool_item_set_proxy_menu_item(), if the @menu_item_id&lt;!-- --&gt;s
+match.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GtkMenuItem passed to</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="menu_item_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string used to identify the menu item</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_relief_style"
+              c:identifier="gtk_tool_item_get_relief_style"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the relief style of @tool_item. See gtk_button_set_relief_style().
+Custom subclasses of #GtkToolItem should call this function in the handler
+of the #GtkToolItem::toolbar_reconfigured signal to find out the
+relief style of buttons.
+for @tool_item.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkReliefStyle indicating the relief style used</doc>
+          <type name="ReliefStyle" c:type="GtkReliefStyle"/>
+        </return-value>
+      </method>
+      <method name="get_text_alignment"
+              c:identifier="gtk_tool_item_get_text_alignment"
+              version="2.20">
+        <doc xml:whitespace="preserve">Returns the text alignment used for @tool_item. Custom subclasses of
+#GtkToolItem should call this function to find out how text should
+be aligned.
+used for @tool_item</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #gfloat indicating the horizontal text alignment</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_text_orientation"
+              c:identifier="gtk_tool_item_get_text_orientation"
+              version="2.20">
+        <doc xml:whitespace="preserve">Returns the text orientation used for @tool_item. Custom subclasses of
+#GtkToolItem should call this function to find out how text should
+be orientated.
+used for @tool_item</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkOrientation indicating the text orientation</doc>
+          <type name="Orientation" c:type="GtkOrientation"/>
+        </return-value>
+      </method>
+      <method name="get_text_size_group"
+              c:identifier="gtk_tool_item_get_text_size_group"
+              version="2.20">
+        <doc xml:whitespace="preserve">Returns the size group used for labels in @tool_item.
+Custom subclasses of #GtkToolItem should call this function
+and use the size group for labels.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkSizeGroup</doc>
+          <type name="SizeGroup" c:type="GtkSizeGroup*"/>
+        </return-value>
+      </method>
+      <method name="get_toolbar_style"
+              c:identifier="gtk_tool_item_get_toolbar_style"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the toolbar style used for @tool_item. Custom subclasses of
+#GtkToolItem should call this function in the handler of the
+GtkToolItem::toolbar_reconfigured signal to find out in what style
+the toolbar is displayed and change themselves accordingly 
+Possibilities are:
+&lt;itemizedlist&gt;
+&lt;listitem&gt; GTK_TOOLBAR_BOTH, meaning the tool item should show
+both an icon and a label, stacked vertically &lt;/listitem&gt;
+&lt;listitem&gt; GTK_TOOLBAR_ICONS, meaning the toolbar shows
+only icons &lt;/listitem&gt;
+&lt;listitem&gt; GTK_TOOLBAR_TEXT, meaning the tool item should only
+show text&lt;/listitem&gt;
+&lt;listitem&gt; GTK_TOOLBAR_BOTH_HORIZ, meaning the tool item should show
+both an icon and a label, arranged horizontally (however, note the 
+#GtkToolButton::has_text_horizontally that makes tool buttons not
+show labels when the toolbar style is GTK_TOOLBAR_BOTH_HORIZ.
+&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+for @tool_item.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GtkToolbarStyle indicating the toolbar style used</doc>
+          <type name="ToolbarStyle" c:type="GtkToolbarStyle"/>
+        </return-value>
+      </method>
+      <method name="get_use_drag_window"
+              c:identifier="gtk_tool_item_get_use_drag_window"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether @tool_item has a drag window. See
+gtk_tool_item_set_use_drag_window().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @tool_item uses a drag window.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_visible_horizontal"
+              c:identifier="gtk_tool_item_get_visible_horizontal"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether the @tool_item is visible on toolbars that are
+docked horizontally.
+docked horizontally.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @tool_item is visible on toolbars that are</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_visible_vertical"
+              c:identifier="gtk_tool_item_get_visible_vertical"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether @tool_item is visible when the toolbar is docked vertically.
+See gtk_tool_item_set_visible_vertical().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Whether @tool_item is visible when the toolbar is docked vertically</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="rebuild_menu"
+              c:identifier="gtk_tool_item_rebuild_menu"
+              version="2.6">
+        <doc xml:whitespace="preserve">Calling this function signals to the toolbar that the
+overflow menu item for @tool_item has changed. If the
+overflow menu is visible when this function it called,
+the menu will be rebuilt.
+The function must be called when the tool item changes what it
+will do in response to the #GtkToolItem::create-menu-proxy signal.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="retrieve_proxy_menu_item"
+              c:identifier="gtk_tool_item_retrieve_proxy_menu_item"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the #GtkMenuItem that was last set by
+gtk_tool_item_set_proxy_menu_item(), ie. the #GtkMenuItem
+that is going to appear in the overflow menu.
+overflow menu for @tool_item.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GtkMenuItem that is going to appear in the</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="set_expand"
+              c:identifier="gtk_tool_item_set_expand"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets whether @tool_item is allocated extra space when there
+is more room on the toolbar then needed for the items. The
+effect is that the item gets bigger when the toolbar gets bigger
+and smaller when the toolbar gets smaller.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="expand" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Whether @tool_item is allocated extra space</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_homogeneous"
+              c:identifier="gtk_tool_item_set_homogeneous"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets whether @tool_item is to be allocated the same size as other
+homogeneous items. The effect is that all homogeneous items will have
+the same width as the widest of the items.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="homogeneous" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether @tool_item is the same size as other homogeneous items</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_is_important"
+              c:identifier="gtk_tool_item_set_is_important"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets whether @tool_item should be considered important. The #GtkToolButton
+class uses this property to determine whether to show or hide its label
+when the toolbar style is %GTK_TOOLBAR_BOTH_HORIZ. The result is that
+only tool buttons with the "is_important" property set have labels, an
+effect known as "priority text"</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_important" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the tool item should be considered important</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_proxy_menu_item"
+              c:identifier="gtk_tool_item_set_proxy_menu_item"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the #GtkMenuItem used in the toolbar overflow menu. The
+should also be used with gtk_tool_item_get_proxy_menu_item().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="menu_item_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string used to identify @menu_item</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="menu_item" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkMenuItem to be used in the overflow menu</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tooltip_markup"
+              c:identifier="gtk_tool_item_set_tooltip_markup"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets the markup text to be displayed as tooltip on the item.
+See gtk_widget_set_tooltip_markup().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="markup" transfer-ownership="none">
+            <doc xml:whitespace="preserve">markup text to be used as tooltip for @tool_item</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tooltip_text"
+              c:identifier="gtk_tool_item_set_tooltip_text"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets the text to be displayed as tooltip on the item.
+See gtk_widget_set_tooltip_text().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">text to be used as tooltip for @tool_item</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_drag_window"
+              c:identifier="gtk_tool_item_set_use_drag_window"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets whether @tool_item has a drag window. When %TRUE the
+toolitem can be used as a drag source through gtk_drag_source_set().
+When @tool_item has a drag window it will intercept all events,
+even those that would otherwise be sent to a child of @tool_item.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_drag_window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Whether @tool_item has a drag window.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_visible_horizontal"
+              c:identifier="gtk_tool_item_set_visible_horizontal"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets whether @tool_item is visible when the toolbar is docked horizontally.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible_horizontal" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Whether @tool_item is visible when in horizontal mode</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_visible_vertical"
+              c:identifier="gtk_tool_item_set_visible_vertical"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets whether @tool_item is visible when the toolbar is docked
+vertically. Some tool items, such as text entries, are too wide to be
+useful on a vertically docked toolbar. If @visible_vertical is %FALSE</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible_vertical" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether @tool_item is visible when the toolbar is in vertical mode</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="toolbar_reconfigured"
+              c:identifier="gtk_tool_item_toolbar_reconfigured"
+              version="2.14">
+        <doc xml:whitespace="preserve">Emits the signal #GtkToolItem::toolbar_reconfigured on @tool_item.
+#GtkToolbar and other #GtkToolShell implementations use this function
+to notify children, when some aspect of their configuration changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="is-important" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="visible-horizontal"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="visible-vertical" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="parent">
+        <type name="Bin" c:type="GtkBin"/>
+      </field>
+      <field name="priv">
+        <type name="ToolItemPrivate" c:type="GtkToolItemPrivate*"/>
+      </field>
+      <glib:signal name="create-menu-proxy">
+        <doc xml:whitespace="preserve">This signal is emitted when the toolbar needs information from @tool_item
+about whether the item should appear in the toolbar overflow menu. In
+response the tool item should either
+&lt;itemizedlist&gt;
+&lt;listitem&gt;call gtk_tool_item_set_proxy_menu_item() with a %NULL
+pointer and return %TRUE to indicate that the item should not appear
+in the overflow menu
+&lt;/listitem&gt;
+&lt;listitem&gt; call gtk_tool_item_set_proxy_menu_item() with a new menu
+item and return %TRUE, or 
+&lt;/listitem&gt;
+&lt;listitem&gt; return %FALSE to indicate that the signal was not
+handled by the item. This means that
+the item will not appear in the overflow menu unless a later handler
+installs a menu item.
+&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+The toolbar may cache the result of this signal. When the tool item changes
+how it will respond to this signal it must call gtk_tool_item_rebuild_menu()
+to invalidate the cache and ensure that the toolbar rebuilds its overflow
+menu.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the signal was handled, %FALSE if not</doc>
+          <type name="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="toolbar-reconfigured">
+        <doc xml:whitespace="preserve">This signal is emitted when some property of the toolbar that the
+item is a child of changes. For custom subclasses of #GtkToolItem,
+the default handler of this signal use the functions
+&lt;itemizedlist&gt;
+&lt;listitem&gt;gtk_tool_shell_get_orientation()&lt;/listitem&gt;
+&lt;listitem&gt;gtk_tool_shell_get_style()&lt;/listitem&gt;
+&lt;listitem&gt;gtk_tool_shell_get_icon_size()&lt;/listitem&gt;
+&lt;listitem&gt;gtk_tool_shell_get_relief_style()&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+to find out what the toolbar should look like and change
+themselves accordingly.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ToolItemClass"
+            c:type="GtkToolItemClass"
+            glib:is-gtype-struct-for="ToolItem">
+      <field name="parent_class">
+        <type name="BinClass" c:type="GtkBinClass"/>
+      </field>
+      <field name="create_menu_proxy">
+        <callback name="create_menu_proxy">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="tool_item" transfer-ownership="none">
+              <type name="ToolItem" c:type="GtkToolItem*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="toolbar_reconfigured">
+        <callback name="toolbar_reconfigured">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tool_item" transfer-ownership="none">
+              <type name="ToolItem" c:type="GtkToolItem*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="ToolItemGroup"
+           c:symbol-prefix="tool_item_group"
+           c:type="GtkToolItemGroup"
+           parent="Container"
+           glib:type-name="GtkToolItemGroup"
+           glib:get-type="gtk_tool_item_group_get_type"
+           glib:type-struct="ToolItemGroupClass">
+      <doc xml:whitespace="preserve">This should not be accessed directly. Use the accessor functions below.</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <implements name="ToolShell"/>
+      <constructor name="new"
+                   c:identifier="gtk_tool_item_group_new"
+                   version="2.20">
+        <doc xml:whitespace="preserve">Creates a new tool item group with label @label.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkToolItemGroup.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the label of the new group</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_collapsed"
+              c:identifier="gtk_tool_item_group_get_collapsed"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets whether @group is collapsed or expanded.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @group is collapsed, %FALSE if it is expanded</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_drop_item"
+              c:identifier="gtk_tool_item_group_get_drop_item"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets the tool item at position (x, y).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GtkToolItem at position (x, y)</doc>
+          <type name="ToolItem" c:type="GtkToolItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ellipsize"
+              c:identifier="gtk_tool_item_group_get_ellipsize"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets the ellipsization mode of @group.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #PangoEllipsizeMode of @group</doc>
+          <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+        </return-value>
+      </method>
+      <method name="get_header_relief"
+              c:identifier="gtk_tool_item_group_get_header_relief"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets the relief mode of the header button of @group.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GtkReliefStyle</doc>
+          <type name="ReliefStyle" c:type="GtkReliefStyle"/>
+        </return-value>
+      </method>
+      <method name="get_item_position"
+              c:identifier="gtk_tool_item_group_get_item_position"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets the position of @item in @group as index.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index of @item in @group or -1 if @item is no child of @group</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="item" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkToolItem</doc>
+            <type name="ToolItem" c:type="GtkToolItem*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_label"
+              c:identifier="gtk_tool_item_group_get_label"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets the label of @group.
+and must not be modified. Note that %NULL is returned if a custom
+label has been set with gtk_tool_item_group_set_label_widget()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the label of @group. The label is an internal string of @group</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_label_widget"
+              c:identifier="gtk_tool_item_group_get_label_widget"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets the label widget of @group.
+See gtk_tool_item_group_set_label_widget().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the label widget of @group</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_n_items"
+              c:identifier="gtk_tool_item_group_get_n_items"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets the number of tool items in @group.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of tool items in @group</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_nth_item"
+              c:identifier="gtk_tool_item_group_get_nth_item"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets the tool item at @index in group.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GtkToolItem at index</doc>
+          <type name="ToolItem" c:type="GtkToolItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert"
+              c:identifier="gtk_tool_item_group_insert"
+              version="2.20">
+        <doc xml:whitespace="preserve">Inserts @item at @position in the list of children of @group.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="item" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkToolItem to insert into @group</doc>
+            <type name="ToolItem" c:type="GtkToolItem*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position of @item in @group, starting with 0. The position -1 means end of list.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_collapsed"
+              c:identifier="gtk_tool_item_group_set_collapsed"
+              version="2.20">
+        <doc xml:whitespace="preserve">Sets whether the @group should be collapsed or expanded.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="collapsed" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the @group should be collapsed or expanded</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_ellipsize"
+              c:identifier="gtk_tool_item_group_set_ellipsize"
+              version="2.20">
+        <doc xml:whitespace="preserve">Sets the ellipsization mode which should be used by labels in @group.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ellipsize" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #PangoEllipsizeMode labels in @group should use</doc>
+            <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_header_relief"
+              c:identifier="gtk_tool_item_group_set_header_relief"
+              version="2.20">
+        <doc xml:whitespace="preserve">Set the button relief of the group header.
+See gtk_button_set_relief() for details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="style" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkReliefStyle</doc>
+            <type name="ReliefStyle" c:type="GtkReliefStyle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_item_position"
+              c:identifier="gtk_tool_item_group_set_item_position"
+              version="2.20">
+        <doc xml:whitespace="preserve">Sets the position of @item in the list of children of @group.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="item" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkToolItem to move to a new position, should be a child of @group.</doc>
+            <type name="ToolItem" c:type="GtkToolItem*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new position of @item in @group, starting with 0. The position -1 means end of list.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_label"
+              c:identifier="gtk_tool_item_group_set_label"
+              version="2.20">
+        <doc xml:whitespace="preserve">Sets the label of the tool item group. The label is displayed in the header
+of the group.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new human-readable label of of the group</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_label_widget"
+              c:identifier="gtk_tool_item_group_set_label_widget"
+              version="2.20">
+        <doc xml:whitespace="preserve">Sets the label of the tool item group.
+The label widget is displayed in the header of the group, in place
+of the usual label.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label_widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the widget to be displayed in place of the usual label</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="collapsed" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="ellipsize" writable="1" transfer-ownership="none">
+        <type name="Pango.EllipsizeMode"/>
+      </property>
+      <property name="header-relief" writable="1" transfer-ownership="none">
+        <type name="ReliefStyle"/>
+      </property>
+      <property name="label" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="label-widget" writable="1" transfer-ownership="none">
+        <type name="Widget"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="priv">
+        <type name="ToolItemGroupPrivate" c:type="GtkToolItemGroupPrivate*"/>
+      </field>
+    </class>
+    <record name="ToolItemGroupClass"
+            c:type="GtkToolItemGroupClass"
+            glib:is-gtype-struct-for="ToolItemGroup">
+      <field name="parent_class">
+        <type name="ContainerClass" c:type="GtkContainerClass"/>
+      </field>
+    </record>
+    <record name="ToolItemGroupPrivate"
+            c:type="GtkToolItemGroupPrivate"
+            disguised="1">
+    </record>
+    <record name="ToolItemPrivate" c:type="GtkToolItemPrivate" disguised="1">
+    </record>
+    <class name="ToolPalette"
+           c:symbol-prefix="tool_palette"
+           c:type="GtkToolPalette"
+           parent="Container"
+           glib:type-name="GtkToolPalette"
+           glib:get-type="gtk_tool_palette_get_type"
+           glib:type-struct="ToolPaletteClass">
+      <doc xml:whitespace="preserve">This should not be accessed directly. Use the accessor functions below.</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new"
+                   c:identifier="gtk_tool_palette_new"
+                   version="2.20">
+        <doc xml:whitespace="preserve">Creates a new tool palette.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkToolPalette</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <function name="get_drag_target_group"
+                c:identifier="gtk_tool_palette_get_drag_target_group"
+                version="2.20">
+        <doc xml:whitespace="preserve">Get the target entry for a dragged #GtkToolItemGroup.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GtkTargetEntry for a dragged group</doc>
+          <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+        </return-value>
+      </function>
+      <function name="get_drag_target_item"
+                c:identifier="gtk_tool_palette_get_drag_target_item"
+                version="2.20">
+        <doc xml:whitespace="preserve">Gets the target entry for a dragged #GtkToolItem.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GtkTargetEntry for a dragged item.</doc>
+          <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+        </return-value>
+      </function>
+      <method name="add_drag_dest"
+              c:identifier="gtk_tool_palette_add_drag_dest"
+              version="2.20">
+        <doc xml:whitespace="preserve">Sets @palette as drag source (see gtk_tool_palette_set_drag_source())
+and sets @widget as a drag destination for drags from @palette.
+See gtk_drag_dest_set().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkWidget which should be a drag destination for @palette</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the flags that specify what actions GTK+ should take for drops on that widget</doc>
+            <type name="DestDefaults" c:type="GtkDestDefaults"/>
+          </parameter>
+          <parameter name="targets" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkToolPaletteDragTarget&lt;!-- --&gt;s which the widget should support</doc>
+            <type name="ToolPaletteDragTargets"
+                  c:type="GtkToolPaletteDragTargets"/>
+          </parameter>
+          <parameter name="actions" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkDragAction&lt;!-- --&gt;s which the widget should suppport</doc>
+            <type name="Gdk.DragAction" c:type="GdkDragAction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_drag_item"
+              c:identifier="gtk_tool_palette_get_drag_item"
+              version="2.20">
+        <doc xml:whitespace="preserve">Get the dragged item from the selection.
+This could be a #GtkToolItem or a #GtkToolItemGroup.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the dragged item in selection</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="selection" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkSelectionData</doc>
+            <type name="SelectionData" c:type="GtkSelectionData*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_drop_group"
+              c:identifier="gtk_tool_palette_get_drop_group"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets the group at position (x, y).
+if there is no such group</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GtkToolItemGroup at position or %NULL</doc>
+          <type name="ToolItemGroup" c:type="GtkToolItemGroup*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_drop_item"
+              c:identifier="gtk_tool_palette_get_drop_item"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets the item at position (x, y).
+See gtk_tool_palette_get_drop_group().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GtkToolItem at position or %NULL if there is no such item</doc>
+          <type name="ToolItem" c:type="GtkToolItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y position</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_exclusive"
+              c:identifier="gtk_tool_palette_get_exclusive"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets whether @group is exclusive or not.
+See gtk_tool_palette_set_exclusive().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @group is exclusive</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkToolItemGroup which is a child of palette</doc>
+            <type name="ToolItemGroup" c:type="GtkToolItemGroup*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_expand"
+              c:identifier="gtk_tool_palette_get_expand"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets whether group should be given extra space.
+See gtk_tool_palette_set_expand().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if group should be given extra space, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkToolItemGroup which is a child of palette</doc>
+            <type name="ToolItemGroup" c:type="GtkToolItemGroup*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_group_position"
+              c:identifier="gtk_tool_palette_get_group_position"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets the position of @group in @palette as index.
+See gtk_tool_palette_set_group_position().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index of group or -1 if @group is not a child of @palette</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkToolItemGroup</doc>
+            <type name="ToolItemGroup" c:type="GtkToolItemGroup*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_hadjustment"
+              c:identifier="gtk_tool_palette_get_hadjustment"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets the horizontal adjustment of the tool palette.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the horizontal adjustment of @palette</doc>
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="get_icon_size"
+              c:identifier="gtk_tool_palette_get_icon_size"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets the size of icons in the tool palette.
+See gtk_tool_palette_set_icon_size().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GtkIconSize of icons in the tool palette</doc>
+          <type name="gint"/>
+        </return-value>
+      </method>
+      <method name="get_style"
+              c:identifier="gtk_tool_palette_get_style"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets the style (icons, text or both) of items in the tool palette.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GtkToolbarStyle of items in the tool palette.</doc>
+          <type name="ToolbarStyle" c:type="GtkToolbarStyle"/>
+        </return-value>
+      </method>
+      <method name="get_vadjustment"
+              c:identifier="gtk_tool_palette_get_vadjustment"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets the vertical adjustment of the tool palette.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the vertical adjustment of @palette</doc>
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="set_drag_source"
+              c:identifier="gtk_tool_palette_set_drag_source"
+              version="2.20">
+        <doc xml:whitespace="preserve">Sets the tool palette as a drag source.
+Enables all groups and items in the tool palette as drag sources
+on button 1 and button 3 press with copy and move actions.
+See gtk_drag_source_set().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="targets" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkToolPaletteDragTarget&lt;!-- --&gt;s which the widget should support</doc>
+            <type name="ToolPaletteDragTargets"
+                  c:type="GtkToolPaletteDragTargets"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_exclusive"
+              c:identifier="gtk_tool_palette_set_exclusive"
+              version="2.20">
+        <doc xml:whitespace="preserve">Sets whether the group should be exclusive or not.
+If an exclusive group is expanded all other groups are collapsed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkToolItemGroup which is a child of palette</doc>
+            <type name="ToolItemGroup" c:type="GtkToolItemGroup*"/>
+          </parameter>
+          <parameter name="exclusive" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the group should be exclusive or not</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_expand"
+              c:identifier="gtk_tool_palette_set_expand"
+              version="2.20">
+        <doc xml:whitespace="preserve">Sets whether the group should be given extra space.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkToolItemGroup which is a child of palette</doc>
+            <type name="ToolItemGroup" c:type="GtkToolItemGroup*"/>
+          </parameter>
+          <parameter name="expand" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the group should be given extra space</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_group_position"
+              c:identifier="gtk_tool_palette_set_group_position"
+              version="2.20">
+        <doc xml:whitespace="preserve">Sets the position of the group as an index of the tool palette.
+If position is 0 the group will become the first child, if position is
+-1 it will become the last child.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkToolItemGroup which is a child of palette</doc>
+            <type name="ToolItemGroup" c:type="GtkToolItemGroup*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a new index for group</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_size"
+              c:identifier="gtk_tool_palette_set_icon_size"
+              version="2.20">
+        <doc xml:whitespace="preserve">Sets the size of icons in the tool palette.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkIconSize that icons in the tool palette shall have</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_style"
+              c:identifier="gtk_tool_palette_set_style"
+              version="2.20">
+        <doc xml:whitespace="preserve">Sets the style (text, icons or both) of items in the tool palette.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="style" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkToolbarStyle that items in the tool palette shall have</doc>
+            <type name="ToolbarStyle" c:type="GtkToolbarStyle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_icon_size"
+              c:identifier="gtk_tool_palette_unset_icon_size"
+              version="2.20">
+        <doc xml:whitespace="preserve">Unsets the tool palette icon size set with gtk_tool_palette_set_icon_size(),
+so that user preferences will be used to determine the icon size.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unset_style"
+              c:identifier="gtk_tool_palette_unset_style"
+              version="2.20">
+        <doc xml:whitespace="preserve">Unsets a toolbar style set with gtk_tool_palette_set_style(),
+so that user preferences will be used to determine the toolbar style.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="icon-size"
+                version="2.20"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The size of the icons in a tool palette is normally determined by
+the #GtkSettings:toolbar-icon-size setting. When this property is set,
+it overrides the setting.
+This should only be used for special-purpose tool palettes, normal
+application tool palettes should respect the user preferences for the
+size of icons.</doc>
+        <type name="IconSize"/>
+      </property>
+      <property name="icon-size-set"
+                version="2.20"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Is %TRUE if the #GtkToolPalette:icon-size property has been set.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="toolbar-style"
+                version="2.20"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The style of items in the tool palette.</doc>
+        <type name="ToolbarStyle"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="priv">
+        <type name="ToolPalettePrivate" c:type="GtkToolPalettePrivate*"/>
+      </field>
+      <glib:signal name="set-scroll-adjustments" version="2.20">
+        <doc xml:whitespace="preserve">Set the scroll adjustments for the viewport.
+Usually scrolled containers like GtkScrolledWindow will emit this
+signal to connect two instances of GtkScrollbar to the scroll
+directions of the GtkToolpalette.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The horizontal adjustment</doc>
+            <type name="Adjustment"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The vertical adjustment</doc>
+            <type name="Adjustment"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ToolPaletteClass"
+            c:type="GtkToolPaletteClass"
+            glib:is-gtype-struct-for="ToolPalette">
+      <field name="parent_class">
+        <type name="ContainerClass" c:type="GtkContainerClass"/>
+      </field>
+      <field name="set_scroll_adjustments">
+        <callback name="set_scroll_adjustments">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="hadjustment" transfer-ownership="none">
+              <type name="Adjustment" c:type="GtkAdjustment*"/>
+            </parameter>
+            <parameter name="vadjustment" transfer-ownership="none">
+              <type name="Adjustment" c:type="GtkAdjustment*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved5" introspectable="0">
+        <callback name="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved6" introspectable="0">
+        <callback name="_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <bitfield name="ToolPaletteDragTargets"
+              glib:type-name="GtkToolPaletteDragTargets"
+              glib:get-type="gtk_tool_palette_drag_targets_get_type"
+              c:type="GtkToolPaletteDragTargets">
+      <doc xml:whitespace="preserve">Flags used to specify the supported drag targets.</doc>
+      <member name="items"
+              value="1"
+              c:identifier="GTK_TOOL_PALETTE_DRAG_ITEMS"
+              glib:nick="items"/>
+      <member name="groups"
+              value="2"
+              c:identifier="GTK_TOOL_PALETTE_DRAG_GROUPS"
+              glib:nick="groups"/>
+    </bitfield>
+    <record name="ToolPalettePrivate"
+            c:type="GtkToolPalettePrivate"
+            disguised="1">
+    </record>
+    <interface name="ToolShell"
+               c:symbol-prefix="tool_shell"
+               c:type="GtkToolShell"
+               glib:type-name="GtkToolShell"
+               glib:get-type="gtk_tool_shell_get_type"
+               glib:type-struct="ToolShellIface">
+      <doc xml:whitespace="preserve">Dummy structure for accessing instances of #GtkToolShellIface.</doc>
+      <prerequisite name="Widget"/>
+      <virtual-method name="get_ellipsize_mode" invoker="get_ellipsize_mode">
+        <return-value transfer-ownership="none">
+          <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_icon_size">
+        <return-value transfer-ownership="none">
+          <type name="IconSize" c:type="GtkIconSize"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_orientation"
+                      invoker="get_orientation"
+                      version="2.14">
+        <doc xml:whitespace="preserve">Retrieves the current orientation for the tool shell. Tool items must not
+call this function directly, but rely on gtk_tool_item_get_orientation()
+instead.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current orientation of @shell</doc>
+          <type name="Orientation" c:type="GtkOrientation"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_relief_style"
+                      invoker="get_relief_style"
+                      version="2.14">
+        <doc xml:whitespace="preserve">Returns the relief style of buttons on @shell. Tool items must not call this
+function directly, but rely on gtk_tool_item_get_relief_style() instead.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The relief style of buttons on @shell.</doc>
+          <type name="ReliefStyle" c:type="GtkReliefStyle"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_style" invoker="get_style" version="2.14">
+        <doc xml:whitespace="preserve">Retrieves whether the tool shell has text, icons, or both. Tool items must
+not call this function directly, but rely on gtk_tool_item_get_style()
+instead.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current style of @shell</doc>
+          <type name="ToolbarStyle" c:type="GtkToolbarStyle"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_text_alignment"
+                      invoker="get_text_alignment"
+                      version="2.20">
+        <doc xml:whitespace="preserve">Retrieves the current text alignment for the tool shell. Tool items must not
+call this function directly, but rely on gtk_tool_item_get_text_alignment()
+instead.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current text alignment of @shell</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_text_orientation"
+                      invoker="get_text_orientation"
+                      version="2.20">
+        <doc xml:whitespace="preserve">Retrieves the current text orientation for the tool shell. Tool items must not
+call this function directly, but rely on gtk_tool_item_get_text_orientation()
+instead.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current text orientation of @shell</doc>
+          <type name="Orientation" c:type="GtkOrientation"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_text_size_group"
+                      invoker="get_text_size_group"
+                      version="2.20">
+        <doc xml:whitespace="preserve">Retrieves the current text size group for the tool shell. Tool items must not
+call this function directly, but rely on gtk_tool_item_get_text_size_group()
+instead.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current text size group of @shell</doc>
+          <type name="SizeGroup" c:type="GtkSizeGroup*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="rebuild_menu"
+                      invoker="rebuild_menu"
+                      version="2.14">
+        <doc xml:whitespace="preserve">Calling this function signals the tool shell that the overflow menu item for
+tool items have changed. If there is an overflow menu and if it is visible
+when this function it called, the menu will be rebuilt.
+Tool items must not call this function directly, but rely on
+gtk_tool_item_rebuild_menu() instead.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_ellipsize_mode"
+              c:identifier="gtk_tool_shell_get_ellipsize_mode">
+        <return-value transfer-ownership="none">
+          <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+        </return-value>
+      </method>
+      <method name="get_icon_size"
+              c:identifier="gtk_tool_shell_get_icon_size"
+              version="2.14">
+        <doc xml:whitespace="preserve">Retrieves the icon size for the tool shell. Tool items must not call this
+function directly, but rely on gtk_tool_item_get_icon_size() instead.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current size for icons of @shell</doc>
+          <type name="gint"/>
+        </return-value>
+      </method>
+      <method name="get_orientation"
+              c:identifier="gtk_tool_shell_get_orientation"
+              version="2.14">
+        <doc xml:whitespace="preserve">Retrieves the current orientation for the tool shell. Tool items must not
+call this function directly, but rely on gtk_tool_item_get_orientation()
+instead.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current orientation of @shell</doc>
+          <type name="Orientation" c:type="GtkOrientation"/>
+        </return-value>
+      </method>
+      <method name="get_relief_style"
+              c:identifier="gtk_tool_shell_get_relief_style"
+              version="2.14">
+        <doc xml:whitespace="preserve">Returns the relief style of buttons on @shell. Tool items must not call this
+function directly, but rely on gtk_tool_item_get_relief_style() instead.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The relief style of buttons on @shell.</doc>
+          <type name="ReliefStyle" c:type="GtkReliefStyle"/>
+        </return-value>
+      </method>
+      <method name="get_style"
+              c:identifier="gtk_tool_shell_get_style"
+              version="2.14">
+        <doc xml:whitespace="preserve">Retrieves whether the tool shell has text, icons, or both. Tool items must
+not call this function directly, but rely on gtk_tool_item_get_style()
+instead.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current style of @shell</doc>
+          <type name="ToolbarStyle" c:type="GtkToolbarStyle"/>
+        </return-value>
+      </method>
+      <method name="get_text_alignment"
+              c:identifier="gtk_tool_shell_get_text_alignment"
+              version="2.20">
+        <doc xml:whitespace="preserve">Retrieves the current text alignment for the tool shell. Tool items must not
+call this function directly, but rely on gtk_tool_item_get_text_alignment()
+instead.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current text alignment of @shell</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_text_orientation"
+              c:identifier="gtk_tool_shell_get_text_orientation"
+              version="2.20">
+        <doc xml:whitespace="preserve">Retrieves the current text orientation for the tool shell. Tool items must not
+call this function directly, but rely on gtk_tool_item_get_text_orientation()
+instead.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current text orientation of @shell</doc>
+          <type name="Orientation" c:type="GtkOrientation"/>
+        </return-value>
+      </method>
+      <method name="get_text_size_group"
+              c:identifier="gtk_tool_shell_get_text_size_group"
+              version="2.20">
+        <doc xml:whitespace="preserve">Retrieves the current text size group for the tool shell. Tool items must not
+call this function directly, but rely on gtk_tool_item_get_text_size_group()
+instead.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current text size group of @shell</doc>
+          <type name="SizeGroup" c:type="GtkSizeGroup*"/>
+        </return-value>
+      </method>
+      <method name="rebuild_menu"
+              c:identifier="gtk_tool_shell_rebuild_menu"
+              version="2.14">
+        <doc xml:whitespace="preserve">Calling this function signals the tool shell that the overflow menu item for
+tool items have changed. If there is an overflow menu and if it is visible
+when this function it called, the menu will be rebuilt.
+Tool items must not call this function directly, but rely on
+gtk_tool_item_rebuild_menu() instead.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </interface>
+    <record name="ToolShellIface"
+            c:type="GtkToolShellIface"
+            glib:is-gtype-struct-for="ToolShell">
+      <doc xml:whitespace="preserve">Virtual function table for the #GtkToolShell interface.</doc>
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_icon_size">
+        <callback name="get_icon_size">
+          <return-value transfer-ownership="none">
+            <type name="IconSize" c:type="GtkIconSize"/>
+          </return-value>
+          <parameters>
+            <parameter name="shell" transfer-ownership="none">
+              <type name="ToolShell" c:type="GtkToolShell*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_orientation">
+        <callback name="get_orientation">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the current orientation of @shell</doc>
+            <type name="Orientation" c:type="GtkOrientation"/>
+          </return-value>
+          <parameters>
+            <parameter name="shell" transfer-ownership="none">
+              <type name="ToolShell" c:type="GtkToolShell*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_style">
+        <callback name="get_style">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the current style of @shell</doc>
+            <type name="ToolbarStyle" c:type="GtkToolbarStyle"/>
+          </return-value>
+          <parameters>
+            <parameter name="shell" transfer-ownership="none">
+              <type name="ToolShell" c:type="GtkToolShell*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_relief_style">
+        <callback name="get_relief_style">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">The relief style of buttons on @shell.</doc>
+            <type name="ReliefStyle" c:type="GtkReliefStyle"/>
+          </return-value>
+          <parameters>
+            <parameter name="shell" transfer-ownership="none">
+              <type name="ToolShell" c:type="GtkToolShell*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="rebuild_menu">
+        <callback name="rebuild_menu">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="shell" transfer-ownership="none">
+              <type name="ToolShell" c:type="GtkToolShell*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_text_orientation">
+        <callback name="get_text_orientation">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the current text orientation of @shell</doc>
+            <type name="Orientation" c:type="GtkOrientation"/>
+          </return-value>
+          <parameters>
+            <parameter name="shell" transfer-ownership="none">
+              <type name="ToolShell" c:type="GtkToolShell*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_text_alignment">
+        <callback name="get_text_alignment">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the current text alignment of @shell</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </return-value>
+          <parameters>
+            <parameter name="shell" transfer-ownership="none">
+              <type name="ToolShell" c:type="GtkToolShell*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_ellipsize_mode">
+        <callback name="get_ellipsize_mode">
+          <return-value transfer-ownership="none">
+            <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+          </return-value>
+          <parameters>
+            <parameter name="shell" transfer-ownership="none">
+              <type name="ToolShell" c:type="GtkToolShell*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_text_size_group">
+        <callback name="get_text_size_group">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the current text size group of @shell</doc>
+            <type name="SizeGroup" c:type="GtkSizeGroup*"/>
+          </return-value>
+          <parameters>
+            <parameter name="shell" transfer-ownership="none">
+              <type name="ToolShell" c:type="GtkToolShell*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="Toolbar"
+           c:symbol-prefix="toolbar"
+           c:type="GtkToolbar"
+           parent="Container"
+           glib:type-name="GtkToolbar"
+           glib:get-type="gtk_toolbar_get_type"
+           glib:type-struct="ToolbarClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <implements name="ToolShell"/>
+      <constructor name="new" c:identifier="gtk_toolbar_new">
+        <doc xml:whitespace="preserve">Creates a new toolbar.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly-created toolbar.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="get_drop_index"
+              c:identifier="gtk_toolbar_get_drop_index"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the position corresponding to the indicated point on
+this function returns the position a new item should be
+inserted.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The position corresponding to the point (@x, @y) on the toolbar.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x coordinate of a point on the toolbar</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y coordinate of a point on the toolbar</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_size" c:identifier="gtk_toolbar_get_icon_size">
+        <doc xml:whitespace="preserve">Retrieves the icon size for the toolbar. See gtk_toolbar_set_icon_size().
+the toolbar.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current icon size for the icons on</doc>
+          <type name="gint"/>
+        </return-value>
+      </method>
+      <method name="get_item_index"
+              c:identifier="gtk_toolbar_get_item_index"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the position of @item on the toolbar, starting from 0.
+It is an error if @item is not a child of the toolbar.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the position of item on the toolbar.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="item" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkToolItem that is a child of @toolbar</doc>
+            <type name="ToolItem" c:type="GtkToolItem*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_items"
+              c:identifier="gtk_toolbar_get_n_items"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the number of items on the toolbar.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of items on the toolbar</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_nth_item"
+              c:identifier="gtk_toolbar_get_nth_item"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the @n&lt;!-- --&gt;'th item on @toolbar, or %NULL if the
+toolbar does not contain an @n&lt;!-- --&gt;'th item.
+or %NULL if there isn't an @n&lt;!-- --&gt;'th item.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The @n&lt;!-- --&gt;'th #GtkToolItem on @toolbar,</doc>
+          <type name="ToolItem" c:type="GtkToolItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A position on the toolbar</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_relief_style"
+              c:identifier="gtk_toolbar_get_relief_style"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the relief style of buttons on @toolbar. See
+gtk_button_set_relief().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The relief style of buttons on @toolbar.</doc>
+          <type name="ReliefStyle" c:type="GtkReliefStyle"/>
+        </return-value>
+      </method>
+      <method name="get_show_arrow"
+              c:identifier="gtk_toolbar_get_show_arrow"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether the toolbar has an overflow menu.
+See gtk_toolbar_set_show_arrow().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the toolbar has an overflow menu.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_style" c:identifier="gtk_toolbar_get_style">
+        <doc xml:whitespace="preserve">Retrieves whether the toolbar has text, icons, or both . See
+gtk_toolbar_set_style().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current style of @toolbar</doc>
+          <type name="ToolbarStyle" c:type="GtkToolbarStyle"/>
+        </return-value>
+      </method>
+      <method name="insert" c:identifier="gtk_toolbar_insert" version="2.4">
+        <doc xml:whitespace="preserve">Insert a #GtkToolItem into the toolbar at position @pos. If @pos is
+0 the item is prepended to the start of the toolbar. If @pos is
+negative, the item is appended to the end of the toolbar.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="item" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkToolItem</doc>
+            <type name="ToolItem" c:type="GtkToolItem*"/>
+          </parameter>
+          <parameter name="pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position of the new item</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_drop_highlight_item"
+              c:identifier="gtk_toolbar_set_drop_highlight_item"
+              version="2.4">
+        <doc xml:whitespace="preserve">Highlights @toolbar to give an idea of what it would look like
+if @item was added to @toolbar at the position indicated by @index_.
+If @item is %NULL, highlighting is turned off. In that case @index_ 
+is ignored.
+The @tool_item passed to this function must not be part of any widget
+hierarchy. When an item is set as drop highlight item it can not
+added to any widget hierarchy or used as highlight item for another
+toolbar.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tool_item" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkToolItem, or %NULL to turn of highlighting</doc>
+            <type name="ToolItem" c:type="GtkToolItem*"/>
+          </parameter>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a position on @toolbar</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_size" c:identifier="gtk_toolbar_set_icon_size">
+        <doc xml:whitespace="preserve">This function sets the size of stock icons in the toolbar. You
+can call it both before you add the icons and after they've been
+added. The size you set will override user preferences for the default
+icon size.
+This should only be used for special-purpose toolbars, normal
+application toolbars should respect the user preferences for the
+size of icons.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkIconSize that stock icons in the toolbar shall have.</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_show_arrow"
+              c:identifier="gtk_toolbar_set_show_arrow"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets whether to show an overflow menu when
+items that there are not room are available through an
+overflow menu.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_arrow" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Whether to show an overflow menu</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_style" c:identifier="gtk_toolbar_set_style">
+        <doc xml:whitespace="preserve">Alters the view of @toolbar to display either icons only, text only, or both.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="style" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new style for @toolbar.</doc>
+            <type name="ToolbarStyle" c:type="GtkToolbarStyle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_icon_size"
+              c:identifier="gtk_toolbar_unset_icon_size">
+        <doc xml:whitespace="preserve">Unsets toolbar icon size set with gtk_toolbar_set_icon_size(), so that
+user preferences will be used to determine the icon size.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unset_style" c:identifier="gtk_toolbar_unset_style">
+        <doc xml:whitespace="preserve">Unsets a toolbar style set with gtk_toolbar_set_style(), so that
+user preferences will be used to determine the toolbar style.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="icon-size"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The size of the icons in a toolbar is normally determined by
+the toolbar-icon-size setting. When this property is set, it 
+overrides the setting. 
+This should only be used for special-purpose toolbars, normal
+application toolbars should respect the user preferences for the
+size of icons.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="icon-size-set"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Is %TRUE if the icon-size property has been set.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="show-arrow" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="toolbar-style" writable="1" transfer-ownership="none">
+        <type name="ToolbarStyle"/>
+      </property>
+      <field name="container">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="priv">
+        <type name="ToolbarPrivate" c:type="GtkToolbarPrivate*"/>
+      </field>
+      <glib:signal name="focus-home-or-end">
+        <doc xml:whitespace="preserve">A keybinding signal used internally by GTK+. This signal can't
+be used in application code</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the signal was handled, %FALSE if not</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the first item should be focused</doc>
+            <type name="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="orientation-changed">
+        <doc xml:whitespace="preserve">Emitted when the orientation of the toolbar changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new #GtkOrientation of the toolbar</doc>
+            <type name="Orientation"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="popup-context-menu">
+        <doc xml:whitespace="preserve">Emitted when the user right-clicks the toolbar or uses the
+keybinding to display a popup menu.
+Application developers should handle this signal if they want
+to display a context menu on the toolbar. The context-menu should
+appear at the coordinates given by @x and @y. The mouse button
+number is given by the @button parameter. If the menu was popped
+up using the keybaord, @button is -1.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">return %TRUE if the signal was handled, %FALSE if not</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate of the point where the menu should appear</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate of the point where the menu should appear</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mouse button the user pressed, or -1</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="style-changed">
+        <doc xml:whitespace="preserve">Emitted when the style of the toolbar changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new #GtkToolbarStyle of the toolbar</doc>
+            <type name="ToolbarStyle"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ToolbarClass"
+            c:type="GtkToolbarClass"
+            glib:is-gtype-struct-for="Toolbar">
+      <field name="parent_class">
+        <type name="ContainerClass" c:type="GtkContainerClass"/>
+      </field>
+      <field name="orientation_changed">
+        <callback name="orientation_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="toolbar" transfer-ownership="none">
+              <type name="Toolbar" c:type="GtkToolbar*"/>
+            </parameter>
+            <parameter name="orientation" transfer-ownership="none">
+              <type name="Orientation" c:type="GtkOrientation"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="style_changed">
+        <callback name="style_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="toolbar" transfer-ownership="none">
+              <type name="Toolbar" c:type="GtkToolbar*"/>
+            </parameter>
+            <parameter name="style" transfer-ownership="none">
+              <type name="ToolbarStyle" c:type="GtkToolbarStyle"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="popup_context_menu">
+        <callback name="popup_context_menu">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="toolbar" transfer-ownership="none">
+              <type name="Toolbar" c:type="GtkToolbar*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="button_number" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ToolbarPrivate" c:type="GtkToolbarPrivate" disguised="1">
+    </record>
+    <enumeration name="ToolbarSpaceStyle"
+                 glib:type-name="GtkToolbarSpaceStyle"
+                 glib:get-type="gtk_toolbar_space_style_get_type"
+                 c:type="GtkToolbarSpaceStyle">
+      <member name="empty"
+              value="0"
+              c:identifier="GTK_TOOLBAR_SPACE_EMPTY"
+              glib:nick="empty"/>
+      <member name="line"
+              value="1"
+              c:identifier="GTK_TOOLBAR_SPACE_LINE"
+              glib:nick="line"/>
+    </enumeration>
+    <enumeration name="ToolbarStyle"
+                 glib:type-name="GtkToolbarStyle"
+                 glib:get-type="gtk_toolbar_style_get_type"
+                 c:type="GtkToolbarStyle">
+      <member name="icons"
+              value="0"
+              c:identifier="GTK_TOOLBAR_ICONS"
+              glib:nick="icons"/>
+      <member name="text"
+              value="1"
+              c:identifier="GTK_TOOLBAR_TEXT"
+              glib:nick="text"/>
+      <member name="both"
+              value="2"
+              c:identifier="GTK_TOOLBAR_BOTH"
+              glib:nick="both"/>
+      <member name="both_horiz"
+              value="3"
+              c:identifier="GTK_TOOLBAR_BOTH_HORIZ"
+              glib:nick="both-horiz"/>
+    </enumeration>
+    <class name="Tooltip"
+           c:symbol-prefix="tooltip"
+           c:type="GtkTooltip"
+           parent="GObject.Object"
+           glib:type-name="GtkTooltip"
+           glib:get-type="gtk_tooltip_get_type">
+      <function name="trigger_tooltip_query"
+                c:identifier="gtk_tooltip_trigger_tooltip_query"
+                version="2.12">
+        <doc xml:whitespace="preserve">Triggers a new tooltip query on @display, in order to update the current
+visible tooltip, or to show/hide the current tooltip.  This function is
+useful to call when, for example, the state of the widget changed by a
+key press.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="display" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkDisplay</doc>
+            <type name="Gdk.Display" c:type="GdkDisplay*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="set_custom"
+              c:identifier="gtk_tooltip_set_custom"
+              version="2.12">
+        <doc xml:whitespace="preserve">Replaces the widget packed into the tooltip with
+away.
+By default a box with a #GtkImage and #GtkLabel is embedded in 
+the tooltip, which can be configured using gtk_tooltip_set_markup() 
+and gtk_tooltip_set_icon().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="custom_widget"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkWidget, or %NULL to unset the old custom widget.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon"
+              c:identifier="gtk_tooltip_set_icon"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets the icon of the tooltip (which is in front of the text) to be</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdkPixbuf, or %NULL</doc>
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_from_gicon"
+              c:identifier="gtk_tooltip_set_icon_from_gicon"
+              version="2.20">
+        <doc xml:whitespace="preserve">Sets the icon of the tooltip (which is in front of the text)
+to be the icon indicated by @gicon with the size indicated
+by @size. If @gicon is %NULL, the image will be hidden.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gicon" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GIcon representing the icon, or %NULL</doc>
+            <type name="Gio.Icon" c:type="GIcon*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a stock icon size</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_from_icon_name"
+              c:identifier="gtk_tooltip_set_icon_from_icon_name"
+              version="2.14">
+        <doc xml:whitespace="preserve">Sets the icon of the tooltip (which is in front of the text) to be
+the icon indicated by @icon_name with the size indicated
+by @size.  If @icon_name is %NULL, the image will be hidden.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an icon name, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a stock icon size</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_from_stock"
+              c:identifier="gtk_tooltip_set_icon_from_stock"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets the icon of the tooltip (which is in front of the text) to be
+the stock item indicated by @stock_id with the size indicated
+by @size.  If @stock_id is %NULL, the image will be hidden.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a stock id, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a stock icon size</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_markup"
+              c:identifier="gtk_tooltip_set_markup"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets the text of the tooltip to be @markup, which is marked up
+with the &lt;link
+linkend="PangoMarkupFormat"&gt;Pango text markup language&lt;/link&gt;.
+If @markup is %NULL, the label will be hidden.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="markup" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a markup string (see &lt;link linkend="PangoMarkupFormat"&gt;Pango markup format&lt;/link&gt;) or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_text"
+              c:identifier="gtk_tooltip_set_text"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets the text of the tooltip to be @text. If @text is %NULL, the label
+will be hidden. See also gtk_tooltip_set_markup().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a text string or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tip_area"
+              c:identifier="gtk_tooltip_set_tip_area"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets the area of the widget, where the contents of this tooltip apply,
+to be @rect (in widget coordinates).  This is especially useful for
+properly setting tooltips on #GtkTreeView rows and cells, #GtkIconViews,
+etc.
+For setting tooltips on #GtkTreeView, please refer to the convenience
+gtk_tree_view_set_tooltip_cell().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkRectangle</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <callback name="TranslateFunc" c:type="GtkTranslateFunc">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="path" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="func_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="TreeCellDataFunc" c:type="GtkTreeCellDataFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tree_column" transfer-ownership="none">
+          <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+        </parameter>
+        <parameter name="cell" transfer-ownership="none">
+          <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+        </parameter>
+        <parameter name="tree_model" transfer-ownership="none">
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </parameter>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="TreeIter" c:type="GtkTreeIter*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="TreeDestroyCountFunc" c:type="GtkTreeDestroyCountFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tree_view" transfer-ownership="none">
+          <type name="TreeView" c:type="GtkTreeView*"/>
+        </parameter>
+        <parameter name="path" transfer-ownership="none">
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </parameter>
+        <parameter name="children" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <interface name="TreeDragDest"
+               c:symbol-prefix="tree_drag_dest"
+               c:type="GtkTreeDragDest"
+               glib:type-name="GtkTreeDragDest"
+               glib:get-type="gtk_tree_drag_dest_get_type"
+               glib:type-struct="TreeDragDestIface">
+      <virtual-method name="drag_data_received" invoker="drag_data_received">
+        <doc xml:whitespace="preserve">Asks the #GtkTreeDragDest to insert a row before the path @dest,
+deriving the contents of the row from @selection_data. If @dest is
+outside the tree so that inserting before it is impossible, %FALSE
+will be returned. Also, %FALSE may be returned if the new row is
+not created for some model-specific reason.  Should robustly handle
+a @dest no longer found in the model!</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether a new row was created before position @dest</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <doc xml:whitespace="preserve">row to drop in front of</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="selection_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to drop</doc>
+            <type name="SelectionData" c:type="GtkSelectionData*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="row_drop_possible" invoker="row_drop_possible">
+        <doc xml:whitespace="preserve">Determines whether a drop is possible before the given @dest_path,
+at the same depth as @dest_path. i.e., can we drop the data in
+exist; the return value will almost certainly be %FALSE if the
+parent of @dest_path doesn't exist, though.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a drop is possible before @dest_path</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">destination row</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="selection_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data being dragged</doc>
+            <type name="SelectionData" c:type="GtkSelectionData*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="drag_data_received"
+              c:identifier="gtk_tree_drag_dest_drag_data_received">
+        <doc xml:whitespace="preserve">Asks the #GtkTreeDragDest to insert a row before the path @dest,
+deriving the contents of the row from @selection_data. If @dest is
+outside the tree so that inserting before it is impossible, %FALSE
+will be returned. Also, %FALSE may be returned if the new row is
+not created for some model-specific reason.  Should robustly handle
+a @dest no longer found in the model!</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether a new row was created before position @dest</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <doc xml:whitespace="preserve">row to drop in front of</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="selection_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to drop</doc>
+            <type name="SelectionData" c:type="GtkSelectionData*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="row_drop_possible"
+              c:identifier="gtk_tree_drag_dest_row_drop_possible">
+        <doc xml:whitespace="preserve">Determines whether a drop is possible before the given @dest_path,
+at the same depth as @dest_path. i.e., can we drop the data in
+exist; the return value will almost certainly be %FALSE if the
+parent of @dest_path doesn't exist, though.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a drop is possible before @dest_path</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">destination row</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="selection_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data being dragged</doc>
+            <type name="SelectionData" c:type="GtkSelectionData*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="TreeDragDestIface"
+            c:type="GtkTreeDragDestIface"
+            glib:is-gtype-struct-for="TreeDragDest">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="drag_data_received">
+        <callback name="drag_data_received">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether a new row was created before position @dest</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="drag_dest" transfer-ownership="none">
+              <type name="TreeDragDest" c:type="GtkTreeDragDest*"/>
+            </parameter>
+            <parameter name="dest" transfer-ownership="none">
+              <doc xml:whitespace="preserve">row to drop in front of</doc>
+              <type name="TreePath" c:type="GtkTreePath*"/>
+            </parameter>
+            <parameter name="selection_data" transfer-ownership="none">
+              <doc xml:whitespace="preserve">data to drop</doc>
+              <type name="SelectionData" c:type="GtkSelectionData*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_drop_possible">
+        <callback name="row_drop_possible">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if a drop is possible before @dest_path</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="drag_dest" transfer-ownership="none">
+              <type name="TreeDragDest" c:type="GtkTreeDragDest*"/>
+            </parameter>
+            <parameter name="dest_path" transfer-ownership="none">
+              <doc xml:whitespace="preserve">destination row</doc>
+              <type name="TreePath" c:type="GtkTreePath*"/>
+            </parameter>
+            <parameter name="selection_data" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the data being dragged</doc>
+              <type name="SelectionData" c:type="GtkSelectionData*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <interface name="TreeDragSource"
+               c:symbol-prefix="tree_drag_source"
+               c:type="GtkTreeDragSource"
+               glib:type-name="GtkTreeDragSource"
+               glib:get-type="gtk_tree_drag_source_get_type"
+               glib:type-struct="TreeDragSourceIface">
+      <virtual-method name="drag_data_delete" invoker="drag_data_delete">
+        <doc xml:whitespace="preserve">Asks the #GtkTreeDragSource to delete the row at @path, because
+it was moved somewhere else via drag-and-drop. Returns %FALSE
+if the deletion fails because @path no longer exists, or for
+some model-specific reason. Should robustly handle a @path no
+longer found in the model!</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the row was successfully deleted</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">row that was being dragged</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="drag_data_get" invoker="drag_data_get">
+        <doc xml:whitespace="preserve">Asks the #GtkTreeDragSource to fill in @selection_data with a
+representation of the row at @path. @selection_data-&gt;target gives
+the required type of the data.  Should robustly handle a @path no
+longer found in the model!</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if data of the required type was provided</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">row that was dragged</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="selection_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkSelectionData to fill with data from the dragged row</doc>
+            <type name="SelectionData" c:type="GtkSelectionData*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="row_draggable" invoker="row_draggable">
+        <doc xml:whitespace="preserve">Asks the #GtkTreeDragSource whether a particular row can be used as
+the source of a DND operation. If the source doesn't implement
+this interface, the row is assumed draggable.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the row can be dragged</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">row on which user is initiating a drag</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="drag_data_delete"
+              c:identifier="gtk_tree_drag_source_drag_data_delete">
+        <doc xml:whitespace="preserve">Asks the #GtkTreeDragSource to delete the row at @path, because
+it was moved somewhere else via drag-and-drop. Returns %FALSE
+if the deletion fails because @path no longer exists, or for
+some model-specific reason. Should robustly handle a @path no
+longer found in the model!</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the row was successfully deleted</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">row that was being dragged</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="drag_data_get"
+              c:identifier="gtk_tree_drag_source_drag_data_get">
+        <doc xml:whitespace="preserve">Asks the #GtkTreeDragSource to fill in @selection_data with a
+representation of the row at @path. @selection_data-&gt;target gives
+the required type of the data.  Should robustly handle a @path no
+longer found in the model!</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if data of the required type was provided</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">row that was dragged</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="selection_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkSelectionData to fill with data from the dragged row</doc>
+            <type name="SelectionData" c:type="GtkSelectionData*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="row_draggable"
+              c:identifier="gtk_tree_drag_source_row_draggable">
+        <doc xml:whitespace="preserve">Asks the #GtkTreeDragSource whether a particular row can be used as
+the source of a DND operation. If the source doesn't implement
+this interface, the row is assumed draggable.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the row can be dragged</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">row on which user is initiating a drag</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="TreeDragSourceIface"
+            c:type="GtkTreeDragSourceIface"
+            glib:is-gtype-struct-for="TreeDragSource">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="row_draggable">
+        <callback name="row_draggable">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the row can be dragged</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="drag_source" transfer-ownership="none">
+              <type name="TreeDragSource" c:type="GtkTreeDragSource*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <doc xml:whitespace="preserve">row on which user is initiating a drag</doc>
+              <type name="TreePath" c:type="GtkTreePath*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drag_data_get">
+        <callback name="drag_data_get">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if data of the required type was provided</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="drag_source" transfer-ownership="none">
+              <type name="TreeDragSource" c:type="GtkTreeDragSource*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <doc xml:whitespace="preserve">row that was dragged</doc>
+              <type name="TreePath" c:type="GtkTreePath*"/>
+            </parameter>
+            <parameter name="selection_data" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GtkSelectionData to fill with data from the dragged row</doc>
+              <type name="SelectionData" c:type="GtkSelectionData*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drag_data_delete">
+        <callback name="drag_data_delete">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the row was successfully deleted</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="drag_source" transfer-ownership="none">
+              <type name="TreeDragSource" c:type="GtkTreeDragSource*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <doc xml:whitespace="preserve">row that was being dragged</doc>
+              <type name="TreePath" c:type="GtkTreePath*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="TreeIter"
+            c:type="GtkTreeIter"
+            glib:type-name="GtkTreeIter"
+            glib:get-type="gtk_tree_iter_get_type"
+            c:symbol-prefix="tree_iter">
+      <field name="stamp" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="user_data" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="user_data2" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="user_data3" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <method name="copy" c:identifier="gtk_tree_iter_copy">
+        <doc xml:whitespace="preserve">Creates a dynamically allocated tree iterator as a copy of @iter.  
+This function is not intended for use in applications, because you 
+can just copy the structs by value 
+(&lt;literal&gt;GtkTreeIter new_iter = iter;&lt;/literal&gt;).
+You must free this iter with gtk_tree_iter_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly-allocated copy of @iter.</doc>
+          <type name="TreeIter" c:type="GtkTreeIter*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gtk_tree_iter_free">
+        <doc xml:whitespace="preserve">Frees an iterator that has been allocated by gtk_tree_iter_copy().
+This function is mainly used for language bindings.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <callback name="TreeIterCompareFunc" c:type="GtkTreeIterCompareFunc">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="model" transfer-ownership="none">
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </parameter>
+        <parameter name="a" transfer-ownership="none">
+          <type name="TreeIter" c:type="GtkTreeIter*"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="TreeIter" c:type="GtkTreeIter*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <interface name="TreeModel"
+               c:symbol-prefix="tree_model"
+               c:type="GtkTreeModel"
+               glib:type-name="GtkTreeModel"
+               glib:get-type="gtk_tree_model_get_type"
+               glib:type-struct="TreeModelIface">
+      <virtual-method name="get_column_type" invoker="get_column_type">
+        <doc xml:whitespace="preserve">Returns the type of the column.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The type of the column.</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The column index.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_flags" invoker="get_flags">
+        <doc xml:whitespace="preserve">Returns a set of flags supported by this interface.  The flags are a bitwise
+combination of #GtkTreeModelFlags.  The flags supported should not change
+during the lifecycle of the @tree_model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The flags supported by this interface.</doc>
+          <type name="TreeModelFlags" c:type="GtkTreeModelFlags"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_iter" invoker="get_iter">
+        <doc xml:whitespace="preserve">Sets @iter to a valid iterator pointing to @path.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if @iter was set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">The uninitialized #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreePath.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_n_columns" invoker="get_n_columns">
+        <doc xml:whitespace="preserve">Returns the number of columns supported by @tree_model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of columns.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_path" invoker="get_path">
+        <doc xml:whitespace="preserve">Returns a newly-created #GtkTreePath referenced by @iter.  This path should
+be freed with gtk_tree_path_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly-created #GtkTreePath.</doc>
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_value" invoker="get_value">
+        <doc xml:whitespace="preserve">Initializes and sets @value to that at @column.
+When done with @value, g_value_unset() needs to be called 
+to free any allocated memory.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The column to lookup the value at.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">An empty #GValue to set.</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="iter_children" invoker="iter_children">
+        <doc xml:whitespace="preserve">Sets @iter to point to the first child of @parent.  If @parent has no
+children, %FALSE is returned and @iter is set to be invalid.  @parent
+will remain a valid node after this function has been called.
+If @parent is %NULL returns the first node, equivalent to
+&lt;literal&gt;gtk_tree_model_get_iter_first (tree_model, iter);&lt;/literal&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if @child has been set to the first child.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">The new #GtkTreeIter to be set to the child.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">The #GtkTreeIter, or %NULL</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="iter_has_child" invoker="iter_has_child">
+        <doc xml:whitespace="preserve">Returns %TRUE if @iter has children, %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter has children.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeIter to test for children.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="iter_n_children" invoker="iter_n_children">
+        <doc xml:whitespace="preserve">Returns the number of children that @iter has.  As a special case, if @iter
+is %NULL, then the number of toplevel nodes is returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of children of @iter.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">The #GtkTreeIter, or %NULL.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="iter_next" invoker="iter_next">
+        <doc xml:whitespace="preserve">Sets @iter to point to the node following it at the current level.  If there
+is no next @iter, %FALSE is returned and @iter is set to be invalid.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter has been changed to the next node.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="iter_nth_child" invoker="iter_nth_child">
+        <doc xml:whitespace="preserve">Sets @iter to be the child of @parent, using the given index.  The first
+index is 0.  If @n is too big, or @parent has no children, @iter is set
+to an invalid iterator and %FALSE is returned.  @parent will remain a valid
+node after this function has been called.  As a special case, if @parent is
+%NULL, then the @n&lt;!-- --&gt;th root node is set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if @parent has an @n&lt;!-- --&gt;th child.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeIter to set to the nth child.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">The #GtkTreeIter to get the child from, or %NULL.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="n" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Then index of the desired child.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="iter_parent" invoker="iter_parent">
+        <doc xml:whitespace="preserve">Sets @iter to be the parent of @child.  If @child is at the toplevel, and
+doesn't have a parent, then @iter is set to an invalid iterator and %FALSE
+is returned.  @child will remain a valid node after this function has been
+called.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if @iter is set to the parent of @child.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">The new #GtkTreeIter to set to the parent.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="ref_node" invoker="ref_node">
+        <doc xml:whitespace="preserve">Lets the tree ref the node.  This is an optional method for models to
+implement.  To be more specific, models may ignore this call as it exists
+primarily for performance reasons.
+This function is primarily meant as a way for views to let caching model 
+know when nodes are being displayed (and hence, whether or not to cache that
+node.)  For example, a file-system based model would not want to keep the
+entire file-hierarchy in memory, just the sections that are currently being
+displayed by every current view.
+A model should be expected to be able to get an iter independent of its
+reffed state.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unref_node" invoker="unref_node">
+        <doc xml:whitespace="preserve">Lets the tree unref the node.  This is an optional method for models to
+implement.  To be more specific, models may ignore this call as it exists
+primarily for performance reasons.
+For more information on what this means, see gtk_tree_model_ref_node().
+Please note that nodes that are deleted are not unreffed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="filter_new"
+              c:identifier="gtk_tree_model_filter_new"
+              version="2.4">
+        <doc xml:whitespace="preserve">Creates a new #GtkTreeModel, with @child_model as the child_model
+and @root as the virtual root.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A new #GtkTreeModel.</doc>
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="root" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A #GtkTreePath or %NULL.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach" c:identifier="gtk_tree_model_foreach">
+        <doc xml:whitespace="preserve">Calls func on each node in model in a depth-first fashion.
+If @func returns %TRUE, then the tree ceases to be walked, and
+gtk_tree_model_foreach() returns.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">A function to be called on each row</doc>
+            <type name="TreeModelForeachFunc"
+                  c:type="GtkTreeModelForeachFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">User data to passed to func.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get" c:identifier="gtk_tree_model_get" introspectable="0">
+        <doc xml:whitespace="preserve">Gets the value of one or more cells in the row referenced by @iter.
+The variable argument list should contain integer column numbers,
+each column number followed by a place to store the value being
+retrieved.  The list is terminated by a -1. For example, to get a
+value from column 0 with type %G_TYPE_STRING, you would
+where &lt;literal&gt;place_string_here&lt;/literal&gt; is a &lt;type&gt;gchar*&lt;/type&gt; to be 
+filled with the string.
+Returned values with type %G_TYPE_OBJECT have to be unreferenced, values
+with type %G_TYPE_STRING or %G_TYPE_BOXED have to be freed. Other values are
+passed by value.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a row in @tree_model</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_type"
+              c:identifier="gtk_tree_model_get_column_type">
+        <doc xml:whitespace="preserve">Returns the type of the column.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The type of the column.</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The column index.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_flags" c:identifier="gtk_tree_model_get_flags">
+        <doc xml:whitespace="preserve">Returns a set of flags supported by this interface.  The flags are a bitwise
+combination of #GtkTreeModelFlags.  The flags supported should not change
+during the lifecycle of the @tree_model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The flags supported by this interface.</doc>
+          <type name="TreeModelFlags" c:type="GtkTreeModelFlags"/>
+        </return-value>
+      </method>
+      <method name="get_iter" c:identifier="gtk_tree_model_get_iter">
+        <doc xml:whitespace="preserve">Sets @iter to a valid iterator pointing to @path.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if @iter was set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">The uninitialized #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreePath.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_iter_first"
+              c:identifier="gtk_tree_model_get_iter_first">
+        <doc xml:whitespace="preserve">Initializes @iter with the first iterator in the tree (the one at the path
+"0") and returns %TRUE.  Returns %FALSE if the tree is empty.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if @iter was set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">The uninitialized #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_iter_from_string"
+              c:identifier="gtk_tree_model_get_iter_from_string">
+        <doc xml:whitespace="preserve">Sets @iter to a valid iterator pointing to @path_string, if it
+exists. Otherwise, @iter is left invalid and %FALSE is returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if @iter was set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">An uninitialized #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="path_string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A string representation of a #GtkTreePath.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_columns" c:identifier="gtk_tree_model_get_n_columns">
+        <doc xml:whitespace="preserve">Returns the number of columns supported by @tree_model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of columns.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_path" c:identifier="gtk_tree_model_get_path">
+        <doc xml:whitespace="preserve">Returns a newly-created #GtkTreePath referenced by @iter.  This path should
+be freed with gtk_tree_path_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly-created #GtkTreePath.</doc>
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string_from_iter"
+              c:identifier="gtk_tree_model_get_string_from_iter"
+              version="2.2">
+        <doc xml:whitespace="preserve">Generates a string representation of the iter. This string is a ':'
+separated list of numbers. For example, "4:10:0:3" would be an
+acceptable return value for this string.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly-allocated string. Must be freed with g_free().</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_valist"
+              c:identifier="gtk_tree_model_get_valist"
+              introspectable="0">
+        <doc xml:whitespace="preserve">See gtk_tree_model_get(), this version takes a &lt;type&gt;va_list&lt;/type&gt; 
+for language bindings to use.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a row in @tree_model</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="var_args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">&lt;type&gt;va_list&lt;/type&gt; of column/return location pairs</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value" c:identifier="gtk_tree_model_get_value">
+        <doc xml:whitespace="preserve">Initializes and sets @value to that at @column.
+When done with @value, g_value_unset() needs to be called 
+to free any allocated memory.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The column to lookup the value at.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">An empty #GValue to set.</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_children" c:identifier="gtk_tree_model_iter_children">
+        <doc xml:whitespace="preserve">Sets @iter to point to the first child of @parent.  If @parent has no
+children, %FALSE is returned and @iter is set to be invalid.  @parent
+will remain a valid node after this function has been called.
+If @parent is %NULL returns the first node, equivalent to
+&lt;literal&gt;gtk_tree_model_get_iter_first (tree_model, iter);&lt;/literal&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if @child has been set to the first child.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">The new #GtkTreeIter to be set to the child.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">The #GtkTreeIter, or %NULL</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_has_child"
+              c:identifier="gtk_tree_model_iter_has_child">
+        <doc xml:whitespace="preserve">Returns %TRUE if @iter has children, %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter has children.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeIter to test for children.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_n_children"
+              c:identifier="gtk_tree_model_iter_n_children">
+        <doc xml:whitespace="preserve">Returns the number of children that @iter has.  As a special case, if @iter
+is %NULL, then the number of toplevel nodes is returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of children of @iter.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">The #GtkTreeIter, or %NULL.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_next" c:identifier="gtk_tree_model_iter_next">
+        <doc xml:whitespace="preserve">Sets @iter to point to the node following it at the current level.  If there
+is no next @iter, %FALSE is returned and @iter is set to be invalid.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter has been changed to the next node.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_nth_child"
+              c:identifier="gtk_tree_model_iter_nth_child">
+        <doc xml:whitespace="preserve">Sets @iter to be the child of @parent, using the given index.  The first
+index is 0.  If @n is too big, or @parent has no children, @iter is set
+to an invalid iterator and %FALSE is returned.  @parent will remain a valid
+node after this function has been called.  As a special case, if @parent is
+%NULL, then the @n&lt;!-- --&gt;th root node is set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if @parent has an @n&lt;!-- --&gt;th child.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeIter to set to the nth child.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">The #GtkTreeIter to get the child from, or %NULL.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="n" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Then index of the desired child.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_parent" c:identifier="gtk_tree_model_iter_parent">
+        <doc xml:whitespace="preserve">Sets @iter to be the parent of @child.  If @child is at the toplevel, and
+doesn't have a parent, then @iter is set to an invalid iterator and %FALSE
+is returned.  @child will remain a valid node after this function has been
+called.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if @iter is set to the parent of @child.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">The new #GtkTreeIter to set to the parent.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref_node" c:identifier="gtk_tree_model_ref_node">
+        <doc xml:whitespace="preserve">Lets the tree ref the node.  This is an optional method for models to
+implement.  To be more specific, models may ignore this call as it exists
+primarily for performance reasons.
+This function is primarily meant as a way for views to let caching model 
+know when nodes are being displayed (and hence, whether or not to cache that
+node.)  For example, a file-system based model would not want to keep the
+entire file-hierarchy in memory, just the sections that are currently being
+displayed by every current view.
+A model should be expected to be able to get an iter independent of its
+reffed state.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="row_changed" c:identifier="gtk_tree_model_row_changed">
+        <doc xml:whitespace="preserve">Emits the "row-changed" signal on @tree_model.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreePath pointing to the changed row</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter pointing to the changed row</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="row_deleted" c:identifier="gtk_tree_model_row_deleted">
+        <doc xml:whitespace="preserve">Emits the "row-deleted" signal on @tree_model.  This should be called by
+models after a row has been removed.  The location pointed to by @path 
+should be the location that the row previously was at.  It may not be a 
+valid location anymore.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreePath pointing to the previous location of the deleted row.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="row_has_child_toggled"
+              c:identifier="gtk_tree_model_row_has_child_toggled">
+        <doc xml:whitespace="preserve">Emits the "row-has-child-toggled" signal on @tree_model.  This should be
+called by models after the child state of a node changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreePath pointing to the changed row</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter pointing to the changed row</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="row_inserted" c:identifier="gtk_tree_model_row_inserted">
+        <doc xml:whitespace="preserve">Emits the "row-inserted" signal on @tree_model</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreePath pointing to the inserted row</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter pointing to the inserted row</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="rows_reordered"
+              c:identifier="gtk_tree_model_rows_reordered">
+        <doc xml:whitespace="preserve">Emits the "rows-reordered" signal on @tree_model.  This should be called by
+models when their rows have been reordered.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreePath pointing to the tree node whose children have been reordered</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter pointing to the node whose children have been reordered, or %NULL if the depth of @path is 0.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="new_order" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of integers mapping the current position of each child to its old position before the re-ordering, i.e. @new_order&lt;literal&gt;[newpos] = oldpos&lt;/literal&gt;.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sort_new_with_model"
+              c:identifier="gtk_tree_model_sort_new_with_model">
+        <doc xml:whitespace="preserve">Creates a new #GtkTreeModel, with @child_model as the child model.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A new #GtkTreeModel.</doc>
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </return-value>
+      </method>
+      <method name="unref_node" c:identifier="gtk_tree_model_unref_node">
+        <doc xml:whitespace="preserve">Lets the tree unref the node.  This is an optional method for models to
+implement.  To be more specific, models may ignore this call as it exists
+primarily for performance reasons.
+For more information on what this means, see gtk_tree_model_ref_node().
+Please note that nodes that are deleted are not unreffed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="row-changed">
+        <doc xml:whitespace="preserve">This signal is emitted when a row in the model has changed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTreePath identifying the changed row</doc>
+            <type name="TreePath"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid #GtkTreeIter pointing to the changed row</doc>
+            <type name="TreeIter"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="row-deleted">
+        <doc xml:whitespace="preserve">This signal is emitted when a row has been deleted.
+Note that no iterator is passed to the signal handler,
+since the row is already deleted.
+Implementations of GtkTreeModel must emit row-deleted 
+&lt;emphasis&gt;before&lt;/emphasis&gt; removing the node from its
+internal data structures.  This is because models and 
+views which access and monitor this model might have
+references on the node which need to be released in the
+row-deleted handler.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTreePath identifying the row</doc>
+            <type name="TreePath"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="row-has-child-toggled">
+        <doc xml:whitespace="preserve">This signal is emitted when a row has gotten the first child row or lost
+its last child row.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTreePath identifying the row</doc>
+            <type name="TreePath"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid #GtkTreeIter pointing to the row</doc>
+            <type name="TreeIter"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="row-inserted">
+        <doc xml:whitespace="preserve">This signal is emitted when a new row has been inserted in the model.
+Note that the row may still be empty at this point, since
+it is a common pattern to first insert an empty row, and 
+then fill it with the desired values.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTreePath identifying the new row</doc>
+            <type name="TreePath"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid #GtkTreeIter pointing to the new row</doc>
+            <type name="TreeIter"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="rows-reordered">
+        <doc xml:whitespace="preserve">This signal is emitted when the children of a node in the #GtkTreeModel
+have been reordered. 
+Note that this signal is &lt;emphasis&gt;not&lt;/emphasis&gt; emitted
+when rows are reordered by DND, since this is implemented
+by removing and then reinserting the row.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTreePath identifying the tree node whose children have been reordered</doc>
+            <type name="TreePath"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid #GtkTreeIter pointing to the node whose</doc>
+            <type name="TreeIter"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of integers mapping the current position of each child to its old position before the re-ordering, i.e. @new_order&lt;literal&gt;[newpos] = oldpos&lt;/literal&gt;.</doc>
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <class name="TreeModelFilter"
+           c:symbol-prefix="tree_model_filter"
+           c:type="GtkTreeModelFilter"
+           parent="GObject.Object"
+           glib:type-name="GtkTreeModelFilter"
+           glib:get-type="gtk_tree_model_filter_get_type"
+           glib:type-struct="TreeModelFilterClass">
+      <implements name="TreeDragSource"/>
+      <implements name="TreeModel"/>
+      <virtual-method name="modify">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_model" transfer-ownership="none">
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="visible">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_model" transfer-ownership="none">
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="clear_cache"
+              c:identifier="gtk_tree_model_filter_clear_cache"
+              version="2.4">
+        <doc xml:whitespace="preserve">This function should almost never be called. It clears the @filter
+of any cached iterators that haven't been reffed with
+gtk_tree_model_ref_node(). This might be useful if the child model
+being filtered is static (and doesn't change often) and there has been
+a lot of unreffed access to nodes. As a side effect of this function,
+all unreffed iters will be invalid.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="convert_child_iter_to_iter"
+              c:identifier="gtk_tree_model_filter_convert_child_iter_to_iter"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets @filter_iter to point to the row in @filter that corresponds to the
+row pointed at by @child_iter.  If @filter_iter was not set, %FALSE is
+returned.
+valid iterator pointing to a visible row in child model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if @filter_iter was set, i.e. if @child_iter is a</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter_iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">An uninitialized #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="child_iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter pointing to a row on the child model.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="convert_child_path_to_path"
+              c:identifier="gtk_tree_model_filter_convert_child_path_to_path"
+              version="2.4">
+        <doc xml:whitespace="preserve">Converts @child_path to a path relative to @filter. That is, @child_path
+points to a path in the child model. The rerturned path will point to the
+same row in the filtered model. If @child_path isn't a valid path on the
+child model or points to a row which is not visible in @filter, then %NULL
+is returned.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly allocated #GtkTreePath, or %NULL.</doc>
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreePath to convert.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="convert_iter_to_child_iter"
+              c:identifier="gtk_tree_model_filter_convert_iter_to_child_iter"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets @child_iter to point to the row pointed to by @filter_iter.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">An uninitialized #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="filter_iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter pointing to a row on @filter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="convert_path_to_child_path"
+              c:identifier="gtk_tree_model_filter_convert_path_to_child_path"
+              version="2.4">
+        <doc xml:whitespace="preserve">Converts @filter_path to a path on the child model of @filter. That is,
+point to the same location in the model not being filtered. If @filter_path
+does not point to a location in the child model, %NULL is returned.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly allocated #GtkTreePath, or %NULL.</doc>
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreePath to convert.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_model"
+              c:identifier="gtk_tree_model_filter_get_model"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns a pointer to the child model of @filter.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A pointer to a #GtkTreeModel.</doc>
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </return-value>
+      </method>
+      <method name="refilter"
+              c:identifier="gtk_tree_model_filter_refilter"
+              version="2.4">
+        <doc xml:whitespace="preserve">Emits ::row_changed for each row in the child model, which causes
+the filter to re-evaluate whether a row is visible or not.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_modify_func"
+              c:identifier="gtk_tree_model_filter_set_modify_func"
+              version="2.4">
+        <doc xml:whitespace="preserve">With the @n_columns and @types parameters, you give an array of column
+types for this model (which will be exposed to the parent model/view).
+The @func, @data and @destroy parameters are for specifying the modify
+function. The modify function will get called for &lt;emphasis&gt;each&lt;/emphasis&gt;
+data access, the goal of the modify function is to return the data which 
+should be displayed at the location specified using the parameters of the 
+modify function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The number of columns in the filter model.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="types" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GType&lt;!-- --&gt;s of the columns.</doc>
+            <type name="GType" c:type="GType*"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="3"
+                     destroy="4">
+            <doc xml:whitespace="preserve">A #GtkTreeModelFilterModifyFunc</doc>
+            <type name="TreeModelFilterModifyFunc"
+                  c:type="GtkTreeModelFilterModifyFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">User data to pass to the modify function, or %NULL.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="async">
+            <doc xml:whitespace="preserve">Destroy notifier of @data, or %NULL.</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_visible_column"
+              c:identifier="gtk_tree_model_filter_set_visible_column"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets @column of the child_model to be the column where @filter should
+look for visibility information. @columns should be a column of type
+%G_TYPE_BOOLEAN, where %TRUE means that a row is visible, and %FALSE
+if not.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #gint which is the column containing the visible information.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_visible_func"
+              c:identifier="gtk_tree_model_filter_set_visible_func"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the visible function used when filtering the @filter to be @func. The
+function should return %TRUE if the given row should be visible and
+%FALSE otherwise.
+If the condition calculated by the function changes over time (e.g. because
+it depends on some global parameters), you must call 
+gtk_tree_model_filter_refilter() to keep the visibility information of 
+the model uptodate.
+Note that @func is called whenever a row is inserted, when it may still be
+empty. The visible function should therefore take special care of empty
+rows, like in the example below.
+&lt;informalexample&gt;&lt;programlisting&gt;
+static gboolean
+visible_func (GtkTreeModel *model,
+GtkTreeIter  *iter,
+gpointer      data)
+{
+/&amp;ast; Visible if row is non-empty and first column is "HI" &amp;ast;/
+gchar *str;
+gboolean visible = FALSE;
+gtk_tree_model_get (model, iter, 0, &amp;str, -1);
+if (str &amp;&amp; strcmp (str, "HI") == 0)
+visible = TRUE;
+g_free (str);
+return visible;
+}
+&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">A #GtkTreeModelFilterVisibleFunc, the visible function.</doc>
+            <type name="TreeModelFilterVisibleFunc"
+                  c:type="GtkTreeModelFilterVisibleFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">User data to pass to the visible function, or %NULL.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="async">
+            <doc xml:whitespace="preserve">Destroy notifier of @data, or %NULL.</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="child-model"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="TreeModel"/>
+      </property>
+      <property name="virtual-root"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="TreePath"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="TreeModelFilterPrivate"
+              c:type="GtkTreeModelFilterPrivate*"/>
+      </field>
+    </class>
+    <record name="TreeModelFilterClass"
+            c:type="GtkTreeModelFilterClass"
+            glib:is-gtype-struct-for="TreeModelFilter">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="visible">
+        <callback name="visible">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="TreeModelFilter" c:type="GtkTreeModelFilter*"/>
+            </parameter>
+            <parameter name="child_model" transfer-ownership="none">
+              <type name="TreeModel" c:type="GtkTreeModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="modify">
+        <callback name="modify">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="TreeModelFilter" c:type="GtkTreeModelFilter*"/>
+            </parameter>
+            <parameter name="child_model" transfer-ownership="none">
+              <type name="TreeModel" c:type="GtkTreeModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved0" introspectable="0">
+        <callback name="_gtk_reserved0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="TreeModelFilterModifyFunc"
+              c:type="GtkTreeModelFilterModifyFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="model" transfer-ownership="none">
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </parameter>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="TreeIter" c:type="GtkTreeIter*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="column" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="TreeModelFilterPrivate"
+            c:type="GtkTreeModelFilterPrivate"
+            disguised="1">
+    </record>
+    <callback name="TreeModelFilterVisibleFunc"
+              c:type="GtkTreeModelFilterVisibleFunc">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="model" transfer-ownership="none">
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </parameter>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="TreeIter" c:type="GtkTreeIter*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="TreeModelFlags"
+              glib:type-name="GtkTreeModelFlags"
+              glib:get-type="gtk_tree_model_flags_get_type"
+              c:type="GtkTreeModelFlags">
+      <member name="iters_persist"
+              value="1"
+              c:identifier="GTK_TREE_MODEL_ITERS_PERSIST"
+              glib:nick="iters-persist"/>
+      <member name="list_only"
+              value="2"
+              c:identifier="GTK_TREE_MODEL_LIST_ONLY"
+              glib:nick="list-only"/>
+    </bitfield>
+    <callback name="TreeModelForeachFunc" c:type="GtkTreeModelForeachFunc">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="model" transfer-ownership="none">
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </parameter>
+        <parameter name="path" transfer-ownership="none">
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </parameter>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="TreeIter" c:type="GtkTreeIter*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="TreeModelIface"
+            c:type="GtkTreeModelIface"
+            glib:is-gtype-struct-for="TreeModel">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="row_changed">
+        <callback name="row_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_model" transfer-ownership="none">
+              <type name="TreeModel" c:type="GtkTreeModel*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <type name="TreePath" c:type="GtkTreePath*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_inserted">
+        <callback name="row_inserted">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_model" transfer-ownership="none">
+              <type name="TreeModel" c:type="GtkTreeModel*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <type name="TreePath" c:type="GtkTreePath*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_has_child_toggled">
+        <callback name="row_has_child_toggled">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_model" transfer-ownership="none">
+              <type name="TreeModel" c:type="GtkTreeModel*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <type name="TreePath" c:type="GtkTreePath*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_deleted">
+        <callback name="row_deleted">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_model" transfer-ownership="none">
+              <type name="TreeModel" c:type="GtkTreeModel*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <type name="TreePath" c:type="GtkTreePath*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="rows_reordered">
+        <callback name="rows_reordered">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_model" transfer-ownership="none">
+              <type name="TreeModel" c:type="GtkTreeModel*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <type name="TreePath" c:type="GtkTreePath*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+            <parameter name="new_order" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_flags">
+        <callback name="get_flags">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">The flags supported by this interface.</doc>
+            <type name="TreeModelFlags" c:type="GtkTreeModelFlags"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_model" transfer-ownership="none">
+              <type name="TreeModel" c:type="GtkTreeModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_n_columns">
+        <callback name="get_n_columns">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">The number of columns.</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_model" transfer-ownership="none">
+              <type name="TreeModel" c:type="GtkTreeModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_column_type">
+        <callback name="get_column_type">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">The type of the column.</doc>
+            <type name="GType" c:type="GType"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_model" transfer-ownership="none">
+              <type name="TreeModel" c:type="GtkTreeModel*"/>
+            </parameter>
+            <parameter name="index_" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The column index.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_iter">
+        <callback name="get_iter">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE, if @iter was set.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_model" transfer-ownership="none">
+              <type name="TreeModel" c:type="GtkTreeModel*"/>
+            </parameter>
+            <parameter name="iter"
+                       direction="out"
+                       caller-allocates="1"
+                       transfer-ownership="none">
+              <doc xml:whitespace="preserve">The uninitialized #GtkTreeIter.</doc>
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The #GtkTreePath.</doc>
+              <type name="TreePath" c:type="GtkTreePath*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_path">
+        <callback name="get_path">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a newly-created #GtkTreePath.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_model" transfer-ownership="none">
+              <type name="TreeModel" c:type="GtkTreeModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The #GtkTreeIter.</doc>
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_value">
+        <callback name="get_value">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_model" transfer-ownership="none">
+              <type name="TreeModel" c:type="GtkTreeModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The #GtkTreeIter.</doc>
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The column to lookup the value at.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="value"
+                       direction="out"
+                       caller-allocates="1"
+                       transfer-ownership="none">
+              <doc xml:whitespace="preserve">An empty #GValue to set.</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="iter_next">
+        <callback name="iter_next">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if @iter has been changed to the next node.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_model" transfer-ownership="none">
+              <type name="TreeModel" c:type="GtkTreeModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The #GtkTreeIter.</doc>
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="iter_children">
+        <callback name="iter_children">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE, if @child has been set to the first child.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_model" transfer-ownership="none">
+              <type name="TreeModel" c:type="GtkTreeModel*"/>
+            </parameter>
+            <parameter name="iter"
+                       direction="out"
+                       caller-allocates="1"
+                       transfer-ownership="none">
+              <doc xml:whitespace="preserve">The new #GtkTreeIter to be set to the child.</doc>
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+            <parameter name="parent" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">The #GtkTreeIter, or %NULL</doc>
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="iter_has_child">
+        <callback name="iter_has_child">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if @iter has children.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_model" transfer-ownership="none">
+              <type name="TreeModel" c:type="GtkTreeModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The #GtkTreeIter to test for children.</doc>
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="iter_n_children">
+        <callback name="iter_n_children">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">The number of children of @iter.</doc>
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_model" transfer-ownership="none">
+              <type name="TreeModel" c:type="GtkTreeModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">The #GtkTreeIter, or %NULL.</doc>
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="iter_nth_child">
+        <callback name="iter_nth_child">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE, if @parent has an @n&lt;!-- --&gt;th child.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_model" transfer-ownership="none">
+              <type name="TreeModel" c:type="GtkTreeModel*"/>
+            </parameter>
+            <parameter name="iter"
+                       direction="out"
+                       caller-allocates="1"
+                       transfer-ownership="none">
+              <doc xml:whitespace="preserve">The #GtkTreeIter to set to the nth child.</doc>
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+            <parameter name="parent" transfer-ownership="none" allow-none="1">
+              <doc xml:whitespace="preserve">The #GtkTreeIter to get the child from, or %NULL.</doc>
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+            <parameter name="n" transfer-ownership="none">
+              <doc xml:whitespace="preserve">Then index of the desired child.</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="iter_parent">
+        <callback name="iter_parent">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE, if @iter is set to the parent of @child.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_model" transfer-ownership="none">
+              <type name="TreeModel" c:type="GtkTreeModel*"/>
+            </parameter>
+            <parameter name="iter"
+                       direction="out"
+                       caller-allocates="1"
+                       transfer-ownership="none">
+              <doc xml:whitespace="preserve">The new #GtkTreeIter to set to the parent.</doc>
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The #GtkTreeIter.</doc>
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="ref_node">
+        <callback name="ref_node">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_model" transfer-ownership="none">
+              <type name="TreeModel" c:type="GtkTreeModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The #GtkTreeIter.</doc>
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unref_node">
+        <callback name="unref_node">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_model" transfer-ownership="none">
+              <type name="TreeModel" c:type="GtkTreeModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The #GtkTreeIter.</doc>
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="TreeModelSort"
+           c:symbol-prefix="tree_model_sort"
+           c:type="GtkTreeModelSort"
+           parent="GObject.Object"
+           glib:type-name="GtkTreeModelSort"
+           glib:get-type="gtk_tree_model_sort_get_type"
+           glib:type-struct="TreeModelSortClass">
+      <implements name="TreeDragSource"/>
+      <implements name="TreeModel"/>
+      <implements name="TreeSortable"/>
+      <method name="clear_cache"
+              c:identifier="gtk_tree_model_sort_clear_cache">
+        <doc xml:whitespace="preserve">This function should almost never be called.  It clears the @tree_model_sort
+of any cached iterators that haven't been reffed with
+gtk_tree_model_ref_node().  This might be useful if the child model being
+sorted is static (and doesn't change often) and there has been a lot of
+unreffed access to nodes.  As a side effect of this function, all unreffed
+iters will be invalid.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="convert_child_iter_to_iter"
+              c:identifier="gtk_tree_model_sort_convert_child_iter_to_iter">
+        <doc xml:whitespace="preserve">Sets @sort_iter to point to the row in @tree_model_sort that corresponds to
+the row pointed at by @child_iter.  If @sort_iter was not set, %FALSE
+valid iterator pointer to a visible row in the child model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if @sort_iter was set, i.e. if @sort_iter is a</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">An uninitialized #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="child_iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter pointing to a row on the child model</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="convert_child_path_to_path"
+              c:identifier="gtk_tree_model_sort_convert_child_path_to_path">
+        <doc xml:whitespace="preserve">Converts @child_path to a path relative to @tree_model_sort.  That is,
+point to the same row in the sorted model.  If @child_path isn't a valid 
+path on the child model, then %NULL is returned.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly allocated #GtkTreePath, or %NULL</doc>
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreePath to convert</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="convert_iter_to_child_iter"
+              c:identifier="gtk_tree_model_sort_convert_iter_to_child_iter">
+        <doc xml:whitespace="preserve">Sets @child_iter to point to the row pointed to by @sorted_iter.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">An uninitialized #GtkTreeIter</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="sorted_iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter pointing to a row on @tree_model_sort.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="convert_path_to_child_path"
+              c:identifier="gtk_tree_model_sort_convert_path_to_child_path">
+        <doc xml:whitespace="preserve">Converts @sorted_path to a path on the child model of @tree_model_sort.  
+That is, @sorted_path points to a location in @tree_model_sort.  The 
+returned path will point to the same location in the model not being 
+sorted.  If @sorted_path does not point to a location in the child model, 
+%NULL is returned.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly allocated #GtkTreePath, or %NULL</doc>
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+        <parameters>
+          <parameter name="sorted_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreePath to convert</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_model" c:identifier="gtk_tree_model_sort_get_model">
+        <doc xml:whitespace="preserve">Returns the model the #GtkTreeModelSort is sorting.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the "child model" being sorted</doc>
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </return-value>
+      </method>
+      <method name="iter_is_valid"
+              c:identifier="gtk_tree_model_sort_iter_is_valid"
+              version="2.2">
+        <doc xml:whitespace="preserve">&lt;warning&gt;&lt;para&gt;
+This function is slow. Only use it for debugging and/or testing purposes.
+&lt;/para&gt;&lt;/warning&gt;
+Checks if the given iter is a valid iter for this #GtkTreeModelSort.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the iter is valid, %FALSE if the iter is invalid.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reset_default_sort_func"
+              c:identifier="gtk_tree_model_sort_reset_default_sort_func">
+        <doc xml:whitespace="preserve">This resets the default sort function to be in the 'unsorted' state.  That
+is, it is in the same order as the child model. It will re-sort the model
+to be in the same order as the child model only if the #GtkTreeModelSort
+is in 'unsorted' state.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="model"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="TreeModel"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="root" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="stamp" readable="0" private="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="child_flags" readable="0" private="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="child_model" readable="0" private="1">
+        <type name="TreeModel" c:type="GtkTreeModel*"/>
+      </field>
+      <field name="zero_ref_count" readable="0" private="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="sort_list" readable="0" private="1">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="sort_column_id" readable="0" private="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="order" readable="0" private="1">
+        <type name="SortType" c:type="GtkSortType"/>
+      </field>
+      <field name="default_sort_func" readable="0" private="1">
+        <type name="TreeIterCompareFunc" c:type="GtkTreeIterCompareFunc"/>
+      </field>
+      <field name="default_sort_data" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="default_sort_destroy" readable="0" private="1">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <field name="changed_id" readable="0" private="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="inserted_id" readable="0" private="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="has_child_toggled_id" readable="0" private="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="deleted_id" readable="0" private="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="reordered_id" readable="0" private="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </class>
+    <record name="TreeModelSortClass"
+            c:type="GtkTreeModelSortClass"
+            glib:is-gtype-struct-for="TreeModelSort">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="TreePath"
+            c:type="GtkTreePath"
+            glib:type-name="GtkTreePath"
+            glib:get-type="gtk_tree_path_get_type"
+            c:symbol-prefix="tree_path">
+      <constructor name="new" c:identifier="gtk_tree_path_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkTreePath.  This structure refers to a row.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly created #GtkTreePath.</doc>
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_first" c:identifier="gtk_tree_path_new_first">
+        <doc xml:whitespace="preserve">Creates a new #GtkTreePath.  The string representation of this path is "0"</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A new #GtkTreePath.</doc>
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_indices"
+                   c:identifier="gtk_tree_path_new_from_indices"
+                   version="2.2"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new path with @first_index and @varargs as indices.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly created #GtkTreePath.</doc>
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">first integer</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_string"
+                   c:identifier="gtk_tree_path_new_from_string">
+        <doc xml:whitespace="preserve">Creates a new #GtkTreePath initialized to @path.  @path is expected to be a
+colon separated list of numbers.  For example, the string "10:4:0" would
+create a path of depth 3 pointing to the 11th child of the root node, the 5th
+child of that 11th child, and the 1st child of that 5th child.  If an invalid
+path string is passed in, %NULL is returned.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly-created #GtkTreePath, or %NULL</doc>
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The string representation of a path.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="append_index" c:identifier="gtk_tree_path_append_index">
+        <doc xml:whitespace="preserve">Appends a new index to a path.  As a result, the depth of the path is
+increased.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The index.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="compare" c:identifier="gtk_tree_path_compare">
+        <doc xml:whitespace="preserve">Compares two paths.  If @a appears before @b in a tree, then -1 is returned.
+If @b appears before @a, then 1 is returned.  If the two nodes are equal,
+then 0 is returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The relative positions of @a and @b</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="b" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreePath to compare with.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="gtk_tree_path_copy">
+        <doc xml:whitespace="preserve">Creates a new #GtkTreePath as a copy of @path.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A new #GtkTreePath.</doc>
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+      </method>
+      <method name="down" c:identifier="gtk_tree_path_down">
+        <doc xml:whitespace="preserve">Moves @path to point to the first child of the current path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gtk_tree_path_free">
+        <doc xml:whitespace="preserve">Frees @path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_depth" c:identifier="gtk_tree_path_get_depth">
+        <doc xml:whitespace="preserve">Returns the current depth of @path.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The depth of @path</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_indices"
+              c:identifier="gtk_tree_path_get_indices"
+              shadowed-by="get_indices_with_depth">
+        <doc xml:whitespace="preserve">Returns the current indices of @path.  This is an array of integers, each
+representing a node in a tree.  This value should not be freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The current indices, or %NULL.</doc>
+          <type name="gint" c:type="gint*"/>
+        </return-value>
+      </method>
+      <method name="get_indices_with_depth"
+              c:identifier="gtk_tree_path_get_indices_with_depth"
+              shadows="get_indices"
+              version="3.0">
+        <doc xml:whitespace="preserve">Returns the current indices of @path.
+This is an array of integers, each representing a node in a tree.
+It also returns the number of elements in the array.
+The array should not be freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The current indices, or %NULL.</doc>
+          <array length="0" c:type="gint*">
+            <type name="gint"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="depth"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">Number of elements returned in the integer array</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_ancestor" c:identifier="gtk_tree_path_is_ancestor">
+        <doc xml:whitespace="preserve">Returns %TRUE if @descendant is a descendant of @path.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @descendant is contained inside @path</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="descendant" transfer-ownership="none">
+            <doc xml:whitespace="preserve">another #GtkTreePath</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_descendant" c:identifier="gtk_tree_path_is_descendant">
+        <doc xml:whitespace="preserve">Returns %TRUE if @path is a descendant of @ancestor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @ancestor contains @path somewhere below it</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="ancestor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">another #GtkTreePath</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="next" c:identifier="gtk_tree_path_next">
+        <doc xml:whitespace="preserve">Moves the @path to point to the next node at the current depth.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="prepend_index" c:identifier="gtk_tree_path_prepend_index">
+        <doc xml:whitespace="preserve">Prepends a new index to a path.  As a result, the depth of the path is
+increased.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The index.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prev" c:identifier="gtk_tree_path_prev">
+        <doc xml:whitespace="preserve">Moves the @path to point to the previous node at the current depth, 
+if it exists.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @path has a previous node, and the move was made.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="to_string" c:identifier="gtk_tree_path_to_string">
+        <doc xml:whitespace="preserve">Generates a string representation of the path.  This string is a ':'
+separated list of numbers.  For example, "4:10:0:3" would be an acceptable return value for this string.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly-allocated string.  Must be freed with g_free().</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="up" c:identifier="gtk_tree_path_up">
+        <doc xml:whitespace="preserve">Moves the @path to point to its parent node, if it has a parent.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @path has a parent, and the move was made.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="TreeRowReference"
+            c:type="GtkTreeRowReference"
+            glib:type-name="GtkTreeRowReference"
+            glib:get-type="gtk_tree_row_reference_get_type"
+            c:symbol-prefix="tree_row_reference">
+      <constructor name="new" c:identifier="gtk_tree_row_reference_new">
+        <doc xml:whitespace="preserve">Creates a row reference based on @path.  This reference will keep pointing 
+to the node pointed to by @path, so long as it exists.  It listens to all
+signals emitted by @model, and updates its path appropriately.  If @path
+isn't a valid path in @model, then %NULL is returned.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly allocated #GtkTreeRowReference, or %NULL</doc>
+          <type name="TreeRowReference" c:type="GtkTreeRowReference*"/>
+        </return-value>
+        <parameters>
+          <parameter name="model" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreeModel</doc>
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid #GtkTreePath to monitor</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_proxy"
+                   c:identifier="gtk_tree_row_reference_new_proxy">
+        <doc xml:whitespace="preserve">You do not need to use this function.  Creates a row reference based on
+so long as it exists.  If @path isn't a valid path in @model, then %NULL is
+returned.  However, unlike references created with
+gtk_tree_row_reference_new(), it does not listen to the model for changes.
+The creator of the row reference must do this explicitly using
+gtk_tree_row_reference_inserted(), gtk_tree_row_reference_deleted(),
+gtk_tree_row_reference_reordered().
+These functions must be called exactly once per proxy when the
+corresponding signal on the model is emitted. This single call
+updates all row references for that proxy. Since built-in GTK+
+objects like #GtkTreeView already use this mechanism internally,
+using them as the proxy object will produce unpredictable results.
+Further more, passing the same object as @model and @proxy
+doesn't work for reasons of internal implementation.
+This type of row reference is primarily meant by structures that need to
+carefully monitor exactly when a row reference updates itself, and is not
+generally needed by most applications.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly allocated #GtkTreeRowReference, or %NULL</doc>
+          <type name="TreeRowReference" c:type="GtkTreeRowReference*"/>
+        </return-value>
+        <parameters>
+          <parameter name="proxy" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A proxy #GObject</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="model" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreeModel</doc>
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid #GtkTreePath to monitor</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="gtk_tree_row_reference_copy"
+              version="2.2">
+        <doc xml:whitespace="preserve">Copies a #GtkTreeRowReference.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a copy of @reference.</doc>
+          <type name="TreeRowReference" c:type="GtkTreeRowReference*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gtk_tree_row_reference_free">
+        <doc xml:whitespace="preserve">Free's @reference. @reference may be %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_model"
+              c:identifier="gtk_tree_row_reference_get_model"
+              version="2.8">
+        <doc xml:whitespace="preserve">Returns the model that the row reference is monitoring.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the model</doc>
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </return-value>
+      </method>
+      <method name="get_path" c:identifier="gtk_tree_row_reference_get_path">
+        <doc xml:whitespace="preserve">Returns a path that the row reference currently points to, or %NULL if the
+path pointed to is no longer valid.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A current path, or %NULL.</doc>
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+      </method>
+      <method name="valid" c:identifier="gtk_tree_row_reference_valid">
+        <doc xml:whitespace="preserve">Returns %TRUE if the @reference is non-%NULL and refers to a current valid
+path.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @reference points to a valid path.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="TreeSelection"
+           c:symbol-prefix="tree_selection"
+           c:type="GtkTreeSelection"
+           parent="GObject.Object"
+           glib:type-name="GtkTreeSelection"
+           glib:get-type="gtk_tree_selection_get_type"
+           glib:type-struct="TreeSelectionClass">
+      <method name="count_selected_rows"
+              c:identifier="gtk_tree_selection_count_selected_rows"
+              version="2.2">
+        <doc xml:whitespace="preserve">Returns the number of rows that have been selected in @tree.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of rows selected.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_mode" c:identifier="gtk_tree_selection_get_mode">
+        <doc xml:whitespace="preserve">Gets the selection mode for @selection. See
+gtk_tree_selection_set_mode().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current selection mode</doc>
+          <type name="SelectionMode" c:type="GtkSelectionMode"/>
+        </return-value>
+      </method>
+      <method name="get_select_function"
+              c:identifier="gtk_tree_selection_get_select_function"
+              version="2.14"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns the current selection function.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">The function.</doc>
+          <type name="TreeSelectionFunc" c:type="GtkTreeSelectionFunc"/>
+        </return-value>
+      </method>
+      <method name="get_selected"
+              c:identifier="gtk_tree_selection_get_selected">
+        <doc xml:whitespace="preserve">Sets @iter to the currently selected node if @selection is set to
+#GTK_SELECTION_SINGLE or #GTK_SELECTION_BROWSE.  @iter may be NULL if you
+just want to test if @selection has any selected nodes.  @model is filled
+with the current model as a convenience.  This function will not work if you
+use @selection is #GTK_SELECTION_MULTIPLE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if there is a selected node.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="model"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A pointer to set to the #GtkTreeModel, or NULL.</doc>
+            <type name="TreeModel" c:type="GtkTreeModel**"/>
+          </parameter>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">The #GtkTreeIter, or NULL.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_selected_rows"
+              c:identifier="gtk_tree_selection_get_selected_rows"
+              version="2.2">
+        <doc xml:whitespace="preserve">Creates a list of path of all selected rows. Additionally, if you are
+planning on modifying the model after calling this function, you may
+want to convert the returned list into a list of #GtkTreeRowReference&lt;!-- --&gt;s.
+To do this, you can use gtk_tree_row_reference_new().
+To free the return value, use:
+|[
+g_list_foreach (list, (GFunc) gtk_tree_path_free, NULL);
+g_list_free (list);
+]|</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GList containing a #GtkTreePath for each selected row.</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="TreePath"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="model"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A pointer to set to the #GtkTreeModel, or %NULL.</doc>
+            <type name="TreeModel" c:type="GtkTreeModel**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tree_view"
+              c:identifier="gtk_tree_selection_get_tree_view">
+        <doc xml:whitespace="preserve">Returns the tree view associated with @selection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GtkTreeView</doc>
+          <type name="TreeView" c:type="GtkTreeView*"/>
+        </return-value>
+      </method>
+      <method name="get_user_data"
+              c:identifier="gtk_tree_selection_get_user_data"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns the user data for the selection function.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">The user data.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="iter_is_selected"
+              c:identifier="gtk_tree_selection_iter_is_selected">
+        <doc xml:whitespace="preserve">Returns %TRUE if the row at @iter is currently selected.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if @iter is selected</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="path_is_selected"
+              c:identifier="gtk_tree_selection_path_is_selected">
+        <doc xml:whitespace="preserve">Returns %TRUE if the row pointed to by @path is currently selected.  If @path
+does not point to a valid location, %FALSE is returned</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @path is selected.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreePath to check selection on.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_all" c:identifier="gtk_tree_selection_select_all">
+        <doc xml:whitespace="preserve">Selects all the nodes. @selection must be set to #GTK_SELECTION_MULTIPLE
+mode.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="select_iter" c:identifier="gtk_tree_selection_select_iter">
+        <doc xml:whitespace="preserve">Selects the specified iterator.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeIter to be selected.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_path" c:identifier="gtk_tree_selection_select_path">
+        <doc xml:whitespace="preserve">Select the row at @path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreePath to be selected.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_range"
+              c:identifier="gtk_tree_selection_select_range">
+        <doc xml:whitespace="preserve">Selects a range of nodes, determined by @start_path and @end_path inclusive.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The initial node of the range.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="end_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The final node of the range.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="selected_foreach"
+              c:identifier="gtk_tree_selection_selected_foreach">
+        <doc xml:whitespace="preserve">Calls a function for each selected node. Note that you cannot modify
+the tree or selection from within this function. As a result,
+gtk_tree_selection_get_selected_rows() might be more useful.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">The function to call for each selected node.</doc>
+            <type name="TreeSelectionForeachFunc"
+                  c:type="GtkTreeSelectionForeachFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to the function.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_mode" c:identifier="gtk_tree_selection_set_mode">
+        <doc xml:whitespace="preserve">Sets the selection mode of the @selection.  If the previous type was
+#GTK_SELECTION_MULTIPLE, then the anchor is kept selected, if it was
+previously selected.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The selection mode</doc>
+            <type name="SelectionMode" c:type="GtkSelectionMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_select_function"
+              c:identifier="gtk_tree_selection_set_select_function">
+        <doc xml:whitespace="preserve">Sets the selection function.
+If set, this function is called before any node is selected or unselected,
+giving some control over which nodes are selected. The select function
+should return %TRUE if the state of the node may be toggled, and %FALSE
+if the state of the node should be left unchanged.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">The selection function. May be %NULL</doc>
+            <type name="TreeSelectionFunc" c:type="GtkTreeSelectionFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The selection function's data. May be %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">The destroy function for user data.  May be %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unselect_all"
+              c:identifier="gtk_tree_selection_unselect_all">
+        <doc xml:whitespace="preserve">Unselects all the nodes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unselect_iter"
+              c:identifier="gtk_tree_selection_unselect_iter">
+        <doc xml:whitespace="preserve">Unselects the specified iterator.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeIter to be unselected.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unselect_path"
+              c:identifier="gtk_tree_selection_unselect_path">
+        <doc xml:whitespace="preserve">Unselects the row at @path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreePath to be unselected.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unselect_range"
+              c:identifier="gtk_tree_selection_unselect_range"
+              version="2.2">
+        <doc xml:whitespace="preserve">Unselects a range of nodes, determined by @start_path and @end_path
+inclusive.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The initial node of the range.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="end_path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The initial node of the range.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="tree_view">
+        <type name="TreeView" c:type="GtkTreeView*"/>
+      </field>
+      <field name="type">
+        <type name="SelectionMode" c:type="GtkSelectionMode"/>
+      </field>
+      <field name="user_func">
+        <type name="TreeSelectionFunc" c:type="GtkTreeSelectionFunc"/>
+      </field>
+      <field name="user_data">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="destroy">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <glib:signal name="changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="TreeSelectionClass"
+            c:type="GtkTreeSelectionClass"
+            glib:is-gtype-struct-for="TreeSelection">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="changed">
+        <callback name="changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="selection" transfer-ownership="none">
+              <type name="TreeSelection" c:type="GtkTreeSelection*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="TreeSelectionForeachFunc"
+              c:type="GtkTreeSelectionForeachFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="model" transfer-ownership="none">
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </parameter>
+        <parameter name="path" transfer-ownership="none">
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </parameter>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="TreeIter" c:type="GtkTreeIter*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="TreeSelectionFunc" c:type="GtkTreeSelectionFunc">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="selection" transfer-ownership="none">
+          <type name="TreeSelection" c:type="GtkTreeSelection*"/>
+        </parameter>
+        <parameter name="model" transfer-ownership="none">
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </parameter>
+        <parameter name="path" transfer-ownership="none">
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </parameter>
+        <parameter name="path_currently_selected" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <interface name="TreeSortable"
+               c:symbol-prefix="tree_sortable"
+               c:type="GtkTreeSortable"
+               glib:type-name="GtkTreeSortable"
+               glib:get-type="gtk_tree_sortable_get_type"
+               glib:type-struct="TreeSortableIface">
+      <prerequisite name="TreeModel"/>
+      <virtual-method name="get_sort_column_id" invoker="get_sort_column_id">
+        <doc xml:whitespace="preserve">Fills in @sort_column_id and @order with the current sort column and the
+order. It returns %TRUE unless the @sort_column_id is 
+%GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID or 
+%GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID.
+column ids.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the sort column is not one of the special sort</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_column_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The sort column id to be filled in</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="order" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkSortType to be filled in</doc>
+            <type name="SortType" c:type="GtkSortType*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="has_default_sort_func"
+                      invoker="has_default_sort_func">
+        <doc xml:whitespace="preserve">Returns %TRUE if the model has a default sort function. This is used
+primarily by GtkTreeViewColumns in order to determine if a model can 
+go back to the default state, or not.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if the model has a default sort function</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_default_sort_func"
+                      invoker="set_default_sort_func">
+        <doc xml:whitespace="preserve">Sets the default comparison function used when sorting to be @sort_func.  
+If the current sort column id of @sortable is
+%GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, then the model will sort using 
+this function.
+If @sort_func is %NULL, then there will be no default comparison function.
+This means that once the model  has been sorted, it can't go back to the
+default state. In this case, when the current sort column id of @sortable 
+is %GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, the model will be unsorted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">The comparison function</doc>
+            <type name="TreeIterCompareFunc" c:type="GtkTreeIterCompareFunc"/>
+          </parameter>
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     closure="1">
+            <doc xml:whitespace="preserve">User data to pass to @sort_func, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="async">
+            <doc xml:whitespace="preserve">Destroy notifier of @user_data, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_sort_column_id" invoker="set_sort_column_id">
+        <doc xml:whitespace="preserve">Sets the current sort column to be @sort_column_id. The @sortable will
+resort itself to reflect this change, after emitting a
+#GtkTreeSortable::sort-column-changed signal. @sort_column_id may either be
+a regular column id, or one of the following special values:
+&lt;variablelist&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;%GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID&lt;/term&gt;
+&lt;listitem&gt;the default sort function will be used, if it is set&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;%GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID&lt;/term&gt;
+&lt;listitem&gt;no sorting will occur&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;/variablelist&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_column_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the sort column id to set</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="order" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The sort order of the column</doc>
+            <type name="SortType" c:type="GtkSortType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_sort_func" invoker="set_sort_func">
+        <doc xml:whitespace="preserve">Sets the comparison function used when sorting to be @sort_func. If the
+current sort column id of @sortable is the same as @sort_column_id, then 
+the model will sort using this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_column_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the sort column id to set the function for</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="sort_func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <doc xml:whitespace="preserve">The comparison function</doc>
+            <type name="TreeIterCompareFunc" c:type="GtkTreeIterCompareFunc"/>
+          </parameter>
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     closure="2">
+            <doc xml:whitespace="preserve">User data to pass to @sort_func, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="async">
+            <doc xml:whitespace="preserve">Destroy notifier of @user_data, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_sort_column_id"
+              c:identifier="gtk_tree_sortable_get_sort_column_id">
+        <doc xml:whitespace="preserve">Fills in @sort_column_id and @order with the current sort column and the
+order. It returns %TRUE unless the @sort_column_id is 
+%GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID or 
+%GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID.
+column ids.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the sort column is not one of the special sort</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_column_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The sort column id to be filled in</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="order" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkSortType to be filled in</doc>
+            <type name="SortType" c:type="GtkSortType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_default_sort_func"
+              c:identifier="gtk_tree_sortable_has_default_sort_func">
+        <doc xml:whitespace="preserve">Returns %TRUE if the model has a default sort function. This is used
+primarily by GtkTreeViewColumns in order to determine if a model can 
+go back to the default state, or not.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if the model has a default sort function</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_default_sort_func"
+              c:identifier="gtk_tree_sortable_set_default_sort_func">
+        <doc xml:whitespace="preserve">Sets the default comparison function used when sorting to be @sort_func.  
+If the current sort column id of @sortable is
+%GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, then the model will sort using 
+this function.
+If @sort_func is %NULL, then there will be no default comparison function.
+This means that once the model  has been sorted, it can't go back to the
+default state. In this case, when the current sort column id of @sortable 
+is %GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, the model will be unsorted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">The comparison function</doc>
+            <type name="TreeIterCompareFunc" c:type="GtkTreeIterCompareFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">User data to pass to @sort_func, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="async">
+            <doc xml:whitespace="preserve">Destroy notifier of @user_data, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sort_column_id"
+              c:identifier="gtk_tree_sortable_set_sort_column_id">
+        <doc xml:whitespace="preserve">Sets the current sort column to be @sort_column_id. The @sortable will
+resort itself to reflect this change, after emitting a
+#GtkTreeSortable::sort-column-changed signal. @sort_column_id may either be
+a regular column id, or one of the following special values:
+&lt;variablelist&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;%GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID&lt;/term&gt;
+&lt;listitem&gt;the default sort function will be used, if it is set&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;%GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID&lt;/term&gt;
+&lt;listitem&gt;no sorting will occur&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;/variablelist&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_column_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the sort column id to set</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="order" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The sort order of the column</doc>
+            <type name="SortType" c:type="GtkSortType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sort_func"
+              c:identifier="gtk_tree_sortable_set_sort_func">
+        <doc xml:whitespace="preserve">Sets the comparison function used when sorting to be @sort_func. If the
+current sort column id of @sortable is the same as @sort_column_id, then 
+the model will sort using this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_column_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the sort column id to set the function for</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="sort_func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <doc xml:whitespace="preserve">The comparison function</doc>
+            <type name="TreeIterCompareFunc" c:type="GtkTreeIterCompareFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">User data to pass to @sort_func, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="async">
+            <doc xml:whitespace="preserve">Destroy notifier of @user_data, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sort_column_changed"
+              c:identifier="gtk_tree_sortable_sort_column_changed">
+        <doc xml:whitespace="preserve">Emits a #GtkTreeSortable::sort-column-changed signal on @sortable.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <glib:signal name="sort-column-changed">
+        <doc xml:whitespace="preserve">The ::sort-column-changed signal is emitted when the sort column
+or sort order of @sortable is changed. The signal is emitted before
+the contents of @sortable are resorted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </interface>
+    <record name="TreeSortableIface"
+            c:type="GtkTreeSortableIface"
+            glib:is-gtype-struct-for="TreeSortable">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="sort_column_changed">
+        <callback name="sort_column_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="sortable" transfer-ownership="none">
+              <type name="TreeSortable" c:type="GtkTreeSortable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_sort_column_id">
+        <callback name="get_sort_column_id">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the sort column is not one of the special sort</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sortable" transfer-ownership="none">
+              <type name="TreeSortable" c:type="GtkTreeSortable*"/>
+            </parameter>
+            <parameter name="sort_column_id" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The sort column id to be filled in</doc>
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="order" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The #GtkSortType to be filled in</doc>
+              <type name="SortType" c:type="GtkSortType*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_sort_column_id">
+        <callback name="set_sort_column_id">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="sortable" transfer-ownership="none">
+              <type name="TreeSortable" c:type="GtkTreeSortable*"/>
+            </parameter>
+            <parameter name="sort_column_id" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the sort column id to set</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="order" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The sort order of the column</doc>
+              <type name="SortType" c:type="GtkSortType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_sort_func">
+        <callback name="set_sort_func">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="sortable" transfer-ownership="none">
+              <type name="TreeSortable" c:type="GtkTreeSortable*"/>
+            </parameter>
+            <parameter name="sort_column_id" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the sort column id to set the function for</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="sort_func"
+                       transfer-ownership="none"
+                       scope="notified"
+                       closure="3"
+                       destroy="4">
+              <doc xml:whitespace="preserve">The comparison function</doc>
+              <type name="TreeIterCompareFunc"
+                    c:type="GtkTreeIterCompareFunc"/>
+            </parameter>
+            <parameter name="user_data"
+                       transfer-ownership="none"
+                       allow-none="1"
+                       closure="3">
+              <doc xml:whitespace="preserve">User data to pass to @sort_func, or %NULL</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+            <parameter name="destroy"
+                       transfer-ownership="none"
+                       allow-none="1"
+                       scope="async">
+              <doc xml:whitespace="preserve">Destroy notifier of @user_data, or %NULL</doc>
+              <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_default_sort_func">
+        <callback name="set_default_sort_func">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="sortable" transfer-ownership="none">
+              <type name="TreeSortable" c:type="GtkTreeSortable*"/>
+            </parameter>
+            <parameter name="sort_func"
+                       transfer-ownership="none"
+                       scope="notified"
+                       closure="2"
+                       destroy="3">
+              <doc xml:whitespace="preserve">The comparison function</doc>
+              <type name="TreeIterCompareFunc"
+                    c:type="GtkTreeIterCompareFunc"/>
+            </parameter>
+            <parameter name="user_data"
+                       transfer-ownership="none"
+                       allow-none="1"
+                       closure="2">
+              <doc xml:whitespace="preserve">User data to pass to @sort_func, or %NULL</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+            <parameter name="destroy"
+                       transfer-ownership="none"
+                       allow-none="1"
+                       scope="async">
+              <doc xml:whitespace="preserve">Destroy notifier of @user_data, or %NULL</doc>
+              <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="has_default_sort_func">
+        <callback name="has_default_sort_func">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE, if the model has a default sort function</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sortable" transfer-ownership="none">
+              <type name="TreeSortable" c:type="GtkTreeSortable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="TreeStore"
+           c:symbol-prefix="tree_store"
+           c:type="GtkTreeStore"
+           parent="GObject.Object"
+           glib:type-name="GtkTreeStore"
+           glib:get-type="gtk_tree_store_get_type"
+           glib:type-struct="TreeStoreClass">
+      <implements name="Buildable"/>
+      <implements name="TreeDragDest"/>
+      <implements name="TreeDragSource"/>
+      <implements name="TreeModel"/>
+      <implements name="TreeSortable"/>
+      <constructor name="new"
+                   c:identifier="gtk_tree_store_new"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new tree store as with @n_columns columns each of the types passed
+in.  Note that only types derived from standard GObject fundamental types 
+are supported. 
+As an example, &lt;literal&gt;gtk_tree_store_new (3, G_TYPE_INT, G_TYPE_STRING,
+GDK_TYPE_PIXBUF);&lt;/literal&gt; will create a new #GtkTreeStore with three columns, of type
+&lt;type&gt;int&lt;/type&gt;, &lt;type&gt;string&lt;/type&gt; and #GdkPixbuf respectively.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkTreeStore</doc>
+          <type name="TreeStore" c:type="GtkTreeStore*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of columns in the tree store</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="newv" c:identifier="gtk_tree_store_newv">
+        <doc xml:whitespace="preserve">Non vararg creation function.  Used primarily by language bindings.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkTreeStore</doc>
+          <type name="TreeStore" c:type="GtkTreeStore*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of columns in the tree store</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="types" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of #GType types for the columns, from first to last</doc>
+            <array length="0" c:type="GType*">
+              <type name="GType"/>
+            </array>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="append" c:identifier="gtk_tree_store_append">
+        <doc xml:whitespace="preserve">Appends a new row to @tree_store.  If @parent is non-%NULL, then it will append the
+new row after the last child of @parent, otherwise it will append a row to
+the top level.  @iter will be changed to point to this new row.  The row will
+be empty after this function is called.  To fill in values, you need to call
+gtk_tree_store_set() or gtk_tree_store_set_value().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">An unset #GtkTreeIter to set to the appended row</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter, or %NULL</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear" c:identifier="gtk_tree_store_clear">
+        <doc xml:whitespace="preserve">Removes all rows from @tree_store</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="insert" c:identifier="gtk_tree_store_insert">
+        <doc xml:whitespace="preserve">Creates a new row at @position.  If parent is non-%NULL, then the row will be
+made a child of @parent.  Otherwise, the row will be created at the toplevel.
+If @position is larger than the number of rows at that level, then the new
+row will be inserted to the end of the list.  @iter will be changed to point
+to this new row.  The row will be empty after this function is called.  To
+fill in values, you need to call gtk_tree_store_set() or
+gtk_tree_store_set_value().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">An unset #GtkTreeIter to set to the new row</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter, or %NULL</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position to insert the new row</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_after" c:identifier="gtk_tree_store_insert_after">
+        <doc xml:whitespace="preserve">Inserts a new row after @sibling.  If @sibling is %NULL, then the row will be
+prepended to @parent 's children.  If @parent and @sibling are %NULL, then
+the row will be prepended to the toplevel.  If both @sibling and @parent are
+set, then @parent must be the parent of @sibling.  When @sibling is set,
+this function is called.  To fill in values, you need to call
+gtk_tree_store_set() or gtk_tree_store_set_value().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">An unset #GtkTreeIter to set to the new row</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter, or %NULL</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter, or %NULL</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_before" c:identifier="gtk_tree_store_insert_before">
+        <doc xml:whitespace="preserve">Inserts a new row before @sibling.  If @sibling is %NULL, then the row will
+be appended to @parent 's children.  If @parent and @sibling are %NULL, then
+the row will be appended to the toplevel.  If both @sibling and @parent are
+set, then @parent must be the parent of @sibling.  When @sibling is set,
+this function is called.  To fill in values, you need to call
+gtk_tree_store_set() or gtk_tree_store_set_value().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">An unset #GtkTreeIter to set to the new row</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter, or %NULL</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter, or %NULL</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_with_values"
+              c:identifier="gtk_tree_store_insert_with_values"
+              version="2.10"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new row at @position.  @iter will be changed to point to this
+new row.  If @position is larger than the number of rows on the list, then
+the new row will be appended to the list.  The row will be filled with
+the values given to this function.
+Calling
+&lt;literal&gt;gtk_tree_store_insert_with_values (tree_store, iter, position, ...)&lt;/literal&gt;
+has the same effect as calling
+|[
+gtk_tree_store_insert (tree_store, iter, position);
+gtk_tree_store_set (tree_store, iter, ...);
+]|
+with the different that the former will only emit a row_inserted signal,
+while the latter will emit row_inserted, row_changed and if the tree store
+is sorted, rows_reordered.  Since emitting the rows_reordered signal
+repeatedly can affect the performance of the program,
+gtk_tree_store_insert_with_values() should generally be preferred when
+inserting rows in a sorted tree store.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">An unset #GtkTreeIter to set the new row, or %NULL.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter, or %NULL</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position to insert the new row</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_with_valuesv"
+              c:identifier="gtk_tree_store_insert_with_valuesv"
+              version="2.10">
+        <doc xml:whitespace="preserve">A variant of gtk_tree_store_insert_with_values() which takes
+the columns and values as two arrays, instead of varargs.  This
+function is mainly intended for language bindings.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">An unset #GtkTreeIter to set the new row, or %NULL.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter, or %NULL</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position to insert the new row</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of column numbers</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of GValues</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="n_values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of the @columns and @values arrays</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_ancestor" c:identifier="gtk_tree_store_is_ancestor">
+        <doc xml:whitespace="preserve">Returns %TRUE if @iter is an ancestor of @descendant.  That is, @iter is the
+parent (or grandparent or great-grandparent) of @descendant.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if @iter is an ancestor of @descendant</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="descendant" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_depth" c:identifier="gtk_tree_store_iter_depth">
+        <doc xml:whitespace="preserve">Returns the depth of @iter.  This will be 0 for anything on the root level, 1
+for anything down a level, etc.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The depth of @iter</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_is_valid"
+              c:identifier="gtk_tree_store_iter_is_valid"
+              version="2.2">
+        <doc xml:whitespace="preserve">purposes.
+Checks if the given iter is a valid iter for this #GtkTreeStore.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the iter is valid, %FALSE if the iter is invalid.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_after"
+              c:identifier="gtk_tree_store_move_after"
+              version="2.2">
+        <doc xml:whitespace="preserve">Moves @iter in @tree_store to the position after @position. @iter and
+works with unsorted stores. If @position is %NULL, @iter will be moved
+to the start of the level.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_before"
+              c:identifier="gtk_tree_store_move_before"
+              version="2.2">
+        <doc xml:whitespace="preserve">Moves @iter in @tree_store to the position before @position. @iter and
+works with unsorted stores. If @position is %NULL, @iter will be
+moved to the end of the level.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A #GtkTreeIter or %NULL.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend" c:identifier="gtk_tree_store_prepend">
+        <doc xml:whitespace="preserve">Prepends a new row to @tree_store.  If @parent is non-%NULL, then it will prepend
+the new row before the first child of @parent, otherwise it will prepend a row
+to the top level.  @iter will be changed to point to this new row.  The row
+will be empty after this function is called.  To fill in values, you need to
+call gtk_tree_store_set() or gtk_tree_store_set_value().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">An unset #GtkTreeIter to set to the prepended row</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter, or %NULL</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove" c:identifier="gtk_tree_store_remove">
+        <doc xml:whitespace="preserve">Removes @iter from @tree_store.  After being removed, @iter is set to the
+next valid row at that level, or invalidated if it previously pointed to the
+last one.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter is still valid, %FALSE if not.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reorder"
+              c:identifier="gtk_tree_store_reorder"
+              version="2.2">
+        <doc xml:whitespace="preserve">Reorders the children of @parent in @tree_store to follow the order
+indicated by @new_order. Note that this function only works with
+unsorted stores.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="new_order" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of integers mapping the new position of each child to its old position before the re-ordering, i.e. @new_order&lt;literal&gt;[newpos] = oldpos&lt;/literal&gt;.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set" c:identifier="gtk_tree_store_set" introspectable="0">
+        <doc xml:whitespace="preserve">Sets the value of one or more cells in the row referenced by @iter.
+The variable argument list should contain integer column numbers,
+each column number followed by the value to be set. 
+The list is terminated by a -1. For example, to set column 0 with type
+%G_TYPE_STRING to "Foo", you would write 
+&lt;literal&gt;gtk_tree_store_set (store, iter, 0, "Foo", -1)&lt;/literal&gt;.
+The value will be referenced by the store if it is a %G_TYPE_OBJECT, and it
+will be copied if it is a %G_TYPE_STRING or %G_TYPE_BOXED.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter for the row being modified</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_column_types"
+              c:identifier="gtk_tree_store_set_column_types">
+        <doc xml:whitespace="preserve">This function is meant primarily for #GObjects that inherit from 
+#GtkTreeStore, and should only be used when constructing a new 
+#GtkTreeStore.  It will not function after a row has been added, 
+or a method on the #GtkTreeModel interface is called.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Number of columns for the tree store</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="types" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An array of #GType types, one for each column</doc>
+            <array length="0" c:type="GType*">
+              <type name="GType"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_valist"
+              c:identifier="gtk_tree_store_set_valist"
+              introspectable="0">
+        <doc xml:whitespace="preserve">See gtk_tree_store_set(); this version takes a &lt;type&gt;va_list&lt;/type&gt; for
+use by language bindings.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter for the row being modified</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="var_args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">&lt;type&gt;va_list&lt;/type&gt; of column/value pairs</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value" c:identifier="gtk_tree_store_set_value">
+        <doc xml:whitespace="preserve">Sets the data in the cell specified by @iter and @column.
+The type of @value must be convertible to the type of the
+column.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter for the row being modified</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">column number to modify</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new value for the cell</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_valuesv"
+              c:identifier="gtk_tree_store_set_valuesv"
+              version="2.12">
+        <doc xml:whitespace="preserve">A variant of gtk_tree_store_set_valist() which takes
+the columns and values as two arrays, instead of varargs.  This
+function is mainly intended for language bindings or in case
+the number of columns to change is not known until run-time.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A valid #GtkTreeIter for the row being modified</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of column numbers</doc>
+            <array length="3" c:type="gint*">
+              <type name="gint"/>
+            </array>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of GValues</doc>
+            <array length="3" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+          <parameter name="n_values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of the @columns and @values arrays</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="swap" c:identifier="gtk_tree_store_swap" version="2.2">
+        <doc xml:whitespace="preserve">Swaps @a and @b in the same level of @tree_store. Note that this function
+only works with unsorted stores.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="a" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="b" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Another #GtkTreeIter.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="stamp">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="root">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="last">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="n_columns">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="sort_column_id">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="sort_list">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="order">
+        <type name="SortType" c:type="GtkSortType"/>
+      </field>
+      <field name="column_headers">
+        <type name="GType" c:type="GType*"/>
+      </field>
+      <field name="default_sort_func">
+        <type name="TreeIterCompareFunc" c:type="GtkTreeIterCompareFunc"/>
+      </field>
+      <field name="default_sort_data">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="default_sort_destroy">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <field name="columns_dirty" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </class>
+    <record name="TreeStoreClass"
+            c:type="GtkTreeStoreClass"
+            glib:is-gtype-struct-for="TreeStore">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="TreeView"
+           c:symbol-prefix="tree_view"
+           c:type="GtkTreeView"
+           parent="Container"
+           glib:type-name="GtkTreeView"
+           glib:get-type="gtk_tree_view_get_type"
+           glib:type-struct="TreeViewClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_tree_view_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkTreeView widget.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A newly created #GtkTreeView widget.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_model"
+                   c:identifier="gtk_tree_view_new_with_model">
+        <doc xml:whitespace="preserve">Creates a new #GtkTreeView widget with the model initialized to @model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A newly created #GtkTreeView widget.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="model" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the model.</doc>
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="append_column" c:identifier="gtk_tree_view_append_column">
+        <doc xml:whitespace="preserve">Appends @column to the list of columns. If @tree_view has "fixed_height"
+mode enabled, then @column must have its "sizing" property set to be
+GTK_TREE_VIEW_COLUMN_FIXED.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of columns in @tree_view after appending.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeViewColumn to add.</doc>
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="collapse_all" c:identifier="gtk_tree_view_collapse_all">
+        <doc xml:whitespace="preserve">Recursively collapses all visible, expanded nodes in @tree_view.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="collapse_row" c:identifier="gtk_tree_view_collapse_row">
+        <doc xml:whitespace="preserve">Collapses a row (hides its child rows, if they exist).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the row was collapsed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">path to a row in the @tree_view</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="columns_autosize"
+              c:identifier="gtk_tree_view_columns_autosize">
+        <doc xml:whitespace="preserve">Resizes all columns to their optimal width. Only works after the
+treeview has been realized.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="convert_bin_window_to_tree_coords"
+              c:identifier="gtk_tree_view_convert_bin_window_to_tree_coords"
+              version="2.12">
+        <doc xml:whitespace="preserve">Converts bin_window coordinates to coordinates for the
+tree (the full scrollable area of the tree).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="bx" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate relative to bin_window</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="by" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate relative to bin_window</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="tx" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for tree X coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="ty" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for tree Y coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="convert_bin_window_to_widget_coords"
+              c:identifier="gtk_tree_view_convert_bin_window_to_widget_coords"
+              version="2.12">
+        <doc xml:whitespace="preserve">Converts bin_window coordinates (see gtk_tree_view_get_bin_window())
+to widget relative coordinates.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="bx" transfer-ownership="none">
+            <doc xml:whitespace="preserve">bin_window X coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="by" transfer-ownership="none">
+            <doc xml:whitespace="preserve">bin_window Y coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="wx" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for widget X coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="wy" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for widget Y coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="convert_tree_to_bin_window_coords"
+              c:identifier="gtk_tree_view_convert_tree_to_bin_window_coords"
+              version="2.12">
+        <doc xml:whitespace="preserve">Converts tree coordinates (coordinates in full scrollable area of the tree)
+to bin_window coordinates.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tx" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tree X coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="ty" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tree Y coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="bx" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for X coordinate relative to bin_window</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="by" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for Y coordinate relative to bin_window</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="convert_tree_to_widget_coords"
+              c:identifier="gtk_tree_view_convert_tree_to_widget_coords"
+              version="2.12">
+        <doc xml:whitespace="preserve">Converts tree coordinates (coordinates in full scrollable area of the tree)
+to widget coordinates.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tx" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate relative to the tree</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="ty" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate relative to the tree</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="wx" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for widget X coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="wy" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for widget Y coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="convert_widget_to_bin_window_coords"
+              c:identifier="gtk_tree_view_convert_widget_to_bin_window_coords"
+              version="2.12">
+        <doc xml:whitespace="preserve">Converts widget coordinates to coordinates for the bin_window
+(see gtk_tree_view_get_bin_window()).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wx" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate relative to the widget</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="wy" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate relative to the widget</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="bx" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for bin_window X coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="by" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for bin_window Y coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="convert_widget_to_tree_coords"
+              c:identifier="gtk_tree_view_convert_widget_to_tree_coords"
+              version="2.12">
+        <doc xml:whitespace="preserve">Converts widget coordinates to coordinates for the
+tree (the full scrollable area of the tree).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wx" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate relative to the widget</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="wy" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate relative to the widget</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="tx" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for tree X coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="ty" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for tree Y coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_row_drag_icon"
+              c:identifier="gtk_tree_view_create_row_drag_icon">
+        <doc xml:whitespace="preserve">Creates a #GdkPixmap representation of the row at @path.
+This image is used for a drag icon.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly-allocated pixmap of the drag icon.</doc>
+          <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTreePath in @tree_view</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="enable_model_drag_dest"
+              c:identifier="gtk_tree_view_enable_model_drag_dest">
+        <doc xml:whitespace="preserve">Turns @tree_view into a drop destination for automatic DND. Calling
+this method sets #GtkTreeView:reorderable to %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="targets" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the table of targets that the drag will support</doc>
+            <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+          </parameter>
+          <parameter name="n_targets" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of items in @targets</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="actions" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the bitmask of possible actions for a drag from this widget</doc>
+            <type name="Gdk.DragAction" c:type="GdkDragAction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="enable_model_drag_source"
+              c:identifier="gtk_tree_view_enable_model_drag_source">
+        <doc xml:whitespace="preserve">Turns @tree_view into a drag source for automatic DND. Calling this
+method sets #GtkTreeView:reorderable to %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_button_mask" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Mask of allowed buttons to start drag</doc>
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+          <parameter name="targets" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the table of targets that the drag will support</doc>
+            <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+          </parameter>
+          <parameter name="n_targets" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of items in @targets</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="actions" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the bitmask of possible actions for a drag from this widget</doc>
+            <type name="Gdk.DragAction" c:type="GdkDragAction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="expand_all" c:identifier="gtk_tree_view_expand_all">
+        <doc xml:whitespace="preserve">Recursively expands all nodes in the @tree_view.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="expand_row" c:identifier="gtk_tree_view_expand_row">
+        <doc xml:whitespace="preserve">Opens the row so its children are visible.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the row existed and had children</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">path to a row</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="open_all" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to recursively expand, or just expand immediate children</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="expand_to_path"
+              c:identifier="gtk_tree_view_expand_to_path"
+              version="2.2">
+        <doc xml:whitespace="preserve">Expands the row at @path. This will also expand all parent rows of</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">path to a row.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_background_area"
+              c:identifier="gtk_tree_view_get_background_area">
+        <doc xml:whitespace="preserve">Fills the bounding rectangle in bin_window coordinates for the cell at the
+row specified by @path and the column specified by @column.  If @path is
+%NULL, or points to a node not found in the tree, the @y and @height fields of
+the rectangle will be filled with 0. If @column is %NULL, the @x and @width
+fields will be filled with 0.  The returned rectangle is equivalent to the
+areas tile to cover the entire bin window.  Contrast with the @cell_area,
+returned by gtk_tree_view_get_cell_area(), which returns only the cell
+itself, excluding surrounding borders and the tree expander area.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkTreePath for the row, or %NULL to get only horizontal coordinates</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkTreeViewColumn for the column, or %NULL to get only vertical coordiantes</doc>
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+          <parameter name="rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle to fill with cell background rect</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bin_window"
+              c:identifier="gtk_tree_view_get_bin_window">
+        <doc xml:whitespace="preserve">Returns the window that @tree_view renders to.
+This is used primarily to compare to &lt;literal&gt;event-&gt;window&lt;/literal&gt;
+to confirm that the event on @tree_view is on the right window.
+hasn't been realized yet</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GdkWindow, or %NULL when @tree_view</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_cell_area" c:identifier="gtk_tree_view_get_cell_area">
+        <doc xml:whitespace="preserve">Fills the bounding rectangle in bin_window coordinates for the cell at the
+row specified by @path and the column specified by @column.  If @path is
+%NULL, or points to a path not currently displayed, the @y and @height fields
+of the rectangle will be filled with 0. If @column is %NULL, the @x and @width
+fields will be filled with 0.  The sum of all cell rects does not cover the
+entire tree; there are extra pixels in between rows, for example. The
+returned rectangle is equivalent to the @cell_area passed to
+gtk_cell_renderer_render().  This function is only valid if @tree_view is
+realized.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkTreePath for the row, or %NULL to get only horizontal coordinates</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkTreeViewColumn for the column, or %NULL to get only vertical coordinates</doc>
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+          <parameter name="rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle to fill with cell rect</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column" c:identifier="gtk_tree_view_get_column">
+        <doc xml:whitespace="preserve">Gets the #GtkTreeViewColumn at the given position in the #tree_view.
+position is outside the range of columns.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GtkTreeViewColumn, or %NULL if the</doc>
+          <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The position of the column, counting from 0.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_columns" c:identifier="gtk_tree_view_get_columns">
+        <doc xml:whitespace="preserve">Returns a #GList of all the #GtkTreeViewColumn s currently in @tree_view.
+The returned list must be freed with g_list_free ().</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">A list of #GtkTreeViewColumn s</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="TreeViewColumn"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_cursor" c:identifier="gtk_tree_view_get_cursor">
+        <doc xml:whitespace="preserve">Fills in @path and @focus_column with the current path and focus column.  If
+the cursor isn't currently set, then *@path will be %NULL.  If no column
+currently has focus, then *@focus_column will be %NULL.
+The returned #GtkTreePath must be freed with gtk_tree_path_free() when
+you are done with it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A pointer to be filled with the current cursor path, or %NULL</doc>
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+          <parameter name="focus_column"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A pointer to be filled with the current focus column, or %NULL</doc>
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_dest_row_at_pos"
+              c:identifier="gtk_tree_view_get_dest_row_at_pos">
+        <doc xml:whitespace="preserve">Determines the destination row for a given position.  @drag_x and
+meaningful if @tree_view is realized.  Therefore this function will always
+return %FALSE if @tree_view is not realized or does not have a model.
+is indeed the case.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether there is a row at the given position, %TRUE if this</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="drag_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position to determine the destination row for</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="drag_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position to determine the destination row for</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="path"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">Return location for the path of the highlighted row, or %NULL.</doc>
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+          <parameter name="pos"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">Return location for the drop position, or %NULL</doc>
+            <type name="TreeViewDropPosition"
+                  c:type="GtkTreeViewDropPosition*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_drag_dest_row"
+              c:identifier="gtk_tree_view_get_drag_dest_row">
+        <doc xml:whitespace="preserve">Gets information about the row that is highlighted for feedback.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">Return location for the path of the highlighted row, or %NULL.</doc>
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+          <parameter name="pos"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">Return location for the drop position, or %NULL</doc>
+            <type name="TreeViewDropPosition"
+                  c:type="GtkTreeViewDropPosition*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_enable_search"
+              c:identifier="gtk_tree_view_get_enable_search">
+        <doc xml:whitespace="preserve">Returns whether or not the tree allows to start interactive searching 
+by typing in text.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether or not to let the user search interactively</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_enable_tree_lines"
+              c:identifier="gtk_tree_view_get_enable_tree_lines"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns whether or not tree lines are drawn in @tree_view.
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if tree lines are drawn in @tree_view, %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_expander_column"
+              c:identifier="gtk_tree_view_get_expander_column">
+        <doc xml:whitespace="preserve">Returns the column that is the current expander column.
+This column has the expander arrow drawn next to it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The expander column.</doc>
+          <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+        </return-value>
+      </method>
+      <method name="get_fixed_height_mode"
+              c:identifier="gtk_tree_view_get_fixed_height_mode"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns whether fixed height mode is turned on for @tree_view.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @tree_view is in fixed height mode</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_grid_lines"
+              c:identifier="gtk_tree_view_get_grid_lines"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns which grid lines are enabled in @tree_view.
+are enabled.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkTreeViewGridLines value indicating which grid lines</doc>
+          <type name="TreeViewGridLines" c:type="GtkTreeViewGridLines"/>
+        </return-value>
+      </method>
+      <method name="get_hadjustment"
+              c:identifier="gtk_tree_view_get_hadjustment">
+        <doc xml:whitespace="preserve">Gets the #GtkAdjustment currently being used for the horizontal aspect.
+if none is currently being used.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GtkAdjustment object, or %NULL</doc>
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="get_headers_clickable"
+              c:identifier="gtk_tree_view_get_headers_clickable"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns whether all header columns are clickable.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if all header columns are clickable, otherwise %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_headers_visible"
+              c:identifier="gtk_tree_view_get_headers_visible">
+        <doc xml:whitespace="preserve">Returns %TRUE if the headers on the @tree_view are visible.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Whether the headers are visible or not.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_hover_expand"
+              c:identifier="gtk_tree_view_get_hover_expand"
+              version="2.6 ">
+        <doc xml:whitespace="preserve">Returns whether hover expansion mode is turned on for @tree_view.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @tree_view is in hover expansion mode</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_hover_selection"
+              c:identifier="gtk_tree_view_get_hover_selection"
+              version="2.6 ">
+        <doc xml:whitespace="preserve">Returns whether hover selection mode is turned on for @tree_view.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @tree_view is in hover selection mode</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_level_indentation"
+              c:identifier="gtk_tree_view_get_level_indentation"
+              version="2.12">
+        <doc xml:whitespace="preserve">Returns the amount, in pixels, of extra indentation for child levels
+in @tree_view.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the amount of extra indentation for child levels in</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_model" c:identifier="gtk_tree_view_get_model">
+        <doc xml:whitespace="preserve">Returns the model the #GtkTreeView is based on.  Returns %NULL if the
+model is unset.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GtkTreeModel, or %NULL if none is currently being used.</doc>
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </return-value>
+      </method>
+      <method name="get_path_at_pos"
+              c:identifier="gtk_tree_view_get_path_at_pos">
+        <doc xml:whitespace="preserve">Finds the path at the point (@x, @y), relative to bin_window coordinates
+(please see gtk_tree_view_get_bin_window()).
+That is, @x and @y are relative to an events coordinates. @x and @y must
+come from an event on the @tree_view only where &lt;literal&gt;event-&gt;window ==
+gtk_tree_view_get_bin_window (&lt;!-- --&gt;)&lt;/literal&gt;. It is primarily for
+things like popup menus. If @path is non-%NULL, then it will be filled
+with the #GtkTreePath at that point.  This path should be freed with
+gtk_tree_path_free().  If @column is non-%NULL, then it will be filled
+with the column at that point.  @cell_x and @cell_y return the coordinates
+relative to the cell background (i.e. the @background_area passed to
+gtk_cell_renderer_render()).  This function is only meaningful if
+if @tree_view is not realized or does not have a model.
+For converting widget coordinates (eg. the ones you get from
+GtkWidget::query-tooltip), please see
+gtk_tree_view_convert_widget_to_bin_window_coords().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a row exists at that coordinate.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The x position to be identified (relative to bin_window).</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The y position to be identified (relative to bin_window).</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="path"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A pointer to a #GtkTreePath pointer to be filled in, or %NULL</doc>
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+          <parameter name="column"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A pointer to a #GtkTreeViewColumn pointer to be filled in, or %NULL</doc>
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn**"/>
+          </parameter>
+          <parameter name="cell_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A pointer where the X coordinate relative to the cell can be placed, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="cell_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A pointer where the Y coordinate relative to the cell can be placed, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_reorderable"
+              c:identifier="gtk_tree_view_get_reorderable">
+        <doc xml:whitespace="preserve">Retrieves whether the user can reorder the tree via drag-and-drop. See
+gtk_tree_view_set_reorderable().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the tree can be reordered.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_row_separator_func"
+              c:identifier="gtk_tree_view_get_row_separator_func"
+              version="2.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns the current row separator function.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the current row separator function.</doc>
+          <type name="TreeViewRowSeparatorFunc"
+                c:type="GtkTreeViewRowSeparatorFunc"/>
+        </return-value>
+      </method>
+      <method name="get_rubber_banding"
+              c:identifier="gtk_tree_view_get_rubber_banding"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns whether rubber banding is turned on for @tree_view.  If the
+selection mode is #GTK_SELECTION_MULTIPLE, rubber banding will allow the
+user to select multiple rows by dragging the mouse.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if rubber banding in @tree_view is enabled.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_rules_hint"
+              c:identifier="gtk_tree_view_get_rules_hint">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_search_column"
+              c:identifier="gtk_tree_view_get_search_column">
+        <doc xml:whitespace="preserve">Gets the column searched on by the interactive search code.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the column the interactive search code searches in.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_search_entry"
+              c:identifier="gtk_tree_view_get_search_entry"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns the #GtkEntry which is currently in use as interactive search
+entry for @tree_view.  In case the built-in entry is being used, %NULL
+will be returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the entry currently in use as search entry.</doc>
+          <type name="Entry" c:type="GtkEntry*"/>
+        </return-value>
+      </method>
+      <method name="get_search_equal_func"
+              c:identifier="gtk_tree_view_get_search_equal_func"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns the compare function currently in use.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the currently used compare function for the search code.</doc>
+          <type name="TreeViewSearchEqualFunc"
+                c:type="GtkTreeViewSearchEqualFunc"/>
+        </return-value>
+      </method>
+      <method name="get_search_position_func"
+              c:identifier="gtk_tree_view_get_search_position_func"
+              version="2.10"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns the positioning function currently in use.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the currently used function for positioning the search dialog.</doc>
+          <type name="TreeViewSearchPositionFunc"
+                c:type="GtkTreeViewSearchPositionFunc"/>
+        </return-value>
+      </method>
+      <method name="get_selection" c:identifier="gtk_tree_view_get_selection">
+        <doc xml:whitespace="preserve">Gets the #GtkTreeSelection associated with @tree_view.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GtkTreeSelection object.</doc>
+          <type name="TreeSelection" c:type="GtkTreeSelection*"/>
+        </return-value>
+      </method>
+      <method name="get_show_expanders"
+              c:identifier="gtk_tree_view_get_show_expanders"
+              version="2.12">
+        <doc xml:whitespace="preserve">Returns whether or not expanders are drawn in @tree_view.
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if expanders are drawn in @tree_view, %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_tooltip_column"
+              c:identifier="gtk_tree_view_get_tooltip_column"
+              version="2.12">
+        <doc xml:whitespace="preserve">Returns the column of @tree_view's model which is being used for
+displaying tooltips on @tree_view's rows.
+used, or -1 if this is disabled.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index of the tooltip column that is currently being</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_tooltip_context"
+              c:identifier="gtk_tree_view_get_tooltip_context"
+              version="2.12">
+        <doc xml:whitespace="preserve">This function is supposed to be used in a #GtkWidget::query-tooltip
+signal handler for #GtkTreeView.  The @x, @y and @keyboard_tip values
+which are received in the signal handler, should be passed to this
+function without modification.
+The return value indicates whether there is a tree view row at the given
+coordinates (%TRUE) or not (%FALSE) for mouse tooltips.  For keyboard
+tooltips the row returned will be the cursor row.  When %TRUE, then any of
+that row and the corresponding model.  @x and @y will always be converted
+to be relative to @tree_view's bin_window if @keyboard_tooltip is %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether or not the given tooltip context points to a row.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate (relative to widget coordinates)</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate (relative to widget coordinates)</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="keyboard_tip" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether this is a keyboard tooltip or not</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="model"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a pointer to receive a #GtkTreeModel or %NULL</doc>
+            <type name="TreeModel" c:type="GtkTreeModel**"/>
+          </parameter>
+          <parameter name="path"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a pointer to receive a #GtkTreePath or %NULL</doc>
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+          <parameter name="iter"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a pointer to receive a #GtkTreeIter or %NULL</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_vadjustment"
+              c:identifier="gtk_tree_view_get_vadjustment">
+        <doc xml:whitespace="preserve">Gets the #GtkAdjustment currently being used for the vertical aspect.
+if none is currently being used.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GtkAdjustment object, or %NULL</doc>
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="get_visible_range"
+              c:identifier="gtk_tree_view_get_visible_range"
+              version="2.8">
+        <doc xml:whitespace="preserve">Sets @start_path and @end_path to be the first and last visible path.
+Note that there may be invisible paths in between.
+The paths should be freed with gtk_tree_path_free() after use.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if valid paths were placed in @start_path and @end_path.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_path"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">Return location for start of region, or %NULL.</doc>
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+          <parameter name="end_path" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">Return location for end of region, or %NULL.</doc>
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_visible_rect"
+              c:identifier="gtk_tree_view_get_visible_rect">
+        <doc xml:whitespace="preserve">Fills @visible_rect with the currently-visible region of the
+buffer, in tree coordinates. Convert to bin_window coordinates with
+gtk_tree_view_convert_tree_to_bin_window_coords().
+Tree coordinates start at 0,0 for row 0 of the tree, and cover the entire
+scrollable area of the tree.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle to fill</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_column" c:identifier="gtk_tree_view_insert_column">
+        <doc xml:whitespace="preserve">This inserts the @column into the @tree_view at @position.  If @position is
+-1, then the column is inserted at the end. If @tree_view has
+"fixed_height" mode enabled, then @column must have its "sizing" property
+set to be GTK_TREE_VIEW_COLUMN_FIXED.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of columns in @tree_view after insertion.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeViewColumn to be inserted.</doc>
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The position to insert @column in.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_column_with_attributes"
+              c:identifier="gtk_tree_view_insert_column_with_attributes"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #GtkTreeViewColumn and inserts it into the @tree_view at
+the end.  The column is initialized with the attributes given. If @tree_view
+has "fixed_height" mode enabled, then the new column will have its sizing
+property set to be GTK_TREE_VIEW_COLUMN_FIXED.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of columns in @tree_view after insertion.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The position to insert the new column in.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="title" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The title to set the header to.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cell" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkCellRenderer.</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_column_with_data_func"
+              c:identifier="gtk_tree_view_insert_column_with_data_func">
+        <doc xml:whitespace="preserve">Convenience function that inserts a new column into the #GtkTreeView
+with the given cell renderer and a #GtkCellDataFunc to set cell renderer
+attributes (normally using data from the model). See also
+gtk_tree_view_column_set_cell_data_func(), gtk_tree_view_column_pack_start().
+If @tree_view has "fixed_height" mode enabled, then the new column will have its
+"sizing" property set to be GTK_TREE_VIEW_COLUMN_FIXED.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of columns in the tree view post-insert</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Position to insert, -1 for append</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="title" transfer-ownership="none">
+            <doc xml:whitespace="preserve">column title</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cell" transfer-ownership="none">
+            <doc xml:whitespace="preserve">cell renderer for column</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="4"
+                     destroy="5">
+            <doc xml:whitespace="preserve">function to set attributes of cell renderer</doc>
+            <type name="TreeCellDataFunc" c:type="GtkTreeCellDataFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data for @func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="dnotify" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">destroy notifier for @data</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_rubber_banding_active"
+              c:identifier="gtk_tree_view_is_rubber_banding_active"
+              version="2.12">
+        <doc xml:whitespace="preserve">Returns whether a rubber banding operation is currently being done
+in @tree_view.
+done in @tree_view.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a rubber banding operation is currently being</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="map_expanded_rows"
+              c:identifier="gtk_tree_view_map_expanded_rows">
+        <doc xml:whitespace="preserve">Calls @func on all expanded rows.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">A function to be called</doc>
+            <type name="TreeViewMappingFunc" c:type="GtkTreeViewMappingFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">User data to be passed to the function.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_column_after"
+              c:identifier="gtk_tree_view_move_column_after">
+        <doc xml:whitespace="preserve">Moves @column to be after to @base_column.  If @base_column is %NULL, then</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeViewColumn to be moved.</doc>
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+          <parameter name="base_column"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">The #GtkTreeViewColumn to be moved relative to, or %NULL.</doc>
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_column" c:identifier="gtk_tree_view_remove_column">
+        <doc xml:whitespace="preserve">Removes @column from @tree_view.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of columns in @tree_view after removing.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeViewColumn to remove.</doc>
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="row_activated" c:identifier="gtk_tree_view_row_activated">
+        <doc xml:whitespace="preserve">Activates the cell determined by @path and @column.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreePath to be activated.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeViewColumn to be activated.</doc>
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="row_expanded" c:identifier="gtk_tree_view_row_expanded">
+        <doc xml:whitespace="preserve">Returns %TRUE if the node pointed to by @path is expanded in @tree_view.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if #path is expanded.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreePath to test expansion state.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scroll_to_cell"
+              c:identifier="gtk_tree_view_scroll_to_cell">
+        <doc xml:whitespace="preserve">Moves the alignments of @tree_view to the position specified by @column and
+if @path is %NULL no vertical scrolling occurs.  At a minimum, one of @column
+or @path need to be non-%NULL.  @row_align determines where the row is
+placed, and @col_align determines where @column is placed.  Both are expected
+to be between 0.0 and 1.0. 0.0 means left/top alignment, 1.0 means
+right/bottom alignment, 0.5 means center.
+If @use_align is %FALSE, then the alignment arguments are ignored, and the
+tree does the minimum amount of work to scroll the cell onto the screen.
+This means that the cell will be scrolled to the edge closest to its current
+position.  If the cell is currently visible on the screen, nothing is done.
+This function only works if the model is set, and @path is a valid row on the
+model.  If the model changes before the @tree_view is realized, the centered
+path will be modified to reflect this change.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">The path of the row to move to, or %NULL.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">The #GtkTreeViewColumn to move horizontally to, or %NULL.</doc>
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+          <parameter name="use_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to use alignment arguments, or %FALSE.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="row_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The vertical alignment of the row specified by @path.</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="col_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The horizontal alignment of the column specified by @column.</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scroll_to_point"
+              c:identifier="gtk_tree_view_scroll_to_point">
+        <doc xml:whitespace="preserve">Scrolls the tree view such that the top-left corner of the visible
+area is @tree_x, @tree_y, where @tree_x and @tree_y are specified
+in tree coordinates.  The @tree_view must be realized before
+this function is called.  If it isn't, you probably want to be
+using gtk_tree_view_scroll_to_cell().
+If either @tree_x or @tree_y are -1, then that direction isn't scrolled.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tree_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of new top-left pixel of visible area, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="tree_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of new top-left pixel of visible area, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_column_drag_function"
+              c:identifier="gtk_tree_view_set_column_drag_function">
+        <doc xml:whitespace="preserve">Sets a user function for determining where a column may be dropped when
+dragged.  This function is called on every column pair in turn at the
+beginning of a column drag to determine where a drop can take place.  The
+dragged, the two #GtkTreeViewColumn s determining the drop spot, and
+are %NULL, then they indicate an edge.  If @func is set to be %NULL, then
+dropped everywhere.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">A function to determine which columns are reorderable, or %NULL.</doc>
+            <type name="TreeViewColumnDropFunc"
+                  c:type="GtkTreeViewColumnDropFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">User data to be passed to @func, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="async">
+            <doc xml:whitespace="preserve">Destroy notifier for @user_data, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor" c:identifier="gtk_tree_view_set_cursor">
+        <doc xml:whitespace="preserve">Sets the current keyboard focus to be at @path, and selects it.  This is
+useful when you want to focus the user's attention on a particular row.  If
+it. Additionally, if @focus_column is specified, and @start_editing is 
+%TRUE, then editing should be started in the specified cell.  
+This function is often followed by @gtk_widget_grab_focus (@tree_view) 
+in order to give keyboard focus to the widget.  Please note that editing 
+can only happen when the widget is realized.
+If @path is invalid for @model, the current cursor (if any) will be unset
+and the function will return without failing.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreePath</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="focus_column"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A #GtkTreeViewColumn, or %NULL</doc>
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+          <parameter name="start_editing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the specified cell should start being edited.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor_on_cell"
+              c:identifier="gtk_tree_view_set_cursor_on_cell"
+              version="2.2">
+        <doc xml:whitespace="preserve">Sets the current keyboard focus to be at @path, and selects it.  This is
+useful when you want to focus the user's attention on a particular row.  If
+it. If @focus_column and @focus_cell are not %NULL, and @focus_column
+contains 2 or more editable or activatable cells, then focus is given to
+the cell specified by @focus_cell. Additionally, if @focus_column is
+specified, and @start_editing is %TRUE, then editing should be started in
+the specified cell.  This function is often followed by
+widget.  Please note that editing can only happen when the widget is
+realized.
+If @path is invalid for @model, the current cursor (if any) will be unset
+and the function will return without failing.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkTreePath</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="focus_column"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A #GtkTreeViewColumn, or %NULL</doc>
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+          <parameter name="focus_cell"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">A #GtkCellRenderer, or %NULL</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter name="start_editing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the specified cell should start being edited.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_destroy_count_func"
+              c:identifier="gtk_tree_view_set_destroy_count_func">
+        <doc xml:whitespace="preserve">This function should almost never be used.  It is meant for private use by
+ATK for determining the number of visible children that are removed when the
+user collapses a row, or a row is deleted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">Function to be called when a view row is destroyed, or %NULL</doc>
+            <type name="TreeDestroyCountFunc"
+                  c:type="GtkTreeDestroyCountFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">User data to be passed to @func, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="async">
+            <doc xml:whitespace="preserve">Destroy notifier for @data, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_drag_dest_row"
+              c:identifier="gtk_tree_view_set_drag_dest_row">
+        <doc xml:whitespace="preserve">Sets the row that is highlighted for feedback.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">The path of the row to highlight, or %NULL.</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Specifies whether to drop before, after or into the row</doc>
+            <type name="TreeViewDropPosition"
+                  c:type="GtkTreeViewDropPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_enable_search"
+              c:identifier="gtk_tree_view_set_enable_search">
+        <doc xml:whitespace="preserve">If @enable_search is set, then the user can type in text to search through
+the tree interactively (this is sometimes called "typeahead find").
+Note that even if this is %FALSE, the user can still initiate a search 
+using the "start-interactive-search" key binding.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enable_search" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE, if the user can search interactively</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_enable_tree_lines"
+              c:identifier="gtk_tree_view_set_enable_tree_lines"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets whether to draw lines interconnecting the expanders in @tree_view.
+This does not have any visible effects for lists.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enabled" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to enable tree line drawing, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_expander_column"
+              c:identifier="gtk_tree_view_set_expander_column">
+        <doc xml:whitespace="preserve">Sets the column to draw the expander arrow at. It must be in @tree_view.  
+If @column is %NULL, then the expander arrow is always at the first 
+visible column.
+If you do not want expander arrow to appear in your tree, set the 
+expander column to a hidden column.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%NULL, or the column to draw the expander arrow at.</doc>
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fixed_height_mode"
+              c:identifier="gtk_tree_view_set_fixed_height_mode"
+              version="2.6 ">
+        <doc xml:whitespace="preserve">Enables or disables the fixed height mode of @tree_view. 
+Fixed height mode speeds up #GtkTreeView by assuming that all 
+rows have the same height. 
+Only enable this option if all rows are the same height and all
+columns are of type %GTK_TREE_VIEW_COLUMN_FIXED.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to enable fixed height mode</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_grid_lines"
+              c:identifier="gtk_tree_view_set_grid_lines"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets which grid lines to draw in @tree_view.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="grid_lines" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTreeViewGridLines value indicating which grid lines to enable.</doc>
+            <type name="TreeViewGridLines" c:type="GtkTreeViewGridLines"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_hadjustment"
+              c:identifier="gtk_tree_view_set_hadjustment">
+        <doc xml:whitespace="preserve">Sets the #GtkAdjustment for the current horizontal aspect.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">The #GtkAdjustment to set, or %NULL</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_headers_clickable"
+              c:identifier="gtk_tree_view_set_headers_clickable">
+        <doc xml:whitespace="preserve">Allow the column title buttons to be clicked.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the columns are clickable.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_headers_visible"
+              c:identifier="gtk_tree_view_set_headers_visible">
+        <doc xml:whitespace="preserve">Sets the visibility state of the headers.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="headers_visible" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the headers are visible</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_hover_expand"
+              c:identifier="gtk_tree_view_set_hover_expand"
+              version="2.6">
+        <doc xml:whitespace="preserve">Enables of disables the hover expansion mode of @tree_view.
+Hover expansion makes rows expand or collapse if the pointer 
+moves over them.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="expand" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to enable hover selection mode</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_hover_selection"
+              c:identifier="gtk_tree_view_set_hover_selection"
+              version="2.6">
+        <doc xml:whitespace="preserve">Enables of disables the hover selection mode of @tree_view.
+Hover selection makes the selected row follow the pointer.
+Currently, this works only for the selection modes 
+%GTK_SELECTION_SINGLE and %GTK_SELECTION_BROWSE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hover" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to enable hover selection mode</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_level_indentation"
+              c:identifier="gtk_tree_view_set_level_indentation"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets the amount of extra indentation for child levels to use in @tree_view
+in addition to the default indentation.  The value should be specified in
+pixels, a value of 0 disables this feature and in this case only the default
+indentation will be used.
+This does not have any visible effects for lists.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="indentation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the amount, in pixels, of extra indentation in @tree_view.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_model" c:identifier="gtk_tree_view_set_model">
+        <doc xml:whitespace="preserve">Sets the model for a #GtkTreeView.  If the @tree_view already has a model
+set, it will remove it before setting the new model.  If @model is %NULL,
+then it will unset the old model.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="model" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">The model.</doc>
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_reorderable"
+              c:identifier="gtk_tree_view_set_reorderable">
+        <doc xml:whitespace="preserve">This function is a convenience function to allow you to reorder
+models that support the #GtkDragSourceIface and the
+#GtkDragDestIface.  Both #GtkTreeStore and #GtkListStore support
+these.  If @reorderable is %TRUE, then the user can reorder the
+model by dragging and dropping rows. The developer can listen to
+these changes by connecting to the model's row_inserted and
+row_deleted signals. The reordering is implemented by setting up
+the tree view as a drag source and destination. Therefore, drag and
+drop can not be used in a reorderable view for any other purpose.
+This function does not give you any degree of control over the order -- any
+reordering is allowed.  If more control is needed, you should probably
+handle drag and drop manually.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="reorderable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE, if the tree can be reordered.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_row_separator_func"
+              c:identifier="gtk_tree_view_set_row_separator_func"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the row separator function, which is used to determine
+whether a row should be drawn as a separator. If the row separator
+function is %NULL, no separators are drawn. This is the default value.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">a #GtkTreeViewRowSeparatorFunc</doc>
+            <type name="TreeViewRowSeparatorFunc"
+                  c:type="GtkTreeViewRowSeparatorFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">user data to pass to @func, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="async">
+            <doc xml:whitespace="preserve">destroy notifier for @data, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_rubber_banding"
+              c:identifier="gtk_tree_view_set_rubber_banding"
+              version="2.10">
+        <doc xml:whitespace="preserve">Enables or disables rubber banding in @tree_view.  If the selection mode
+is #GTK_SELECTION_MULTIPLE, rubber banding will allow the user to select
+multiple rows by dragging the mouse.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to enable rubber banding</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_rules_hint"
+              c:identifier="gtk_tree_view_set_rules_hint">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_search_column"
+              c:identifier="gtk_tree_view_set_search_column">
+        <doc xml:whitespace="preserve">Sets @column as the column where the interactive search code should
+search in for the current model. 
+If the search column is set, users can use the "start-interactive-search"
+key binding to bring up search popup. The enable-search property controls
+whether simply typing text will also start an interactive search.
+Note that @column refers to a column of the current model. The search 
+column is reset to -1 when the model is changed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the column of the model to search in, or -1 to disable searching</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_search_entry"
+              c:identifier="gtk_tree_view_set_search_entry"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the entry which the interactive search code will use for this
+in our interface at all time at a fixed position.  Passing %NULL for
+entry again.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the entry the interactive search code of @tree_view should use or %NULL</doc>
+            <type name="Entry" c:type="GtkEntry*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_search_equal_func"
+              c:identifier="gtk_tree_view_set_search_equal_func">
+        <doc xml:whitespace="preserve">Sets the compare function for the interactive search capabilities; note
+that somewhat like strcmp() returning 0 for equality
+#GtkTreeViewSearchEqualFunc returns %FALSE on matches.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="search_equal_func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">the compare function to use during the search</doc>
+            <type name="TreeViewSearchEqualFunc"
+                  c:type="GtkTreeViewSearchEqualFunc"/>
+          </parameter>
+          <parameter name="search_user_data"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">user data to pass to @search_equal_func, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="search_destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="async">
+            <doc xml:whitespace="preserve">Destroy notifier for @search_user_data, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_search_position_func"
+              c:identifier="gtk_tree_view_set_search_position_func"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets the function to use when positioning the search dialog.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">the function to use to position the search dialog, or %NULL to use the default search position function</doc>
+            <type name="TreeViewSearchPositionFunc"
+                  c:type="GtkTreeViewSearchPositionFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">user data to pass to @func, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="async">
+            <doc xml:whitespace="preserve">Destroy notifier for @data, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_show_expanders"
+              c:identifier="gtk_tree_view_set_show_expanders"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets whether to draw and enable expanders and indent child rows in
+and there will be no way to expand and collapse rows by default.  Also
+note that hiding the expanders will disable the default indentation.  You
+can set a custom indentation in this case using
+gtk_tree_view_set_level_indentation().
+This does not have any visible effects for lists.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enabled" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to enable expander drawing, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tooltip_cell"
+              c:identifier="gtk_tree_view_set_tooltip_cell"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets the tip area of @tooltip to the area @path, @column and @cell have
+in common.  For example if @path is %NULL and @column is set, the tip
+area will be set to the full area covered by @column.  See also
+gtk_tooltip_set_tip_area().
+Note that if @path is not specified and @cell is set and part of a column
+containing the expander, the tooltip might not show and hide at the correct
+position.  In such cases @path must be set to the current node under the
+mouse cursor for this function to operate correctly.
+See also gtk_tree_view_set_tooltip_column() for a simpler alternative.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tooltip" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTooltip</doc>
+            <type name="Tooltip" c:type="GtkTooltip*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkTreePath or %NULL</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkTreeViewColumn or %NULL</doc>
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+          <parameter name="cell" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkCellRenderer or %NULL</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tooltip_column"
+              c:identifier="gtk_tree_view_set_tooltip_column"
+              version="2.12">
+        <doc xml:whitespace="preserve">If you only plan to have simple (text-only) tooltips on full rows, you
+can use this function to have #GtkTreeView handle these automatically
+for you. @column should be set to the column in @tree_view's model
+containing the tooltip texts, or -1 to disable this feature.
+When enabled, #GtkWidget::has-tooltip will be set to %TRUE and
+Note that the signal handler sets the text with gtk_tooltip_set_markup(),
+so &amp;amp;, &amp;lt;, etc have to be escaped in the text.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an integer, which is a valid column number for @tree_view's model</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tooltip_row"
+              c:identifier="gtk_tree_view_set_tooltip_row"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets the tip area of @tooltip to be the area covered by the row at @path.
+See also gtk_tree_view_set_tooltip_column() for a simpler alternative.
+See also gtk_tooltip_set_tip_area().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tooltip" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTooltip</doc>
+            <type name="Tooltip" c:type="GtkTooltip*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTreePath</doc>
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_vadjustment"
+              c:identifier="gtk_tree_view_set_vadjustment">
+        <doc xml:whitespace="preserve">Sets the #GtkAdjustment for the current vertical aspect.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">The #GtkAdjustment to set, or %NULL</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_rows_drag_dest"
+              c:identifier="gtk_tree_view_unset_rows_drag_dest">
+        <doc xml:whitespace="preserve">Undoes the effect of
+gtk_tree_view_enable_model_drag_dest(). Calling this method sets
+#GtkTreeView:reorderable to %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unset_rows_drag_source"
+              c:identifier="gtk_tree_view_unset_rows_drag_source">
+        <doc xml:whitespace="preserve">Undoes the effect of
+gtk_tree_view_enable_model_drag_source(). Calling this method sets
+#GtkTreeView:reorderable to %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="enable-grid-lines"
+                writable="1"
+                transfer-ownership="none">
+        <type name="TreeViewGridLines"/>
+      </property>
+      <property name="enable-search" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="enable-tree-lines"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="expander-column" writable="1" transfer-ownership="none">
+        <type name="TreeViewColumn"/>
+      </property>
+      <property name="fixed-height-mode"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Setting the ::fixed-height-mode property to %TRUE speeds up 
+#GtkTreeView by assuming that all rows have the same height. 
+Only enable this option if all rows are the same height.  
+Please see gtk_tree_view_set_fixed_height_mode() for more 
+information on this option.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="hadjustment" writable="1" transfer-ownership="none">
+        <type name="Adjustment"/>
+      </property>
+      <property name="headers-clickable"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="headers-visible" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="hover-expand"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Enables or disables the hover expansion mode of @tree_view.
+Hover expansion makes rows expand or collapse if the pointer moves 
+over them.
+This mode is primarily intended for treeviews in popups, e.g.
+in #GtkComboBox or #GtkEntryCompletion.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="hover-selection"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Enables or disables the hover selection mode of @tree_view.
+Hover selection makes the selected row follow the pointer.
+Currently, this works only for the selection modes 
+%GTK_SELECTION_SINGLE and %GTK_SELECTION_BROWSE.
+This mode is primarily intended for treeviews in popups, e.g.
+in #GtkComboBox or #GtkEntryCompletion.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="level-indentation"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Extra indentation for each level.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="model" writable="1" transfer-ownership="none">
+        <type name="TreeModel"/>
+      </property>
+      <property name="reorderable" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="rubber-banding" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="rules-hint" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="search-column" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="show-expanders"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the view has expanders.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="tooltip-column" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="vadjustment" writable="1" transfer-ownership="none">
+        <type name="Adjustment"/>
+      </property>
+      <field name="parent">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="TreeViewPrivate" c:type="GtkTreeViewPrivate*"/>
+      </field>
+      <glib:signal name="columns-changed">
+        <doc xml:whitespace="preserve">The number of columns of the treeview has changed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="cursor-changed">
+        <doc xml:whitespace="preserve">The position of the cursor (focused cell) has changed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="expand-collapse-cursor-row">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="gboolean"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="gboolean"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <type name="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-cursor">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="MovementStep"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="row-activated">
+        <doc xml:whitespace="preserve">The "row-activated" signal is emitted when the method
+gtk_tree_view_row_activated() is called or the user double clicks 
+a treeview row. It is also emitted when a non-editable row is 
+Enter is pressed.
+For selection handling refer to the &lt;link linkend="TreeWidget"&gt;tree 
+widget conceptual overview&lt;/link&gt; as well as #GtkTreeSelection.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkTreePath for the activated row</doc>
+            <type name="TreePath"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkTreeViewColumn in which the activation occurred</doc>
+            <type name="TreeViewColumn"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="row-collapsed">
+        <doc xml:whitespace="preserve">The given row has been collapsed (child nodes are hidden).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the tree iter of the collapsed row</doc>
+            <type name="TreeIter"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a tree path that points to the row</doc>
+            <type name="TreePath"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="row-expanded">
+        <doc xml:whitespace="preserve">The given row has been expanded (child nodes are shown).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the tree iter of the expanded row</doc>
+            <type name="TreeIter"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a tree path that points to the row</doc>
+            <type name="TreePath"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="select-all">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="select-cursor-parent">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="select-cursor-row">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="set-scroll-adjustments">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Adjustment"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="Adjustment"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="start-interactive-search">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="test-collapse-row">
+        <doc xml:whitespace="preserve">The given row is about to be collapsed (hide its children nodes). Use this
+signal if you need to control the collapsibility of individual rows.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%FALSE to allow collapsing, %TRUE to reject</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the tree iter of the row to collapse</doc>
+            <type name="TreeIter"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a tree path that points to the row</doc>
+            <type name="TreePath"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="test-expand-row">
+        <doc xml:whitespace="preserve">The given row is about to be expanded (show its children nodes). Use this
+signal if you need to control the expandability of individual rows.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%FALSE to allow expansion, %TRUE to reject</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the tree iter of the row to expand</doc>
+            <type name="TreeIter"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a tree path that points to the row</doc>
+            <type name="TreePath"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="toggle-cursor-row">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unselect-all">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="TreeViewClass"
+            c:type="GtkTreeViewClass"
+            glib:is-gtype-struct-for="TreeView">
+      <field name="parent_class">
+        <type name="ContainerClass" c:type="GtkContainerClass"/>
+      </field>
+      <field name="set_scroll_adjustments">
+        <callback name="set_scroll_adjustments">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_view" transfer-ownership="none">
+              <type name="TreeView" c:type="GtkTreeView*"/>
+            </parameter>
+            <parameter name="hadjustment" transfer-ownership="none">
+              <type name="Adjustment" c:type="GtkAdjustment*"/>
+            </parameter>
+            <parameter name="vadjustment" transfer-ownership="none">
+              <type name="Adjustment" c:type="GtkAdjustment*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_activated">
+        <callback name="row_activated">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_view" transfer-ownership="none">
+              <type name="TreeView" c:type="GtkTreeView*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <type name="TreePath" c:type="GtkTreePath*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="test_expand_row">
+        <callback name="test_expand_row">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_view" transfer-ownership="none">
+              <type name="TreeView" c:type="GtkTreeView*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <type name="TreePath" c:type="GtkTreePath*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="test_collapse_row">
+        <callback name="test_collapse_row">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_view" transfer-ownership="none">
+              <type name="TreeView" c:type="GtkTreeView*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <type name="TreePath" c:type="GtkTreePath*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_expanded">
+        <callback name="row_expanded">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_view" transfer-ownership="none">
+              <type name="TreeView" c:type="GtkTreeView*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <type name="TreePath" c:type="GtkTreePath*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_collapsed">
+        <callback name="row_collapsed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_view" transfer-ownership="none">
+              <type name="TreeView" c:type="GtkTreeView*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <type name="TreePath" c:type="GtkTreePath*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="columns_changed">
+        <callback name="columns_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_view" transfer-ownership="none">
+              <type name="TreeView" c:type="GtkTreeView*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cursor_changed">
+        <callback name="cursor_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_view" transfer-ownership="none">
+              <type name="TreeView" c:type="GtkTreeView*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="move_cursor">
+        <callback name="move_cursor">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_view" transfer-ownership="none">
+              <type name="TreeView" c:type="GtkTreeView*"/>
+            </parameter>
+            <parameter name="step" transfer-ownership="none">
+              <type name="MovementStep" c:type="GtkMovementStep"/>
+            </parameter>
+            <parameter name="count" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="select_all">
+        <callback name="select_all">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_view" transfer-ownership="none">
+              <type name="TreeView" c:type="GtkTreeView*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unselect_all">
+        <callback name="unselect_all">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_view" transfer-ownership="none">
+              <type name="TreeView" c:type="GtkTreeView*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="select_cursor_row">
+        <callback name="select_cursor_row">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_view" transfer-ownership="none">
+              <type name="TreeView" c:type="GtkTreeView*"/>
+            </parameter>
+            <parameter name="start_editing" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="toggle_cursor_row">
+        <callback name="toggle_cursor_row">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_view" transfer-ownership="none">
+              <type name="TreeView" c:type="GtkTreeView*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="expand_collapse_cursor_row">
+        <callback name="expand_collapse_cursor_row">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_view" transfer-ownership="none">
+              <type name="TreeView" c:type="GtkTreeView*"/>
+            </parameter>
+            <parameter name="logical" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="expand" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="open_all" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="select_cursor_parent">
+        <callback name="select_cursor_parent">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_view" transfer-ownership="none">
+              <type name="TreeView" c:type="GtkTreeView*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="start_interactive_search">
+        <callback name="start_interactive_search">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_view" transfer-ownership="none">
+              <type name="TreeView" c:type="GtkTreeView*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved0" introspectable="0">
+        <callback name="_gtk_reserved0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="TreeViewColumn"
+           c:symbol-prefix="tree_view_column"
+           c:type="GtkTreeViewColumn"
+           parent="Object"
+           glib:type-name="GtkTreeViewColumn"
+           glib:get-type="gtk_tree_view_column_get_type"
+           glib:type-struct="TreeViewColumnClass">
+      <implements name="Buildable"/>
+      <implements name="CellLayout"/>
+      <constructor name="new" c:identifier="gtk_tree_view_column_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkTreeViewColumn.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A newly created #GtkTreeViewColumn.</doc>
+          <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_attributes"
+                   c:identifier="gtk_tree_view_column_new_with_attributes"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #GtkTreeViewColumn with a number of default values.  This is
+equivalent to calling gtk_tree_view_column_set_title(),
+gtk_tree_view_column_pack_start(), and
+gtk_tree_view_column_set_attributes() on the newly created #GtkTreeViewColumn.
+Here's a simple example:
+|[
+enum { TEXT_COLUMN, COLOR_COLUMN, N_COLUMNS };
+...
+{
+GtkTreeViewColumn *column;
+GtkCellRenderer   *renderer = gtk_cell_renderer_text_new ();
+column = gtk_tree_view_column_new_with_attributes ("Title",
+renderer,
+"text", TEXT_COLUMN,
+"foreground", COLOR_COLUMN,
+NULL);
+}
+]|</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A newly created #GtkTreeViewColumn.</doc>
+          <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The title to set the header to.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cell" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkCellRenderer.</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add_attribute"
+              c:identifier="gtk_tree_view_column_add_attribute">
+        <doc xml:whitespace="preserve">Adds an attribute mapping to the list in @tree_column.  The @column is the
+column of the model to get a value from, and the @attribute is the
+parameter on @cell_renderer to be set from the value. So for example
+if column 2 of the model contains strings, you could have the
+"text" attribute of a #GtkCellRendererText get its values from
+column 2.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell_renderer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkCellRenderer to set attributes on</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter name="attribute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An attribute on the renderer</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The column position on the model to get the attribute from.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="cell_get_position"
+              c:identifier="gtk_tree_view_column_cell_get_position">
+        <doc xml:whitespace="preserve">Obtains the horizontal position and size of a cell in a column. If the
+cell is not found in the column, @start_pos and @width are not changed and
+%FALSE is returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @cell belongs to @tree_column.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell_renderer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkCellRenderer</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter name="start_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the horizontal position of @cell within</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the width of @cell, may be %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="cell_get_size"
+              c:identifier="gtk_tree_view_column_cell_get_size">
+        <doc xml:whitespace="preserve">Obtains the width and height needed to render the column.  This is used
+primarily by the #GtkTreeView.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell_area" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">The area a cell in the column will be allocated, or %NULL</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="x_offset" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to return x offset of a cell relative to @cell_area, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y_offset" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to return y offset of a cell relative to @cell_area, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to return width needed to render a cell, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">location to return height needed to render a cell, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="cell_is_visible"
+              c:identifier="gtk_tree_view_column_cell_is_visible">
+        <doc xml:whitespace="preserve">Returns %TRUE if any of the cells packed into the @tree_column are visible.
+For this to be meaningful, you must first initialize the cells with
+gtk_tree_view_column_cell_set_cell_data()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if any of the cells packed into the @tree_column are currently visible</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="cell_set_cell_data"
+              c:identifier="gtk_tree_view_column_cell_set_cell_data">
+        <doc xml:whitespace="preserve">Sets the cell renderer based on the @tree_model and @iter.  That is, for
+every attribute mapping in @tree_column, it will get a value from the set
+column on the @iter, and use that value to set the attribute on the cell
+renderer.  This is used primarily by the #GtkTreeView.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tree_model" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeModel to to get the cell renderers attributes from.</doc>
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeIter to to get the cell renderer's attributes from.</doc>
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="is_expander" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE, if the row has children</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="is_expanded" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE, if the row has visible children</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear" c:identifier="gtk_tree_view_column_clear">
+        <doc xml:whitespace="preserve">Unsets all the mappings on all renderers on the @tree_column.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="clear_attributes"
+              c:identifier="gtk_tree_view_column_clear_attributes">
+        <doc xml:whitespace="preserve">Clears all existing attributes previously set with
+gtk_tree_view_column_set_attributes().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell_renderer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkCellRenderer to clear the attribute mapping on.</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clicked" c:identifier="gtk_tree_view_column_clicked">
+        <doc xml:whitespace="preserve">Emits the "clicked" signal on the column.  This function will only work if</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="focus_cell"
+              c:identifier="gtk_tree_view_column_focus_cell"
+              version="2.2">
+        <doc xml:whitespace="preserve">Sets the current keyboard focus to be at @cell, if the column contains
+2 or more editable and activatable cells.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkCellRenderer</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_alignment"
+              c:identifier="gtk_tree_view_column_get_alignment">
+        <doc xml:whitespace="preserve">Returns the current x alignment of @tree_column.  This value can range
+between 0.0 and 1.0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The current alignent of @tree_column.</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_clickable"
+              c:identifier="gtk_tree_view_column_get_clickable">
+        <doc xml:whitespace="preserve">Returns %TRUE if the user can click on the header for the column.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if user can click the column header.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_expand"
+              c:identifier="gtk_tree_view_column_get_expand"
+              version="2.4">
+        <doc xml:whitespace="preserve">Return %TRUE if the column expands to take any available space.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if the column expands</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_fixed_width"
+              c:identifier="gtk_tree_view_column_get_fixed_width">
+        <doc xml:whitespace="preserve">Gets the fixed width of the column.  This value is only meaning may not be
+the actual width of the column on the screen, just what is requested.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the fixed width of the column</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_max_width"
+              c:identifier="gtk_tree_view_column_get_max_width">
+        <doc xml:whitespace="preserve">Returns the maximum width in pixels of the @tree_column, or -1 if no maximum
+width is set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The maximum width of the @tree_column.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_min_width"
+              c:identifier="gtk_tree_view_column_get_min_width">
+        <doc xml:whitespace="preserve">Returns the minimum width in pixels of the @tree_column, or -1 if no minimum
+width is set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The minimum width of the @tree_column.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_reorderable"
+              c:identifier="gtk_tree_view_column_get_reorderable">
+        <doc xml:whitespace="preserve">Returns %TRUE if the @tree_column can be reordered by the user.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the @tree_column can be reordered by the user.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_resizable"
+              c:identifier="gtk_tree_view_column_get_resizable">
+        <doc xml:whitespace="preserve">Returns %TRUE if the @tree_column can be resized by the end user.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE, if the @tree_column can be resized.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_sizing" c:identifier="gtk_tree_view_column_get_sizing">
+        <doc xml:whitespace="preserve">Returns the current type of @tree_column.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The type of @tree_column.</doc>
+          <type name="TreeViewColumnSizing" c:type="GtkTreeViewColumnSizing"/>
+        </return-value>
+      </method>
+      <method name="get_sort_column_id"
+              c:identifier="gtk_tree_view_column_get_sort_column_id">
+        <doc xml:whitespace="preserve">Gets the logical @sort_column_id that the model sorts on when this
+column is selected for sorting.
+See gtk_tree_view_column_set_sort_column_id().
+this column can't be used for sorting.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current @sort_column_id for this column, or -1 if</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_sort_indicator"
+              c:identifier="gtk_tree_view_column_get_sort_indicator">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_tree_view_column_set_sort_indicator().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the sort indicator arrow is displayed</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_sort_order"
+              c:identifier="gtk_tree_view_column_get_sort_order">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_tree_view_column_set_sort_order().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the sort order the sort indicator is indicating</doc>
+          <type name="SortType" c:type="GtkSortType"/>
+        </return-value>
+      </method>
+      <method name="get_spacing"
+              c:identifier="gtk_tree_view_column_get_spacing">
+        <doc xml:whitespace="preserve">Returns the spacing of @tree_column.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the spacing of @tree_column.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_title" c:identifier="gtk_tree_view_column_get_title">
+        <doc xml:whitespace="preserve">Returns the title of the widget.
+modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the title of the column. This string should not be</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_tree_view"
+              c:identifier="gtk_tree_view_column_get_tree_view"
+              version="2.12">
+        <doc xml:whitespace="preserve">Returns the #GtkTreeView wherein @tree_column has been inserted.
+If @column is currently not inserted in any tree view, %NULL is
+returned.
+been inserted if any, %NULL otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The tree view wherein @column has</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_visible"
+              c:identifier="gtk_tree_view_column_get_visible">
+        <doc xml:whitespace="preserve">Returns %TRUE if @tree_column is visible.
+the tree will show the column.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the column is visible or not.  If it is visible, then</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_widget" c:identifier="gtk_tree_view_column_get_widget">
+        <doc xml:whitespace="preserve">Returns the #GtkWidget in the button on the column header.
+If a custom widget has not been set then %NULL is returned.
+header, or %NULL</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GtkWidget in the column</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_width" c:identifier="gtk_tree_view_column_get_width">
+        <doc xml:whitespace="preserve">Returns the current size of @tree_column in pixels.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The current width of @tree_column.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="pack_end" c:identifier="gtk_tree_view_column_pack_end">
+        <doc xml:whitespace="preserve">Adds the @cell to end of the column. If @expand is %FALSE, then the @cell
+is allocated no more space than it needs. Any unused space is divided
+evenly between cells for which @expand is %TRUE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkCellRenderer.</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter name="expand" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if @cell is to be given extra space allocated to @tree_column.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pack_start" c:identifier="gtk_tree_view_column_pack_start">
+        <doc xml:whitespace="preserve">Packs the @cell into the beginning of the column. If @expand is %FALSE, then
+the @cell is allocated no more space than it needs. Any unused space is divided
+evenly between cells for which @expand is %TRUE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkCellRenderer.</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter name="expand" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if @cell is to be given extra space allocated to @tree_column.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="queue_resize"
+              c:identifier="gtk_tree_view_column_queue_resize"
+              version="2.8">
+        <doc xml:whitespace="preserve">Flags the column, and the cell renderers added to this column, to have
+their sizes renegotiated.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_alignment"
+              c:identifier="gtk_tree_view_column_set_alignment">
+        <doc xml:whitespace="preserve">Sets the alignment of the title or custom widget inside the column header.
+The alignment determines its location inside the button -- 0.0 for left, 0.5
+for center, 1.0 for right.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The alignment, which is between [0.0 and 1.0] inclusive.</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attributes"
+              c:identifier="gtk_tree_view_column_set_attributes"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the attributes in the list as the attributes of @tree_column.
+The attributes should be in attribute/column order, as in
+gtk_tree_view_column_add_attribute(). All existing attributes
+are removed, and replaced with the new attributes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell_renderer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkCellRenderer we're setting the attributes of</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cell_data_func"
+              c:identifier="gtk_tree_view_column_set_cell_data_func">
+        <doc xml:whitespace="preserve">Sets the #GtkTreeViewColumnFunc to use for the column.  This
+function is used instead of the standard attributes mapping for
+setting the column value, and should set the value of @tree_column's
+cell renderer as appropriate.  @func may be %NULL to remove an
+older one.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell_renderer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GtkCellRenderer</doc>
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <doc xml:whitespace="preserve">The #GtkTreeViewColumnFunc to use.</doc>
+            <type name="TreeCellDataFunc" c:type="GtkTreeCellDataFunc"/>
+          </parameter>
+          <parameter name="func_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The user data for @func.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">The destroy notification for @func_data</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_clickable"
+              c:identifier="gtk_tree_view_column_set_clickable">
+        <doc xml:whitespace="preserve">Sets the header to be active if @active is %TRUE.  When the header is active,
+then it can take keyboard focus, and can be clicked.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clickable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the header is active.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_expand"
+              c:identifier="gtk_tree_view_column_set_expand"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the column to take available extra space.  This space is shared equally
+amongst all columns that have the expand set to %TRUE.  If no column has this
+option set, then the last column gets all extra space.  By default, every
+column is created with this %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="expand" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the column should take available extra space, %FALSE if not</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fixed_width"
+              c:identifier="gtk_tree_view_column_set_fixed_width">
+        <doc xml:whitespace="preserve">Sets the size of the column in pixels.  This is meaningful only if the sizing
+type is #GTK_TREE_VIEW_COLUMN_FIXED.  The size of the column is clamped to
+the min/max width for the column.  Please note that the min/max width of the
+column doesn't actually affect the "fixed_width" property of the widget, just
+the actual size when displayed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fixed_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The size to set @tree_column to. Must be greater than 0.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_max_width"
+              c:identifier="gtk_tree_view_column_set_max_width">
+        <doc xml:whitespace="preserve">Sets the maximum width of the @tree_column.  If @max_width is -1, then the
+maximum width is unset.  Note, the column can actually be wider than max
+width if it's the last column in a view.  In this case, the column expands to
+fill any extra space.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="max_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The maximum width of the column in pixels, or -1.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_min_width"
+              c:identifier="gtk_tree_view_column_set_min_width">
+        <doc xml:whitespace="preserve">Sets the minimum width of the @tree_column.  If @min_width is -1, then the
+minimum width is unset.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The minimum width of the column in pixels, or -1.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_reorderable"
+              c:identifier="gtk_tree_view_column_set_reorderable">
+        <doc xml:whitespace="preserve">If @reorderable is %TRUE, then the column can be reordered by the end user
+dragging the header.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="reorderable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE, if the column can be reordered.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_resizable"
+              c:identifier="gtk_tree_view_column_set_resizable">
+        <doc xml:whitespace="preserve">If @resizable is %TRUE, then the user can explicitly resize the column by
+grabbing the outer edge of the column button.  If resizable is %TRUE and
+sizing mode of the column is #GTK_TREE_VIEW_COLUMN_AUTOSIZE, then the sizing
+mode is changed to #GTK_TREE_VIEW_COLUMN_GROW_ONLY.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="resizable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE, if the column can be resized</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sizing" c:identifier="gtk_tree_view_column_set_sizing">
+        <doc xml:whitespace="preserve">Sets the growth behavior of @tree_column to @type.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkTreeViewColumnSizing.</doc>
+            <type name="TreeViewColumnSizing"
+                  c:type="GtkTreeViewColumnSizing"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sort_column_id"
+              c:identifier="gtk_tree_view_column_set_sort_column_id">
+        <doc xml:whitespace="preserve">Sets the logical @sort_column_id that this column sorts on when this column 
+is selected for sorting.  Doing so makes the column header clickable.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_column_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The @sort_column_id of the model to sort on.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sort_indicator"
+              c:identifier="gtk_tree_view_column_set_sort_indicator">
+        <doc xml:whitespace="preserve">Call this function with a @setting of %TRUE to display an arrow in
+the header button indicating the column is sorted. Call
+gtk_tree_view_column_set_sort_order() to change the direction of
+the arrow.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to display an indicator that the column is sorted</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sort_order"
+              c:identifier="gtk_tree_view_column_set_sort_order">
+        <doc xml:whitespace="preserve">Changes the appearance of the sort indicator. 
+This &lt;emphasis&gt;does not&lt;/emphasis&gt; actually sort the model.  Use
+gtk_tree_view_column_set_sort_column_id() if you want automatic sorting
+support.  This function is primarily for custom sorting behavior, and should
+be used in conjunction with gtk_tree_sortable_set_sort_column() to do
+that. For custom models, the mechanism will vary. 
+The sort indicator changes direction to indicate normal sort or reverse sort.
+Note that you must have the sort indicator enabled to see anything when 
+calling this function; see gtk_tree_view_column_set_sort_indicator().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="order" transfer-ownership="none">
+            <doc xml:whitespace="preserve">sort order that the sort indicator should indicate</doc>
+            <type name="SortType" c:type="GtkSortType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_spacing"
+              c:identifier="gtk_tree_view_column_set_spacing">
+        <doc xml:whitespace="preserve">Sets the spacing field of @tree_column, which is the number of pixels to
+place between cell renderers packed into it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">distance between cell renderers in pixels.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_title" c:identifier="gtk_tree_view_column_set_title">
+        <doc xml:whitespace="preserve">Sets the title of the @tree_column.  If a custom widget has been set, then
+this value is ignored.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The title of the @tree_column.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_visible"
+              c:identifier="gtk_tree_view_column_set_visible">
+        <doc xml:whitespace="preserve">Sets the visibility of @tree_column.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @tree_column is visible.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_widget" c:identifier="gtk_tree_view_column_set_widget">
+        <doc xml:whitespace="preserve">Sets the widget in the header to be @widget.  If widget is %NULL, then the
+header button is set with a #GtkLabel set to the title of @tree_column.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A child #GtkWidget, or %NULL.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="alignment" writable="1" transfer-ownership="none">
+        <type name="gfloat"/>
+      </property>
+      <property name="clickable" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="expand" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="fixed-width" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="max-width" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="min-width" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="reorderable" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="resizable" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="sizing" writable="1" transfer-ownership="none">
+        <type name="TreeViewColumnSizing"/>
+      </property>
+      <property name="sort-column-id"
+                version="2.18"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Logical sort column ID this column sorts on when selected for sorting. Setting the sort column ID makes the column header
+clickable. Set to %-1 to make the column unsortable.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="sort-indicator" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="sort-order" writable="1" transfer-ownership="none">
+        <type name="SortType"/>
+      </property>
+      <property name="spacing" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="title" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="visible" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="widget" writable="1" transfer-ownership="none">
+        <type name="Widget"/>
+      </property>
+      <property name="width" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <field name="parent">
+        <type name="Object" c:type="GtkObject"/>
+      </field>
+      <field name="tree_view">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="button">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="child">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="arrow">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="alignment">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="window">
+        <type name="Gdk.Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="editable_widget">
+        <type name="CellEditable" c:type="GtkCellEditable*"/>
+      </field>
+      <field name="xalign">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="property_changed_signal">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="spacing">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="column_type">
+        <type name="TreeViewColumnSizing" c:type="GtkTreeViewColumnSizing"/>
+      </field>
+      <field name="requested_width">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="button_request">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="resized_width">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="width">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="fixed_width">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="min_width">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="max_width">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="drag_x">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="drag_y">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="title">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="cell_list">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="sort_clicked_signal">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="sort_column_changed_signal">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="sort_column_id">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="sort_order">
+        <type name="SortType" c:type="GtkSortType"/>
+      </field>
+      <field name="visible" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="resizable" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="clickable" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="dirty" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="show_sort_indicator" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="maybe_reordered" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="reorderable" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="use_resized_width" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="expand" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <glib:signal name="clicked">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="TreeViewColumnClass"
+            c:type="GtkTreeViewColumnClass"
+            glib:is-gtype-struct-for="TreeViewColumn">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GtkObjectClass"/>
+      </field>
+      <field name="clicked">
+        <callback name="clicked">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tree_column" transfer-ownership="none">
+              <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="TreeViewColumnDropFunc" c:type="GtkTreeViewColumnDropFunc">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="tree_view" transfer-ownership="none">
+          <type name="TreeView" c:type="GtkTreeView*"/>
+        </parameter>
+        <parameter name="column" transfer-ownership="none">
+          <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+        </parameter>
+        <parameter name="prev_column" transfer-ownership="none">
+          <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+        </parameter>
+        <parameter name="next_column" transfer-ownership="none">
+          <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="TreeViewColumnSizing"
+                 glib:type-name="GtkTreeViewColumnSizing"
+                 glib:get-type="gtk_tree_view_column_sizing_get_type"
+                 c:type="GtkTreeViewColumnSizing">
+      <member name="grow_only"
+              value="0"
+              c:identifier="GTK_TREE_VIEW_COLUMN_GROW_ONLY"
+              glib:nick="grow-only"/>
+      <member name="autosize"
+              value="1"
+              c:identifier="GTK_TREE_VIEW_COLUMN_AUTOSIZE"
+              glib:nick="autosize"/>
+      <member name="fixed"
+              value="2"
+              c:identifier="GTK_TREE_VIEW_COLUMN_FIXED"
+              glib:nick="fixed"/>
+    </enumeration>
+    <enumeration name="TreeViewDropPosition"
+                 glib:type-name="GtkTreeViewDropPosition"
+                 glib:get-type="gtk_tree_view_drop_position_get_type"
+                 c:type="GtkTreeViewDropPosition">
+      <member name="before"
+              value="0"
+              c:identifier="GTK_TREE_VIEW_DROP_BEFORE"
+              glib:nick="before"/>
+      <member name="after"
+              value="1"
+              c:identifier="GTK_TREE_VIEW_DROP_AFTER"
+              glib:nick="after"/>
+      <member name="into_or_before"
+              value="2"
+              c:identifier="GTK_TREE_VIEW_DROP_INTO_OR_BEFORE"
+              glib:nick="into-or-before"/>
+      <member name="into_or_after"
+              value="3"
+              c:identifier="GTK_TREE_VIEW_DROP_INTO_OR_AFTER"
+              glib:nick="into-or-after"/>
+    </enumeration>
+    <enumeration name="TreeViewGridLines"
+                 glib:type-name="GtkTreeViewGridLines"
+                 glib:get-type="gtk_tree_view_grid_lines_get_type"
+                 c:type="GtkTreeViewGridLines">
+      <member name="none"
+              value="0"
+              c:identifier="GTK_TREE_VIEW_GRID_LINES_NONE"
+              glib:nick="none"/>
+      <member name="horizontal"
+              value="1"
+              c:identifier="GTK_TREE_VIEW_GRID_LINES_HORIZONTAL"
+              glib:nick="horizontal"/>
+      <member name="vertical"
+              value="2"
+              c:identifier="GTK_TREE_VIEW_GRID_LINES_VERTICAL"
+              glib:nick="vertical"/>
+      <member name="both"
+              value="3"
+              c:identifier="GTK_TREE_VIEW_GRID_LINES_BOTH"
+              glib:nick="both"/>
+    </enumeration>
+    <callback name="TreeViewMappingFunc" c:type="GtkTreeViewMappingFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tree_view" transfer-ownership="none">
+          <type name="TreeView" c:type="GtkTreeView*"/>
+        </parameter>
+        <parameter name="path" transfer-ownership="none">
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="TreeViewPrivate" c:type="GtkTreeViewPrivate" disguised="1">
+    </record>
+    <callback name="TreeViewRowSeparatorFunc"
+              c:type="GtkTreeViewRowSeparatorFunc">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="model" transfer-ownership="none">
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </parameter>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="TreeIter" c:type="GtkTreeIter*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="TreeViewSearchEqualFunc"
+              c:type="GtkTreeViewSearchEqualFunc">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="model" transfer-ownership="none">
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </parameter>
+        <parameter name="column" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="TreeIter" c:type="GtkTreeIter*"/>
+        </parameter>
+        <parameter name="search_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="TreeViewSearchPositionFunc"
+              c:type="GtkTreeViewSearchPositionFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tree_view" transfer-ownership="none">
+          <type name="TreeView" c:type="GtkTreeView*"/>
+        </parameter>
+        <parameter name="search_dialog" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="UIManager"
+           c:symbol-prefix="ui_manager"
+           c:type="GtkUIManager"
+           parent="GObject.Object"
+           glib:type-name="GtkUIManager"
+           glib:get-type="gtk_ui_manager_get_type"
+           glib:type-struct="UIManagerClass">
+      <implements name="Buildable"/>
+      <constructor name="new" c:identifier="gtk_ui_manager_new" version="2.4">
+        <doc xml:whitespace="preserve">Creates a new ui manager object.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new ui manager object.</doc>
+          <type name="UIManager" c:type="GtkUIManager*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="get_action" invoker="get_action" version="2.4">
+        <doc xml:whitespace="preserve">Looks up an action by following a path. See gtk_ui_manager_get_widget()
+for more information about paths.
+or %NULL if no widget was found.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the action whose proxy widget is found by following the path,</doc>
+          <type name="Action" c:type="GtkAction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a path</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_widget" invoker="get_widget" version="2.4">
+        <doc xml:whitespace="preserve">Looks up a widget by following a path. 
+The path consists of the names specified in the XML description of the UI. 
+separated by '/'. Elements which don't have a name or action attribute in 
+the XML (e.g. &amp;lt;popup&amp;gt;) can be addressed by their XML element name 
+(e.g. "popup"). The root element ("/ui") can be omitted in the path.
+Note that the widget found by following a path that ends in a &amp;lt;menu&amp;gt;
+element is the menuitem to which the menu is attached, not the menu itmanager.
+Also note that the widgets constructed by a ui manager are not tied to 
+the lifecycle of the ui manager. If you add the widgets returned by this 
+function to some container or explicitly ref them, they will survive the
+destruction of the ui manager.
+was found.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the widget found by following the path, or %NULL if no widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a path</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_ui" c:identifier="gtk_ui_manager_add_ui" version="2.4">
+        <doc xml:whitespace="preserve">Adds a UI element to the current contents of @manager. 
+If @type is %GTK_UI_MANAGER_AUTO, GTK+ inserts a menuitem, toolitem or 
+separator if such an element can be inserted at the place determined by 
+the place determined by @path.
+If @path points to a menuitem or toolitem, the new element will be inserted
+before or after this item, depending on @top.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="merge_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the merge id for the merged UI, see gtk_ui_manager_new_merge_id()</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a path</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name for the added UI element</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="action" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the name of the action to be proxied, or %NULL to add a separator</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of UI element to add.</doc>
+            <type name="UIManagerItemType" c:type="GtkUIManagerItemType"/>
+          </parameter>
+          <parameter name="top" transfer-ownership="none">
+            <doc xml:whitespace="preserve">if %TRUE, the UI element is added before its siblings, otherwise it is added after its siblings.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_ui_from_file"
+              c:identifier="gtk_ui_manager_add_ui_from_file"
+              version="2.4"
+              throws="1">
+        <doc xml:whitespace="preserve">Parses a file containing a &lt;link linkend="XML-UI"&gt;UI definition&lt;/link&gt; and 
+merges it with the current contents of @manager. 
+to unmerge the UI with gtk_ui_manager_remove_ui(). If an error occurred,
+the return value is 0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The merge id for the merged UI. The merge id can be used</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the file to parse</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_ui_from_string"
+              c:identifier="gtk_ui_manager_add_ui_from_string"
+              version="2.4"
+              throws="1">
+        <doc xml:whitespace="preserve">Parses a string containing a &lt;link linkend="XML-UI"&gt;UI definition&lt;/link&gt; and 
+merges it with the current contents of @manager. An enclosing &amp;lt;ui&amp;gt; 
+element is added if it is missing.
+to unmerge the UI with gtk_ui_manager_remove_ui(). If an error occurred,
+the return value is 0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The merge id for the merged UI. The merge id can be used</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the string to parse</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of @buffer (may be -1 if @buffer is nul-terminated)</doc>
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ensure_update"
+              c:identifier="gtk_ui_manager_ensure_update"
+              version="2.4">
+        <doc xml:whitespace="preserve">Makes sure that all pending updates to the UI have been completed.
+This may occasionally be necessary, since #GtkUIManager updates the 
+UI in an idle function. A typical example where this function is
+useful is to enforce that the menubar and toolbar have been added to 
+the main window before showing it:
+|[
+gtk_container_add (GTK_CONTAINER (window), vbox); 
+g_signal_connect (merge, "add-widget", 
+G_CALLBACK (add_widget), vbox);
+gtk_ui_manager_add_ui_from_file (merge, "my-menus");
+gtk_ui_manager_add_ui_from_file (merge, "my-toolbars");
+gtk_ui_manager_ensure_update (merge);  
+gtk_widget_show (window);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_accel_group"
+              c:identifier="gtk_ui_manager_get_accel_group"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the #GtkAccelGroup associated with @manager.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GtkAccelGroup.</doc>
+          <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+        </return-value>
+      </method>
+      <method name="get_action"
+              c:identifier="gtk_ui_manager_get_action"
+              version="2.4">
+        <doc xml:whitespace="preserve">Looks up an action by following a path. See gtk_ui_manager_get_widget()
+for more information about paths.
+or %NULL if no widget was found.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the action whose proxy widget is found by following the path,</doc>
+          <type name="Action" c:type="GtkAction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a path</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_action_groups"
+              c:identifier="gtk_ui_manager_get_action_groups"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the list of action groups associated with @manager.
+action groups. The list is owned by GTK+
+and should not be modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GList of</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="ActionGroup"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_add_tearoffs"
+              c:identifier="gtk_ui_manager_get_add_tearoffs"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether menus generated by this #GtkUIManager
+will have tearoff menu items.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether tearoff menu items are added</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_toplevels"
+              c:identifier="gtk_ui_manager_get_toplevels"
+              version="2.4">
+        <doc xml:whitespace="preserve">Obtains a list of all toplevel widgets of the requested types.
+all toplevel widgets of the requested types.  Free the returned list with g_slist_free().</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a newly-allocated #GSList of</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Widget"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="types" transfer-ownership="none">
+            <doc xml:whitespace="preserve">specifies the types of toplevel widgets to include. Allowed types are #GTK_UI_MANAGER_MENUBAR, #GTK_UI_MANAGER_TOOLBAR and #GTK_UI_MANAGER_POPUP.</doc>
+            <type name="UIManagerItemType" c:type="GtkUIManagerItemType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ui" c:identifier="gtk_ui_manager_get_ui" version="2.4">
+        <doc xml:whitespace="preserve">Creates a &lt;link linkend="XML-UI"&gt;UI definition&lt;/link&gt; of the merged UI.
+the merged UI.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly allocated string containing an XML representation of</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_widget"
+              c:identifier="gtk_ui_manager_get_widget"
+              version="2.4">
+        <doc xml:whitespace="preserve">Looks up a widget by following a path. 
+The path consists of the names specified in the XML description of the UI. 
+separated by '/'. Elements which don't have a name or action attribute in 
+the XML (e.g. &amp;lt;popup&amp;gt;) can be addressed by their XML element name 
+(e.g. "popup"). The root element ("/ui") can be omitted in the path.
+Note that the widget found by following a path that ends in a &amp;lt;menu&amp;gt;
+element is the menuitem to which the menu is attached, not the menu itmanager.
+Also note that the widgets constructed by a ui manager are not tied to 
+the lifecycle of the ui manager. If you add the widgets returned by this 
+function to some container or explicitly ref them, they will survive the
+destruction of the ui manager.
+was found.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the widget found by following the path, or %NULL if no widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a path</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_action_group"
+              c:identifier="gtk_ui_manager_insert_action_group"
+              version="2.4">
+        <doc xml:whitespace="preserve">Inserts an action group into the list of action groups associated 
+with @manager. Actions in earlier groups hide actions with the same 
+name in later groups.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_group" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action group to be inserted</doc>
+            <type name="ActionGroup" c:type="GtkActionGroup*"/>
+          </parameter>
+          <parameter name="pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position at which the group will be inserted.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="new_merge_id"
+              c:identifier="gtk_ui_manager_new_merge_id"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns an unused merge id, suitable for use with 
+gtk_ui_manager_add_ui().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an unused merge id.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="remove_action_group"
+              c:identifier="gtk_ui_manager_remove_action_group"
+              version="2.4">
+        <doc xml:whitespace="preserve">Removes an action group from the list of action groups associated 
+with @manager.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_group" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action group to be removed</doc>
+            <type name="ActionGroup" c:type="GtkActionGroup*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_ui"
+              c:identifier="gtk_ui_manager_remove_ui"
+              version="2.4">
+        <doc xml:whitespace="preserve">Unmerges the part of @manager&lt;!-- --&gt;s content identified by @merge_id.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="merge_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a merge id as returned by gtk_ui_manager_add_ui_from_string()</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_add_tearoffs"
+              c:identifier="gtk_ui_manager_set_add_tearoffs"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the "add_tearoffs" property, which controls whether menus 
+generated by this #GtkUIManager will have tearoff menu items. 
+Note that this only affects regular menus. Generated popup 
+menus never have tearoff menu items.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="add_tearoffs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether tearoff menu items are added</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="add-tearoffs"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The "add-tearoffs" property controls whether generated menus 
+have tearoff menu items. 
+Note that this only affects regular menus. Generated popup 
+menus never have tearoff menu items.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="ui" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="private_data">
+        <type name="UIManagerPrivate" c:type="GtkUIManagerPrivate*"/>
+      </field>
+      <glib:signal name="actions-changed" version="2.4">
+        <doc xml:whitespace="preserve">The ::actions-changed signal is emitted whenever the set of actions
+changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="add-widget" version="2.4">
+        <doc xml:whitespace="preserve">The ::add-widget signal is emitted for each generated menubar and toolbar.
+It is not emitted for generated popup menus, which can be obtained by 
+gtk_ui_manager_get_widget().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the added widget</doc>
+            <type name="Widget"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="connect-proxy" version="2.4">
+        <doc xml:whitespace="preserve">The ::connect-proxy signal is emitted after connecting a proxy to
+an action in the group. 
+This is intended for simple customizations for which a custom action
+class would be too clumsy, e.g. showing tooltips for menuitems in the
+statusbar.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action</doc>
+            <type name="Action"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the proxy</doc>
+            <type name="Widget"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="disconnect-proxy" version="2.4">
+        <doc xml:whitespace="preserve">The ::disconnect-proxy signal is emitted after disconnecting a proxy
+from an action in the group.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action</doc>
+            <type name="Action"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the proxy</doc>
+            <type name="Widget"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="post-activate" version="2.4">
+        <doc xml:whitespace="preserve">The ::post-activate signal is emitted just after the @action
+is activated.
+This is intended for applications to get notification
+just after any action is activated.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action</doc>
+            <type name="Action"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="pre-activate" version="2.4">
+        <doc xml:whitespace="preserve">The ::pre-activate signal is emitted just before the @action
+is activated.
+This is intended for applications to get notification
+just before any action is activated.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action</doc>
+            <type name="Action"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="UIManagerClass"
+            c:type="GtkUIManagerClass"
+            glib:is-gtype-struct-for="UIManager">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="add_widget">
+        <callback name="add_widget">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="UIManager" c:type="GtkUIManager*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="actions_changed">
+        <callback name="actions_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="UIManager" c:type="GtkUIManager*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="connect_proxy">
+        <callback name="connect_proxy">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="UIManager" c:type="GtkUIManager*"/>
+            </parameter>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="GtkAction*"/>
+            </parameter>
+            <parameter name="proxy" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="disconnect_proxy">
+        <callback name="disconnect_proxy">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="UIManager" c:type="GtkUIManager*"/>
+            </parameter>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="GtkAction*"/>
+            </parameter>
+            <parameter name="proxy" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pre_activate">
+        <callback name="pre_activate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="UIManager" c:type="GtkUIManager*"/>
+            </parameter>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="GtkAction*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="post_activate">
+        <callback name="post_activate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="UIManager" c:type="GtkUIManager*"/>
+            </parameter>
+            <parameter name="action" transfer-ownership="none">
+              <type name="Action" c:type="GtkAction*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_widget">
+        <callback name="get_widget">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the widget found by following the path, or %NULL if no widget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="UIManager" c:type="GtkUIManager*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a path</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_action">
+        <callback name="get_action">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action whose proxy widget is found by following the path,</doc>
+            <type name="Action" c:type="GtkAction*"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="UIManager" c:type="GtkUIManager*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a path</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <bitfield name="UIManagerItemType"
+              glib:type-name="GtkUIManagerItemType"
+              glib:get-type="gtk_ui_manager_item_type_get_type"
+              c:type="GtkUIManagerItemType">
+      <member name="auto"
+              value="0"
+              c:identifier="GTK_UI_MANAGER_AUTO"
+              glib:nick="auto"/>
+      <member name="menubar"
+              value="1"
+              c:identifier="GTK_UI_MANAGER_MENUBAR"
+              glib:nick="menubar"/>
+      <member name="menu"
+              value="2"
+              c:identifier="GTK_UI_MANAGER_MENU"
+              glib:nick="menu"/>
+      <member name="toolbar"
+              value="4"
+              c:identifier="GTK_UI_MANAGER_TOOLBAR"
+              glib:nick="toolbar"/>
+      <member name="placeholder"
+              value="8"
+              c:identifier="GTK_UI_MANAGER_PLACEHOLDER"
+              glib:nick="placeholder"/>
+      <member name="popup"
+              value="16"
+              c:identifier="GTK_UI_MANAGER_POPUP"
+              glib:nick="popup"/>
+      <member name="menuitem"
+              value="32"
+              c:identifier="GTK_UI_MANAGER_MENUITEM"
+              glib:nick="menuitem"/>
+      <member name="toolitem"
+              value="64"
+              c:identifier="GTK_UI_MANAGER_TOOLITEM"
+              glib:nick="toolitem"/>
+      <member name="separator"
+              value="128"
+              c:identifier="GTK_UI_MANAGER_SEPARATOR"
+              glib:nick="separator"/>
+      <member name="accelerator"
+              value="256"
+              c:identifier="GTK_UI_MANAGER_ACCELERATOR"
+              glib:nick="accelerator"/>
+      <member name="popup_with_accels"
+              value="512"
+              c:identifier="GTK_UI_MANAGER_POPUP_WITH_ACCELS"
+              glib:nick="popup-with-accels"/>
+    </bitfield>
+    <record name="UIManagerPrivate" c:type="GtkUIManagerPrivate" disguised="1">
+    </record>
+    <enumeration name="Unit"
+                 glib:type-name="GtkUnit"
+                 glib:get-type="gtk_unit_get_type"
+                 c:type="GtkUnit">
+      <member name="pixel"
+              value="0"
+              c:identifier="GTK_UNIT_PIXEL"
+              glib:nick="pixel"/>
+      <member name="points"
+              value="1"
+              c:identifier="GTK_UNIT_POINTS"
+              glib:nick="points"/>
+      <member name="inch"
+              value="2"
+              c:identifier="GTK_UNIT_INCH"
+              glib:nick="inch"/>
+      <member name="mm" value="3" c:identifier="GTK_UNIT_MM" glib:nick="mm"/>
+    </enumeration>
+    <enumeration name="UpdateType"
+                 glib:type-name="GtkUpdateType"
+                 glib:get-type="gtk_update_type_get_type"
+                 c:type="GtkUpdateType">
+      <member name="continuous"
+              value="0"
+              c:identifier="GTK_UPDATE_CONTINUOUS"
+              glib:nick="continuous"/>
+      <member name="discontinuous"
+              value="1"
+              c:identifier="GTK_UPDATE_DISCONTINUOUS"
+              glib:nick="discontinuous"/>
+      <member name="delayed"
+              value="2"
+              c:identifier="GTK_UPDATE_DELAYED"
+              glib:nick="delayed"/>
+    </enumeration>
+    <class name="VBox"
+           c:symbol-prefix="vbox"
+           c:type="GtkVBox"
+           parent="Box"
+           glib:type-name="GtkVBox"
+           glib:get-type="gtk_vbox_get_type"
+           glib:type-struct="VBoxClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_vbox_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkVBox.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkVBox.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="homogeneous" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if all children are to be given equal space allotments.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of pixels to place by default between children.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <field name="box">
+        <type name="Box" c:type="GtkBox"/>
+      </field>
+    </class>
+    <record name="VBoxClass"
+            c:type="GtkVBoxClass"
+            glib:is-gtype-struct-for="VBox">
+      <field name="parent_class">
+        <type name="BoxClass" c:type="GtkBoxClass"/>
+      </field>
+    </record>
+    <class name="VButtonBox"
+           c:symbol-prefix="vbutton_box"
+           c:type="GtkVButtonBox"
+           parent="ButtonBox"
+           glib:type-name="GtkVButtonBox"
+           glib:get-type="gtk_vbutton_box_get_type"
+           glib:type-struct="VButtonBoxClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_vbutton_box_new">
+        <doc xml:whitespace="preserve">Creates a new vertical button box.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new button box #GtkWidget.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <field name="button_box">
+        <type name="ButtonBox" c:type="GtkButtonBox"/>
+      </field>
+    </class>
+    <record name="VButtonBoxClass"
+            c:type="GtkVButtonBoxClass"
+            glib:is-gtype-struct-for="VButtonBox">
+      <field name="parent_class">
+        <type name="ButtonBoxClass" c:type="GtkButtonBoxClass"/>
+      </field>
+    </record>
+    <class name="VPaned"
+           c:symbol-prefix="vpaned"
+           c:type="GtkVPaned"
+           parent="Paned"
+           glib:type-name="GtkVPaned"
+           glib:get-type="gtk_vpaned_get_type"
+           glib:type-struct="VPanedClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_vpaned_new">
+        <doc xml:whitespace="preserve">Create a new #GtkVPaned</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new #GtkVPaned</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <field name="paned">
+        <type name="Paned" c:type="GtkPaned"/>
+      </field>
+    </class>
+    <record name="VPanedClass"
+            c:type="GtkVPanedClass"
+            glib:is-gtype-struct-for="VPaned">
+      <field name="parent_class">
+        <type name="PanedClass" c:type="GtkPanedClass"/>
+      </field>
+    </record>
+    <class name="VRuler"
+           c:symbol-prefix="vruler"
+           c:type="GtkVRuler"
+           parent="Ruler"
+           glib:type-name="GtkVRuler"
+           glib:get-type="gtk_vruler_get_type"
+           glib:type-struct="VRulerClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_vruler_new">
+        <doc xml:whitespace="preserve">Creates a new vertical ruler</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkVRuler.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <field name="ruler">
+        <type name="Ruler" c:type="GtkRuler"/>
+      </field>
+    </class>
+    <record name="VRulerClass"
+            c:type="GtkVRulerClass"
+            glib:is-gtype-struct-for="VRuler">
+      <field name="parent_class">
+        <type name="RulerClass" c:type="GtkRulerClass"/>
+      </field>
+    </record>
+    <class name="VScale"
+           c:symbol-prefix="vscale"
+           c:type="GtkVScale"
+           parent="Scale"
+           glib:type-name="GtkVScale"
+           glib:get-type="gtk_vscale_get_type"
+           glib:type-struct="VScaleClass">
+      <doc xml:whitespace="preserve">The #GtkVScale struct contains private data only, and
+should be accessed using the functions below.</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_vscale_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkVScale.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkVScale.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkAdjustment which sets the range of the scale.</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_range"
+                   c:identifier="gtk_vscale_new_with_range">
+        <doc xml:whitespace="preserve">Creates a new vertical scale widget that lets the user input a
+number between @min and @max (including @min and @max) with the
+increment @step.  @step must be nonzero; it's the distance the
+slider moves when using the arrow keys to adjust the scale value.
+Note that the way in which the precision is derived works best if @step
+is a power of ten. If the resulting precision is not suitable for your
+needs, use gtk_scale_set_digits() to correct it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkVScale</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="min" transfer-ownership="none">
+            <doc xml:whitespace="preserve">minimum value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="max" transfer-ownership="none">
+            <doc xml:whitespace="preserve">maximum value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="step" transfer-ownership="none">
+            <doc xml:whitespace="preserve">step increment (tick size) used with keyboard shortcuts</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <field name="scale">
+        <type name="Scale" c:type="GtkScale"/>
+      </field>
+    </class>
+    <record name="VScaleClass"
+            c:type="GtkVScaleClass"
+            glib:is-gtype-struct-for="VScale">
+      <field name="parent_class">
+        <type name="ScaleClass" c:type="GtkScaleClass"/>
+      </field>
+    </record>
+    <class name="VScrollbar"
+           c:symbol-prefix="vscrollbar"
+           c:type="GtkVScrollbar"
+           parent="Scrollbar"
+           glib:type-name="GtkVScrollbar"
+           glib:get-type="gtk_vscrollbar_get_type"
+           glib:type-struct="VScrollbarClass">
+      <doc xml:whitespace="preserve">The #GtkVScrollbar struct contains private data and should be accessed
+using the functions below.</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_vscrollbar_new">
+        <doc xml:whitespace="preserve">Creates a new vertical scrollbar.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new #GtkVScrollbar</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the #GtkAdjustment to use, or %NULL to create a new adjustment</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <field name="scrollbar">
+        <type name="Scrollbar" c:type="GtkScrollbar"/>
+      </field>
+    </class>
+    <record name="VScrollbarClass"
+            c:type="GtkVScrollbarClass"
+            glib:is-gtype-struct-for="VScrollbar">
+      <field name="parent_class">
+        <type name="ScrollbarClass" c:type="GtkScrollbarClass"/>
+      </field>
+    </record>
+    <class name="VSeparator"
+           c:symbol-prefix="vseparator"
+           c:type="GtkVSeparator"
+           parent="Separator"
+           glib:type-name="GtkVSeparator"
+           glib:get-type="gtk_vseparator_get_type"
+           glib:type-struct="VSeparatorClass">
+      <doc xml:whitespace="preserve">The #GtkVSeparator struct contains private data only, and
+should be accessed using the functions below.</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_vseparator_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkVSeparator.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkVSeparator.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <field name="separator">
+        <type name="Separator" c:type="GtkSeparator"/>
+      </field>
+    </class>
+    <record name="VSeparatorClass"
+            c:type="GtkVSeparatorClass"
+            glib:is-gtype-struct-for="VSeparator">
+      <field name="parent_class">
+        <type name="SeparatorClass" c:type="GtkSeparatorClass"/>
+      </field>
+    </record>
+    <class name="Viewport"
+           c:symbol-prefix="viewport"
+           c:type="GtkViewport"
+           parent="Bin"
+           glib:type-name="GtkViewport"
+           glib:get-type="gtk_viewport_get_type"
+           glib:type-struct="ViewportClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_viewport_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkViewport with the given adjustments.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkViewport.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="hadjustment" transfer-ownership="none">
+            <doc xml:whitespace="preserve">horizontal adjustment.</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+          <parameter name="vadjustment" transfer-ownership="none">
+            <doc xml:whitespace="preserve">vertical adjustment.</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_bin_window"
+              c:identifier="gtk_viewport_get_bin_window"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets the bin window of the #GtkViewport.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_hadjustment"
+              c:identifier="gtk_viewport_get_hadjustment">
+        <doc xml:whitespace="preserve">Returns the horizontal adjustment of the viewport.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the horizontal adjustment of @viewport.</doc>
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="get_shadow_type"
+              c:identifier="gtk_viewport_get_shadow_type">
+        <doc xml:whitespace="preserve">Gets the shadow type of the #GtkViewport. See
+gtk_viewport_set_shadow_type().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the shadow type</doc>
+          <type name="ShadowType" c:type="GtkShadowType"/>
+        </return-value>
+      </method>
+      <method name="get_vadjustment"
+              c:identifier="gtk_viewport_get_vadjustment">
+        <doc xml:whitespace="preserve">Returns the vertical adjustment of the viewport.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the vertical adjustment of @viewport.</doc>
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="get_view_window"
+              c:identifier="gtk_viewport_get_view_window"
+              version="2.22">
+        <doc xml:whitespace="preserve">Gets the view window of the #GtkViewport.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="set_hadjustment"
+              c:identifier="gtk_viewport_set_hadjustment">
+        <doc xml:whitespace="preserve">Sets the horizontal adjustment of the viewport.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkAdjustment.</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_shadow_type"
+              c:identifier="gtk_viewport_set_shadow_type">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="ShadowType" c:type="GtkShadowType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_vadjustment"
+              c:identifier="gtk_viewport_set_vadjustment">
+        <doc xml:whitespace="preserve">Sets the vertical adjustment of the viewport.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkAdjustment.</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="hadjustment"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="Adjustment"/>
+      </property>
+      <property name="shadow-type" writable="1" transfer-ownership="none">
+        <type name="ShadowType"/>
+      </property>
+      <property name="vadjustment"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="Adjustment"/>
+      </property>
+      <field name="bin">
+        <type name="Bin" c:type="GtkBin"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="ViewportPrivate" c:type="GtkViewportPrivate*"/>
+      </field>
+      <glib:signal name="set-scroll-adjustments">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Adjustment"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="Adjustment"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ViewportClass"
+            c:type="GtkViewportClass"
+            glib:is-gtype-struct-for="Viewport">
+      <field name="parent_class">
+        <type name="BinClass" c:type="GtkBinClass"/>
+      </field>
+      <field name="set_scroll_adjustments">
+        <callback name="set_scroll_adjustments">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="viewport" transfer-ownership="none">
+              <type name="Viewport" c:type="GtkViewport*"/>
+            </parameter>
+            <parameter name="hadjustment" transfer-ownership="none">
+              <type name="Adjustment" c:type="GtkAdjustment*"/>
+            </parameter>
+            <parameter name="vadjustment" transfer-ownership="none">
+              <type name="Adjustment" c:type="GtkAdjustment*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="ViewportPrivate" c:type="GtkViewportPrivate" disguised="1">
+    </record>
+    <class name="VolumeButton"
+           c:symbol-prefix="volume_button"
+           c:type="GtkVolumeButton"
+           parent="ScaleButton"
+           glib:type-name="GtkVolumeButton"
+           glib:get-type="gtk_volume_button_get_type"
+           glib:type-struct="VolumeButtonClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Activatable"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_volume_button_new">
+        <return-value transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <field name="parent">
+        <type name="ScaleButton" c:type="GtkScaleButton"/>
+      </field>
+    </class>
+    <record name="VolumeButtonClass"
+            c:type="GtkVolumeButtonClass"
+            glib:is-gtype-struct-for="VolumeButton">
+      <field name="parent_class">
+        <type name="ScaleButtonClass" c:type="GtkScaleButtonClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="Widget"
+           c:symbol-prefix="widget"
+           c:type="GtkWidget"
+           parent="Object"
+           abstract="1"
+           glib:type-name="GtkWidget"
+           glib:get-type="gtk_widget_get_type"
+           glib:type-struct="WidgetClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_widget_new" introspectable="0">
+        <doc xml:whitespace="preserve">This is a convenience function for creating a widget and setting
+its properties in one go. For example you might write:
+&lt;literal&gt;gtk_widget_new (GTK_TYPE_LABEL, "label", "Hello World", "xalign",
+0.0, NULL)&lt;/literal&gt; to create a left-aligned label. Equivalent to
+g_object_new(), but returns a widget so you don't have to
+cast the object yourself.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkWidget of type @widget_type</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">type ID of the widget to create</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of first property to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="get_default_colormap"
+                c:identifier="gtk_widget_get_default_colormap">
+        <doc xml:whitespace="preserve">Obtains the default colormap used to create widgets.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">default widget colormap</doc>
+          <type name="Gdk.Colormap" c:type="GdkColormap*"/>
+        </return-value>
+      </function>
+      <function name="get_default_direction"
+                c:identifier="gtk_widget_get_default_direction">
+        <doc xml:whitespace="preserve">Obtains the current default reading direction. See
+gtk_widget_set_default_direction().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current default direction.</doc>
+          <type name="TextDirection" c:type="GtkTextDirection"/>
+        </return-value>
+      </function>
+      <function name="get_default_style"
+                c:identifier="gtk_widget_get_default_style">
+        <doc xml:whitespace="preserve">Returns the default style used by all widgets initially.
+by GTK+ and should not be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the default style. This #GtkStyle object is owned</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </return-value>
+      </function>
+      <function name="get_default_visual"
+                c:identifier="gtk_widget_get_default_visual">
+        <doc xml:whitespace="preserve">Obtains the visual of the default colormap. Not really useful;
+used to be useful before gdk_colormap_get_visual() existed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">visual of the default colormap</doc>
+          <type name="Gdk.Visual" c:type="GdkVisual*"/>
+        </return-value>
+      </function>
+      <function name="pop_colormap" c:identifier="gtk_widget_pop_colormap">
+        <doc xml:whitespace="preserve">Removes a colormap pushed with gtk_widget_push_colormap().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </function>
+      <function name="pop_composite_child"
+                c:identifier="gtk_widget_pop_composite_child">
+        <doc xml:whitespace="preserve">Cancels the effect of a previous call to gtk_widget_push_composite_child().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </function>
+      <function name="push_colormap" c:identifier="gtk_widget_push_colormap">
+        <doc xml:whitespace="preserve">Pushes @cmap onto a global stack of colormaps; the topmost
+colormap on the stack will be used to create all widgets.
+Remove @cmap with gtk_widget_pop_colormap(). There's little
+reason to use this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cmap" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkColormap</doc>
+            <type name="Gdk.Colormap" c:type="GdkColormap*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="push_composite_child"
+                c:identifier="gtk_widget_push_composite_child">
+        <doc xml:whitespace="preserve">Makes all newly-created widgets as composite children until
+the corresponding gtk_widget_pop_composite_child() call.
+A composite child is a child that's an implementation detail of the
+container it's inside and should not be visible to people using the
+container. Composite children aren't treated differently by GTK (but
+see gtk_container_foreach() vs. gtk_container_forall()), but e.g. GUI 
+builders might want to treat them in a different way.
+Here is a simple example:
+|[
+gtk_widget_push_composite_child ();
+scrolled_window-&gt;hscrollbar = gtk_hscrollbar_new (hadjustment);
+gtk_widget_set_composite_name (scrolled_window-&gt;hscrollbar, "hscrollbar");
+gtk_widget_pop_composite_child ();
+gtk_widget_set_parent (scrolled_window-&gt;hscrollbar, 
+GTK_WIDGET (scrolled_window));
+g_object_ref (scrolled_window-&gt;hscrollbar);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </function>
+      <function name="set_default_colormap"
+                c:identifier="gtk_widget_set_default_colormap">
+        <doc xml:whitespace="preserve">Sets the default colormap to use when creating widgets.
+gtk_widget_push_colormap() is a better function to use if
+you only want to affect a few widgets, rather than all widgets.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="colormap" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkColormap</doc>
+            <type name="Gdk.Colormap" c:type="GdkColormap*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="set_default_direction"
+                c:identifier="gtk_widget_set_default_direction">
+        <doc xml:whitespace="preserve">Sets the default reading direction for widgets where the
+direction has not been explicitly set by gtk_widget_set_direction().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dir" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new default direction. This cannot be %GTK_TEXT_DIR_NONE.</doc>
+            <type name="TextDirection" c:type="GtkTextDirection"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="adjust_size_allocation">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="allocation" transfer-ownership="none">
+            <type name="Allocation" c:type="GtkAllocation*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="adjust_size_request">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <type name="Orientation" c:type="GtkOrientation"/>
+          </parameter>
+          <parameter name="for_size" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="minimum_size" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="natural_size" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="dispatch_child_properties_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_pspecs" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="pspecs" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_accessible" invoker="get_accessible">
+        <doc xml:whitespace="preserve">Returns the accessible object that describes the widget to an
+assistive technology.
+If no accessibility library is loaded (i.e. no ATK implementation library is
+loaded via &lt;envar&gt;GTK_MODULES&lt;/envar&gt; or via another application library,
+such as libgnome), then this #AtkObject instance may be a no-op. Likewise,
+if no class-specific #AtkObject implementation is available for the widget
+instance in question, it will inherit an #AtkObject implementation from the
+first ancestor class for which such an implementation is defined.
+The documentation of the &lt;ulink url="http://developer.gnome.org/doc/API/2.0/atk/index.html"&gt;ATK&lt;/ulink&gt;
+library contains more information about accessible objects and their uses.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #AtkObject associated with @widget</doc>
+          <type name="Atk.Object" c:type="AtkObject*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="hide_all" invoker="hide_all">
+        <doc xml:whitespace="preserve">Recursively hides a widget and any child widgets.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="show_all" invoker="show_all">
+        <doc xml:whitespace="preserve">Recursively shows a widget, and any child widgets (if the widget is
+a container).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="activate" c:identifier="gtk_widget_activate">
+        <doc xml:whitespace="preserve">For widgets that can be "activated" (buttons, menu items, etc.)
+this function activates them. Activation is what happens when you
+press Enter on a widget during key navigation. If @widget isn't 
+activatable, the function returns %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the widget was activatable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="add_accelerator" c:identifier="gtk_widget_add_accelerator">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_signal" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="accel_group" transfer-ownership="none">
+            <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+          </parameter>
+          <parameter name="accel_key" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="accel_mods" transfer-ownership="none">
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+          <parameter name="accel_flags" transfer-ownership="none">
+            <type name="AccelFlags" c:type="GtkAccelFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_device_events"
+              c:identifier="gtk_widget_add_device_events"
+              version="3.0">
+        <doc xml:whitespace="preserve">Adds the device events in the bitfield @events to the event mask for</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkDevice</doc>
+            <type name="Gdk.Device" c:type="GdkDevice*"/>
+          </parameter>
+          <parameter name="events" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an event mask, see #GdkEventMask</doc>
+            <type name="Gdk.EventMask" c:type="GdkEventMask"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_events" c:identifier="gtk_widget_add_events">
+        <doc xml:whitespace="preserve">Adds the events in the bitfield @events to the event mask for</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="events" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an event mask, see #GdkEventMask</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_mnemonic_label"
+              c:identifier="gtk_widget_add_mnemonic_label"
+              version="2.4">
+        <doc xml:whitespace="preserve">Adds a widget to the list of mnemonic labels for
+this widget. (See gtk_widget_list_mnemonic_labels()). Note the
+list of mnemonic labels for the widget is cleared when the
+widget is destroyed, so the caller must make sure to update
+its internal state at this point as well, by using a connection
+to the #GtkWidget::destroy signal or a weak notifier.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkWidget that acts as a mnemonic label for @widget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_activate_accel"
+              c:identifier="gtk_widget_can_activate_accel"
+              version="2.4">
+        <doc xml:whitespace="preserve">Determines whether an accelerator that activates the signal
+identified by @signal_id can currently be activated.
+This is done by emitting the #GtkWidget::can-activate-accel
+signal on @widget; if the signal isn't overridden by a
+handler or in a derived widget, then the default check is
+that the widget must be sensitive, and the widget and all
+its ancestors mapped.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the accelerator can be activated.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="signal_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of a signal installed on @widget</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_focus" c:identifier="gtk_widget_child_focus">
+        <doc xml:whitespace="preserve">This function is used by custom widget implementations; if you're
+writing an app, you'd use gtk_widget_grab_focus() to move the focus
+to a particular widget, and gtk_container_set_focus_chain() to
+change the focus tab order. So you may want to investigate those
+functions instead.
+gtk_widget_child_focus() is called by containers as the user moves
+around the window using keyboard shortcuts. @direction indicates
+what kind of motion is taking place (up, down, left, right, tab
+forward, tab backward). gtk_widget_child_focus() emits the
+#GtkWidget::focus signal; widgets override the default handler
+for this signal in order to implement appropriate focus behavior.
+The default ::focus handler for a widget should return %TRUE if
+moving in @direction left the focus on a focusable location inside
+that widget, and %FALSE if moving in @direction moved the focus
+outside the widget. If returning %TRUE, widgets normally
+call gtk_widget_grab_focus() to place the focus accordingly;
+if returning %FALSE, they don't modify the current focus location.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if focus ended up inside @widget</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">direction of focus movement</doc>
+            <type name="DirectionType" c:type="GtkDirectionType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_notify" c:identifier="gtk_widget_child_notify">
+        <doc xml:whitespace="preserve">Emits a #GtkWidget::child-notify signal for the 
+&lt;link linkend="child-properties"&gt;child property&lt;/link&gt; @child_property 
+on @widget.
+This is the analogue of g_object_notify() for child properties.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a child property installed on the class of @widget&lt;!-- --&gt;'s parent</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="class_path" c:identifier="gtk_widget_class_path">
+        <doc xml:whitespace="preserve">Same as gtk_widget_path(), but always uses the name of a widget's type,
+never uses a custom name set with gtk_widget_set_name().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path_length"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the length of the class path, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="path"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the class path as an allocated string, or %NULL</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="path_reversed"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the reverse class path as an allocated string, or %NULL</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_pango_context"
+              c:identifier="gtk_widget_create_pango_context">
+        <doc xml:whitespace="preserve">Creates a new #PangoContext with the appropriate font map,
+font description, and base direction for drawing text for
+this widget. See also gtk_widget_get_pango_context().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #PangoContext</doc>
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </return-value>
+      </method>
+      <method name="create_pango_layout"
+              c:identifier="gtk_widget_create_pango_layout">
+        <doc xml:whitespace="preserve">Creates a new #PangoLayout with the appropriate font map,
+font description, and base direction for drawing text for
+this widget.
+If you keep a #PangoLayout created in this way around, in order to
+notify the layout of changes to the base direction or font of this
+widget, you must call pango_layout_context_changed() in response to
+the #GtkWidget::style-set and #GtkWidget::direction-changed signals
+for the widget.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #PangoLayout</doc>
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">text to set on the layout (can be %NULL)</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="destroy" c:identifier="gtk_widget_destroy">
+        <doc xml:whitespace="preserve">Destroys a widget. Equivalent to gtk_object_destroy(), except that
+you don't have to cast the widget to #GtkObject. When a widget is
+destroyed, it will break any references it holds to other objects.
+If the widget is inside a container, the widget will be removed
+from the container. If the widget is a toplevel (derived from
+#GtkWindow), it will be removed from the list of toplevels, and the
+reference GTK+ holds to it will be removed. Removing a
+widget from its container or the list of toplevels results in the
+widget being finalized, unless you've added additional references
+to the widget with g_object_ref().
+In most cases, only toplevel widgets (windows) require explicit
+destruction, because when you destroy a toplevel its children will
+be destroyed as well.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="destroyed" c:identifier="gtk_widget_destroyed">
+        <doc xml:whitespace="preserve">This function sets *@widget_pointer to %NULL if @widget_pointer !=
+%NULL.  It's intended to be used as a callback connected to the
+"destroy" signal of a widget. You connect gtk_widget_destroyed()
+as a signal handler, and pass the address of your widget variable
+as user data. Then when the widget is destroyed, the variable will
+be set to %NULL. Useful for example to avoid multiple copies
+of the same dialog.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget_pointer"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of a variable that contains @widget</doc>
+            <type name="Widget" c:type="GtkWidget**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="device_is_shadowed"
+              c:identifier="gtk_widget_device_is_shadowed"
+              version="3.0">
+        <doc xml:whitespace="preserve">Returns %TRUE if @device has been shadowed by a GTK+
+device grab on another widget, so it would stop sending
+events to @widget. This may be used in the
+#GtkWidget::grab-notify signal to check for specific
+devices. See gtk_device_grab_add().
+by another #GtkWidget than @widget.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if there is an ongoing grab on @device</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkDevice</doc>
+            <type name="Gdk.Device" c:type="GdkDevice*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ensure_style" c:identifier="gtk_widget_ensure_style">
+        <doc xml:whitespace="preserve">Ensures that @widget has a style (@widget-&gt;style). Not a very useful
+function; most of the time, if you want the style, the widget is
+realized, and realized widgets are guaranteed to have a style
+already.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="error_bell"
+              c:identifier="gtk_widget_error_bell"
+              version="2.12">
+        <doc xml:whitespace="preserve">Notifies the user about an input-related error on this widget. 
+If the #GtkSettings:gtk-error-bell setting is %TRUE, it calls
+gdk_window_beep(), otherwise it does nothing.
+Note that the effect of gdk_window_beep() can be configured in many
+ways, depending on the windowing backend and the desktop environment
+or window manager that is used.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="event" c:identifier="gtk_widget_event">
+        <doc xml:whitespace="preserve">Rarely-used function. This function is used to emit
+the event signals on a widget (those signals should never
+be emitted without using this function to do so).
+If you want to synthesize an event though, don't use this function;
+instead, use gtk_main_do_event() so the event will behave as if
+it were in the event queue. Don't synthesize expose events; instead,
+use gdk_window_invalidate_rect() to invalidate a region of the
+window.
+the event was handled)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">return from the event signal emission (%TRUE if</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkEvent</doc>
+            <type name="Gdk.Event" c:type="GdkEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="freeze_child_notify"
+              c:identifier="gtk_widget_freeze_child_notify">
+        <doc xml:whitespace="preserve">Stops emission of #GtkWidget::child-notify signals on @widget. The 
+signals are queued until gtk_widget_thaw_child_notify() is called 
+on @widget. 
+This is the analogue of g_object_freeze_notify() for child properties.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_accessible" c:identifier="gtk_widget_get_accessible">
+        <doc xml:whitespace="preserve">Returns the accessible object that describes the widget to an
+assistive technology.
+If no accessibility library is loaded (i.e. no ATK implementation library is
+loaded via &lt;envar&gt;GTK_MODULES&lt;/envar&gt; or via another application library,
+such as libgnome), then this #AtkObject instance may be a no-op. Likewise,
+if no class-specific #AtkObject implementation is available for the widget
+instance in question, it will inherit an #AtkObject implementation from the
+first ancestor class for which such an implementation is defined.
+The documentation of the &lt;ulink url="http://developer.gnome.org/doc/API/2.0/atk/index.html"&gt;ATK&lt;/ulink&gt;
+library contains more information about accessible objects and their uses.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #AtkObject associated with @widget</doc>
+          <type name="Atk.Object" c:type="AtkObject*"/>
+        </return-value>
+      </method>
+      <method name="get_allocation"
+              c:identifier="gtk_widget_get_allocation"
+              version="2.18">
+        <doc xml:whitespace="preserve">Retrieves the widget's allocation.
+be its "adjusted" allocation, that is, the widget's parent
+container typically calls gtk_widget_size_allocate() with an
+allocation, and that allocation is then adjusted (to handle margin
+and alignment for example) before assignment to the widget.
+gtk_widget_get_allocation() returns the adjusted allocation that
+was actually assigned to the widget. The adjusted allocation is
+guaranteed to be completely contained within the
+gtk_widget_size_allocate() allocation, however. So a #GtkContainer
+is guaranteed that its children stay inside the assigned bounds,
+but not that they have exactly the bounds the container assigned.
+There is no way to get the original allocation assigned by
+gtk_widget_size_allocate(), since it isn't stored; if a container
+implementation needs that information it will have to track it itself.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="allocation"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to a #GtkAllocation to copy to</doc>
+            <type name="Allocation" c:type="GtkAllocation*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ancestor" c:identifier="gtk_widget_get_ancestor">
+        <doc xml:whitespace="preserve">Gets the first ancestor of @widget with type @widget_type. For example,
+&lt;literal&gt;gtk_widget_get_ancestor (widget, GTK_TYPE_BOX)&lt;/literal&gt; gets 
+the first #GtkBox that's an ancestor of @widget. No reference will be 
+added to the returned widget; it should not be unreferenced. See note 
+about checking for a toplevel #GtkWindow in the docs for 
+gtk_widget_get_toplevel().
+Note that unlike gtk_widget_is_ancestor(), gtk_widget_get_ancestor() 
+considers @widget to be an ancestor of itself.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ancestor widget, or %NULL if not found</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">ancestor type</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_app_paintable"
+              c:identifier="gtk_widget_get_app_paintable"
+              version="2.18">
+        <doc xml:whitespace="preserve">Determines whether the application intends to draw on the widget in
+an #GtkWidget::expose-event handler.
+See gtk_widget_set_app_paintable()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the widget is app paintable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_can_default"
+              c:identifier="gtk_widget_get_can_default"
+              version="2.18">
+        <doc xml:whitespace="preserve">Determines whether @widget can be a default widget. See
+gtk_widget_set_can_default().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @widget can be a default widget, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_can_focus"
+              c:identifier="gtk_widget_get_can_focus"
+              version="2.18">
+        <doc xml:whitespace="preserve">Determines whether @widget can own the input focus. See
+gtk_widget_set_can_focus().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @widget can own the input focus, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_child_requisition"
+              c:identifier="gtk_widget_get_child_requisition"
+              deprecated="Use gtk_size_request_get_size() instead."
+              deprecated-version="3.0">
+        <doc xml:whitespace="preserve">This function is only for use in widget implementations. Obtains
+geometry on the widget (e.g. with gtk_widget_set_size_request()),
+in which case it returns that geometry instead of the widget's
+requisition.
+This function differs from gtk_widget_size_request() in that
+it retrieves the last size request value from @widget-&gt;requisition,
+while gtk_widget_size_request() actually calls the "size_request" method
+on @widget to compute the size request and fill in @widget-&gt;requisition,
+and only then returns @widget-&gt;requisition.
+Because this function does not call the "size_request" method, it
+can only be used when you know that @widget-&gt;requisition is
+up-to-date, that is, gtk_widget_size_request() has been called
+since the last time a resize was queued. In general, only container
+implementations have this information; applications should use
+gtk_widget_size_request().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="requisition"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkRequisition to be filled in</doc>
+            <type name="Requisition" c:type="GtkRequisition*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child_visible"
+              c:identifier="gtk_widget_get_child_visible">
+        <doc xml:whitespace="preserve">Gets the value set with gtk_widget_set_child_visible().
+If you feel a need to use this function, your code probably
+needs reorganization. 
+This function is only useful for container implementations and
+never should be called by an application.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the widget is mapped with the parent.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_clipboard"
+              c:identifier="gtk_widget_get_clipboard"
+              version="2.2">
+        <doc xml:whitespace="preserve">Returns the clipboard object for the given selection to
+be used with @widget. @widget must have a #GdkDisplay
+associated with it, so must be attached to a toplevel
+window.
+clipboard already exists, a new one will
+be created. Once a clipboard object has
+been created, it is persistent for all time.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the appropriate clipboard object. If no</doc>
+          <type name="Clipboard" c:type="GtkClipboard*"/>
+        </return-value>
+        <parameters>
+          <parameter name="selection" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkAtom which identifies the clipboard to use. %GDK_SELECTION_CLIPBOARD gives the default clipboard. Another common value is %GDK_SELECTION_PRIMARY, which gives the primary X selection.</doc>
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_colormap" c:identifier="gtk_widget_get_colormap">
+        <doc xml:whitespace="preserve">Gets the colormap that will be used to render @widget. No reference will
+be added to the returned colormap; it should not be unreferenced.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the colormap used by @widget</doc>
+          <type name="Gdk.Colormap" c:type="GdkColormap*"/>
+        </return-value>
+      </method>
+      <method name="get_composite_name"
+              c:identifier="gtk_widget_get_composite_name">
+        <doc xml:whitespace="preserve">Obtains the composite name of a widget. 
+a composite child. The string should be freed when it is no 
+longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the composite name of @widget, or %NULL if @widget is not</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_device_events"
+              c:identifier="gtk_widget_get_device_events"
+              version="3.0">
+        <doc xml:whitespace="preserve">Returns the events mask for the widget corresponding to an specific device. These
+are the events that the widget will receive when @device operates on it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">device event mask for @widget</doc>
+          <type name="Gdk.EventMask" c:type="GdkEventMask"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkDevice</doc>
+            <type name="Gdk.Device" c:type="GdkDevice*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_direction" c:identifier="gtk_widget_get_direction">
+        <doc xml:whitespace="preserve">Gets the reading direction for a particular widget. See
+gtk_widget_set_direction().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the reading direction for the widget.</doc>
+          <type name="TextDirection" c:type="GtkTextDirection"/>
+        </return-value>
+      </method>
+      <method name="get_display"
+              c:identifier="gtk_widget_get_display"
+              version="2.2">
+        <doc xml:whitespace="preserve">Get the #GdkDisplay for the toplevel window associated with
+this widget. This function can only be called after the widget
+has been added to a widget hierarchy with a #GtkWindow at the top.
+In general, you should only create display specific
+resources when a widget has been realized, and you should
+free those resources when the widget is unrealized.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkDisplay for the toplevel for this widget.</doc>
+          <type name="Gdk.Display" c:type="GdkDisplay*"/>
+        </return-value>
+      </method>
+      <method name="get_double_buffered"
+              c:identifier="gtk_widget_get_double_buffered"
+              version="2.18">
+        <doc xml:whitespace="preserve">Determines whether the widget is double buffered.
+See gtk_widget_set_double_buffered()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the widget is double buffered</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_events" c:identifier="gtk_widget_get_events">
+        <doc xml:whitespace="preserve">Returns the event mask for the widget (a bitfield containing flags
+from the #GdkEventMask enumeration). These are the events that the widget
+will receive.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">event mask for @widget</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_extension_events"
+              c:identifier="gtk_widget_get_extension_events">
+        <doc xml:whitespace="preserve">Retrieves the extension events the widget will receive; see
+gdk_input_set_extension_events().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">extension events for @widget</doc>
+          <type name="Gdk.ExtensionMode" c:type="GdkExtensionMode"/>
+        </return-value>
+      </method>
+      <method name="get_halign" c:identifier="gtk_widget_get_halign">
+        <doc xml:whitespace="preserve">Gets the value of the #GtkWidget:halign property.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the horizontal alignment of @widget</doc>
+          <type name="Align" c:type="GtkAlign"/>
+        </return-value>
+      </method>
+      <method name="get_has_tooltip"
+              c:identifier="gtk_widget_get_has_tooltip"
+              version="2.12">
+        <doc xml:whitespace="preserve">Returns the current value of the has-tooltip property.  See
+GtkWidget:has-tooltip for more information.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">current value of has-tooltip on @widget.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_has_window"
+              c:identifier="gtk_widget_get_has_window"
+              version="2.18">
+        <doc xml:whitespace="preserve">Determines whether @widget has a #GdkWindow of its own. See
+gtk_widget_set_has_window().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @widget has a window, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_mapped"
+              c:identifier="gtk_widget_get_mapped"
+              version="2.20">
+        <doc xml:whitespace="preserve">Whether the widget is mapped.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the widget is mapped, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_margin_bottom"
+              c:identifier="gtk_widget_get_margin_bottom">
+        <doc xml:whitespace="preserve">Gets the value of the #GtkWidget:margin-bottom property.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The bottom margin of @widget</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_margin_left" c:identifier="gtk_widget_get_margin_left">
+        <doc xml:whitespace="preserve">Gets the value of the #GtkWidget:margin-left property.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The left margin of @widget</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_margin_right"
+              c:identifier="gtk_widget_get_margin_right">
+        <doc xml:whitespace="preserve">Gets the value of the #GtkWidget:margin-right property.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The left margin of @widget</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_margin_top" c:identifier="gtk_widget_get_margin_top">
+        <doc xml:whitespace="preserve">Gets the value of the #GtkWidget:margin-top property.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The top margin of @widget</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_modifier_style"
+              c:identifier="gtk_widget_get_modifier_style">
+        <doc xml:whitespace="preserve">Returns the current modifier style for the widget. (As set by
+gtk_widget_modify_style().) If no style has previously set, a new
+#GtkRcStyle will be created with all values unset, and set as the
+modifier style for the widget. If you make changes to this rc
+style, you must call gtk_widget_modify_style(), passing in the
+returned rc style, to make sure that your changes take effect.
+normally end up destroying it, because gtk_widget_modify_style() copies
+the passed-in style and sets the copy as the new modifier style,
+thus dropping any reference to the old modifier style. Add a reference
+to the modifier style if you want to keep it alive.
+owned by the widget. If you want to keep a pointer to value this
+around, you must add a refcount using g_object_ref().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the modifier style for the widget. This rc style is</doc>
+          <type name="RcStyle" c:type="GtkRcStyle*"/>
+        </return-value>
+      </method>
+      <method name="get_name" c:identifier="gtk_widget_get_name">
+        <doc xml:whitespace="preserve">Retrieves the name of a widget. See gtk_widget_set_name() for the
+significance of widget names.
+should not be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the widget. This string is owned by GTK+ and</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_no_show_all"
+              c:identifier="gtk_widget_get_no_show_all"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns the current value of the GtkWidget:no-show-all property, 
+which determines whether calls to gtk_widget_show_all() and 
+gtk_widget_hide_all() will affect this widget.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current value of the "no-show-all" property.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_pango_context"
+              c:identifier="gtk_widget_get_pango_context">
+        <doc xml:whitespace="preserve">Gets a #PangoContext with the appropriate font map, font description,
+and base direction for this widget. Unlike the context returned
+by gtk_widget_create_pango_context(), this context is owned by
+the widget (it can be used until the screen for the widget changes
+or the widget is removed from its toplevel), and will be updated to
+match any changes to the widget's attributes.
+If you create and keep a #PangoLayout using this context, you must
+deal with changes to the context by calling pango_layout_context_changed()
+on the layout in response to the #GtkWidget::style-set and 
+#GtkWidget::direction-changed signals for the widget.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #PangoContext for the widget.</doc>
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </return-value>
+      </method>
+      <method name="get_parent" c:identifier="gtk_widget_get_parent">
+        <doc xml:whitespace="preserve">Returns the parent container of @widget.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the parent container of @widget, or %NULL</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_parent_window"
+              c:identifier="gtk_widget_get_parent_window">
+        <doc xml:whitespace="preserve">Gets @widget's parent window.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the parent window of @widget.</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_pointer" c:identifier="gtk_widget_get_pointer">
+        <doc xml:whitespace="preserve">Obtains the location of the mouse pointer in widget coordinates.
+Widget coordinates are a bit odd; for historical reasons, they are
+defined as @widget-&gt;window coordinates for widgets that are not
+#GTK_NO_WINDOW widgets, and are relative to @widget-&gt;allocation.x,</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the X coordinate, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the Y coordinate, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_realized"
+              c:identifier="gtk_widget_get_realized"
+              version="2.20">
+        <doc xml:whitespace="preserve">Determines whether @widget is realized.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @widget is realized, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_receives_default"
+              c:identifier="gtk_widget_get_receives_default"
+              version="2.18">
+        <doc xml:whitespace="preserve">Determines whether @widget is alyways treated as default widget
+withing its toplevel when it has the focus, even if another widget
+is the default.
+See gtk_widget_set_receives_default().
+%FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @widget acts as default widget when focussed,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_requisition"
+              c:identifier="gtk_widget_get_requisition"
+              version="2.20"
+              deprecated="The #GtkRequisition cache on the widget was"
+              deprecated-version="3.0">
+        <doc xml:whitespace="preserve">Retrieves the widget's requisition.
+This function should only be used by widget implementations in
+order to figure whether the widget's requisition has actually
+changed after some internal state change (so that they can call
+gtk_widget_queue_resize() instead of gtk_widget_queue_draw()).
+Normally, gtk_widget_size_request() should be used.
+removed, If you need to cache sizes across requests and allocations,
+add an explicit cache to the widget in question instead.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="requisition"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to a #GtkRequisition to copy to</doc>
+            <type name="Requisition" c:type="GtkRequisition*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_root_window"
+              c:identifier="gtk_widget_get_root_window"
+              version="2.2">
+        <doc xml:whitespace="preserve">Get the root window where this widget is located. This function can
+only be called after the widget has been added to a widget
+hierarchy with #GtkWindow at the top.
+The root window is useful for such purposes as creating a popup
+#GdkWindow associated with the window. In general, you should only
+create display specific resources when a widget has been realized,
+and you should free those resources when the widget is unrealized.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkWindow root window for the toplevel for this widget.</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_screen"
+              c:identifier="gtk_widget_get_screen"
+              version="2.2">
+        <doc xml:whitespace="preserve">Get the #GdkScreen from the toplevel window associated with
+this widget. This function can only be called after the widget
+has been added to a widget hierarchy with a #GtkWindow
+at the top.
+In general, you should only create screen specific
+resources when a widget has been realized, and you should
+free those resources when the widget is unrealized.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkScreen for the toplevel for this widget.</doc>
+          <type name="Gdk.Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </method>
+      <method name="get_sensitive"
+              c:identifier="gtk_widget_get_sensitive"
+              version="2.18">
+        <doc xml:whitespace="preserve">Returns the widget's sensitivity (in the sense of returning
+the value that has been set using gtk_widget_set_sensitive()).
+The effective sensitivity of a widget is however determined by both its
+own and its parent widget's sensitivity. See gtk_widget_is_sensitive().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the widget is sensitive</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_settings" c:identifier="gtk_widget_get_settings">
+        <doc xml:whitespace="preserve">Gets the settings object holding the settings (global property
+settings, RC file information, etc) used for this widget.
+Note that this function can only be called when the #GtkWidget
+is attached to a toplevel, since the settings object is specific
+to a particular #GdkScreen.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the relevant #GtkSettings object</doc>
+          <type name="Settings" c:type="GtkSettings*"/>
+        </return-value>
+      </method>
+      <method name="get_size_request"
+              c:identifier="gtk_widget_get_size_request">
+        <doc xml:whitespace="preserve">Gets the size request that was explicitly set for the widget using
+gtk_widget_set_size_request(). A value of -1 stored in @width or
+and the natural requisition of the widget will be used intead. See
+gtk_widget_set_size_request(). To get the size a widget will
+actually request, call gtk_size_request_get_size() instead of
+this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for width, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for height, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_snapshot"
+              c:identifier="gtk_widget_get_snapshot"
+              version="2.14"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Create a #GdkPixmap of the contents of the widget and its children.
+Works even if the widget is obscured. The depth and visual of the
+resulting pixmap is dependent on the widget being snapshot and likely
+differs from those of a target widget displaying the pixmap.
+The function gdk_pixbuf_get_from_drawable() can be used to convert
+the pixmap to a visual independant representation.
+The snapshot area used by this function is the @widget's allocation plus
+any extra space occupied by additional windows belonging to this widget
+(such as the arrows of a spin button).
+Thus, the resulting snapshot pixmap is possibly larger than the allocation.
+If @clip_rect is non-%NULL, the resulting pixmap is shrunken to
+match the specified clip_rect. The (x,y) coordinates of @clip_rect are
+interpreted widget relative. If width or height of @clip_rect are 0 or
+negative, the width or height of the resulting pixmap will be shrunken
+by the respective amount.
+For instance a @clip_rect &lt;literal&gt;{ +5, +5, -10, -10 }&lt;/literal&gt; will
+chop off 5 pixels at each side of the snapshot pixmap.
+If non-%NULL, @clip_rect will contain the exact widget-relative snapshot
+coordinates upon return. A @clip_rect of &lt;literal&gt;{ -1, -1, 0, 0 }&lt;/literal&gt;
+can be used to preserve the auto-grown snapshot area and use @clip_rect
+as a pure output parameter.
+The returned pixmap can be %NULL, if the resulting @clip_area was empty.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">#GdkPixmap snapshot of the widget</doc>
+          <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="clip_rect" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GdkRectangle or %NULL</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_state"
+              c:identifier="gtk_widget_get_state"
+              version="2.18">
+        <doc xml:whitespace="preserve">Returns the widget's state. See gtk_widget_set_state().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the state of @widget.</doc>
+          <type name="StateType" c:type="GtkStateType"/>
+        </return-value>
+      </method>
+      <method name="get_style" c:identifier="gtk_widget_get_style">
+        <doc xml:whitespace="preserve">Simply an accessor function that returns @widget-&gt;style.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the widget's #GtkStyle</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </return-value>
+      </method>
+      <method name="get_support_multidevice"
+              c:identifier="gtk_widget_get_support_multidevice">
+        <doc xml:whitespace="preserve">Returns %TRUE if @widget is multiple pointer aware. See
+gtk_widget_set_support_multidevice() for more information.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE is @widget is multidevice aware.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_tooltip_markup"
+              c:identifier="gtk_widget_get_tooltip_markup"
+              version="2.12">
+        <doc xml:whitespace="preserve">Gets the contents of the tooltip for @widget.
+returned string with g_free() when done.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the tooltip text, or %NULL. You should free the</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_tooltip_text"
+              c:identifier="gtk_widget_get_tooltip_text"
+              version="2.12">
+        <doc xml:whitespace="preserve">Gets the contents of the tooltip for @widget.
+returned string with g_free() when done.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the tooltip text, or %NULL. You should free the</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_tooltip_window"
+              c:identifier="gtk_widget_get_tooltip_window"
+              version="2.12">
+        <doc xml:whitespace="preserve">Returns the #GtkWindow of the current tooltip. This can be the
+GtkWindow created by default, or the custom tooltip window set
+using gtk_widget_set_tooltip_window().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GtkWindow of the current tooltip.</doc>
+          <type name="Window" c:type="GtkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_toplevel" c:identifier="gtk_widget_get_toplevel">
+        <doc xml:whitespace="preserve">This function returns the topmost widget in the container hierarchy
+returned as the topmost widget. No reference will be added to the
+returned widget; it should not be unreferenced.
+Note the difference in behavior vs. gtk_widget_get_ancestor();
+&lt;literal&gt;gtk_widget_get_ancestor (widget, GTK_TYPE_WINDOW)&lt;/literal&gt; 
+would return
+%NULL if @widget wasn't inside a toplevel window, and if the
+window was inside a #GtkWindow-derived widget which was in turn
+inside the toplevel #GtkWindow. While the second case may
+seem unlikely, it actually happens when a #GtkPlug is embedded
+inside a #GtkSocket within the same application.
+To reliably find the toplevel #GtkWindow, use
+gtk_widget_get_toplevel() and check if the %TOPLEVEL flags
+is set on the result.
+|[
+GtkWidget *toplevel = gtk_widget_get_toplevel (widget);
+if (gtk_widget_is_toplevel (toplevel))
+{
+/&amp;ast; Perform action on toplevel. &amp;ast;/
+}
+]|
+if there's no ancestor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the topmost ancestor of @widget, or @widget itself</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_valign" c:identifier="gtk_widget_get_valign">
+        <doc xml:whitespace="preserve">Gets the value of the #GtkWidget:valign property.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the vertical alignment of @widget</doc>
+          <type name="Align" c:type="GtkAlign"/>
+        </return-value>
+      </method>
+      <method name="get_visible"
+              c:identifier="gtk_widget_get_visible"
+              version="2.18">
+        <doc xml:whitespace="preserve">Determines whether the widget is visible. Note that this doesn't
+take into account whether the widget's parent is also visible
+or the widget is obscured in any way.
+See gtk_widget_set_visible().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the widget is visible</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_visual" c:identifier="gtk_widget_get_visual">
+        <doc xml:whitespace="preserve">Gets the visual that will be used to render @widget.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the visual for @widget</doc>
+          <type name="Gdk.Visual" c:type="GdkVisual*"/>
+        </return-value>
+      </method>
+      <method name="get_window"
+              c:identifier="gtk_widget_get_window"
+              version="2.14">
+        <doc xml:whitespace="preserve">Returns the widget's window if it is realized, %NULL otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">@widget's window.</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="grab_default" c:identifier="gtk_widget_grab_default">
+        <doc xml:whitespace="preserve">Causes @widget to become the default widget. @widget must have the
+%GTK_CAN_DEFAULT flag set; typically you have to set this flag
+yourself by calling &lt;literal&gt;gtk_widget_set_can_default (@widget,
+%TRUE)&lt;/literal&gt;. The default widget is activated when 
+the user presses Enter in a window. Default widgets must be 
+activatable, that is, gtk_widget_activate() should affect them. Note
+that #GtkEntry widgets require the "activates-default" property
+set to %TRUE before they activate the default widget when Enter
+is pressed and the #GtkEntry is focused.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="grab_focus" c:identifier="gtk_widget_grab_focus">
+        <doc xml:whitespace="preserve">Causes @widget to have the keyboard focus for the #GtkWindow it's
+inside. @widget must be a focusable widget, such as a #GtkEntry;
+something like #GtkFrame won't work.
+More precisely, it must have the %GTK_CAN_FOCUS flag set. Use
+gtk_widget_set_can_focus() to modify that flag.
+The widget also needs to be realized and mapped. This is indicated by the
+related signals. Grabbing the focus immediately after creating the widget
+will likely fail and cause critical warnings.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="has_default"
+              c:identifier="gtk_widget_has_default"
+              version="2.18">
+        <doc xml:whitespace="preserve">Determines whether @widget is the current default widget within its
+toplevel. See gtk_widget_set_can_default().
+its toplevel, %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @widget is the current default widget within</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_focus"
+              c:identifier="gtk_widget_has_focus"
+              version="2.18">
+        <doc xml:whitespace="preserve">Determines if the widget has the global input focus. See
+gtk_widget_is_focus() for the difference between having the global
+input focus, and only having the focus within a toplevel.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the widget has the global input focus.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_grab"
+              c:identifier="gtk_widget_has_grab"
+              version="2.18">
+        <doc xml:whitespace="preserve">Determines whether the widget is currently grabbing events, so it
+is the only widget receiving input events (keyboard and mouse).
+See also gtk_grab_add().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the widget is in the grab_widgets stack</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_rc_style"
+              c:identifier="gtk_widget_has_rc_style"
+              version="2.20">
+        <doc xml:whitespace="preserve">Determines if the widget style has been looked up through the rc mechanism.
+mechanism, %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the widget has been looked up through the rc</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_screen"
+              c:identifier="gtk_widget_has_screen"
+              version="2.2">
+        <doc xml:whitespace="preserve">Checks whether there is a #GdkScreen is associated with
+this widget. All toplevel widgets have an associated
+screen, and all widgets added into a hierarchy with a toplevel
+window at the top.
+with the widget.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if there is a #GdkScreen associcated</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="hide" c:identifier="gtk_widget_hide">
+        <doc xml:whitespace="preserve">Reverses the effects of gtk_widget_show(), causing the widget to be
+hidden (invisible to the user).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="hide_all" c:identifier="gtk_widget_hide_all">
+        <doc xml:whitespace="preserve">Recursively hides a widget and any child widgets.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="hide_on_delete" c:identifier="gtk_widget_hide_on_delete">
+        <doc xml:whitespace="preserve">Utility function; intended to be connected to the #GtkWidget::delete-event
+signal on a #GtkWindow. The function calls gtk_widget_hide() on its
+argument, then returns %TRUE. If connected to ::delete-event, the
+result is that clicking the close button for a window (on the
+window frame, top right corner usually) will hide but not destroy
+the window. By default, GTK+ destroys windows when ::delete-event
+is received.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="input_shape_combine_mask"
+              c:identifier="gtk_widget_input_shape_combine_mask"
+              version="2.10">
+        <doc xml:whitespace="preserve">Sets an input shape for this widget's GDK window. This allows for
+windows which react to mouse click in a nonrectangular region, see 
+gdk_window_input_shape_combine_mask() for more information.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="shape_mask"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">shape to be added, or %NULL to remove an existing shape</doc>
+            <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+          <parameter name="offset_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X position of shape mask with respect to @window</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="offset_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y position of shape mask with respect to @window</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="intersect" c:identifier="gtk_widget_intersect">
+        <doc xml:whitespace="preserve">Computes the intersection of a @widget's area and @area, storing
+the intersection in @intersection, and returns %TRUE if there was
+an intersection.  @intersection may be %NULL if you're only
+interested in whether there was an intersection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if there was an intersection</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="area" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a rectangle</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="intersection" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle to store intersection of @widget and @area</doc>
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_ancestor" c:identifier="gtk_widget_is_ancestor">
+        <doc xml:whitespace="preserve">Determines whether @widget is somewhere inside @ancestor, possibly with
+intermediate containers.
+grandchild, great grandchild, etc.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @ancestor contains @widget as a child,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="ancestor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">another #GtkWidget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_composited"
+              c:identifier="gtk_widget_is_composited"
+              version="2.10">
+        <doc xml:whitespace="preserve">Whether @widget can rely on having its alpha channel
+drawn correctly. On X11 this function returns whether a
+compositing manager is running for @widget's screen.
+Please note that the semantics of this call will change
+in the future if used on a widget that has a composited
+window in its hierarchy (as set by gdk_window_set_composited()).
+channel being drawn correctly.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the widget can rely on its alpha</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_drawable"
+              c:identifier="gtk_widget_is_drawable"
+              version="2.18">
+        <doc xml:whitespace="preserve">Determines whether @widget can be drawn to. A widget can be drawn
+to if it is mapped and visible.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @widget is drawable, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_focus" c:identifier="gtk_widget_is_focus">
+        <doc xml:whitespace="preserve">Determines if the widget is the focus widget within its
+toplevel. (This does not mean that the %HAS_FOCUS flag is
+necessarily set; %HAS_FOCUS will only be set if the
+toplevel widget additionally has the global input focus.)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the widget is the focus widget.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_sensitive"
+              c:identifier="gtk_widget_is_sensitive"
+              version="2.18">
+        <doc xml:whitespace="preserve">Returns the widget's effective sensitivity, which means
+it is sensitive itself and also its parent widget is sensntive</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the widget is effectively sensitive</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_toplevel"
+              c:identifier="gtk_widget_is_toplevel"
+              version="2.18">
+        <doc xml:whitespace="preserve">Determines whether @widget is a toplevel widget. Currently only
+#GtkWindow and #GtkInvisible are toplevel widgets. Toplevel
+widgets have no parent widget.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @widget is a toplevel, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="keynav_failed"
+              c:identifier="gtk_widget_keynav_failed"
+              version="2.12">
+        <doc xml:whitespace="preserve">This function should be called whenever keyboard navigation within
+a single widget hits a boundary. The function emits the
+#GtkWidget::keynav-failed signal on the widget and its return
+value should be interpreted in a way similar to the return value of
+gtk_widget_child_focus():
+When %TRUE is returned, stay in the widget, the failed keyboard
+navigation is Ok and/or there is nowhere we can/should move the
+focus to.
+When %FALSE is returned, the caller should continue with keyboard
+navigation outside the widget, e.g. by calling
+gtk_widget_child_focus() on the widget's toplevel.
+The default ::keynav-failed handler returns %TRUE for 
+%GTK_DIR_TAB_FORWARD and %GTK_DIR_TAB_BACKWARD. For the other 
+values of #GtkDirectionType, it looks at the 
+#GtkSettings:gtk-keynav-cursor-only setting and returns %FALSE 
+if the setting is %TRUE. This way the entire user interface
+becomes cursor-navigatable on input devices such as mobile phones
+which only have cursor keys but no tab key.
+Whenever the default handler returns %TRUE, it also calls
+gtk_widget_error_bell() to notify the user of the failed keyboard
+navigation.
+A use case for providing an own implementation of ::keynav-failed 
+(either by connecting to it or by overriding it) would be a row of
+#GtkEntry widgets where the user should be able to navigate the
+entire row with the cursor keys, as e.g. known from user interfaces 
+that require entering license keys.
+if the emitting widget should try to handle the keyboard
+navigation attempt in its parent container(s).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if stopping keyboard navigation is fine, %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">direction of focus movement</doc>
+            <type name="DirectionType" c:type="GtkDirectionType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_accel_closures"
+              c:identifier="gtk_widget_list_accel_closures">
+        <doc xml:whitespace="preserve">Lists the closures used by @widget for accelerator group connections
+with gtk_accel_group_connect_by_path() or gtk_accel_group_connect().
+The closures can be used to monitor accelerator changes on @widget,
+by connecting to the @GtkAccelGroup::accel-changed signal of the
+#GtkAccelGroup of a closure which can be found out with
+gtk_accel_group_from_accel_closure().
+a newly allocated #GList of closures</doc>
+        <return-value transfer-ownership="container">
+          <type name="GLib.List" c:type="GList*">
+            <type name="GObject.Closure"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="list_mnemonic_labels"
+              c:identifier="gtk_widget_list_mnemonic_labels"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns a newly allocated list of the widgets, normally labels, for
+which this widget is the target of a mnemonic (see for example,
+gtk_label_set_mnemonic_widget()).
+The widgets in the list are not individually referenced. If you
+want to iterate through the list and perform actions involving
+callbacks that might destroy the widgets, you
+&lt;emphasis&gt;must&lt;/emphasis&gt; call &lt;literal&gt;g_list_foreach (result,
+(GFunc)g_object_ref, NULL)&lt;/literal&gt; first, and then unref all the
+widgets afterwards.
+mnemonic labels; free this list
+with g_list_free() when you are done with it.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">the list of</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Widget"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="map" c:identifier="gtk_widget_map">
+        <doc xml:whitespace="preserve">This function is only for use in widget implementations. Causes
+a widget to be mapped if it isn't already.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="mnemonic_activate"
+              c:identifier="gtk_widget_mnemonic_activate">
+        <doc xml:whitespace="preserve">Emits the #GtkWidget::mnemonic-activate signal.
+The default handler for this signal activates the @widget if
+is %TRUE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the signal has been handled</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_cycling" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if there are other widgets with the same mnemonic</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="modify_base" c:identifier="gtk_widget_modify_base">
+        <doc xml:whitespace="preserve">Sets the base color for a widget in a particular state.
+All other style values are left untouched. The base color
+is the background color used along with the text color
+(see gtk_widget_modify_text()) for widgets such as #GtkEntry
+and #GtkTextView. See also gtk_widget_modify_style().
+Note that "no window" widgets (which have the %GTK_NO_WINDOW flag set)
+draw on their parent container's window and thus may not draw any 
+background themselves. This is the case for e.g. #GtkLabel. To modify 
+the background of such widgets, you have to set the base color on their 
+parent; if you want to set the background of a rectangular area around 
+a label, try placing the label in a #GtkEventBox widget and setting 
+the base color on that.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the state for which to set the base color</doc>
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="color" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the color to assign (does not need to be allocated), or %NULL to undo the effect of previous calls to of gtk_widget_modify_base().</doc>
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="modify_bg" c:identifier="gtk_widget_modify_bg">
+        <doc xml:whitespace="preserve">Sets the background color for a widget in a particular state.
+All other style values are left untouched. See also
+gtk_widget_modify_style(). 
+Note that "no window" widgets (which have the %GTK_NO_WINDOW flag set)
+draw on their parent container's window and thus may not draw any 
+background themselves. This is the case for e.g. #GtkLabel. To modify 
+the background of such widgets, you have to set the background color 
+on their parent; if you want to set the background of a rectangular 
+area around a label, try placing the label in a #GtkEventBox widget 
+and setting the background color on that.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the state for which to set the background color</doc>
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="color" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the color to assign (does not need to be allocated), or %NULL to undo the effect of previous calls to of gtk_widget_modify_bg().</doc>
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="modify_cursor"
+              c:identifier="gtk_widget_modify_cursor"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets the cursor color to use in a widget, overriding the
+#GtkWidget:cursor-color and #GtkWidget:secondary-cursor-color
+style properties. All other style values are left untouched. 
+See also gtk_widget_modify_style().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="primary" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the color to use for primary cursor (does not need to be allocated), or %NULL to undo the effect of previous calls to of gtk_widget_modify_cursor().</doc>
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+          <parameter name="secondary" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the color to use for secondary cursor (does not need to be allocated), or %NULL to undo the effect of previous calls to of gtk_widget_modify_cursor().</doc>
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="modify_fg" c:identifier="gtk_widget_modify_fg">
+        <doc xml:whitespace="preserve">Sets the foreground color for a widget in a particular state.
+All other style values are left untouched. See also
+gtk_widget_modify_style().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the state for which to set the foreground color</doc>
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="color" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the color to assign (does not need to be allocated), or %NULL to undo the effect of previous calls to of gtk_widget_modify_fg().</doc>
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="modify_font" c:identifier="gtk_widget_modify_font">
+        <doc xml:whitespace="preserve">Sets the font to use for a widget.  All other style values are left
+untouched. See also gtk_widget_modify_style().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_desc" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the font description to use, or %NULL to undo the effect of previous calls to gtk_widget_modify_font().</doc>
+            <type name="Pango.FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="modify_style" c:identifier="gtk_widget_modify_style">
+        <doc xml:whitespace="preserve">Modifies style values on the widget. Modifications made using this
+technique take precedence over style values set via an RC file,
+however, they will be overriden if a style is explicitely set on
+the widget using gtk_widget_set_style(). The #GtkRcStyle structure
+is designed so each field can either be set or unset, so it is
+possible, using this function, to modify some style values and
+leave the others unchanged.
+Note that modifications made with this function are not cumulative
+with previous calls to gtk_widget_modify_style() or with such
+functions as gtk_widget_modify_fg(). If you wish to retain
+previous values, you must first call gtk_widget_get_modifier_style(),
+make your modifications to the returned style, then call
+gtk_widget_modify_style() with that style. On the other hand,
+if you first call gtk_widget_modify_style(), subsequent calls
+to such functions gtk_widget_modify_fg() will have a cumulative
+effect with the initial modifications.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="style" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkRcStyle holding the style modifications</doc>
+            <type name="RcStyle" c:type="GtkRcStyle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="modify_symbolic_color"
+              c:identifier="gtk_widget_modify_symbolic_color"
+              version="3.0">
+        <doc xml:whitespace="preserve">Sets a symbolic color for a widget.
+All other style values are left untouched. See also
+gtk_widget_modify_style().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the symbolic color to modify</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="color" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the color to assign (does not need to be allocated), or %NULL to undo the effect of previous calls to of gtk_widget_modify_symbolic_color().</doc>
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="modify_text" c:identifier="gtk_widget_modify_text">
+        <doc xml:whitespace="preserve">Sets the text color for a widget in a particular state.  All other
+style values are left untouched. The text color is the foreground
+color used along with the base color (see gtk_widget_modify_base())
+for widgets such as #GtkEntry and #GtkTextView. See also
+gtk_widget_modify_style().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the state for which to set the text color</doc>
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="color" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the color to assign (does not need to be allocated), or %NULL to undo the effect of previous calls to of gtk_widget_modify_text().</doc>
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="path" c:identifier="gtk_widget_path">
+        <doc xml:whitespace="preserve">Obtains the full path to @widget. The path is simply the name of a
+widget and all its parents in the container hierarchy, separated by
+periods. The name of a widget comes from
+gtk_widget_get_name(). Paths are used to apply styles to a widget
+in gtkrc configuration files. Widget names are the type of the
+widget by default (e.g. "GtkButton") or can be set to an
+application-specific value with gtk_widget_set_name(). By setting
+the name of a widget, you allow users or theme authors to apply
+styles to that specific widget in their gtkrc
+file. @path_reversed_p fills in the path in reverse order,
+i.e. starting with @widget's name instead of starting with the name
+of @widget's outermost ancestor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path_length"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store length of the path, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="path"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store allocated path string, or %NULL</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="path_reversed"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store allocated reverse path string, or %NULL</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="queue_draw" c:identifier="gtk_widget_queue_draw">
+        <doc xml:whitespace="preserve">Equivalent to calling gtk_widget_queue_draw_area() for the
+entire area of a widget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="queue_draw_area" c:identifier="gtk_widget_queue_draw_area">
+        <doc xml:whitespace="preserve">Invalidates the rectangular area of @widget defined by @x, @y,
+widget's window and all its child windows. Once the main loop
+becomes idle (after the current batch of events has been processed,
+roughly), the window will receive expose events for the union of
+all regions that have been invalidated.
+Normally you would only use this function in widget
+implementations. You might also use it, or
+gdk_window_invalidate_rect() directly, to schedule a redraw of a
+#GtkDrawingArea or some portion thereof.
+Frequently you can just call gdk_window_invalidate_rect() or
+gdk_window_invalidate_region() instead of this function. Those
+functions will invalidate only a single window, instead of the
+widget and all its children.
+The advantage of adding to the invalidated region compared to
+simply drawing immediately is efficiency; using an invalid region
+ensures that you only have to redraw one time.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x coordinate of upper-left corner of rectangle to redraw</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y coordinate of upper-left corner of rectangle to redraw</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width of region to draw</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height of region to draw</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="queue_resize" c:identifier="gtk_widget_queue_resize">
+        <doc xml:whitespace="preserve">This function is only for use in widget implementations.
+Flags a widget to have its size renegotiated; should
+be called when a widget for some reason has a new size request.
+For example, when you change the text in a #GtkLabel, #GtkLabel
+queues a resize to ensure there's enough space for the new text.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="queue_resize_no_redraw"
+              c:identifier="gtk_widget_queue_resize_no_redraw"
+              version="2.4">
+        <doc xml:whitespace="preserve">This function works like gtk_widget_queue_resize(), 
+except that the widget is not invalidated.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="realize" c:identifier="gtk_widget_realize">
+        <doc xml:whitespace="preserve">Creates the GDK (windowing system) resources associated with a
+widget.  For example, @widget-&gt;window will be created when a widget
+is realized.  Normally realization happens implicitly; if you show
+a widget and all its parent containers, then the widget will be
+realized and mapped automatically.
+Realizing a widget requires all
+the widget's parent widgets to be realized; calling
+gtk_widget_realize() realizes the widget's parents in addition to
+when you realize it, bad things will happen.
+This function is primarily used in widget implementations, and
+isn't very useful otherwise. Many times when you think you might
+need it, a better approach is to connect to a signal that will be
+called after the widget is realized automatically, such as
+GtkWidget::expose-event. Or simply g_signal_connect () to the
+GtkWidget::realize signal.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="region_intersect"
+              c:identifier="gtk_widget_region_intersect">
+        <doc xml:whitespace="preserve">Computes the intersection of a @widget's area and @region, returning
+the intersection. The result may be empty, use cairo_region_is_empty() to
+check.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly allocated region holding the intersection of @widget and @region. The coordinates of the return value are relative to @widget-&gt;window for %NO_WINDOW widgets, and relative to the parent window of @widget-&gt;window for widgets with their own window.</doc>
+          <type name="cairo.Region" c:type="cairo_region_t*"/>
+        </return-value>
+        <parameters>
+          <parameter name="region" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #cairo_region_t, in the same coordinate system as for %NO_WINDOW widgets; relative to the parent window of @widget-&gt;window for widgets with their own window.</doc>
+            <type name="cairo.Region" c:type="cairo_region_t*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_accelerator"
+              c:identifier="gtk_widget_remove_accelerator">
+        <doc xml:whitespace="preserve">Removes an accelerator from @widget, previously installed with
+gtk_widget_add_accelerator().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether an accelerator was installed and could be removed</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_group" transfer-ownership="none">
+            <doc xml:whitespace="preserve">accel group for this widget</doc>
+            <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+          </parameter>
+          <parameter name="accel_key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">GDK keyval of the accelerator</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="accel_mods" transfer-ownership="none">
+            <doc xml:whitespace="preserve">modifier key combination of the accelerator</doc>
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_mnemonic_label"
+              c:identifier="gtk_widget_remove_mnemonic_label"
+              version="2.4">
+        <doc xml:whitespace="preserve">Removes a widget from the list of mnemonic labels for
+this widget. (See gtk_widget_list_mnemonic_labels()). The widget
+must have previously been added to the list with
+gtk_widget_add_mnemonic_label().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkWidget that was previously set as a mnemnic label for</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="render_icon" c:identifier="gtk_widget_render_icon">
+        <doc xml:whitespace="preserve">A convenience function that uses the theme engine and RC file
+settings for @widget to look up @stock_id and render it to
+a pixbuf. @stock_id should be a stock icon ID such as
+#GTK_STOCK_OPEN or #GTK_STOCK_OK. @size should be a size
+such as #GTK_ICON_SIZE_MENU. @detail should be a string that
+identifies the widget or code doing the rendering, so that
+theme engines can special-case rendering for that widget or code.
+The pixels in the returned #GdkPixbuf are shared with the rest of
+the application and should not be modified. The pixbuf should be freed
+after use with g_object_unref().
+stock ID wasn't known</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new pixbuf, or %NULL if the</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a stock ID</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a stock size. A size of (GtkIconSize)-1 means render at the size of the source and don't scale (if there are multiple source sizes, GTK+ picks one of the available sizes).</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="detail" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">render detail to pass to theme engine</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reparent" c:identifier="gtk_widget_reparent">
+        <doc xml:whitespace="preserve">Moves a widget from one #GtkContainer to another, handling reference
+count issues to avoid destroying the widget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_parent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkContainer to move the widget into</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reset_rc_styles" c:identifier="gtk_widget_reset_rc_styles">
+        <doc xml:whitespace="preserve">Reset the styles of @widget and all descendents, so when
+they are looked up again, they get the correct values
+for the currently loaded RC file settings.
+This function is not useful for applications.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="reset_shapes" c:identifier="gtk_widget_reset_shapes">
+        <doc xml:whitespace="preserve">Recursively resets the shape on this widget and its descendants.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="send_expose" c:identifier="gtk_widget_send_expose">
+        <doc xml:whitespace="preserve">Very rarely-used function. This function is used to emit
+an expose event signals on a widget. This function is not
+normally used directly. The only time it is used is when
+propagating an expose event to a child %NO_WINDOW widget, and
+that is normally done using gtk_container_propagate_expose().
+If you want to force an area of a window to be redrawn, 
+use gdk_window_invalidate_rect() or gdk_window_invalidate_region().
+To cause the redraw to be done immediately, follow that call
+with a call to gdk_window_process_updates().
+the event was handled)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">return from the event signal emission (%TRUE if</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a expose #GdkEvent</doc>
+            <type name="Gdk.Event" c:type="GdkEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_focus_change"
+              c:identifier="gtk_widget_send_focus_change"
+              version="2.20">
+        <doc xml:whitespace="preserve">Sends the focus change @event to @widget
+This function is not meant to be used by applications. The only time it
+should be used is when it is necessary for a #GtkWidget to assign focus
+to a widget that is semantically owned by the first widget even though
+it's not a direct child - for instance, a search entry in a floating
+window similar to the quick search in #GtkTreeView.
+An example of its usage is:
+|[
+GdkEvent *fevent = gdk_event_new (GDK_FOCUS_CHANGE);
+fevent-&gt;focus_change.type = GDK_FOCUS_CHANGE;
+fevent-&gt;focus_change.in = TRUE;
+fevent-&gt;focus_change.window = gtk_widget_get_window (widget);
+if (fevent-&gt;focus_change.window != NULL)
+g_object_ref (fevent-&gt;focus_change.window);
+gtk_widget_send_focus_change (widget, fevent);
+gdk_event_free (event);
+]|
+if the event was handled, and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the return value from the event signal emission: %TRUE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkEvent of type GDK_FOCUS_CHANGE</doc>
+            <type name="Gdk.Event" c:type="GdkEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_accel_path" c:identifier="gtk_widget_set_accel_path">
+        <doc xml:whitespace="preserve">Given an accelerator group, @accel_group, and an accelerator path,
+key binding that is defined for @accel_path is pressed, @widget
+will be activated.  This removes any accelerators (for any
+accelerator group) installed by previous calls to
+gtk_widget_set_accel_path(). Associating accelerators with
+paths allows them to be modified by the user and the modifications
+to be saved for future use. (See gtk_accel_map_save().)
+This function is a low level function that would most likely
+be used by a menu creation system like #GtkUIManager. If you
+use #GtkUIManager, setting up accelerator paths will be done
+automatically.
+Even when you you aren't using #GtkUIManager, if you only want to
+set up accelerators on menu items gtk_menu_item_set_accel_path()
+provides a somewhat more convenient interface.
+Note that @accel_path string will be stored in a #GQuark. Therefore, if you
+pass a static string, you can save some memory by interning it first with 
+g_intern_static_string().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_path"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">path used to look up the accelerator</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="accel_group"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkAccelGroup.</doc>
+            <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_allocation"
+              c:identifier="gtk_widget_set_allocation"
+              version="2.18">
+        <doc xml:whitespace="preserve">Sets the widget's allocation.  This should not be used
+directly, but from within a widget's size_allocate method.
+The allocation set should be the "adjusted" or actual
+allocation. If you're implementing a #GtkContainer, you want to use
+gtk_widget_size_allocate() instead of gtk_widget_set_allocation().
+The GtkWidgetClass::adjust_size_allocation virtual method adjusts the
+allocation inside gtk_widget_size_allocate() to create an adjusted
+allocation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="allocation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to a #GtkAllocation to copy from</doc>
+            <type name="Allocation" c:type="GtkAllocation*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_app_paintable"
+              c:identifier="gtk_widget_set_app_paintable">
+        <doc xml:whitespace="preserve">Sets whether the application intends to draw on the widget in
+an #GtkWidget::expose-event handler. 
+This is a hint to the widget and does not affect the behavior of 
+the GTK+ core; many widgets ignore this flag entirely. For widgets 
+that do pay attention to the flag, such as #GtkEventBox and #GtkWindow, 
+the effect is to suppress default themed drawing of the widget's 
+background. (Children of the widget will still be drawn.) The application 
+is then entirely responsible for drawing the widget background.
+Note that the background is still drawn when the widget is mapped.
+If this is not suitable (e.g. because you want to make a transparent
+window using an RGBA visual), you can work around this by doing:
+|[
+gtk_widget_realize (window);
+gdk_window_set_back_pixmap (window-&gt;window, NULL, FALSE);
+gtk_widget_show (window);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="app_paintable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the application will paint on the widget</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_can_default"
+              c:identifier="gtk_widget_set_can_default"
+              version="2.18">
+        <doc xml:whitespace="preserve">Specifies whether @widget can be a default widget. See
+gtk_widget_grab_default() for details about the meaning of
+"default".</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="can_default" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether or not @widget can be a default widget.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_can_focus"
+              c:identifier="gtk_widget_set_can_focus"
+              version="2.18">
+        <doc xml:whitespace="preserve">Specifies whether @widget can own the input focus. See
+gtk_widget_grab_focus() for actually setting the input focus on a
+widget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="can_focus" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether or not @widget can own the input focus.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_child_visible"
+              c:identifier="gtk_widget_set_child_visible">
+        <doc xml:whitespace="preserve">Sets whether @widget should be mapped along with its when its parent
+is mapped and @widget has been shown with gtk_widget_show(). 
+The child visibility can be set for widget before it is added to
+a container with gtk_widget_set_parent(), to avoid mapping
+children unnecessary before immediately unmapping them. However
+it will be reset to its default state of %TRUE when the widget
+is removed from a container.
+Note that changing the child visibility of a widget does not
+queue a resize on the widget. Most of the time, the size of
+a widget is computed from all visible children, whether or
+not they are mapped. If this is not the case, the container
+can queue a resize itself.
+This function is only useful for container implementations and
+never should be called by an application.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_visible" transfer-ownership="none">
+            <doc xml:whitespace="preserve">if %TRUE, @widget should be mapped along with its parent.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_colormap" c:identifier="gtk_widget_set_colormap">
+        <doc xml:whitespace="preserve">Sets the colormap for the widget to the given value. Widget must not
+have been previously realized. This probably should only be used
+from an &lt;function&gt;init()&lt;/function&gt; function (i.e. from the constructor 
+for the widget).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="colormap" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a colormap</doc>
+            <type name="Gdk.Colormap" c:type="GdkColormap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_composite_name"
+              c:identifier="gtk_widget_set_composite_name">
+        <doc xml:whitespace="preserve">Sets a widgets composite name. The widget must be
+a composite child of its parent; see gtk_widget_push_composite_child().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_device_events"
+              c:identifier="gtk_widget_set_device_events"
+              version="3.0">
+        <doc xml:whitespace="preserve">Sets the device event mask (see #GdkEventMask) for a widget. The event
+mask determines which events a widget will receive from @device. Keep
+in mind that different widgets have different default event masks, and by
+changing the event mask you may disrupt a widget's functionality,
+so be careful. This function must be called while a widget is
+unrealized. Consider gtk_widget_add_device_events() for widgets that are
+already realized, or if you want to preserve the existing event
+mask. This function can't be used with #GTK_NO_WINDOW widgets;
+to get events on those widgets, place them inside a #GtkEventBox
+and receive events on the event box.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkDevice</doc>
+            <type name="Gdk.Device" c:type="GdkDevice*"/>
+          </parameter>
+          <parameter name="events" transfer-ownership="none">
+            <doc xml:whitespace="preserve">event mask</doc>
+            <type name="Gdk.EventMask" c:type="GdkEventMask"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_direction" c:identifier="gtk_widget_set_direction">
+        <doc xml:whitespace="preserve">Sets the reading direction on a particular widget. This direction
+controls the primary direction for widgets containing text,
+and also the direction in which the children of a container are
+packed. The ability to set the direction is present in order
+so that correct localization into languages with right-to-left
+reading directions can be done. Generally, applications will
+let the default reading direction present, except for containers
+where the containers are arranged in an order that is explicitely
+visual rather than logical (such as buttons for text justification).
+If the direction is set to %GTK_TEXT_DIR_NONE, then the value
+set by gtk_widget_set_default_direction() will be used.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dir" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new direction</doc>
+            <type name="TextDirection" c:type="GtkTextDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_double_buffered"
+              c:identifier="gtk_widget_set_double_buffered">
+        <doc xml:whitespace="preserve">Widgets are double buffered by default; you can use this function
+to turn off the buffering. "Double buffered" simply means that
+gdk_window_begin_paint_region() and gdk_window_end_paint() are called
+automatically around expose events sent to the
+widget. gdk_window_begin_paint() diverts all drawing to a widget's
+window to an offscreen buffer, and gdk_window_end_paint() draws the
+buffer to the screen. The result is that users see the window
+update in one smooth step, and don't see individual graphics
+primitives being rendered.
+In very simple terms, double buffered widgets don't flicker,
+so you would only use this function to turn off double buffering
+if you had special needs and really knew what you were doing.
+expose events, since even the clearing to the background color or 
+pixmap will not happen automatically (as it is done in 
+gdk_window_begin_paint()).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="double_buffered" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to double-buffer a widget</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_events" c:identifier="gtk_widget_set_events">
+        <doc xml:whitespace="preserve">Sets the event mask (see #GdkEventMask) for a widget. The event
+mask determines which events a widget will receive. Keep in mind
+that different widgets have different default event masks, and by
+changing the event mask you may disrupt a widget's functionality,
+so be careful. This function must be called while a widget is
+unrealized. Consider gtk_widget_add_events() for widgets that are
+already realized, or if you want to preserve the existing event
+mask. This function can't be used with #GTK_NO_WINDOW widgets;
+to get events on those widgets, place them inside a #GtkEventBox
+and receive events on the event box.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="events" transfer-ownership="none">
+            <doc xml:whitespace="preserve">event mask</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_extension_events"
+              c:identifier="gtk_widget_set_extension_events">
+        <doc xml:whitespace="preserve">Sets the extension events mask to @mode. See #GdkExtensionMode
+and gdk_input_set_extension_events().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">bitfield of extension events to receive</doc>
+            <type name="Gdk.ExtensionMode" c:type="GdkExtensionMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_halign" c:identifier="gtk_widget_set_halign">
+        <doc xml:whitespace="preserve">Sets the horizontal alignment of @widget.
+See the #GtkWidget:halign property.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the horizontal alignment</doc>
+            <type name="Align" c:type="GtkAlign"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_has_tooltip"
+              c:identifier="gtk_widget_set_has_tooltip"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets the has-tooltip property on @widget to @has_tooltip.  See
+GtkWidget:has-tooltip for more information.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="has_tooltip" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether or not @widget has a tooltip.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_has_window"
+              c:identifier="gtk_widget_set_has_window"
+              version="2.18">
+        <doc xml:whitespace="preserve">Specifies whether @widget has a #GdkWindow of its own. Note that
+all realized widgets have a non-%NULL "window" pointer
+(gtk_widget_get_window() never returns a %NULL window when a widget
+is realized), but for many of them it's actually the #GdkWindow of
+one of its parent widgets. Widgets that do not create a %window for
+themselves in GtkWidget::realize() must announce this by
+calling this function with @has_window = %FALSE.
+This function should only be called by widget implementations,
+and they should call it in their init() function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="has_window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether or not @widget has a window.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_mapped"
+              c:identifier="gtk_widget_set_mapped"
+              version="2.20">
+        <doc xml:whitespace="preserve">Marks the widget as being realized.
+This function should only ever be called in a derived widget's
+"map" or "unmap" implementation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mapped" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to mark the widget as mapped</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_margin_bottom"
+              c:identifier="gtk_widget_set_margin_bottom">
+        <doc xml:whitespace="preserve">Sets the bottom margin of @widget.
+See the #GtkWidget:margin-bottom property.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="margin" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the bottom margin</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_margin_left" c:identifier="gtk_widget_set_margin_left">
+        <doc xml:whitespace="preserve">Sets the left margin of @widget.
+See the #GtkWidget:margin-left property.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="margin" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the left margin</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_margin_right"
+              c:identifier="gtk_widget_set_margin_right">
+        <doc xml:whitespace="preserve">Sets the right margin of @widget.
+See the #GtkWidget:margin-right property.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="margin" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the right margin</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_margin_top" c:identifier="gtk_widget_set_margin_top">
+        <doc xml:whitespace="preserve">Sets the top margin of @widget.
+See the #GtkWidget:margin-top property.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="margin" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the top margin</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_name" c:identifier="gtk_widget_set_name">
+        <doc xml:whitespace="preserve">Widgets can be named, which allows you to refer to them from a
+gtkrc file. You can apply a style to widgets with a particular name
+in the gtkrc file. See the documentation for gtkrc files (on the
+same page as the docs for #GtkRcStyle).
+Note that widget names are separated by periods in paths (see 
+gtk_widget_path()), so names with embedded periods may cause confusion.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name for the widget</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_no_show_all"
+              c:identifier="gtk_widget_set_no_show_all"
+              version="2.4">
+        <doc xml:whitespace="preserve">Sets the #GtkWidget:no-show-all property, which determines whether 
+calls to gtk_widget_show_all() and gtk_widget_hide_all() will affect 
+this widget. 
+This is mostly for use in constructing widget hierarchies with externally
+controlled visibility, see #GtkUIManager.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="no_show_all" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new value for the "no-show-all" property</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_parent" c:identifier="gtk_widget_set_parent">
+        <doc xml:whitespace="preserve">This function is useful only when implementing subclasses of 
+#GtkContainer.
+Sets the container as the parent of @widget, and takes care of
+some details such as updating the state and style of the child
+to reflect its new location. The opposite function is
+gtk_widget_unparent().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">parent container</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_parent_window"
+              c:identifier="gtk_widget_set_parent_window">
+        <doc xml:whitespace="preserve">Sets a non default parent window for @widget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent_window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new parent window.</doc>
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_realized"
+              c:identifier="gtk_widget_set_realized"
+              version="2.20">
+        <doc xml:whitespace="preserve">Marks the widget as being realized.
+This function should only ever be called in a derived widget's
+"realize" or "unrealize" implementation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="realized" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to mark the widget as realized</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_receives_default"
+              c:identifier="gtk_widget_set_receives_default"
+              version="2.18">
+        <doc xml:whitespace="preserve">Specifies whether @widget will be treated as the default widget
+within its toplevel when it has the focus, even if another widget
+is the default.
+See gtk_widget_grab_default() for details about the meaning of
+"default".</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="receives_default" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether or not @widget can be a default widget.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_redraw_on_allocate"
+              c:identifier="gtk_widget_set_redraw_on_allocate">
+        <doc xml:whitespace="preserve">Sets whether the entire widget is queued for drawing when its size 
+allocation changes. By default, this setting is %TRUE and
+the entire widget is redrawn on every size change. If your widget
+leaves the upper left unchanged when made bigger, turning this
+setting off will improve performance.
+Note that for %NO_WINDOW widgets setting this flag to %FALSE turns
+its position changes; this is to allow containers that don't draw
+anything to avoid excess invalidations. If you set this flag on a
+%NO_WINDOW widget that &lt;emphasis&gt;does&lt;/emphasis&gt; draw on @widget-&gt;window, 
+you are responsible for invalidating both the old and new allocation 
+of the widget when the widget is moved and responsible for invalidating
+regions newly when the widget increases size.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="redraw_on_allocate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">if %TRUE, the entire widget will be redrawn when it is allocated to a new size. Otherwise, only the new portion of the widget will be redrawn.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_scroll_adjustments"
+              c:identifier="gtk_widget_set_scroll_adjustments">
+        <doc xml:whitespace="preserve">For widgets that support scrolling, sets the scroll adjustments and
+returns %TRUE.  For widgets that don't support scrolling, does
+nothing and returns %FALSE. Widgets that don't support scrolling
+can be scrolled by placing them in a #GtkViewport, which does
+support scrolling.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the widget supports scrolling</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="hadjustment"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">an adjustment for horizontal scrolling, or %NULL</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+          <parameter name="vadjustment"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">an adjustment for vertical scrolling, or %NULL</doc>
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sensitive" c:identifier="gtk_widget_set_sensitive">
+        <doc xml:whitespace="preserve">Sets the sensitivity of a widget. A widget is sensitive if the user
+can interact with it. Insensitive widgets are "grayed out" and the
+user can't interact with them. Insensitive widgets are known as
+"inactive", "disabled", or "ghosted" in some other toolkits.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sensitive" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to make the widget sensitive</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_size_request"
+              c:identifier="gtk_widget_set_size_request">
+        <doc xml:whitespace="preserve">Sets the minimum size of a widget; that is, the widget's size
+request will be @width by @height. You can use this function to
+force a widget to be either larger or smaller than it normally
+would be.
+In most cases, gtk_window_set_default_size() is a better choice for
+toplevel windows than this function; setting the default size will
+still allow users to shrink the window. Setting the size request
+will force them to leave the window at least as large as the size
+request. When dealing with window sizes,
+gtk_window_set_geometry_hints() can be a useful function as well.
+Note the inherent danger of setting any fixed size - themes,
+translations into other languages, different fonts, and user action
+can all change the appropriate size for a given widget. So, it's
+basically impossible to hardcode a size that will always be
+correct.
+The size request of a widget is the smallest size a widget can
+accept while still functioning well and drawing itself correctly.
+However in some strange cases a widget may be allocated less than
+its requested size, and in many cases a widget may be allocated more
+space than it requested.
+If the size request in a given direction is -1 (unset), then
+the "natural" size request of the widget will be used instead.
+Widgets can't actually be allocated a size less than 1 by 1, but
+you can pass 0,0 to this function to mean "as small as possible."
+The size request set here does not include any margin from the
+#GtkWidget properties margin-left, margin-right, margin-top, and
+margin-bottom, but it does include pretty much all other padding
+or border properties set by any subclass of #GtkWidget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width @widget should request, or -1 to unset</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height @widget should request, or -1 to unset</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_state" c:identifier="gtk_widget_set_state">
+        <doc xml:whitespace="preserve">This function is for use in widget implementations. Sets the state
+of a widget (insensitive, prelighted, etc.) Usually you should set
+the state using wrapper functions such as gtk_widget_set_sensitive().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new state for @widget</doc>
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_style" c:identifier="gtk_widget_set_style">
+        <doc xml:whitespace="preserve">Sets the #GtkStyle for a widget (@widget-&gt;style). You probably don't
+want to use this function; it interacts badly with themes, because
+themes work by replacing the #GtkStyle. Instead, use
+gtk_widget_modify_style().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="style" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkStyle, or %NULL to remove the effect of a previous gtk_widget_set_style() and go back to the default style</doc>
+            <type name="Style" c:type="GtkStyle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_support_multidevice"
+              c:identifier="gtk_widget_set_support_multidevice"
+              version="3.0">
+        <doc xml:whitespace="preserve">Enables or disables multiple pointer awareness. If this setting is %TRUE,
+that if custom #GdkWindow&lt;!-- --&gt;s are created in #GtkWidget::realize,
+gdk_window_set_support_multidevice() will have to be called manually on them.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="support_multidevice" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to support input from multiple devices.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tooltip_markup"
+              c:identifier="gtk_widget_set_tooltip_markup"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets @markup as the contents of the tooltip, which is marked up with
+the &lt;link linkend="PangoMarkupFormat"&gt;Pango text markup language&lt;/link&gt;.
+This function will take care of setting GtkWidget:has-tooltip to %TRUE
+and of the default handler for the GtkWidget::query-tooltip signal.
+See also the GtkWidget:tooltip-markup property and
+gtk_tooltip_set_markup().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="markup" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the contents of the tooltip for @widget, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tooltip_text"
+              c:identifier="gtk_widget_set_tooltip_text"
+              version="2.12">
+        <doc xml:whitespace="preserve">Sets @text as the contents of the tooltip. This function will take
+care of setting GtkWidget:has-tooltip to %TRUE and of the default
+handler for the GtkWidget::query-tooltip signal.
+See also the GtkWidget:tooltip-text property and gtk_tooltip_set_text().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the contents of the tooltip for @widget</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tooltip_window"
+              c:identifier="gtk_widget_set_tooltip_window"
+              version="2.12">
+        <doc xml:whitespace="preserve">Replaces the default, usually yellow, window used for displaying
+tooltips with @custom_window. GTK+ will take care of showing and
+hiding @custom_window at the right moment, to behave likewise as
+the default tooltip window. If @custom_window is %NULL, the default
+tooltip window will be used.
+If the custom window should have the default theming it needs to
+have the name "gtk-tooltip", see gtk_widget_set_name().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="custom_window"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkWindow, or %NULL</doc>
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_valign" c:identifier="gtk_widget_set_valign">
+        <doc xml:whitespace="preserve">Sets the vertical alignment of @widget.
+See the #GtkWidget:valign property.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the vertical alignment</doc>
+            <type name="Align" c:type="GtkAlign"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_visible"
+              c:identifier="gtk_widget_set_visible"
+              version="2.18">
+        <doc xml:whitespace="preserve">Sets the visibility state of @widget. Note that setting this to
+%TRUE doesn't mean the widget is actually viewable, see
+gtk_widget_get_visible().
+This function simply calls gtk_widget_show() or gtk_widget_hide()
+but is nicer to use when the visibility of the widget depends on
+some condition.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the widget should be shown or not</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_window"
+              c:identifier="gtk_widget_set_window"
+              version="2.18">
+        <doc xml:whitespace="preserve">Sets a widget's window. This function should only be used in a
+widget's GtkWidget::realize() implementation. The %window passed is
+usually either new window created with gdk_window_new(), or the
+window of its parent widget as returned by
+gtk_widget_get_parent_window().
+Widgets must indicate whether they will create their own #GdkWindow
+by calling gtk_widget_set_has_window(). This is usually done in the
+widget's init() function.
+&lt;note&gt;&lt;para&gt;This function does not add any reference to @window.&lt;/para&gt;&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkWindow</doc>
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="shape_combine_mask"
+              c:identifier="gtk_widget_shape_combine_mask">
+        <doc xml:whitespace="preserve">Sets a shape for this widget's GDK window. This allows for
+transparent windows etc., see gdk_window_shape_combine_mask()
+for more information.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="shape_mask"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">shape to be added, or %NULL to remove an existing shape</doc>
+            <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+          <parameter name="offset_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X position of shape mask with respect to @window</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="offset_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y position of shape mask with respect to @window</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="show" c:identifier="gtk_widget_show">
+        <doc xml:whitespace="preserve">Flags a widget to be displayed. Any widget that isn't shown will
+not appear on the screen. If you want to show all the widgets in a
+container, it's easier to call gtk_widget_show_all() on the
+container, instead of individually showing the widgets.
+Remember that you have to show the containers containing a widget,
+in addition to the widget itself, before it will appear onscreen.
+When a toplevel container is shown, it is immediately realized and
+mapped; other shown widgets are realized and mapped when their
+toplevel container is realized and mapped.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="show_all" c:identifier="gtk_widget_show_all">
+        <doc xml:whitespace="preserve">Recursively shows a widget, and any child widgets (if the widget is
+a container).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="show_now" c:identifier="gtk_widget_show_now">
+        <doc xml:whitespace="preserve">Shows a widget. If the widget is an unmapped toplevel widget
+(i.e. a #GtkWindow that has not yet been shown), enter the main
+loop and wait for the window to actually be mapped. Be careful;
+because the main loop is running, anything can happen during
+this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="size_allocate" c:identifier="gtk_widget_size_allocate">
+        <doc xml:whitespace="preserve">This function is only used by #GtkContainer subclasses, to assign a size
+and position to their child widgets.
+In this function, the allocation may be adjusted. It will be forced
+to a 1x1 minimum size, and the adjust_size_allocation virtual
+method on the child will be used to adjust the allocation. Standard
+adjustments include removing the widget's margins, and applying the
+widget's #GtkWidget:halign and #GtkWidget:valign properties.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="allocation"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">position and size to be allocated to @widget</doc>
+            <type name="Allocation" c:type="GtkAllocation*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="size_request"
+              c:identifier="gtk_widget_size_request"
+              deprecated="Use gtk_size_request_get_size() instead."
+              deprecated-version="3.0">
+        <doc xml:whitespace="preserve">This function is typically used when implementing a #GtkContainer
+subclass.  Obtains the preferred size of a widget. The container
+uses this information to arrange its child widgets and decide what
+size allocations to give them with gtk_widget_size_allocate().
+You can also call this function from an application, with some
+caveats. Most notably, getting a size request requires the widget
+to be associated with a screen, because font information may be
+needed. Multihead-aware applications should keep this in mind.
+Also remember that the size request is not necessarily the size
+a widget will actually be allocated.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="requisition"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkRequisition to be filled in</doc>
+            <type name="Requisition" c:type="GtkRequisition*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="style_attach"
+              c:identifier="gtk_widget_style_attach"
+              version="2.20">
+        <doc xml:whitespace="preserve">This function attaches the widget's #GtkStyle to the widget's
+#GdkWindow. It is a replacement for
+&lt;programlisting&gt;
+widget-&gt;style = gtk_style_attach (widget-&gt;style, widget-&gt;window);
+&lt;/programlisting&gt;
+and should only ever be called in a derived widget's "realize"
+implementation which does not chain up to its parent class'
+"realize" implementation, because one of the parent classes
+(finally #GtkWidget) would attach the style itself.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="style_get"
+              c:identifier="gtk_widget_style_get"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the values of a multiple style properties of @widget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first property to get</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="style_get_property"
+              c:identifier="gtk_widget_style_get_property">
+        <doc xml:whitespace="preserve">Gets the value of a style property of @widget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a style property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to return the property value</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="style_get_valist"
+              c:identifier="gtk_widget_style_get_valist"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Non-vararg variant of gtk_widget_style_get(). Used primarily by language 
+bindings.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first property to get</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="var_args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a &lt;type&gt;va_list&lt;/type&gt; of pairs of property names and locations to return the property values, starting with the location for @first_property_name.</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="thaw_child_notify"
+              c:identifier="gtk_widget_thaw_child_notify">
+        <doc xml:whitespace="preserve">Reverts the effect of a previous call to gtk_widget_freeze_child_notify().
+This causes all queued #GtkWidget::child-notify signals on @widget to be 
+emitted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="translate_coordinates"
+              c:identifier="gtk_widget_translate_coordinates">
+        <doc xml:whitespace="preserve">Translate coordinates relative to @src_widget's allocation to coordinates
+relative to @dest_widget's allocations. In order to perform this
+operation, both widgets must be realized, and must share a common
+toplevel.
+was no common ancestor. In this case, nothing is stored in
+*@dest_x and *@dest_y. Otherwise %TRUE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%FALSE if either widget was not realized, or there</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest_widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkWidget</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="src_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X position relative to @src_widget</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="src_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y position relative to @src_widget</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="dest_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location to store X position relative to @dest_widget</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="dest_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location to store Y position relative to @dest_widget</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="trigger_tooltip_query"
+              c:identifier="gtk_widget_trigger_tooltip_query"
+              version="2.12">
+        <doc xml:whitespace="preserve">Triggers a tooltip query on the display where the toplevel of @widget
+is located. See gtk_tooltip_trigger_tooltip_query() for more
+information.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unmap" c:identifier="gtk_widget_unmap">
+        <doc xml:whitespace="preserve">This function is only for use in widget implementations. Causes
+a widget to be unmapped if it's currently mapped.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unparent" c:identifier="gtk_widget_unparent">
+        <doc xml:whitespace="preserve">This function is only for use in widget implementations.
+Should be called by implementations of the remove method
+on #GtkContainer, to dissociate a child from the container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unrealize" c:identifier="gtk_widget_unrealize">
+        <doc xml:whitespace="preserve">This function is only useful in widget implementations.
+Causes a widget to be unrealized (frees all GDK resources
+associated with the widget, such as @widget-&gt;window).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="app-paintable" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="can-default" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="can-focus" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="composite-child" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="double-buffered" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="events" writable="1" transfer-ownership="none">
+        <type name="Gdk.EventMask"/>
+      </property>
+      <property name="extension-events" writable="1" transfer-ownership="none">
+        <type name="Gdk.ExtensionMode"/>
+      </property>
+      <property name="halign"
+                version="3.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">How to distribute horizontal space if widget gets extra space, see #GtkAlign</doc>
+        <type name="Align"/>
+      </property>
+      <property name="has-default" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="has-focus" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="has-tooltip"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Enables or disables the emission of #GtkWidget::query-tooltip on @widget.  
+A value of %TRUE indicates that @widget can have a tooltip, in this case
+the widget will be queried using #GtkWidget::query-tooltip to determine
+whether it will provide a tooltip or not.
+Note that setting this property to %TRUE for the first time will change
+the event masks of the GdkWindows of this widget to include leave-notify
+and motion-notify events.  This cannot and will not be undone when the
+property is set to %FALSE again.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="height-request" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="is-focus" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="margin" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="margin-bottom" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="margin-left" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="margin-right" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="margin-top" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="name" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="no-show-all" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="parent" writable="1" transfer-ownership="none">
+        <type name="Container"/>
+      </property>
+      <property name="receives-default" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="sensitive" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="style" writable="1" transfer-ownership="none">
+        <type name="Style"/>
+      </property>
+      <property name="tooltip-markup"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Sets the text of tooltip to be the given string, which is marked up
+with the &lt;link linkend="PangoMarkupFormat"&gt;Pango text markup language&lt;/link&gt;.
+Also see gtk_tooltip_set_markup().
+This is a convenience property which will take care of getting the
+will automatically be set to %TRUE and there will be taken care of
+#GtkWidget::query-tooltip in the default signal handler.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="tooltip-text"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Sets the text of tooltip to be the given string.
+Also see gtk_tooltip_set_text().
+This is a convenience property which will take care of getting the
+will automatically be set to %TRUE and there will be taken care of
+#GtkWidget::query-tooltip in the default signal handler.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="valign"
+                version="3.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">How to distribute vertical space if widget gets extra space, see #GtkAlign</doc>
+        <type name="Align"/>
+      </property>
+      <property name="visible" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="width-request" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="window" version="2.14" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The widget's window if it is realized, %NULL otherwise.</doc>
+        <type name="Gdk.Window"/>
+      </property>
+      <field name="object">
+        <type name="Object" c:type="GtkObject"/>
+      </field>
+      <field name="private_flags" bits="16">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="priv">
+        <type name="WidgetPrivate" c:type="GtkWidgetPrivate*"/>
+      </field>
+      <glib:signal name="accel-closures-changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="button-press-event">
+        <doc xml:whitespace="preserve">The ::button-press-event signal will be emitted when a button
+(typically from a mouse) is pressed.
+To receive this signal, the #GdkWindow associated to the 
+widget needs to enable the #GDK_BUTTON_PRESS_MASK mask.
+This signal will be sent to the grab widget if there is one.
+%FALSE to propagate the event further.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for the event.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkEventButton which triggered this signal.</doc>
+            <type name="Gdk.EventButton"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="button-release-event">
+        <doc xml:whitespace="preserve">The ::button-release-event signal will be emitted when a button
+(typically from a mouse) is released.
+To receive this signal, the #GdkWindow associated to the 
+widget needs to enable the #GDK_BUTTON_RELEASE_MASK mask.
+This signal will be sent to the grab widget if there is one.
+%FALSE to propagate the event further.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for the event.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkEventButton which triggered this signal.</doc>
+            <type name="Gdk.EventButton"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="can-activate-accel">
+        <doc xml:whitespace="preserve">Determines whether an accelerator that activates the signal
+identified by @signal_id can currently be activated.
+This signal is present to allow applications and derived
+widgets to override the default #GtkWidget handling
+for determining whether an accelerator can be activated.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the signal can be activated.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the ID of a signal installed on @widget</doc>
+            <type name="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="child-notify" introspectable="0">
+        <doc xml:whitespace="preserve">The ::child-notify signal is emitted for each 
+&lt;link linkend="child-properties"&gt;child property&lt;/link&gt;  that has
+changed on an object. The signal's detail holds the property name.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GParamSpec of the changed child property</doc>
+            <type/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="client-event">
+        <doc xml:whitespace="preserve">The ::client-event will be emitted when the @widget's window
+receives a message (via a ClientMessage event) from another
+application.
+the event. %FALSE to propagate the event further.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkEventClient which triggered this signal.</doc>
+            <type name="Gdk.EventClient"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="composited-changed">
+        <doc xml:whitespace="preserve">The ::composited-changed signal is emitted when the composited
+status of @widget&lt;!-- --&gt;s screen changes. 
+See gdk_screen_is_composited().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="configure-event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Gdk.Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="damage-event" version="2.14">
+        <doc xml:whitespace="preserve">Emitted when a redirected window belonging to @widget gets drawn into.
+The region/area members of the event shows what area of the redirected
+drawable was drawn into.
+%FALSE to propagate the event further.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for the event.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkEventExpose event</doc>
+            <type name="Gdk.Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="delete-event">
+        <doc xml:whitespace="preserve">The ::delete-event signal is emitted if a user requests that
+a toplevel window is closed. The default handler for this signal
+destroys the window. Connecting gtk_widget_hide_on_delete() to
+this signal will cause the window to be hidden instead, so that
+it can later be shown again without reconstructing it.
+%FALSE to propagate the event further.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for the event.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the event which triggered this signal</doc>
+            <type name="Gdk.Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="destroy-event">
+        <doc xml:whitespace="preserve">The ::destroy-event signal is emitted when a #GdkWindow is destroyed.
+You rarely get this signal, because most widgets disconnect themselves 
+from their window before they destroy it, so no widget owns the 
+window at destroy time.
+To receive this signal, the #GdkWindow associated to the widget needs
+to enable the #GDK_STRUCTURE_MASK mask. GDK will enable this mask
+automatically for all new windows.
+%FALSE to propagate the event further.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for the event.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the event which triggered this signal</doc>
+            <type name="Gdk.Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="direction-changed">
+        <doc xml:whitespace="preserve">The ::direction-changed signal is emitted when the text direction
+of a widget changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the previous text direction of @widget</doc>
+            <type name="TextDirection"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drag-begin">
+        <doc xml:whitespace="preserve">The ::drag-begin signal is emitted on the drag source when a drag is 
+started. A typical reason to connect to this signal is to set up a 
+custom drag icon with gtk_drag_source_set_icon().
+Note that some widgets set up a drag icon in the default handler of
+this signal, so you may have to use g_signal_connect_after() to
+override what the default handler did.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the drag context</doc>
+            <type name="Gdk.DragContext"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drag-data-delete">
+        <doc xml:whitespace="preserve">The ::drag-data-delete signal is emitted on the drag source when a drag 
+with the action %GDK_ACTION_MOVE is successfully completed. The signal 
+handler is responsible for deleting the data that has been dropped. What 
+"delete" means depends on the context of the drag operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the drag context</doc>
+            <type name="Gdk.DragContext"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drag-data-get">
+        <doc xml:whitespace="preserve">The ::drag-data-get signal is emitted on the drag source when the drop 
+site requests the data which is dragged. It is the responsibility of 
+the signal handler to fill @data with the data in the format which 
+is indicated by @info. See gtk_selection_data_set() and 
+gtk_selection_data_set_text().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the drag context</doc>
+            <type name="Gdk.DragContext"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkSelectionData to be filled with the dragged data</doc>
+            <type name="SelectionData"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the info that has been registered with the target in the #GtkTargetList</doc>
+            <type name="guint"/>
+          </parameter>
+          <parameter name="p2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the timestamp at which the data was requested</doc>
+            <type name="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drag-data-received">
+        <doc xml:whitespace="preserve">The ::drag-data-received signal is emitted on the drop site when the 
+dragged data has been received. If the data was received in order to 
+determine whether the drop will be accepted, the handler is expected 
+to call gdk_drag_status() and &lt;emphasis&gt;not&lt;/emphasis&gt; finish the drag. 
+If the data was received in response to a #GtkWidget::drag-drop signal 
+(and this is the last target to be received), the handler for this 
+signal is expected to process the received data and then call 
+gtk_drag_finish(), setting the @success parameter depending on whether 
+the data was processed successfully. 
+The handler may inspect and modify @drag_context-&gt;action before calling 
+gtk_drag_finish(), e.g. to implement %GDK_ACTION_ASK as shown in the 
+following example:
+|[
+void  
+drag_data_received (GtkWidget          *widget,
+GdkDragContext     *drag_context,
+gint                x,
+gint                y,
+GtkSelectionData   *data,
+guint               info,
+guint               time)
+{
+if ((data-&gt;length &gt;= 0) &amp;&amp; (data-&gt;format == 8))
+{
+if (drag_context-&gt;action == GDK_ACTION_ASK) 
+{
+GtkWidget *dialog;
+gint response;
+dialog = gtk_message_dialog_new (NULL,
+GTK_DIALOG_MODAL | 
+GTK_DIALOG_DESTROY_WITH_PARENT,
+GTK_MESSAGE_INFO,
+GTK_BUTTONS_YES_NO,
+"Move the data ?\n");
+response = gtk_dialog_run (GTK_DIALOG (dialog));
+gtk_widget_destroy (dialog);
+if (response == GTK_RESPONSE_YES)
+drag_context-&gt;action = GDK_ACTION_MOVE;
+else
+drag_context-&gt;action = GDK_ACTION_COPY;
+}
+gtk_drag_finish (drag_context, TRUE, FALSE, time);
+return;
+}
+gtk_drag_finish (drag_context, FALSE, FALSE, time);
+}
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the drag context</doc>
+            <type name="Gdk.DragContext"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">where the drop happened</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">where the drop happened</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the received data</doc>
+            <type name="SelectionData"/>
+          </parameter>
+          <parameter name="p3" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the info that has been registered with the target in the #GtkTargetList</doc>
+            <type name="guint"/>
+          </parameter>
+          <parameter name="p4" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the timestamp at which the data was received</doc>
+            <type name="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drag-drop">
+        <doc xml:whitespace="preserve">The ::drag-drop signal is emitted on the drop site when the user drops 
+the data onto the widget. The signal handler must determine whether 
+the cursor position is in a drop zone or not. If it is not in a drop 
+zone, it returns %FALSE and no further processing is necessary. 
+Otherwise, the handler returns %TRUE. In this case, the handler must 
+ensure that gtk_drag_finish() is called to let the source know that 
+the drop is done. The call to gtk_drag_finish() can be done either 
+directly or in a #GtkWidget::drag-data-received handler which gets 
+triggered by calling gtk_drag_get_data() to receive the data for one 
+or more of the supported targets.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the cursor position is in a drop zone</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the drag context</doc>
+            <type name="Gdk.DragContext"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate of the current cursor position</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate of the current cursor position</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the timestamp of the motion event</doc>
+            <type name="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drag-end">
+        <doc xml:whitespace="preserve">The ::drag-end signal is emitted on the drag source when a drag is 
+finished.  A typical reason to connect to this signal is to undo 
+things done in #GtkWidget::drag-begin.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the drag context</doc>
+            <type name="Gdk.DragContext"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drag-failed" version="2.12">
+        <doc xml:whitespace="preserve">The ::drag-failed signal is emitted on the drag source when a drag has
+failed. The signal handler may hook custom code to handle a failed DND
+operation based on the type of error, it returns %TRUE is the failure has
+been already handled (not showing the default "drag operation failed"
+animation), otherwise it returns %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the failed drag operation has been already handled.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the drag context</doc>
+            <type name="Gdk.DragContext"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the result of the drag operation</doc>
+            <type name="DragResult"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drag-leave">
+        <doc xml:whitespace="preserve">The ::drag-leave signal is emitted on the drop site when the cursor 
+leaves the widget. A typical reason to connect to this signal is to 
+undo things done in #GtkWidget::drag-motion, e.g. undo highlighting 
+with gtk_drag_unhighlight()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the drag context</doc>
+            <type name="Gdk.DragContext"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the timestamp of the motion event</doc>
+            <type name="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drag-motion">
+        <doc xml:whitespace="preserve">The drag-motion signal is emitted on the drop site when the user
+moves the cursor over the widget during a drag. The signal handler
+must determine whether the cursor position is in a drop zone or not.
+If it is not in a drop zone, it returns %FALSE and no further processing
+is necessary. Otherwise, the handler returns %TRUE. In this case, the
+handler is responsible for providing the necessary information for
+displaying feedback to the user, by calling gdk_drag_status().
+If the decision whether the drop will be accepted or rejected can't be
+made based solely on the cursor position and the type of the data, the
+handler may inspect the dragged data by calling gtk_drag_get_data() and
+defer the gdk_drag_status() call to the #GtkWidget::drag-data-received
+handler. Note that you cannot not pass #GTK_DEST_DEFAULT_DROP,
+#GTK_DEST_DEFAULT_MOTION or #GTK_DEST_DEFAULT_ALL to gtk_drag_dest_set()
+when using the drag-motion signal that way.
+Also note that there is no drag-enter signal. The drag receiver has to
+keep track of whether he has received any drag-motion signals since the
+last #GtkWidget::drag-leave and if not, treat the drag-motion signal as
+an "enter" signal. Upon an "enter", the handler will typically highlight
+the drop site with gtk_drag_highlight().
+|[
+static void
+drag_motion (GtkWidget *widget,
+GdkDragContext *context,
+gint x,
+gint y,
+guint time)
+{
+GdkAtom target;
+PrivateData *private_data = GET_PRIVATE_DATA (widget);
+if (!private_data-&gt;drag_highlight) 
+{
+private_data-&gt;drag_highlight = 1;
+gtk_drag_highlight (widget);
+}
+target = gtk_drag_dest_find_target (widget, context, NULL);
+if (target == GDK_NONE)
+gdk_drag_status (context, 0, time);
+else 
+{
+private_data-&gt;pending_status = context-&gt;suggested_action;
+gtk_drag_get_data (widget, context, target, time);
+}
+return TRUE;
+}
+static void
+drag_data_received (GtkWidget        *widget,
+GdkDragContext   *context,
+gint              x,
+gint              y,
+GtkSelectionData *selection_data,
+guint             info,
+guint             time)
+{
+PrivateData *private_data = GET_PRIVATE_DATA (widget);
+if (private_data-&gt;suggested_action) 
+{
+private_data-&gt;suggested_action = 0;
+/&amp;ast; We are getting this data due to a request in drag_motion,
+* rather than due to a request in drag_drop, so we are just
+* supposed to call gdk_drag_status (), not actually paste in 
+* the data.
+&amp;ast;/
+str = gtk_selection_data_get_text (selection_data);
+if (!data_is_acceptable (str)) 
+gdk_drag_status (context, 0, time);
+else
+gdk_drag_status (context, private_data-&gt;suggested_action, time);
+}
+else
+{
+/&amp;ast; accept the drop &amp;ast;/
+}
+}
+]|</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the cursor position is in a drop zone</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the drag context</doc>
+            <type name="Gdk.DragContext"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate of the current cursor position</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate of the current cursor position</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the timestamp of the motion event</doc>
+            <type name="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="enter-notify-event">
+        <doc xml:whitespace="preserve">The ::enter-notify-event will be emitted when the pointer enters
+the @widget's window.
+To receive this signal, the #GdkWindow associated to the widget needs
+to enable the #GDK_ENTER_NOTIFY_MASK mask.
+This signal will be sent to the grab widget if there is one.
+%FALSE to propagate the event further.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for the event.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkEventCrossing which triggered this signal.</doc>
+            <type name="Gdk.EventCrossing"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="event">
+        <doc xml:whitespace="preserve">The GTK+ main loop will emit three signals for each GDK event delivered
+signal that matches the type of event delivered (e.g. 
+#GtkWidget::key-press-event) and finally a generic 
+#GtkWidget::event-after signal.
+and to cancel the emission of the second specific ::event signal.
+%FALSE to propagate the event further and to allow the emission of 
+the second signal. The ::event-after signal is emitted regardless of
+the return value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for the event</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkEvent which triggered this signal</doc>
+            <type name="Gdk.Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="event-after">
+        <doc xml:whitespace="preserve">After the emission of the #GtkWidget::event signal and (optionally) 
+the second more specific signal, ::event-after will be emitted 
+regardless of the previous two signals handlers return values.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkEvent which triggered this signal</doc>
+            <type name="Gdk.Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="expose-event">
+        <doc xml:whitespace="preserve">The ::expose-event signal is emitted when an area of a previously
+obscured #GdkWindow is made visible and needs to be redrawn.
+#GTK_NO_WINDOW widgets will get a synthesized event from their parent 
+widget.
+To receive this signal, the #GdkWindow associated to the widget needs
+to enable the #GDK_EXPOSURE_MASK mask.
+%FALSE to propagate the event further.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for the event.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkEventExpose which triggered this signal.</doc>
+            <type name="Gdk.EventExpose"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="focus">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for the event. %FALSE to propagate the event further.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for the event. %FALSE to propagate the event further.</doc>
+            <type name="DirectionType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="focus-in-event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Gdk.Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="focus-out-event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Gdk.Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="grab-broken-event" version="2.8">
+        <doc xml:whitespace="preserve">Emitted when a pointer or keyboard grab on a window belonging 
+to @widget gets broken. 
+On X11, this happens when the grab window becomes unviewable 
+(i.e. it or one of its ancestors is unmapped), or if the same 
+application grabs the pointer or keyboard again.
+the event. %FALSE to propagate the event further.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkEventGrabBroken event</doc>
+            <type name="Gdk.Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="grab-focus">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="grab-notify">
+        <doc xml:whitespace="preserve">The ::grab-notify signal is emitted when a widget becomes
+shadowed by a GTK+ grab (not a pointer or keyboard grab) on 
+another widget, or when it becomes unshadowed due to a grab 
+being removed.
+A widget is shadowed by a gtk_grab_add() when the topmost 
+grab widget in the grab stack of its window group is not 
+its ancestor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%FALSE if the widget becomes shadowed, %TRUE if it becomes unshadowed</doc>
+            <type name="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="hide">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="hierarchy-changed">
+        <doc xml:whitespace="preserve">The ::hierarchy-changed signal is emitted when the
+anchored state of a widget changes. A widget is
+&lt;firstterm&gt;anchored&lt;/firstterm&gt; when its toplevel
+ancestor is a #GtkWindow. This signal is emitted when
+a widget changes from un-anchored to anchored or vice-versa.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the previous toplevel ancestor, or %NULL if the widget was previously unanchored</doc>
+            <type name="Widget"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="key-press-event">
+        <doc xml:whitespace="preserve">The ::key-press-event signal is emitted when a key is pressed.
+To receive this signal, the #GdkWindow associated to the widget needs
+to enable the #GDK_KEY_PRESS_MASK mask.
+This signal will be sent to the grab widget if there is one.
+%FALSE to propagate the event further.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for the event.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkEventKey which triggered this signal.</doc>
+            <type name="Gdk.EventKey"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="key-release-event">
+        <doc xml:whitespace="preserve">The ::key-release-event signal is emitted when a key is pressed.
+To receive this signal, the #GdkWindow associated to the widget needs
+to enable the #GDK_KEY_RELEASE_MASK mask.
+This signal will be sent to the grab widget if there is one.
+%FALSE to propagate the event further.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for the event.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkEventKey which triggered this signal.</doc>
+            <type name="Gdk.EventKey"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="keynav-failed" version="2.12">
+        <doc xml:whitespace="preserve">Gets emitted if keyboard navigation fails. 
+See gtk_widget_keynav_failed() for details.
+if the emitting widget should try to handle the keyboard
+navigation attempt in its parent container(s).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if stopping keyboard navigation is fine, %FALSE</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the direction of movement</doc>
+            <type name="DirectionType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="leave-notify-event">
+        <doc xml:whitespace="preserve">The ::leave-notify-event will be emitted when the pointer leaves
+the @widget's window.
+To receive this signal, the #GdkWindow associated to the widget needs
+to enable the #GDK_LEAVE_NOTIFY_MASK mask.
+This signal will be sent to the grab widget if there is one.
+%FALSE to propagate the event further.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for the event.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkEventCrossing which triggered this signal.</doc>
+            <type name="Gdk.EventCrossing"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="map">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="map-event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Gdk.Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="mnemonic-activate">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="motion-notify-event">
+        <doc xml:whitespace="preserve">The ::motion-notify-event signal is emitted when the pointer moves 
+over the widget's #GdkWindow.
+To receive this signal, the #GdkWindow associated to the widget 
+needs to enable the #GDK_POINTER_MOTION_MASK mask.
+This signal will be sent to the grab widget if there is one.
+%FALSE to propagate the event further.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for the event.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkEventMotion which triggered this signal.</doc>
+            <type name="Gdk.EventMotion"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-focus">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="DirectionType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="no-expose-event">
+        <doc xml:whitespace="preserve">The ::no-expose-event will be emitted when the @widget's window is 
+drawn as a copy of another #GdkDrawable which was completely unobscured.
+If the source window was partially obscured #GdkEventExpose events will
+be generated for those areas.
+%FALSE to propagate the event further.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for the event.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkEventNoExpose which triggered this signal.</doc>
+            <type name="Gdk.EventNoExpose"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="parent-set">
+        <doc xml:whitespace="preserve">The ::parent-set signal is emitted when a new parent 
+has been set on a widget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the previous parent, or %NULL if the widget just got its initial parent.</doc>
+            <type name="Widget"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="popup-menu">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="property-notify-event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Gdk.Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="proximity-in-event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Gdk.Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="proximity-out-event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Gdk.Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="query-tooltip" version="2.12">
+        <doc xml:whitespace="preserve">Emitted when #GtkWidget:has-tooltip is %TRUE and the #GtkSettings:gtk-tooltip-timeout 
+has expired with the cursor hovering "above" @widget; or emitted when @widget got 
+focus in keyboard mode.
+Using the given coordinates, the signal handler should determine
+whether a tooltip should be shown for @widget. If this is the case
+%TRUE should be returned, %FALSE otherwise.  Note that if
+should not be used.
+The signal handler is free to manipulate @tooltip with the therefore
+destined function calls.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @tooltip should be shown right now, %FALSE otherwise.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate of the cursor position where the request has been emitted, relative to @widget-&gt;window</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate of the cursor position where the request has been emitted, relative to @widget-&gt;window</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the tooltip was trigged using the keyboard</doc>
+            <type name="gboolean"/>
+          </parameter>
+          <parameter name="p2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkTooltip</doc>
+            <type name="Tooltip"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="realize">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="screen-changed">
+        <doc xml:whitespace="preserve">The ::screen-changed signal gets emitted when the
+screen of a widget has changed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the previous screen, or %NULL if the widget was not associated with a screen before</doc>
+            <type name="Gdk.Screen"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="scroll-event">
+        <doc xml:whitespace="preserve">The ::scroll-event signal is emitted when a button in the 4 to 7
+range is pressed. Wheel mice are usually configured to generate 
+button press events for buttons 4 and 5 when the wheel is turned.
+To receive this signal, the #GdkWindow associated to the widget needs
+to enable the #GDK_BUTTON_PRESS_MASK mask.
+This signal will be sent to the grab widget if there is one.
+%FALSE to propagate the event further.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for the event.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkEventScroll which triggered this signal.</doc>
+            <type name="Gdk.EventScroll"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="selection-clear-event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Gdk.Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="selection-get">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="SelectionData"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="guint"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <type name="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="selection-notify-event">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for the event. %FALSE to propagate the event further.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for the event. %FALSE to propagate the event further.</doc>
+            <type name="Gdk.Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="selection-received">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="SelectionData"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="selection-request-event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Gdk.Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="show">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="show-help">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="WidgetHelpType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="size-allocate" introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="size-request">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Requisition"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="state-changed">
+        <doc xml:whitespace="preserve">The ::state-changed signal is emitted when the widget state changes.
+See gtk_widget_get_state().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the previous state</doc>
+            <type name="StateType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="style-set">
+        <doc xml:whitespace="preserve">The ::style-set signal is emitted when a new style has been set 
+on a widget. Note that style-modifying functions like 
+gtk_widget_modify_base() also cause this signal to be emitted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the previous style, or %NULL if the widget just got its initial style</doc>
+            <type name="Style"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="unmap">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unmap-event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Gdk.Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="unrealize">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="visibility-notify-event">
+        <doc xml:whitespace="preserve">The ::visibility-notify-event will be emitted when the @widget's window
+is obscured or unobscured.
+To receive this signal the #GdkWindow associated to the widget needs
+to enable the #GDK_VISIBILITY_NOTIFY_MASK mask.
+%FALSE to propagate the event further.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for the event.</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkEventVisibility which triggered this signal.</doc>
+            <type name="Gdk.EventVisibility"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="window-state-event">
+        <doc xml:whitespace="preserve">The ::window-state-event will be emitted when the state of the 
+toplevel window associated to the @widget changes.
+To receive this signal the #GdkWindow associated to the widget 
+needs to enable the #GDK_STRUCTURE_MASK mask. GDK will enable 
+this mask automatically for all new windows.
+event. %FALSE to propagate the event further.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to stop other handlers from being invoked for the</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GdkEventWindowState which triggered this signal.</doc>
+            <type name="Gdk.EventWindowState"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="WidgetAuxInfo" c:type="GtkWidgetAuxInfo">
+      <field name="width" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="height" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="halign" writable="1" bits="4">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="valign" writable="1" bits="4">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="margin" writable="1">
+        <type name="Border" c:type="GtkBorder"/>
+      </field>
+    </record>
+    <record name="WidgetClass"
+            c:type="GtkWidgetClass"
+            glib:is-gtype-struct-for="Widget">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GtkObjectClass"/>
+      </field>
+      <field name="activate_signal">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="set_scroll_adjustments_signal">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="dispatch_child_properties_changed">
+        <callback name="dispatch_child_properties_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="n_pspecs" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="pspecs" transfer-ownership="none">
+              <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="show">
+        <callback name="show">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="show_all">
+        <callback name="show_all">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="hide">
+        <callback name="hide">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="hide_all">
+        <callback name="hide_all">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="map">
+        <callback name="map">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unmap">
+        <callback name="unmap">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="realize">
+        <callback name="realize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unrealize">
+        <callback name="unrealize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="size_request">
+        <callback name="size_request">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="requisition" transfer-ownership="none">
+              <type name="Requisition" c:type="GtkRequisition*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="size_allocate">
+        <callback name="size_allocate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="allocation" transfer-ownership="none">
+              <type name="Allocation" c:type="GtkAllocation*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="state_changed">
+        <callback name="state_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="previous_state" transfer-ownership="none">
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parent_set">
+        <callback name="parent_set">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="previous_parent" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="hierarchy_changed">
+        <callback name="hierarchy_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="previous_toplevel" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="style_set">
+        <callback name="style_set">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="previous_style" transfer-ownership="none">
+              <type name="Style" c:type="GtkStyle*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="direction_changed">
+        <callback name="direction_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="previous_direction" transfer-ownership="none">
+              <type name="TextDirection" c:type="GtkTextDirection"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="grab_notify">
+        <callback name="grab_notify">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="was_grabbed" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="child_notify">
+        <callback name="child_notify">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="mnemonic_activate">
+        <callback name="mnemonic_activate">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="group_cycling" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="grab_focus">
+        <callback name="grab_focus">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="focus">
+        <callback name="focus">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="direction" transfer-ownership="none">
+              <type name="DirectionType" c:type="GtkDirectionType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="event">
+        <callback name="event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.Event" c:type="GdkEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="button_press_event">
+        <callback name="button_press_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventButton" c:type="GdkEventButton*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="button_release_event">
+        <callback name="button_release_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventButton" c:type="GdkEventButton*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="scroll_event">
+        <callback name="scroll_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventScroll" c:type="GdkEventScroll*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="motion_notify_event">
+        <callback name="motion_notify_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventMotion" c:type="GdkEventMotion*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delete_event">
+        <callback name="delete_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventAny" c:type="GdkEventAny*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="destroy_event">
+        <callback name="destroy_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventAny" c:type="GdkEventAny*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="expose_event">
+        <callback name="expose_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventExpose" c:type="GdkEventExpose*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="key_press_event">
+        <callback name="key_press_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventKey" c:type="GdkEventKey*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="key_release_event">
+        <callback name="key_release_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventKey" c:type="GdkEventKey*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="enter_notify_event">
+        <callback name="enter_notify_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventCrossing" c:type="GdkEventCrossing*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="leave_notify_event">
+        <callback name="leave_notify_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventCrossing" c:type="GdkEventCrossing*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="configure_event">
+        <callback name="configure_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventConfigure" c:type="GdkEventConfigure*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="focus_in_event">
+        <callback name="focus_in_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventFocus" c:type="GdkEventFocus*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="focus_out_event">
+        <callback name="focus_out_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventFocus" c:type="GdkEventFocus*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="map_event">
+        <callback name="map_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventAny" c:type="GdkEventAny*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unmap_event">
+        <callback name="unmap_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventAny" c:type="GdkEventAny*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="property_notify_event">
+        <callback name="property_notify_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventProperty" c:type="GdkEventProperty*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="selection_clear_event">
+        <callback name="selection_clear_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventSelection" c:type="GdkEventSelection*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="selection_request_event">
+        <callback name="selection_request_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventSelection" c:type="GdkEventSelection*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="selection_notify_event">
+        <callback name="selection_notify_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventSelection" c:type="GdkEventSelection*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="proximity_in_event">
+        <callback name="proximity_in_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventProximity" c:type="GdkEventProximity*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="proximity_out_event">
+        <callback name="proximity_out_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventProximity" c:type="GdkEventProximity*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="visibility_notify_event">
+        <callback name="visibility_notify_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventVisibility" c:type="GdkEventVisibility*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="client_event">
+        <callback name="client_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventClient" c:type="GdkEventClient*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="no_expose_event">
+        <callback name="no_expose_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventAny" c:type="GdkEventAny*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="window_state_event">
+        <callback name="window_state_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventWindowState" c:type="GdkEventWindowState*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="selection_get">
+        <callback name="selection_get">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="selection_data" transfer-ownership="none">
+              <type name="SelectionData" c:type="GtkSelectionData*"/>
+            </parameter>
+            <parameter name="info" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="time_" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="selection_received">
+        <callback name="selection_received">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="selection_data" transfer-ownership="none">
+              <type name="SelectionData" c:type="GtkSelectionData*"/>
+            </parameter>
+            <parameter name="time_" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drag_begin">
+        <callback name="drag_begin">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="context" transfer-ownership="none">
+              <type name="Gdk.DragContext" c:type="GdkDragContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drag_end">
+        <callback name="drag_end">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="context" transfer-ownership="none">
+              <type name="Gdk.DragContext" c:type="GdkDragContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drag_data_get">
+        <callback name="drag_data_get">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="context" transfer-ownership="none">
+              <type name="Gdk.DragContext" c:type="GdkDragContext*"/>
+            </parameter>
+            <parameter name="selection_data" transfer-ownership="none">
+              <type name="SelectionData" c:type="GtkSelectionData*"/>
+            </parameter>
+            <parameter name="info" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="time_" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drag_data_delete">
+        <callback name="drag_data_delete">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="context" transfer-ownership="none">
+              <type name="Gdk.DragContext" c:type="GdkDragContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drag_leave">
+        <callback name="drag_leave">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="context" transfer-ownership="none">
+              <type name="Gdk.DragContext" c:type="GdkDragContext*"/>
+            </parameter>
+            <parameter name="time_" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drag_motion">
+        <callback name="drag_motion">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="context" transfer-ownership="none">
+              <type name="Gdk.DragContext" c:type="GdkDragContext*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="time_" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drag_drop">
+        <callback name="drag_drop">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="context" transfer-ownership="none">
+              <type name="Gdk.DragContext" c:type="GdkDragContext*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="time_" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drag_data_received">
+        <callback name="drag_data_received">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="context" transfer-ownership="none">
+              <type name="Gdk.DragContext" c:type="GdkDragContext*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="selection_data" transfer-ownership="none">
+              <type name="SelectionData" c:type="GtkSelectionData*"/>
+            </parameter>
+            <parameter name="info" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="time_" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="popup_menu">
+        <callback name="popup_menu">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="show_help">
+        <callback name="show_help">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="help_type" transfer-ownership="none">
+              <type name="WidgetHelpType" c:type="GtkWidgetHelpType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_accessible">
+        <callback name="get_accessible">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #AtkObject associated with @widget</doc>
+            <type name="Atk.Object" c:type="AtkObject*"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="screen_changed">
+        <callback name="screen_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="previous_screen" transfer-ownership="none">
+              <type name="Gdk.Screen" c:type="GdkScreen*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_activate_accel">
+        <callback name="can_activate_accel">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="signal_id" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="grab_broken_event">
+        <callback name="grab_broken_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventGrabBroken" c:type="GdkEventGrabBroken*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="composited_changed">
+        <callback name="composited_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_tooltip">
+        <callback name="query_tooltip">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="keyboard_tooltip" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="tooltip" transfer-ownership="none">
+              <type name="Tooltip" c:type="GtkTooltip*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="adjust_size_request">
+        <callback name="adjust_size_request">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="orientation" transfer-ownership="none">
+              <type name="Orientation" c:type="GtkOrientation"/>
+            </parameter>
+            <parameter name="for_size" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="minimum_size" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="natural_size" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="adjust_size_allocation">
+        <callback name="adjust_size_allocation">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="allocation" transfer-ownership="none">
+              <type name="Allocation" c:type="GtkAllocation*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved5" introspectable="0">
+        <callback name="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved6" introspectable="0">
+        <callback name="_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved7" introspectable="0">
+        <callback name="_gtk_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved8" introspectable="0">
+        <callback name="_gtk_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <method name="find_style_property"
+              c:identifier="gtk_widget_class_find_style_property"
+              version="2.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Finds a style property of a widget class by name.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the #GParamSpec of the style property or %NULL if @class has no style property with that name.</doc>
+          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the style property to find</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="install_style_property"
+              c:identifier="gtk_widget_class_install_style_property">
+        <doc xml:whitespace="preserve">Installs a style property on a widget class. The parser for the
+style property is determined by the value type of @pspec.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GParamSpec for the property</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="install_style_property_parser"
+              c:identifier="gtk_widget_class_install_style_property_parser"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Installs a style property on a widget class.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GParamSpec for the style property</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+          <parameter name="parser" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the parser for the style property</doc>
+            <type name="RcPropertyParser" c:type="GtkRcPropertyParser"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_style_properties"
+              c:identifier="gtk_widget_class_list_style_properties"
+              version="2.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns all style properties of a widget class.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">an newly allocated array of #GParamSpec*. The array must be freed with g_free().</doc>
+          <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_properties" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to return the number of style properties found</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <bitfield name="WidgetFlags"
+              glib:type-name="GtkWidgetFlags"
+              glib:get-type="gtk_widget_flags_get_type"
+              c:type="GtkWidgetFlags">
+      <doc xml:whitespace="preserve">Tells about certain properties of the widget.</doc>
+      <member name="toplevel"
+              value="16"
+              c:identifier="GTK_TOPLEVEL"
+              glib:nick="toplevel"/>
+      <member name="no_window"
+              value="32"
+              c:identifier="GTK_NO_WINDOW"
+              glib:nick="no-window"/>
+      <member name="realized"
+              value="64"
+              c:identifier="GTK_REALIZED"
+              glib:nick="realized"/>
+      <member name="mapped"
+              value="128"
+              c:identifier="GTK_MAPPED"
+              glib:nick="mapped"/>
+      <member name="visible"
+              value="256"
+              c:identifier="GTK_VISIBLE"
+              glib:nick="visible"/>
+      <member name="sensitive"
+              value="512"
+              c:identifier="GTK_SENSITIVE"
+              glib:nick="sensitive"/>
+      <member name="parent_sensitive"
+              value="1024"
+              c:identifier="GTK_PARENT_SENSITIVE"
+              glib:nick="parent-sensitive"/>
+      <member name="can_focus"
+              value="2048"
+              c:identifier="GTK_CAN_FOCUS"
+              glib:nick="can-focus"/>
+      <member name="has_focus"
+              value="4096"
+              c:identifier="GTK_HAS_FOCUS"
+              glib:nick="has-focus"/>
+      <member name="can_default"
+              value="8192"
+              c:identifier="GTK_CAN_DEFAULT"
+              glib:nick="can-default"/>
+      <member name="has_default"
+              value="16384"
+              c:identifier="GTK_HAS_DEFAULT"
+              glib:nick="has-default"/>
+      <member name="has_grab"
+              value="32768"
+              c:identifier="GTK_HAS_GRAB"
+              glib:nick="has-grab"/>
+      <member name="rc_style"
+              value="65536"
+              c:identifier="GTK_RC_STYLE"
+              glib:nick="rc-style"/>
+      <member name="composite_child"
+              value="131072"
+              c:identifier="GTK_COMPOSITE_CHILD"
+              glib:nick="composite-child"/>
+      <member name="app_paintable"
+              value="262144"
+              c:identifier="GTK_APP_PAINTABLE"
+              glib:nick="app-paintable"/>
+      <member name="receives_default"
+              value="524288"
+              c:identifier="GTK_RECEIVES_DEFAULT"
+              glib:nick="receives-default"/>
+      <member name="double_buffered"
+              value="1048576"
+              c:identifier="GTK_DOUBLE_BUFFERED"
+              glib:nick="double-buffered"/>
+      <member name="no_show_all"
+              value="2097152"
+              c:identifier="GTK_NO_SHOW_ALL"
+              glib:nick="no-show-all"/>
+      <member name="multidevice"
+              value="4194304"
+              c:identifier="GTK_MULTIDEVICE"
+              glib:nick="multidevice"/>
+    </bitfield>
+    <enumeration name="WidgetHelpType"
+                 glib:type-name="GtkWidgetHelpType"
+                 glib:get-type="gtk_widget_help_type_get_type"
+                 c:type="GtkWidgetHelpType">
+      <member name="tooltip"
+              value="0"
+              c:identifier="GTK_WIDGET_HELP_TOOLTIP"
+              glib:nick="tooltip"/>
+      <member name="whats_this"
+              value="1"
+              c:identifier="GTK_WIDGET_HELP_WHATS_THIS"
+              glib:nick="whats-this"/>
+    </enumeration>
+    <record name="WidgetPrivate" c:type="GtkWidgetPrivate" disguised="1">
+    </record>
+    <record name="WidgetShapeInfo" c:type="GtkWidgetShapeInfo">
+      <field name="offset_x" writable="1">
+        <type name="gint16" c:type="gint16"/>
+      </field>
+      <field name="offset_y" writable="1">
+        <type name="gint16" c:type="gint16"/>
+      </field>
+      <field name="shape_mask" writable="1">
+        <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+      </field>
+    </record>
+    <class name="Window"
+           c:symbol-prefix="window"
+           c:type="GtkWindow"
+           parent="Bin"
+           glib:type-name="GtkWindow"
+           glib:get-type="gtk_window_get_type"
+           glib:type-struct="WindowClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_window_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkWindow, which is a toplevel window that can
+contain other widgets. Nearly always, the type of the window should
+be #GTK_WINDOW_TOPLEVEL. If you're implementing something like a
+popup menu from scratch (which is a bad idea, just use #GtkMenu),
+you might use #GTK_WINDOW_POPUP. #GTK_WINDOW_POPUP is not for
+dialogs, though in some other toolkits dialogs are called "popups".
+In GTK+, #GTK_WINDOW_POPUP means a pop-up menu or pop-up tooltip.
+On X11, popup windows are not controlled by the &lt;link
+linkend="gtk-X11-arch"&gt;window manager&lt;/link&gt;.
+If you simply want an undecorated window (no window borders), use
+gtk_window_set_decorated(), don't use #GTK_WINDOW_POPUP.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GtkWindow.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">type of window</doc>
+            <type name="WindowType" c:type="GtkWindowType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="get_default_icon_list"
+                c:identifier="gtk_window_get_default_icon_list">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_window_set_default_icon_list().
+The list is a copy and should be freed with g_list_free(),
+but the pixbufs in the list have not had their reference count
+incremented.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">copy of default icon list</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="GdkPixbuf.Pixbuf"/>
+          </type>
+        </return-value>
+      </function>
+      <function name="get_default_icon_name"
+                c:identifier="gtk_window_get_default_icon_name"
+                version="2.16">
+        <doc xml:whitespace="preserve">Returns the fallback icon name for windows that has been set
+with gtk_window_set_default_icon_name(). The returned
+string is owned by GTK+ and should not be modified. It
+is only valid until the next call to
+gtk_window_set_default_icon_name().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the fallback icon name for windows</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </function>
+      <function name="list_toplevels" c:identifier="gtk_window_list_toplevels">
+        <doc xml:whitespace="preserve">Returns a list of all existing toplevel windows. The widgets
+in the list are not individually referenced. If you want
+to iterate through the list and perform actions involving
+callbacks that might destroy the widgets, you &lt;emphasis&gt;must&lt;/emphasis&gt; call
+&lt;literal&gt;g_list_foreach (result, (GFunc)g_object_ref, NULL)&lt;/literal&gt; first, and
+then unref all the widgets afterwards.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">list of toplevel widgets</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Widget"/>
+          </type>
+        </return-value>
+      </function>
+      <function name="set_auto_startup_notification"
+                c:identifier="gtk_window_set_auto_startup_notification"
+                version="2.2">
+        <doc xml:whitespace="preserve">By default, after showing the first #GtkWindow, GTK+ calls 
+gdk_notify_startup_complete().  Call this function to disable 
+the automatic startup notification. You might do this if your 
+first window is a splash screen, and you want to delay notification 
+until after your real main window has been shown, for example.
+In that example, you would disable startup notification
+temporarily, show your splash screen, then re-enable it so that
+showing the main window would automatically result in notification.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to automatically do startup notification</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="set_default_icon"
+                c:identifier="gtk_window_set_default_icon"
+                version="2.4">
+        <doc xml:whitespace="preserve">Sets an icon to be used as fallback for windows that haven't
+had gtk_window_set_icon() called on them from a pixbuf.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the icon</doc>
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="set_default_icon_from_file"
+                c:identifier="gtk_window_set_default_icon_from_file"
+                version="2.2"
+                throws="1">
+        <doc xml:whitespace="preserve">Sets an icon to be used as fallback for windows that haven't
+had gtk_window_set_icon_list() called on them from a file
+on disk. Warns on failure if @err is %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if setting the icon succeeded.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location of icon file</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="set_default_icon_list"
+                c:identifier="gtk_window_set_default_icon_list">
+        <doc xml:whitespace="preserve">Sets an icon list to be used as fallback for windows that haven't
+had gtk_window_set_icon_list() called on them to set up a
+window-specific icon list. This function allows you to set up the
+icon for all windows in your app at once.
+See gtk_window_set_icon_list() for more details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="container">
+            <doc xml:whitespace="preserve">a list of #GdkPixbuf</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="GdkPixbuf.Pixbuf"/>
+            </type>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="set_default_icon_name"
+                c:identifier="gtk_window_set_default_icon_name"
+                version="2.6">
+        <doc xml:whitespace="preserve">Sets an icon to be used as fallback for windows that haven't
+had gtk_window_set_icon_list() called on them from a named
+themed icon, see gtk_window_set_icon_name().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the themed icon</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="move_focus">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="DirectionType" c:type="GtkDirectionType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="activate_default"
+              c:identifier="gtk_window_activate_default">
+        <doc xml:whitespace="preserve">Activates the default widget for the window, unless the current 
+focused widget has been configured to receive the default action 
+(see gtk_widget_set_receives_default()), in which case the
+focused widget is activated.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a widget got activated.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="activate_focus" c:identifier="gtk_window_activate_focus">
+        <doc xml:whitespace="preserve">Activates the current focused widget within the window.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a widget got activated.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="activate_key"
+              c:identifier="gtk_window_activate_key"
+              version="2.4">
+        <doc xml:whitespace="preserve">Activates mnemonics and accelerators for this #GtkWindow. This is normally
+called by the default ::key_press_event handler for toplevel windows,
+however in some cases it may be useful to call this directly when
+overriding the standard key handling for a toplevel window.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a mnemonic or accelerator was found and activated.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkEventKey</doc>
+            <type name="Gdk.EventKey" c:type="GdkEventKey*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_accel_group" c:identifier="gtk_window_add_accel_group">
+        <doc xml:whitespace="preserve">Associate @accel_group with @window, such that calling
+gtk_accel_groups_activate() on @window will activate accelerators
+in @accel_group.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_group" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkAccelGroup</doc>
+            <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_embedded_xid"
+              c:identifier="gtk_window_add_embedded_xid">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xid" transfer-ownership="none">
+            <type name="Gdk.NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_mnemonic" c:identifier="gtk_window_add_mnemonic">
+        <doc xml:whitespace="preserve">Adds a mnemonic to this window.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="keyval" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mnemonic</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the widget that gets activated by the mnemonic</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="begin_move_drag" c:identifier="gtk_window_begin_move_drag">
+        <doc xml:whitespace="preserve">Starts moving a window. This function is used if an application has
+window movement grips. When GDK can support it, the window movement
+will be done using the standard mechanism for the &lt;link
+linkend="gtk-X11-arch"&gt;window manager&lt;/link&gt; or windowing
+system. Otherwise, GDK will try to emulate window movement,
+potentially not all that well, depending on the windowing system.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="button" transfer-ownership="none">
+            <doc xml:whitespace="preserve">mouse button that initiated the drag</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="root_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X position where the user clicked to initiate the drag, in root window coordinates</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="root_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y position where the user clicked to initiate the drag</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">timestamp from the click event that initiated the drag</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="begin_resize_drag"
+              c:identifier="gtk_window_begin_resize_drag">
+        <doc xml:whitespace="preserve">Starts resizing a window. This function is used if an application
+has window resizing controls. When GDK can support it, the resize
+will be done using the standard mechanism for the &lt;link
+linkend="gtk-X11-arch"&gt;window manager&lt;/link&gt; or windowing
+system. Otherwise, GDK will try to emulate window resizing,
+potentially not all that well, depending on the windowing system.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="edge" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position of the resize control</doc>
+            <type name="Gdk.WindowEdge" c:type="GdkWindowEdge"/>
+          </parameter>
+          <parameter name="button" transfer-ownership="none">
+            <doc xml:whitespace="preserve">mouse button that initiated the drag</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="root_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X position where the user clicked to initiate the drag, in root window coordinates</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="root_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y position where the user clicked to initiate the drag</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">timestamp from the click event that initiated the drag</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="deiconify" c:identifier="gtk_window_deiconify">
+        <doc xml:whitespace="preserve">Asks to deiconify (i.e. unminimize) the specified @window. Note
+that you shouldn't assume the window is definitely deiconified
+afterward, because other entities (e.g. the user or &lt;link
+linkend="gtk-X11-arch"&gt;window manager&lt;/link&gt;) could iconify it
+again before your code which assumes deiconification gets to run.
+You can track iconification via the "window-state-event" signal
+on #GtkWidget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="fullscreen"
+              c:identifier="gtk_window_fullscreen"
+              version="2.2">
+        <doc xml:whitespace="preserve">Asks to place @window in the fullscreen state. Note that you
+shouldn't assume the window is definitely full screen afterward,
+because other entities (e.g. the user or &lt;link
+linkend="gtk-X11-arch"&gt;window manager&lt;/link&gt;) could unfullscreen it
+again, and not all window managers honor requests to fullscreen
+windows. But normally the window will end up fullscreen. Just
+don't write code that crashes if not.
+You can track the fullscreen state via the "window-state-event" signal
+on #GtkWidget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_accept_focus"
+              c:identifier="gtk_window_get_accept_focus"
+              version="2.4">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_window_set_accept_focus().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if window should receive the input focus</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_decorated" c:identifier="gtk_window_get_decorated">
+        <doc xml:whitespace="preserve">Returns whether the window has been set to have decorations
+such as a title bar via gtk_window_set_decorated().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the window has been set to have decorations</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_default_size"
+              c:identifier="gtk_window_get_default_size">
+        <doc xml:whitespace="preserve">Gets the default size of the window. A value of -1 for the width or
+height indicates that a default size has not been explicitly set
+for that dimension, so the "natural" size of the window will be
+used.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the default width, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the default height, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_default_widget"
+              c:identifier="gtk_window_get_default_widget"
+              version="2.14">
+        <doc xml:whitespace="preserve">Returns the default widget for @window. See gtk_window_set_default()
+for more details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the default widget, or %NULL if there is none.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_deletable"
+              c:identifier="gtk_window_get_deletable"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns whether the window has been set to have a close button
+via gtk_window_set_deletable().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the window has been set to have a close button</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_destroy_with_parent"
+              c:identifier="gtk_window_get_destroy_with_parent">
+        <doc xml:whitespace="preserve">Returns whether the window will be destroyed with its transient parent. See
+gtk_window_set_destroy_with_parent ().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the window will be destroyed with its transient parent.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_focus" c:identifier="gtk_window_get_focus">
+        <doc xml:whitespace="preserve">Retrieves the current focused widget within the window.
+Note that this is the widget that would have the focus
+if the toplevel window focused; if the toplevel window
+is not focused then  &lt;literal&gt;gtk_widget_has_focus (widget)&lt;/literal&gt; will
+not be %TRUE for the widget.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the currently focused widget, or %NULL if there is none.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_focus_on_map"
+              c:identifier="gtk_window_get_focus_on_map"
+              version="2.6">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_window_set_focus_on_map().
+mapped.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if window should receive the input focus when</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_frame_dimensions"
+              c:identifier="gtk_window_get_frame_dimensions">
+        <doc xml:whitespace="preserve">(Note: this is a special-purpose function intended for the
+framebuffer port; see gtk_window_set_has_frame(). It will not
+return the size of the window border drawn by the &lt;link
+linkend="gtk-X11-arch"&gt;window manager&lt;/link&gt;, which is the normal
+case when using a windowing system.  See
+gdk_window_get_frame_extents() to get the standard window border
+extents.)
+Retrieves the dimensions of the frame window for this toplevel.
+See gtk_window_set_has_frame(), gtk_window_set_frame_dimensions().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="left"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the width of the frame at the left, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="top"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the height of the frame at the top, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="right"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the width of the frame at the returns, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="bottom"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location to store the height of the frame at the bottom, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_gravity" c:identifier="gtk_window_get_gravity">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_window_set_gravity().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">window gravity</doc>
+          <type name="Gdk.Gravity" c:type="GdkGravity"/>
+        </return-value>
+      </method>
+      <method name="get_group"
+              c:identifier="gtk_window_get_group"
+              version="2.10">
+        <doc xml:whitespace="preserve">Returns the group for @window or the default group, if
+window group.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GtkWindowGroup for a window or the default group</doc>
+          <type name="WindowGroup" c:type="GtkWindowGroup*"/>
+        </return-value>
+      </method>
+      <method name="get_has_frame" c:identifier="gtk_window_get_has_frame">
+        <doc xml:whitespace="preserve">Accessor for whether the window has a frame window exterior to
+via gtk_window_set_has_frame().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a frame has been added to the window</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_icon" c:identifier="gtk_window_get_icon">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_window_set_icon() (or if you've
+called gtk_window_set_icon_list(), gets the first icon in
+the icon list).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">icon for window</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="get_icon_list" c:identifier="gtk_window_get_icon_list">
+        <doc xml:whitespace="preserve">Retrieves the list of icons set by gtk_window_set_icon_list().
+The list is copied, but the reference count on each
+member won't be incremented.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">copy of window's icon list</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="GdkPixbuf.Pixbuf"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_icon_name"
+              c:identifier="gtk_window_get_icon_name"
+              version="2.6">
+        <doc xml:whitespace="preserve">Returns the name of the themed icon for the window,
+see gtk_window_set_icon_name().
+no themed icon</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the icon name or %NULL if the window has</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_mnemonic_modifier"
+              c:identifier="gtk_window_get_mnemonic_modifier">
+        <doc xml:whitespace="preserve">Returns the mnemonic modifier for this window. See
+gtk_window_set_mnemonic_modifier().
+mnemonics on this window.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the modifier mask used to activate</doc>
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </return-value>
+      </method>
+      <method name="get_mnemonics_visible"
+              c:identifier="gtk_window_get_mnemonics_visible"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets the value of the #GtkWindow:mnemonics-visible property.
+in this window.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if mnemonics are supposed to be visible</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_modal" c:identifier="gtk_window_get_modal">
+        <doc xml:whitespace="preserve">Returns whether the window is modal. See gtk_window_set_modal().
+establishes a grab when shown</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the window is set to be modal and</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_opacity"
+              c:identifier="gtk_window_get_opacity"
+              version="2.12">
+        <doc xml:whitespace="preserve">Fetches the requested opacity for this window. See
+gtk_window_set_opacity().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the requested opacity for this window.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_position" c:identifier="gtk_window_get_position">
+        <doc xml:whitespace="preserve">This function returns the position you need to pass to
+gtk_window_move() to keep @window in its current position.  This
+means that the meaning of the returned value varies with window
+gravity. See gtk_window_move() for more details.
+If you haven't changed the window gravity, its gravity will be
+#GDK_GRAVITY_NORTH_WEST. This means that gtk_window_get_position()
+gets the position of the top-left corner of the window manager
+frame for the window. gtk_window_move() sets the position of this
+same top-left corner.
+gtk_window_get_position() is not 100% reliable because the X Window System
+does not specify a way to obtain the geometry of the
+decorations placed on a window by the window manager.
+Thus GTK+ is using a "best guess" that works with most
+window managers.
+Moreover, nearly all window managers are historically broken with
+respect to their handling of window gravity. So moving a window to
+its current position as returned by gtk_window_get_position() tends
+to result in moving the window slightly. Window managers are
+slowly getting better over time.
+If a window has gravity #GDK_GRAVITY_STATIC the window manager
+frame is not relevant, and thus gtk_window_get_position() will
+always produce accurate results. However you can't use static
+gravity to do things like place a window in a corner of the screen,
+because static gravity ignores the window manager decorations.
+If you are saving and restoring your application's window
+positions, you should know that it's impossible for applications to
+do this without getting it somewhat wrong because applications do
+not have sufficient knowledge of window manager state. The Correct
+Mechanism is to support the session management protocol (see the
+"GnomeClient" object in the GNOME libraries for example) and allow
+the window manager to save your window sizes and positions.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="root_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for X coordinate of gravity-determined reference point</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="root_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for Y coordinate of gravity-determined reference point</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_resizable" c:identifier="gtk_window_get_resizable">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_window_set_resizable().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the user can resize the window</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_role" c:identifier="gtk_window_get_role">
+        <doc xml:whitespace="preserve">Returns the role of the window. See gtk_window_set_role() for
+further explanation.
+returned is owned by the widget and must not be modified
+or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the role of the window if set, or %NULL. The</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_screen"
+              c:identifier="gtk_window_get_screen"
+              version="2.2">
+        <doc xml:whitespace="preserve">Returns the #GdkScreen associated with @window.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkScreen.</doc>
+          <type name="Gdk.Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </method>
+      <method name="get_size" c:identifier="gtk_window_get_size">
+        <doc xml:whitespace="preserve">Obtains the current size of @window. If @window is not onscreen,
+it returns the size GTK+ will suggest to the &lt;link
+linkend="gtk-X11-arch"&gt;window manager&lt;/link&gt; for the initial window
+size (but this is not reliably the same as the size the window
+manager will actually select). The size obtained by
+gtk_window_get_size() is the last size received in a
+#GdkEventConfigure, that is, GTK+ uses its locally-stored size,
+rather than querying the X server for the size. As a result, if you
+call gtk_window_resize() then immediately call
+gtk_window_get_size(), the size won't have taken effect yet. After
+the window manager processes the resize request, GTK+ receives
+notification that the size has changed via a configure event, and
+the size of the window gets updated.
+because the size of the window may change between the time that you
+get the size and the time that you perform some action assuming
+that size is the current size. To avoid race conditions, connect to
+"configure-event" on the window and adjust your size-dependent
+state to match the size delivered in the #GdkEventConfigure.
+size of the window manager decorations (aka the window frame or
+border). Those are not drawn by GTK+ and GTK+ has no reliable
+method of determining their size.
+the window onscreen, there may be a better way. The preferred
+way is to simply set the window's semantic type with
+gtk_window_set_type_hint(), which allows the window manager to
+e.g. center dialogs. Also, if you set the transient parent of
+dialogs with gtk_window_set_transient_for() window managers
+will often center the dialog over its parent window. It's
+much preferred to let the window manager handle these
+things rather than doing it yourself, because all apps will
+behave consistently and according to user prefs if the window
+manager handles it. Also, the window manager can take the size
+of the window decorations/border into account, while your
+application cannot.
+In any case, if you insist on application-specified window
+positioning, there's &lt;emphasis&gt;still&lt;/emphasis&gt; a better way than
+doing it yourself - gtk_window_set_position() will frequently
+handle the details for you.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for width, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for height, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_skip_pager_hint"
+              c:identifier="gtk_window_get_skip_pager_hint"
+              version="2.2">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_window_set_skip_pager_hint().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if window shouldn't be in pager</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_skip_taskbar_hint"
+              c:identifier="gtk_window_get_skip_taskbar_hint"
+              version="2.2">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_window_set_skip_taskbar_hint()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if window shouldn't be in taskbar</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_title" c:identifier="gtk_window_get_title">
+        <doc xml:whitespace="preserve">Retrieves the title of the window. See gtk_window_set_title().
+been set explicitely. The returned string is owned by the widget
+and must not be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the title of the window, or %NULL if none has</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_transient_for"
+              c:identifier="gtk_window_get_transient_for">
+        <doc xml:whitespace="preserve">Fetches the transient parent for this window. See
+gtk_window_set_transient_for().
+if no transient parent has been set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the transient parent for this window, or %NULL</doc>
+          <type name="Window" c:type="GtkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_type_hint" c:identifier="gtk_window_get_type_hint">
+        <doc xml:whitespace="preserve">Gets the type hint for this window. See gtk_window_set_type_hint().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type hint for @window.</doc>
+          <type name="Gdk.WindowTypeHint" c:type="GdkWindowTypeHint"/>
+        </return-value>
+      </method>
+      <method name="get_urgency_hint"
+              c:identifier="gtk_window_get_urgency_hint"
+              version="2.8">
+        <doc xml:whitespace="preserve">Gets the value set by gtk_window_set_urgency_hint()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if window is urgent</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_window_type"
+              c:identifier="gtk_window_get_window_type"
+              version="2.20">
+        <doc xml:whitespace="preserve">Gets the type of the window. See #GtkWindowType.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of the window</doc>
+          <type name="WindowType" c:type="GtkWindowType"/>
+        </return-value>
+      </method>
+      <method name="has_group" c:identifier="gtk_window_has_group">
+        <doc xml:whitespace="preserve">Returns whether @window has an explicit window group.
+Since 2.22</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @window has an explicit window group.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_toplevel_focus"
+              c:identifier="gtk_window_has_toplevel_focus"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether the input focus is within this GtkWindow.
+For real toplevel windows, this is identical to gtk_window_is_active(),
+but for embedded windows, like #GtkPlug, the results will differ.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the input focus is within this GtkWindow</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="iconify" c:identifier="gtk_window_iconify">
+        <doc xml:whitespace="preserve">Asks to iconify (i.e. minimize) the specified @window. Note that
+you shouldn't assume the window is definitely iconified afterward,
+because other entities (e.g. the user or &lt;link
+linkend="gtk-X11-arch"&gt;window manager&lt;/link&gt;) could deiconify it
+again, or there may not be a window manager in which case
+iconification isn't possible, etc. But normally the window will end
+up iconified. Just don't write code that crashes if not.
+It's permitted to call this function before showing a window,
+in which case the window will be iconified before it ever appears
+onscreen.
+You can track iconification via the "window-state-event" signal
+on #GtkWidget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="is_active"
+              c:identifier="gtk_window_is_active"
+              version="2.4">
+        <doc xml:whitespace="preserve">Returns whether the window is part of the current active toplevel.
+(That is, the toplevel window receiving keystrokes.)
+The return value is %TRUE if the window is active toplevel
+itself, but also if it is, say, a #GtkPlug embedded in the active toplevel.
+You might use this function if you wanted to draw a widget
+differently in an active window from a widget in an inactive window.
+See gtk_window_has_toplevel_focus()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the window part of the current active window.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="maximize" c:identifier="gtk_window_maximize">
+        <doc xml:whitespace="preserve">Asks to maximize @window, so that it becomes full-screen. Note that
+you shouldn't assume the window is definitely maximized afterward,
+because other entities (e.g. the user or &lt;link
+linkend="gtk-X11-arch"&gt;window manager&lt;/link&gt;) could unmaximize it
+again, and not all window managers support maximization. But
+normally the window will end up maximized. Just don't write code
+that crashes if not.
+It's permitted to call this function before showing a window,
+in which case the window will be maximized when it appears onscreen
+initially.
+You can track maximization via the "window-state-event" signal
+on #GtkWidget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="mnemonic_activate"
+              c:identifier="gtk_window_mnemonic_activate">
+        <doc xml:whitespace="preserve">Activates the targets associated with the mnemonic.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the activation is done.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="keyval" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mnemonic</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifier" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the modifiers</doc>
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move" c:identifier="gtk_window_move">
+        <doc xml:whitespace="preserve">Asks the &lt;link linkend="gtk-X11-arch"&gt;window manager&lt;/link&gt; to move
+this; most window managers ignore requests for initial window
+positions (instead using a user-defined placement algorithm) and
+honor requests after the window has already been shown.
+reference point for the window. The gravity determines two things:
+first, the location of the reference point in root window
+coordinates; and second, which point on the window is positioned at
+the reference point.
+By default the gravity is #GDK_GRAVITY_NORTH_WEST, so the reference
+point is simply the @x, @y supplied to gtk_window_move(). The
+top-left corner of the window decorations (aka window frame or
+border) will be placed at @x, @y.  Therefore, to position a window
+at the top left of the screen, you want to use the default gravity
+(which is #GDK_GRAVITY_NORTH_WEST) and move the window to 0,0.
+To position a window at the bottom right corner of the screen, you
+would set #GDK_GRAVITY_SOUTH_EAST, which means that the reference
+point is at @x + the window width and @y + the window height, and
+the bottom-right corner of the window border will be placed at that
+reference point. So, to place a window in the bottom right corner
+you would first set gravity to south east, then write:
+&lt;literal&gt;gtk_window_move (window, gdk_screen_width () - window_width,
+gdk_screen_height () - window_height)&lt;/literal&gt; (note that this
+example does not take multi-head scenarios into account).
+The Extended Window Manager Hints specification at &lt;ulink 
+url="http://www.freedesktop.org/Standards/wm-spec"&gt;
+http://www.freedesktop.org/Standards/wm-spec&lt;/ulink&gt; has a 
+nice table of gravities in the "implementation notes" section.
+The gtk_window_get_position() documentation may also be relevant.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate to move window to</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate to move window to</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_geometry" c:identifier="gtk_window_parse_geometry">
+        <doc xml:whitespace="preserve">Parses a standard X Window System geometry string - see the
+manual page for X (type 'man X') for details on this.
+gtk_window_parse_geometry() does work on all GTK+ ports
+including Win32 but is primarily intended for an X environment.
+If either a size or a position can be extracted from the
+geometry string, gtk_window_parse_geometry() returns %TRUE
+and calls gtk_window_set_default_size() and/or gtk_window_move()
+to resize/move the window.
+If gtk_window_parse_geometry() returns %TRUE, it will also
+set the #GDK_HINT_USER_POS and/or #GDK_HINT_USER_SIZE hints
+indicating to the window manager that the size/position of
+the window was user-specified. This causes most window
+managers to honor the geometry.
+Note that for gtk_window_parse_geometry() to work as expected, it has
+to be called when the window has its "final" size, i.e. after calling
+gtk_widget_show_all() on the contents and gtk_window_set_geometry_hints()
+on the window.
+|[
+#include &lt;gtk/gtk.h&gt;
+static void
+fill_with_content (GtkWidget *vbox)
+{
+/&amp;ast; fill with content... &amp;ast;/
+}
+int
+main (int argc, char *argv[])
+{
+GtkWidget *window, *vbox;
+GdkGeometry size_hints = {
+100, 50, 0, 0, 100, 50, 10, 10, 0.0, 0.0, GDK_GRAVITY_NORTH_WEST  
+};
+gtk_init (&amp;argc, &amp;argv);
+window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+vbox = gtk_vbox_new (FALSE, 0);
+gtk_container_add (GTK_CONTAINER (window), vbox);
+fill_with_content (vbox);
+gtk_widget_show_all (vbox);
+gtk_window_set_geometry_hints (GTK_WINDOW (window),
+window,
+&amp;size_hints,
+GDK_HINT_MIN_SIZE | 
+GDK_HINT_BASE_SIZE | 
+GDK_HINT_RESIZE_INC);
+if (argc &amp;gt; 1)
+{
+if (!gtk_window_parse_geometry (GTK_WINDOW (window), argv[1]))
+fprintf (stderr, "Failed to parse '%s'\n", argv[1]);
+}
+gtk_widget_show_all (window);
+gtk_main ();
+return 0;
+}
+]|</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if string was parsed successfully</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry" transfer-ownership="none">
+            <doc xml:whitespace="preserve">geometry string</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="present" c:identifier="gtk_window_present">
+        <doc xml:whitespace="preserve">Presents a window to the user. This may mean raising the window
+in the stacking order, deiconifying it, moving it to the current
+desktop, and/or giving it the keyboard focus, possibly dependent
+on the user's platform, window manager, and preferences.
+If @window is hidden, this function calls gtk_widget_show()
+as well.
+This function should be used when the user tries to open a window
+that's already open. Say for example the preferences dialog is
+currently open, and the user chooses Preferences from the menu
+a second time; use gtk_window_present() to move the already-open dialog
+where the user can see it.
+If you are calling this function in response to a user interaction,
+it is preferable to use gtk_window_present_with_time().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="present_with_time"
+              c:identifier="gtk_window_present_with_time"
+              version="2.8">
+        <doc xml:whitespace="preserve">Presents a window to the user in response to a user interaction.
+If you need to present a window without a timestamp, use 
+gtk_window_present(). See gtk_window_present() for details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the timestamp of the user interaction (typically a button or key press event) which triggered this call</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="propagate_key_event"
+              c:identifier="gtk_window_propagate_key_event"
+              version="2.4">
+        <doc xml:whitespace="preserve">Propagate a key press or release event to the focus widget and
+up the focus container chain until a widget handles @event.
+This is normally called by the default ::key_press_event and
+::key_release_event handlers for toplevel windows,
+however in some cases it may be useful to call this directly when
+overriding the standard key handling for a toplevel window.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a widget in the focus chain handled the event.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkEventKey</doc>
+            <type name="Gdk.EventKey" c:type="GdkEventKey*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_accel_group"
+              c:identifier="gtk_window_remove_accel_group">
+        <doc xml:whitespace="preserve">Reverses the effects of gtk_window_add_accel_group().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_group" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkAccelGroup</doc>
+            <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_embedded_xid"
+              c:identifier="gtk_window_remove_embedded_xid">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xid" transfer-ownership="none">
+            <type name="Gdk.NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_mnemonic" c:identifier="gtk_window_remove_mnemonic">
+        <doc xml:whitespace="preserve">Removes a mnemonic from this window.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="keyval" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mnemonic</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the widget that gets activated by the mnemonic</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reshow_with_initial_size"
+              c:identifier="gtk_window_reshow_with_initial_size">
+        <doc xml:whitespace="preserve">Hides @window, then reshows it, resetting the
+default size and position of the window. Used
+by GUI builders only.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="resize" c:identifier="gtk_window_resize">
+        <doc xml:whitespace="preserve">Resizes the window as if the user had done so, obeying geometry
+constraints. The default geometry constraint is that windows may
+not be smaller than their size request; to override this
+constraint, call gtk_widget_set_size_request() to set the window's
+request to a smaller value.
+If gtk_window_resize() is called before showing a window for the
+first time, it overrides any default size set with
+gtk_window_set_default_size().
+Windows may not be resized smaller than 1 by 1 pixels.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width in pixels to resize the window to</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height in pixels to resize the window to</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_accept_focus"
+              c:identifier="gtk_window_set_accept_focus"
+              version="2.4">
+        <doc xml:whitespace="preserve">Windows may set a hint asking the desktop environment not to receive
+the input focus. This function sets this hint.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to let this window receive input focus</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_decorated" c:identifier="gtk_window_set_decorated">
+        <doc xml:whitespace="preserve">By default, windows are decorated with a title bar, resize
+controls, etc.  Some &lt;link linkend="gtk-X11-arch"&gt;window
+managers&lt;/link&gt; allow GTK+ to disable these decorations, creating a
+borderless window. If you set the decorated property to %FALSE
+using this function, GTK+ will do its best to convince the window
+manager not to decorate the window. Depending on the system, this
+function may not have any effect when called on a window that is
+already visible, so you should call it before calling gtk_window_show().
+On Windows, this function always works, since there's no window manager
+policy involved.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to decorate the window</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_default" c:identifier="gtk_window_set_default">
+        <doc xml:whitespace="preserve">The default widget is the widget that's activated when the user
+presses Enter in a dialog (for example). This function sets or
+unsets the default widget for a #GtkWindow about. When setting
+(rather than unsetting) the default widget it's generally easier to
+call gtk_widget_grab_focus() on the widget. Before making a widget
+the default widget, you must set the #GTK_CAN_DEFAULT flag on the
+widget you'd like to make the default using GTK_WIDGET_SET_FLAGS().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="default_widget"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">widget to be the default, or %NULL to unset the default widget for the toplevel.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_default_size"
+              c:identifier="gtk_window_set_default_size">
+        <doc xml:whitespace="preserve">Sets the default size of a window. If the window's "natural" size
+(its size request) is larger than the default, the default will be
+ignored. More generally, if the default size does not obey the
+geometry hints for the window (gtk_window_set_geometry_hints() can
+be used to set these explicitly), the default size will be clamped
+to the nearest permitted size.
+Unlike gtk_widget_set_size_request(), which sets a size request for
+a widget and thus would keep users from shrinking the window, this
+function only sets the initial size, just as if the user had
+resized the window themselves. Users can still shrink the window
+again as they normally would. Setting a default size of -1 means to
+use the "natural" default size (the size request of the window).
+For more control over a window's initial size and how resizing works,
+investigate gtk_window_set_geometry_hints().
+For some uses, gtk_window_resize() is a more appropriate function.
+gtk_window_resize() changes the current size of the window, rather
+than the size to be used on initial display. gtk_window_resize() always
+affects the window itself, not the geometry widget.
+The default size of a window only affects the first time a window is
+shown; if a window is hidden and re-shown, it will remember the size
+it had prior to hiding, rather than using the default size.
+Windows can't actually be 0x0 in size, they must be at least 1x1, but
+passing 0 for @width and @height is OK, resulting in a 1x1 default size.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width in pixels, or -1 to unset the default width</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height in pixels, or -1 to unset the default height</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_deletable"
+              c:identifier="gtk_window_set_deletable"
+              version="2.10">
+        <doc xml:whitespace="preserve">By default, windows have a close button in the window frame. Some 
+&lt;link linkend="gtk-X11-arch"&gt;window managers&lt;/link&gt; allow GTK+ to 
+disable this button. If you set the deletable property to %FALSE
+using this function, GTK+ will do its best to convince the window
+manager not to show a close button. Depending on the system, this
+function may not have any effect when called on a window that is
+already visible, so you should call it before calling gtk_window_show().
+On Windows, this function always works, since there's no window manager
+policy involved.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to decorate the window as deletable</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_destroy_with_parent"
+              c:identifier="gtk_window_set_destroy_with_parent">
+        <doc xml:whitespace="preserve">If @setting is %TRUE, then destroying the transient parent of @window
+will also destroy @window itself. This is useful for dialogs that
+shouldn't persist beyond the lifetime of the main window they're
+associated with, for example.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to destroy @window with its transient parent</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_focus" c:identifier="gtk_window_set_focus">
+        <doc xml:whitespace="preserve">If @focus is not the current focus widget, and is focusable, sets
+it as the focus widget for the window. If @focus is %NULL, unsets
+the focus widget for this window. To set the focus to a particular
+widget in the toplevel, it is usually more convenient to use
+gtk_widget_grab_focus() instead of this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="focus" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">widget to be the new focus widget, or %NULL to unset any focus widget for the toplevel window.</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_focus_on_map"
+              c:identifier="gtk_window_set_focus_on_map"
+              version="2.6">
+        <doc xml:whitespace="preserve">Windows may set a hint asking the desktop environment not to receive
+the input focus when the window is mapped.  This function sets this
+hint.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to let this window receive input focus on map</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_frame_dimensions"
+              c:identifier="gtk_window_set_frame_dimensions">
+        <doc xml:whitespace="preserve">(Note: this is a special-purpose function intended for the framebuffer
+port; see gtk_window_set_has_frame(). It will have no effect on the
+window border drawn by the window manager, which is the normal
+case when using the X Window system.)
+For windows with frames (see gtk_window_set_has_frame()) this function
+can be used to change the size of the frame border.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="left" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The width of the left border</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="top" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The height of the top border</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="right" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The width of the right border</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="bottom" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The height of the bottom border</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_geometry_hints"
+              c:identifier="gtk_window_set_geometry_hints">
+        <doc xml:whitespace="preserve">This function sets up hints about how a window can be resized by
+the user.  You can set a minimum and maximum size; allowed resize
+increments (e.g. for xterm, you can only resize by the size of a
+character); aspect ratios; and more. See the #GdkGeometry struct.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry_widget"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">widget the geometry hints will be applied to or %NULL</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="geometry" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">struct containing geometry information or %NULL</doc>
+            <type name="Gdk.Geometry" c:type="GdkGeometry*"/>
+          </parameter>
+          <parameter name="geom_mask" transfer-ownership="none">
+            <doc xml:whitespace="preserve">mask indicating which struct fields should be paid attention to</doc>
+            <type name="Gdk.WindowHints" c:type="GdkWindowHints"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_gravity" c:identifier="gtk_window_set_gravity">
+        <doc xml:whitespace="preserve">Window gravity defines the meaning of coordinates passed to
+gtk_window_move(). See gtk_window_move() and #GdkGravity for
+more details.
+The default window gravity is #GDK_GRAVITY_NORTH_WEST which will
+typically "do what you mean."</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gravity" transfer-ownership="none">
+            <doc xml:whitespace="preserve">window gravity</doc>
+            <type name="Gdk.Gravity" c:type="GdkGravity"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_has_frame" c:identifier="gtk_window_set_has_frame">
+        <doc xml:whitespace="preserve">(Note: this is a special-purpose function for the framebuffer port,
+that causes GTK+ to draw its own window border. For most applications,
+you want gtk_window_set_decorated() instead, which tells the window
+manager whether to draw the window border.)
+If this function is called on a window with setting of %TRUE, before
+it is realized or showed, it will have a "frame" window around
+frame_event you can receive all events targeted at the frame.
+This function is used by the linux-fb port to implement managed
+windows, but it could conceivably be used by X-programs that
+want to do their own window decorations.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a boolean</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon" c:identifier="gtk_window_set_icon">
+        <doc xml:whitespace="preserve">Sets up the icon representing a #GtkWindow. This icon is used when
+the window is minimized (also known as iconified).  Some window
+managers or desktop environments may also place it in the window
+frame, or display it in other contexts.
+The icon should be provided in whatever size it was naturally
+drawn; that is, don't scale the image before passing it to
+GTK+. Scaling is postponed until the last minute, when the desired
+final size is known, to allow best quality.
+If you have your icon hand-drawn in multiple sizes, use
+gtk_window_set_icon_list(). Then the best size will be used.
+This function is equivalent to calling gtk_window_set_icon_list()
+with a 1-element list.
+See also gtk_window_set_default_icon_list() to set the icon
+for all windows in your application in one go.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">icon image, or %NULL</doc>
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_from_file"
+              c:identifier="gtk_window_set_icon_from_file"
+              version="2.2"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets the icon for @window.  
+Warns on failure if @err is %NULL.
+This function is equivalent to calling gtk_window_set_icon()
+with a pixbuf created by loading the image from @filename.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if setting the icon succeeded.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location of icon file</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_list" c:identifier="gtk_window_set_icon_list">
+        <doc xml:whitespace="preserve">Sets up the icon representing a #GtkWindow. The icon is used when
+the window is minimized (also known as iconified).  Some window
+managers or desktop environments may also place it in the window
+frame, or display it in other contexts.
+gtk_window_set_icon_list() allows you to pass in the same icon in
+several hand-drawn sizes. The list should contain the natural sizes
+your icon is available in; that is, don't scale the image before
+passing it to GTK+. Scaling is postponed until the last minute,
+when the desired final size is known, to allow best quality.
+By passing several sizes, you may improve the final image quality
+of the icon, by reducing or eliminating automatic image scaling.
+larger images (64x64, 128x128) if you have them.
+See also gtk_window_set_default_icon_list() to set the icon
+for all windows in your application in one go.
+Note that transient windows (those who have been set transient for another
+window using gtk_window_set_transient_for()) will inherit their
+icon from their transient parent. So there's no need to explicitly
+set the icon on transient windows.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="container">
+            <doc xml:whitespace="preserve">list of #GdkPixbuf</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="GdkPixbuf.Pixbuf"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_name"
+              c:identifier="gtk_window_set_icon_name"
+              version="2.6">
+        <doc xml:whitespace="preserve">Sets the icon for the window from a named themed icon. See
+the docs for #GtkIconTheme for more details.
+Note that this has nothing to do with the WM_ICON_NAME 
+property which is mentioned in the ICCCM.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the name of the themed icon</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_keep_above"
+              c:identifier="gtk_window_set_keep_above"
+              version="2.4">
+        <doc xml:whitespace="preserve">Asks to keep @window above, so that it stays on top. Note that
+you shouldn't assume the window is definitely above afterward,
+because other entities (e.g. the user or &lt;link
+linkend="gtk-X11-arch"&gt;window manager&lt;/link&gt;) could not keep it above,
+and not all window managers support keeping windows above. But
+normally the window will end kept above. Just don't write code
+that crashes if not.
+It's permitted to call this function before showing a window,
+in which case the window will be kept above when it appears onscreen
+initially.
+You can track the above state via the "window-state-event" signal
+on #GtkWidget.
+Note that, according to the &lt;ulink 
+url="http://www.freedesktop.org/Standards/wm-spec"&gt;Extended Window 
+Manager Hints&lt;/ulink&gt; specification, the above state is mainly meant 
+for user preferences and should not be used by applications e.g. for 
+drawing attention to their dialogs.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to keep @window above other windows</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_keep_below"
+              c:identifier="gtk_window_set_keep_below"
+              version="2.4">
+        <doc xml:whitespace="preserve">Asks to keep @window below, so that it stays in bottom. Note that
+you shouldn't assume the window is definitely below afterward,
+because other entities (e.g. the user or &lt;link
+linkend="gtk-X11-arch"&gt;window manager&lt;/link&gt;) could not keep it below,
+and not all window managers support putting windows below. But
+normally the window will be kept below. Just don't write code
+that crashes if not.
+It's permitted to call this function before showing a window,
+in which case the window will be kept below when it appears onscreen
+initially.
+You can track the below state via the "window-state-event" signal
+on #GtkWidget.
+Note that, according to the &lt;ulink 
+url="http://www.freedesktop.org/Standards/wm-spec"&gt;Extended Window 
+Manager Hints&lt;/ulink&gt; specification, the above state is mainly meant 
+for user preferences and should not be used by applications e.g. for 
+drawing attention to their dialogs.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to keep @window below other windows</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_mnemonic_modifier"
+              c:identifier="gtk_window_set_mnemonic_modifier">
+        <doc xml:whitespace="preserve">Sets the mnemonic modifier for this window.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="modifier" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the modifier mask used to activate mnemonics on this window.</doc>
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_mnemonics_visible"
+              c:identifier="gtk_window_set_mnemonics_visible"
+              version="2.20">
+        <doc xml:whitespace="preserve">Sets the #GtkWindow:mnemonics-visible property.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new value</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_modal" c:identifier="gtk_window_set_modal">
+        <doc xml:whitespace="preserve">Sets a window modal or non-modal. Modal windows prevent interaction
+with other windows in the same application. To keep modal dialogs
+on top of main application windows, use
+gtk_window_set_transient_for() to make the dialog transient for the
+parent; most &lt;link linkend="gtk-X11-arch"&gt;window managers&lt;/link&gt;
+will then disallow lowering the dialog below the parent.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="modal" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the window is modal</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_opacity"
+              c:identifier="gtk_window_set_opacity"
+              version="2.12">
+        <doc xml:whitespace="preserve">Request the windowing system to make @window partially transparent,
+with opacity 0 being fully transparent and 1 fully opaque. (Values
+of the opacity parameter are clamped to the [0,1] range.) On X11
+this has any effect only on X screens with a compositing manager
+running. See gtk_widget_is_composited(). On Windows it should work
+always.
+Note that setting a window's opacity after the window has been
+shown causes it to flicker once on Windows.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="opacity" transfer-ownership="none">
+            <doc xml:whitespace="preserve">desired opacity, between 0 and 1</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_position" c:identifier="gtk_window_set_position">
+        <doc xml:whitespace="preserve">Sets a position constraint for this window. If the old or new
+constraint is %GTK_WIN_POS_CENTER_ALWAYS, this will also cause
+the window to be repositioned to satisfy the new constraint.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a position constraint.</doc>
+            <type name="WindowPosition" c:type="GtkWindowPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_resizable" c:identifier="gtk_window_set_resizable">
+        <doc xml:whitespace="preserve">Sets whether the user can resize a window. Windows are user resizable
+by default.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="resizable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the user can resize this window</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_role" c:identifier="gtk_window_set_role">
+        <doc xml:whitespace="preserve">This function is only useful on X11, not with other GTK+ targets.
+In combination with the window title, the window role allows a
+&lt;link linkend="gtk-X11-arch"&gt;window manager&lt;/link&gt; to identify "the
+same" window when an application is restarted. So for example you
+might set the "toolbox" role on your app's toolbox window, so that
+when the user restarts their session, the window manager can put
+the toolbox back in the same place.
+If a window already has a unique title, you don't need to set the
+role, since the WM can use the title to identify the window when
+restoring the session.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="role" transfer-ownership="none">
+            <doc xml:whitespace="preserve">unique identifier for the window to be used when restoring a session</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_screen" c:identifier="gtk_window_set_screen">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen" transfer-ownership="none">
+            <type name="Gdk.Screen" c:type="GdkScreen*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_skip_pager_hint"
+              c:identifier="gtk_window_set_skip_pager_hint"
+              version="2.2">
+        <doc xml:whitespace="preserve">Windows may set a hint asking the desktop environment not to display
+the window in the pager. This function sets this hint.
+(A "pager" is any desktop navigation tool such as a workspace
+switcher that displays a thumbnail representation of the windows
+on the screen.)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to keep this window from appearing in the pager</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_skip_taskbar_hint"
+              c:identifier="gtk_window_set_skip_taskbar_hint"
+              version="2.2">
+        <doc xml:whitespace="preserve">Windows may set a hint asking the desktop environment not to display
+the window in the task bar. This function sets this hint.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to keep this window from appearing in the task bar</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_startup_id"
+              c:identifier="gtk_window_set_startup_id"
+              version="2.12">
+        <doc xml:whitespace="preserve">Startup notification identifiers are used by desktop environment to 
+track application startup, to provide user feedback and other 
+features. This function changes the corresponding property on the
+underlying GdkWindow. Normally, startup identifier is managed 
+automatically and you should only use this function in special cases
+like transferring focus from other processes. You should use this
+function before calling gtk_window_present() or any equivalent
+function generating a window map event.
+This function is only useful on X11, not with other GTK+ targets.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="startup_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string with startup-notification identifier</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_title" c:identifier="gtk_window_set_title">
+        <doc xml:whitespace="preserve">Sets the title of the #GtkWindow. The title of a window will be
+displayed in its title bar; on the X Window System, the title bar
+is rendered by the &lt;link linkend="gtk-X11-arch"&gt;window
+manager&lt;/link&gt;, so exactly how the title appears to users may vary
+according to a user's exact configuration. The title should help a
+user distinguish this window from other windows they may have
+open. A good title might include the application name and current
+document filename, for example.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <doc xml:whitespace="preserve">title of the window</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_transient_for"
+              c:identifier="gtk_window_set_transient_for">
+        <doc xml:whitespace="preserve">Dialog windows should be set transient for the main application
+window they were spawned from. This allows &lt;link
+linkend="gtk-X11-arch"&gt;window managers&lt;/link&gt; to e.g. keep the
+dialog on top of the main window, or center the dialog over the
+main window. gtk_dialog_new_with_buttons() and other convenience
+functions in GTK+ will sometimes call
+gtk_window_set_transient_for() on your behalf.
+Passing %NULL for @parent unsets the current transient window.
+On Windows, this function puts the child window on top of the parent,
+much as the window manager would have done on X.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">parent window, or %NULL</doc>
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_type_hint" c:identifier="gtk_window_set_type_hint">
+        <doc xml:whitespace="preserve">By setting the type hint for the window, you allow the window
+manager to decorate and handle the window in a way which is
+suitable to the function of the window in your application.
+This function should be called before the window becomes visible.
+gtk_dialog_new_with_buttons() and other convenience functions in GTK+
+will sometimes call gtk_window_set_type_hint() on your behalf.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hint" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the window type</doc>
+            <type name="Gdk.WindowTypeHint" c:type="GdkWindowTypeHint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_urgency_hint"
+              c:identifier="gtk_window_set_urgency_hint"
+              version="2.8">
+        <doc xml:whitespace="preserve">Windows may set a hint asking the desktop environment to draw
+the users attention to the window. This function sets this hint.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to mark this window as urgent</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_wmclass" c:identifier="gtk_window_set_wmclass">
+        <doc xml:whitespace="preserve">Don't use this function. It sets the X Window System "class" and
+"name" hints for a window.  According to the ICCCM, you should
+always set these to the same value for all windows in an
+application, and GTK+ sets them to that value by default, so calling
+this function is sort of pointless. However, you may want to call
+gtk_window_set_role() on each window in your application, for the
+benefit of the session manager. Setting the role allows the window
+manager to restore window positions when loading a saved session.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wmclass_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">window name hint</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="wmclass_class" transfer-ownership="none">
+            <doc xml:whitespace="preserve">window class hint</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="stick" c:identifier="gtk_window_stick">
+        <doc xml:whitespace="preserve">Asks to stick @window, which means that it will appear on all user
+desktops. Note that you shouldn't assume the window is definitely
+stuck afterward, because other entities (e.g. the user or &lt;link
+linkend="gtk-X11-arch"&gt;window manager&lt;/link&gt;) could unstick it
+again, and some window managers do not support sticking
+windows. But normally the window will end up stuck. Just don't
+write code that crashes if not.
+It's permitted to call this function before showing a window.
+You can track stickiness via the "window-state-event" signal
+on #GtkWidget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unfullscreen"
+              c:identifier="gtk_window_unfullscreen"
+              version="2.2">
+        <doc xml:whitespace="preserve">Asks to toggle off the fullscreen state for @window. Note that you
+shouldn't assume the window is definitely not full screen
+afterward, because other entities (e.g. the user or &lt;link
+linkend="gtk-X11-arch"&gt;window manager&lt;/link&gt;) could fullscreen it
+again, and not all window managers honor requests to unfullscreen
+windows. But normally the window will end up restored to its normal
+state. Just don't write code that crashes if not.
+You can track the fullscreen state via the "window-state-event" signal
+on #GtkWidget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unmaximize" c:identifier="gtk_window_unmaximize">
+        <doc xml:whitespace="preserve">Asks to unmaximize @window. Note that you shouldn't assume the
+window is definitely unmaximized afterward, because other entities
+(e.g. the user or &lt;link linkend="gtk-X11-arch"&gt;window
+manager&lt;/link&gt;) could maximize it again, and not all window
+managers honor requests to unmaximize. But normally the window will
+end up unmaximized. Just don't write code that crashes if not.
+You can track maximization via the "window-state-event" signal
+on #GtkWidget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unstick" c:identifier="gtk_window_unstick">
+        <doc xml:whitespace="preserve">Asks to unstick @window, which means that it will appear on only
+one of the user's desktops. Note that you shouldn't assume the
+window is definitely unstuck afterward, because other entities
+(e.g. the user or &lt;link linkend="gtk-X11-arch"&gt;window
+manager&lt;/link&gt;) could stick it again. But normally the window will
+end up stuck. Just don't write code that crashes if not.
+You can track stickiness via the "window-state-event" signal
+on #GtkWidget.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="accept-focus"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the window should receive the input focus.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="decorated"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the window should be decorated by the window manager.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="default-height" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="default-width" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="deletable"
+                version="2.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the window frame should have a close button.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="destroy-with-parent"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="focus-on-map"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the window should receive the input focus when mapped.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="gravity"
+                version="2.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The window gravity of the window. See gtk_window_move() and #GdkGravity for
+more details about window gravity.</doc>
+        <type name="Gdk.Gravity"/>
+      </property>
+      <property name="has-toplevel-focus" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="icon" writable="1" transfer-ownership="none">
+        <type name="GdkPixbuf.Pixbuf"/>
+      </property>
+      <property name="icon-name"
+                version="2.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The :icon-name property specifies the name of the themed icon to
+use as the window icon. See #GtkIconTheme for more details.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="is-active" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="mnemonics-visible"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="modal" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="opacity"
+                version="2.12"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The requested opacity of the window. See gtk_window_set_opacity() for
+more details about window opacity.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="resizable" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="role" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="screen" writable="1" transfer-ownership="none">
+        <type name="Gdk.Screen"/>
+      </property>
+      <property name="skip-pager-hint" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="skip-taskbar-hint"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="startup-id"
+                version="2.12"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The :startup-id is a write-only property for setting window's
+startup notification identifier. See gtk_window_set_startup_id()
+for more details.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="title" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="transient-for"
+                version="2.10"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The transient parent of the window. See gtk_window_set_transient_for() for
+more details about transient windows.</doc>
+        <type name="Window"/>
+      </property>
+      <property name="type"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="WindowType"/>
+      </property>
+      <property name="type-hint" writable="1" transfer-ownership="none">
+        <type name="Gdk.WindowTypeHint"/>
+      </property>
+      <property name="urgency-hint" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="window-position" writable="1" transfer-ownership="none">
+        <type name="WindowPosition"/>
+      </property>
+      <field name="bin">
+        <type name="Bin" c:type="GtkBin"/>
+      </field>
+      <field name="priv">
+        <type name="WindowPrivate" c:type="GtkWindowPrivate*"/>
+      </field>
+      <glib:signal name="activate-default">
+        <doc xml:whitespace="preserve">The ::activate-default signal is a
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted when the user activates the default widget
+of @window.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="activate-focus">
+        <doc xml:whitespace="preserve">The ::activate-focus signal is a
+&lt;link linkend="keybinding-signals"&gt;keybinding signal&lt;/link&gt;
+which gets emitted when the user activates the currently
+focused widget of @window.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="frame-event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Gdk.Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="keys-changed">
+        <doc xml:whitespace="preserve">The ::keys-changed signal gets emitted when the set of accelerators
+or mnemonics that are associated with @window changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="set-focus">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Widget"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="WindowClass"
+            c:type="GtkWindowClass"
+            glib:is-gtype-struct-for="Window">
+      <field name="parent_class">
+        <type name="BinClass" c:type="GtkBinClass"/>
+      </field>
+      <field name="set_focus">
+        <callback name="set_focus">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Window" c:type="GtkWindow*"/>
+            </parameter>
+            <parameter name="focus" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="frame_event">
+        <callback name="frame_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Window" c:type="GtkWindow*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.Event" c:type="GdkEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate_focus">
+        <callback name="activate_focus">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Window" c:type="GtkWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate_default">
+        <callback name="activate_default">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Window" c:type="GtkWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="move_focus">
+        <callback name="move_focus">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Window" c:type="GtkWindow*"/>
+            </parameter>
+            <parameter name="direction" transfer-ownership="none">
+              <type name="DirectionType" c:type="GtkDirectionType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="keys_changed">
+        <callback name="keys_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="window" transfer-ownership="none">
+              <type name="Window" c:type="GtkWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="WindowGeometryInfo"
+            c:type="GtkWindowGeometryInfo"
+            disguised="1">
+    </record>
+    <class name="WindowGroup"
+           c:symbol-prefix="window_group"
+           c:type="GtkWindowGroup"
+           parent="GObject.Object"
+           glib:type-name="GtkWindowGroup"
+           glib:get-type="gtk_window_group_get_type"
+           glib:type-struct="WindowGroupClass">
+      <constructor name="new" c:identifier="gtk_window_group_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkWindowGroup object. Grabs added with
+gtk_grab_add() only affect windows within the same #GtkWindowGroup.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GtkWindowGroup.</doc>
+          <type name="WindowGroup" c:type="GtkWindowGroup*"/>
+        </return-value>
+      </constructor>
+      <method name="add_window" c:identifier="gtk_window_group_add_window">
+        <doc xml:whitespace="preserve">Adds a window to a #GtkWindowGroup.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkWindow to add</doc>
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_current_device_grab"
+              c:identifier="gtk_window_group_get_current_device_grab"
+              version="3.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns the current grab widget for @device, or %NULL if none.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">The grab widget, or %NULL</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkDevice</doc>
+            <type name="Gdk.Device" c:type="GdkDevice*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_current_grab"
+              c:identifier="gtk_window_group_get_current_grab"
+              version="2.22"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the current grab widget of the given group,
+see gtk_grab_add().</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the current grab widget of the group</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="list_windows"
+              c:identifier="gtk_window_group_list_windows"
+              version="2.14">
+        <doc xml:whitespace="preserve">Returns a list of the #GtkWindows that belong to @window_group.
+windows inside the group.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">A newly-allocated list of</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Widget"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="remove_window"
+              c:identifier="gtk_window_group_remove_window">
+        <doc xml:whitespace="preserve">Removes a window from a #GtkWindowGroup.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GtkWindow to remove</doc>
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="grabs">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+    </class>
+    <record name="WindowGroupClass"
+            c:type="GtkWindowGroupClass"
+            glib:is-gtype-struct-for="WindowGroup">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gtk_reserved1" introspectable="0">
+        <callback name="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved2" introspectable="0">
+        <callback name="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved3" introspectable="0">
+        <callback name="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_gtk_reserved4" introspectable="0">
+        <callback name="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="WindowKeysForeachFunc" c:type="GtkWindowKeysForeachFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="window" transfer-ownership="none">
+          <type name="Window" c:type="GtkWindow*"/>
+        </parameter>
+        <parameter name="keyval" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="modifiers" transfer-ownership="none">
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+        <parameter name="is_mnemonic" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="WindowPosition"
+                 glib:type-name="GtkWindowPosition"
+                 glib:get-type="gtk_window_position_get_type"
+                 c:type="GtkWindowPosition">
+      <member name="none"
+              value="0"
+              c:identifier="GTK_WIN_POS_NONE"
+              glib:nick="none"/>
+      <member name="center"
+              value="1"
+              c:identifier="GTK_WIN_POS_CENTER"
+              glib:nick="center"/>
+      <member name="mouse"
+              value="2"
+              c:identifier="GTK_WIN_POS_MOUSE"
+              glib:nick="mouse"/>
+      <member name="center_always"
+              value="3"
+              c:identifier="GTK_WIN_POS_CENTER_ALWAYS"
+              glib:nick="center-always"/>
+      <member name="center_on_parent"
+              value="4"
+              c:identifier="GTK_WIN_POS_CENTER_ON_PARENT"
+              glib:nick="center-on-parent"/>
+    </enumeration>
+    <record name="WindowPrivate" c:type="GtkWindowPrivate" disguised="1">
+    </record>
+    <enumeration name="WindowType"
+                 glib:type-name="GtkWindowType"
+                 glib:get-type="gtk_window_type_get_type"
+                 c:type="GtkWindowType">
+      <member name="toplevel"
+              value="0"
+              c:identifier="GTK_WINDOW_TOPLEVEL"
+              glib:nick="toplevel"/>
+      <member name="popup"
+              value="1"
+              c:identifier="GTK_WINDOW_POPUP"
+              glib:nick="popup"/>
+    </enumeration>
+    <enumeration name="WrapAllocationMode"
+                 glib:type-name="GtkWrapAllocationMode"
+                 glib:get-type="gtk_wrap_allocation_mode_get_type"
+                 c:type="GtkWrapAllocationMode">
+      <doc xml:whitespace="preserve">Describes how an #GtkWrapBox positions its children.</doc>
+      <member name="free"
+              value="0"
+              c:identifier="GTK_WRAP_ALLOCATE_FREE"
+              glib:nick="free"/>
+      <member name="aligned"
+              value="1"
+              c:identifier="GTK_WRAP_ALLOCATE_ALIGNED"
+              glib:nick="aligned"/>
+      <member name="homogeneous"
+              value="2"
+              c:identifier="GTK_WRAP_ALLOCATE_HOMOGENEOUS"
+              glib:nick="homogeneous"/>
+    </enumeration>
+    <class name="WrapBox"
+           c:symbol-prefix="wrap_box"
+           c:type="GtkWrapBox"
+           parent="Container"
+           glib:type-name="GtkWrapBox"
+           glib:get-type="gtk_wrap_box_get_type"
+           glib:type-struct="WrapBoxClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <implements name="SizeRequest"/>
+      <constructor name="new" c:identifier="gtk_wrap_box_new">
+        <doc xml:whitespace="preserve">Creates an #GtkWrapBox.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A new #GtkWrapBox container</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkWrapAllocationMode to use</doc>
+            <type name="WrapAllocationMode" c:type="GtkWrapAllocationMode"/>
+          </parameter>
+          <parameter name="horizontal_spreading" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The horizontal #GtkWrapBoxSpreading policy to use</doc>
+            <type name="WrapBoxSpreading" c:type="GtkWrapBoxSpreading"/>
+          </parameter>
+          <parameter name="vertical_spreading" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The vertical #GtkWrapBoxSpreading policy to use</doc>
+            <type name="WrapBoxSpreading" c:type="GtkWrapBoxSpreading"/>
+          </parameter>
+          <parameter name="horizontal_spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The horizontal spacing to add between children</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="vertical_spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The vertical spacing to add between children</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_allocation_mode"
+              c:identifier="gtk_wrap_box_get_allocation_mode">
+        <doc xml:whitespace="preserve">Gets the allocation mode.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GtkWrapAllocationMode for @box.</doc>
+          <type name="WrapAllocationMode" c:type="GtkWrapAllocationMode"/>
+        </return-value>
+      </method>
+      <method name="get_horizontal_spacing"
+              c:identifier="gtk_wrap_box_get_horizontal_spacing">
+        <doc xml:whitespace="preserve">Gets the horizontal spacing.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The horizontal spacing.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_horizontal_spreading"
+              c:identifier="gtk_wrap_box_get_horizontal_spreading">
+        <doc xml:whitespace="preserve">Gets the horizontal spreading mode.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The horizontal #GtkWrapBoxSpreading for @box.</doc>
+          <type name="WrapBoxSpreading" c:type="GtkWrapBoxSpreading"/>
+        </return-value>
+      </method>
+      <method name="get_minimum_line_children"
+              c:identifier="gtk_wrap_box_get_minimum_line_children">
+        <doc xml:whitespace="preserve">Gets the minimum amount of children per line.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The minimum amount of children per line.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_natural_line_children"
+              c:identifier="gtk_wrap_box_get_natural_line_children">
+        <doc xml:whitespace="preserve">Gets the natural amount of children per line.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The natural amount of children per line.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_vertical_spacing"
+              c:identifier="gtk_wrap_box_get_vertical_spacing">
+        <doc xml:whitespace="preserve">Gets the vertical spacing.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The vertical spacing.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_vertical_spreading"
+              c:identifier="gtk_wrap_box_get_vertical_spreading">
+        <doc xml:whitespace="preserve">Gets the vertical spreading mode.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The vertical #GtkWrapBoxSpreading for @box.</doc>
+          <type name="WrapBoxSpreading" c:type="GtkWrapBoxSpreading"/>
+        </return-value>
+      </method>
+      <method name="insert_child" c:identifier="gtk_wrap_box_insert_child">
+        <doc xml:whitespace="preserve">Adds a child to an #GtkWrapBox with its packing options set</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the child #GtkWidget to add</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position in the child list to insert, specify -1 to append to the list.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="packing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkWrapBoxPacking options to use.</doc>
+            <type name="WrapBoxPacking" c:type="GtkWrapBoxPacking"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reorder_child" c:identifier="gtk_wrap_box_reorder_child">
+        <doc xml:whitespace="preserve">Reorders the child @widget in @box's list of children.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The child to reorder</doc>
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The new child position</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_allocation_mode"
+              c:identifier="gtk_wrap_box_set_allocation_mode">
+        <doc xml:whitespace="preserve">Sets the allocation mode for @box's children.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkWrapAllocationMode to use.</doc>
+            <type name="WrapAllocationMode" c:type="GtkWrapAllocationMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_horizontal_spacing"
+              c:identifier="gtk_wrap_box_set_horizontal_spacing">
+        <doc xml:whitespace="preserve">Sets the horizontal space to add between children.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The spacing to use.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_horizontal_spreading"
+              c:identifier="gtk_wrap_box_set_horizontal_spreading">
+        <doc xml:whitespace="preserve">Sets the horizontal spreading mode for @box's children.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spreading" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkWrapBoxSpreading to use.</doc>
+            <type name="WrapBoxSpreading" c:type="GtkWrapBoxSpreading"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_minimum_line_children"
+              c:identifier="gtk_wrap_box_set_minimum_line_children">
+        <doc xml:whitespace="preserve">Sets the minimum amount of children to line up
+in @box's orientation before wrapping.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_children" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The minimum amount of children per line.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_natural_line_children"
+              c:identifier="gtk_wrap_box_set_natural_line_children">
+        <doc xml:whitespace="preserve">Sets the natural length of items to request and
+allocate space for in @box's orientation.
+Setting the natural amount of children per line
+limits the overall natural size request to be no more
+than @n_children items long in the given orientation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_children" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The natural amount of children per line.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_vertical_spacing"
+              c:identifier="gtk_wrap_box_set_vertical_spacing">
+        <doc xml:whitespace="preserve">Sets the vertical space to add between children.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The spacing to use.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_vertical_spreading"
+              c:identifier="gtk_wrap_box_set_vertical_spreading">
+        <doc xml:whitespace="preserve">Sets the vertical spreading mode for @box's children.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spreading" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GtkWrapBoxSpreading to use.</doc>
+            <type name="WrapBoxSpreading" c:type="GtkWrapBoxSpreading"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="allocation-mode" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GtkWrapAllocationMode to use.</doc>
+        <type name="WrapAllocationMode"/>
+      </property>
+      <property name="horizontal-spacing"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The amount of horizontal space between two children.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="horizontal-spreading"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GtkWrapBoxSpreading to used to define what is done with extra
+space in a given orientation.</doc>
+        <type name="WrapBoxSpreading"/>
+      </property>
+      <property name="minimum-line-children"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The minimum number of children to allocate consecutively in the given orientation.
+&lt;note&gt;&lt;para&gt;Setting the minimum children per line ensures
+that a reasonably small height will be requested
+for the overall minimum width of the box.&lt;/para&gt;&lt;/note&gt;</doc>
+        <type name="guint"/>
+      </property>
+      <property name="natural-line-children"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The maximum amount of children to request space for consecutively in the given orientation.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="vertical-spacing" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The amount of vertical space between two children.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="vertical-spreading"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GtkWrapBoxSpreading to used to define what is done with extra
+space in a given orientation.</doc>
+        <type name="WrapBoxSpreading"/>
+      </property>
+      <field name="container">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="priv">
+        <type name="WrapBoxPrivate" c:type="GtkWrapBoxPrivate*"/>
+      </field>
+    </class>
+    <record name="WrapBoxClass"
+            c:type="GtkWrapBoxClass"
+            glib:is-gtype-struct-for="WrapBox">
+      <field name="parent_class">
+        <type name="ContainerClass" c:type="GtkContainerClass"/>
+      </field>
+    </record>
+    <bitfield name="WrapBoxPacking"
+              glib:type-name="GtkWrapBoxPacking"
+              glib:get-type="gtk_wrap_box_packing_get_type"
+              c:type="GtkWrapBoxPacking">
+      <doc xml:whitespace="preserve">Specifies how widgets will expand vertically and
+horizontally when placed inside a #GtkWrapBox.</doc>
+      <member name="h_expand"
+              value="1"
+              c:identifier="GTK_WRAP_BOX_H_EXPAND"
+              glib:nick="h-expand"/>
+      <member name="v_expand"
+              value="2"
+              c:identifier="GTK_WRAP_BOX_V_EXPAND"
+              glib:nick="v-expand"/>
+    </bitfield>
+    <record name="WrapBoxPrivate" c:type="GtkWrapBoxPrivate" disguised="1">
+    </record>
+    <enumeration name="WrapBoxSpreading"
+                 glib:type-name="GtkWrapBoxSpreading"
+                 glib:get-type="gtk_wrap_box_spreading_get_type"
+                 c:type="GtkWrapBoxSpreading">
+      <doc xml:whitespace="preserve">Describes how a #GtkWrapBox deals with extra space in a given orientation when allocating children.</doc>
+      <member name="start"
+              value="0"
+              c:identifier="GTK_WRAP_BOX_SPREAD_START"
+              glib:nick="start"/>
+      <member name="end"
+              value="1"
+              c:identifier="GTK_WRAP_BOX_SPREAD_END"
+              glib:nick="end"/>
+      <member name="even"
+              value="2"
+              c:identifier="GTK_WRAP_BOX_SPREAD_EVEN"
+              glib:nick="even"/>
+      <member name="expand"
+              value="3"
+              c:identifier="GTK_WRAP_BOX_SPREAD_EXPAND"
+              glib:nick="expand"/>
+    </enumeration>
+    <enumeration name="WrapMode"
+                 glib:type-name="GtkWrapMode"
+                 glib:get-type="gtk_wrap_mode_get_type"
+                 c:type="GtkWrapMode">
+      <member name="none"
+              value="0"
+              c:identifier="GTK_WRAP_NONE"
+              glib:nick="none"/>
+      <member name="char"
+              value="1"
+              c:identifier="GTK_WRAP_CHAR"
+              glib:nick="char"/>
+      <member name="word"
+              value="2"
+              c:identifier="GTK_WRAP_WORD"
+              glib:nick="word"/>
+      <member name="word_char"
+              value="3"
+              c:identifier="GTK_WRAP_WORD_CHAR"
+              glib:nick="word-char"/>
+    </enumeration>
+    <function name="accel_groups_activate"
+              c:identifier="gtk_accel_groups_activate">
+      <doc xml:whitespace="preserve">Finds the first accelerator in any #GtkAccelGroup attached
+to @object that matches @accel_key and @accel_mods, and
+activates that accelerator.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if an accelerator was activated and handled this keypress</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GObject, usually a #GtkWindow, on which to activate the accelerator.</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="accel_key" transfer-ownership="none">
+          <doc xml:whitespace="preserve">accelerator keyval from a key event</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="accel_mods" transfer-ownership="none">
+          <doc xml:whitespace="preserve">keyboard state mask from a key event</doc>
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="accel_groups_from_object"
+              c:identifier="gtk_accel_groups_from_object">
+      <doc xml:whitespace="preserve">Gets a list of all accel groups which are attached to @object.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a list of all accel groups which are attached to @object</doc>
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="AccelGroup"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObject, usually a #GtkWindow</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="accelerator_get_default_mod_mask"
+              c:identifier="gtk_accelerator_get_default_mod_mask">
+      <doc xml:whitespace="preserve">Gets the value set by gtk_accelerator_set_default_mod_mask().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the default accelerator modifier mask</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+    </function>
+    <function name="accelerator_get_label"
+              c:identifier="gtk_accelerator_get_label"
+              version="2.6">
+      <doc xml:whitespace="preserve">Converts an accelerator keyval and modifier mask into a string 
+which can be used to represent the accelerator to the user.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a newly-allocated string representing the accelerator.</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="accelerator_key" transfer-ownership="none">
+          <doc xml:whitespace="preserve">accelerator keyval</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="accelerator_mods" transfer-ownership="none">
+          <doc xml:whitespace="preserve">accelerator modifier mask</doc>
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="accelerator_name" c:identifier="gtk_accelerator_name">
+      <doc xml:whitespace="preserve">Converts an accelerator keyval and modifier mask
+into a string parseable by gtk_accelerator_parse().
+For example, if you pass in #GDK_q and #GDK_CONTROL_MASK,
+this function returns "&amp;lt;Control&amp;gt;q". 
+If you need to display accelerators in the user interface,
+see gtk_accelerator_get_label().</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a newly-allocated accelerator name</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="accelerator_key" transfer-ownership="none">
+          <doc xml:whitespace="preserve">accelerator keyval</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="accelerator_mods" transfer-ownership="none">
+          <doc xml:whitespace="preserve">accelerator modifier mask</doc>
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="accelerator_parse" c:identifier="gtk_accelerator_parse">
+      <doc xml:whitespace="preserve">Parses a string representing an accelerator. The
+format looks like "&amp;lt;Control&amp;gt;a" or "&amp;lt;Shift&amp;gt;&amp;lt;Alt&amp;gt;F1" or
+"&amp;lt;Release&amp;gt;z" (the last one is for key release).
+The parser is fairly liberal and allows lower or upper case,
+and also abbreviations such as "&amp;lt;Ctl&amp;gt;" and "&amp;lt;Ctrl&amp;gt;".
+Key names are parsed using gdk_keyval_from_name(). For character keys the
+name is not the symbol, but the lowercase name, e.g. one would use
+"&amp;lt;Ctrl&amp;gt;minus" instead of "&amp;lt;Ctrl&amp;gt;-".
+If the parse fails, @accelerator_key and @accelerator_mods will
+be set to 0 (zero).</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="accelerator" transfer-ownership="none">
+          <doc xml:whitespace="preserve">string representing an accelerator</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="accelerator_key" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for accelerator keyval</doc>
+          <type name="guint" c:type="guint*"/>
+        </parameter>
+        <parameter name="accelerator_mods" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for accelerator modifier mask</doc>
+          <type name="Gdk.ModifierType" c:type="GdkModifierType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="accelerator_set_default_mod_mask"
+              c:identifier="gtk_accelerator_set_default_mod_mask">
+      <doc xml:whitespace="preserve">Sets the modifiers that will be considered significant for keyboard
+accelerators. The default mod mask is #GDK_CONTROL_MASK |
+#GDK_SHIFT_MASK | #GDK_MOD1_MASK | #GDK_SUPER_MASK | 
+#GDK_HYPER_MASK | #GDK_META_MASK, that is, Control, Shift, Alt, 
+Super, Hyper and Meta. Other modifiers will by default be ignored 
+by #GtkAccelGroup.
+You must include at least the three modifiers Control, Shift
+and Alt in any value you pass to this function.
+The default mod mask should be changed on application startup,
+before using any accelerator groups.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="default_mod_mask" transfer-ownership="none">
+          <doc xml:whitespace="preserve">accelerator modifier mask</doc>
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="accelerator_valid" c:identifier="gtk_accelerator_valid">
+      <doc xml:whitespace="preserve">Determines whether a given keyval and modifier mask constitute
+a valid keyboard accelerator. For example, the #GDK_a keyval
+plus #GDK_CONTROL_MASK is valid - this is a "Ctrl+a" accelerator.
+But, you can't, for instance, use the #GDK_Control_L keyval
+as an accelerator.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the accelerator is valid</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="keyval" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GDK keyval</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="modifiers" transfer-ownership="none">
+          <doc xml:whitespace="preserve">modifier mask</doc>
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="alternative_dialog_button_order"
+              c:identifier="gtk_alternative_dialog_button_order"
+              version="2.6">
+      <doc xml:whitespace="preserve">Returns %TRUE if dialogs are expected to use an alternative
+button order on the screen @screen. See
+gtk_dialog_set_alternative_button_order() for more details
+about alternative button order. 
+If you need to use this function, you should probably connect
+to the ::notify:gtk-alternative-button-order signal on the
+#GtkSettings object associated to @screen, in order to be 
+notified if the button order setting changes.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the alternative button order should be used</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="screen" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a #GdkScreen, or %NULL to use the default screen</doc>
+          <type name="Gdk.Screen" c:type="GdkScreen*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="binding_entry_add_signal"
+              c:identifier="gtk_binding_entry_add_signal"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Override or install a new key binding for @keyval with @modifiers on
+emitted on the target widget, with @n_args @Varargs used as
+arguments.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="binding_set" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkBindingSet to install an entry for</doc>
+          <type name="BindingSet" c:type="GtkBindingSet*"/>
+        </parameter>
+        <parameter name="keyval" transfer-ownership="none">
+          <doc xml:whitespace="preserve">key value of binding to install</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="modifiers" transfer-ownership="none">
+          <doc xml:whitespace="preserve">key modifier of binding to install</doc>
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+        <parameter name="signal_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">signal to execute upon activation</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="n_args" transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of arguments to @signal_name</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="binding_entry_add_signall"
+              c:identifier="gtk_binding_entry_add_signall">
+      <doc xml:whitespace="preserve">Override or install a new key binding for @keyval with @modifiers on</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="binding_set" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkBindingSet to add a signal to</doc>
+          <type name="BindingSet" c:type="GtkBindingSet*"/>
+        </parameter>
+        <parameter name="keyval" transfer-ownership="none">
+          <doc xml:whitespace="preserve">key value</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="modifiers" transfer-ownership="none">
+          <doc xml:whitespace="preserve">key modifier</doc>
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+        <parameter name="signal_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">signal name to be bound</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="binding_args" transfer-ownership="none">
+          <doc xml:whitespace="preserve">list of #GtkBindingArg signal arguments</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="BindingArg"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="binding_entry_remove"
+              c:identifier="gtk_binding_entry_remove">
+      <doc xml:whitespace="preserve">Remove a binding previously installed via
+gtk_binding_entry_add_signal() on @binding_set.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="binding_set" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkBindingSet to remove an entry of</doc>
+          <type name="BindingSet" c:type="GtkBindingSet*"/>
+        </parameter>
+        <parameter name="keyval" transfer-ownership="none">
+          <doc xml:whitespace="preserve">key value of binding to remove</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="modifiers" transfer-ownership="none">
+          <doc xml:whitespace="preserve">key modifier of binding to remove</doc>
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="binding_entry_skip"
+              c:identifier="gtk_binding_entry_skip"
+              version="2.12">
+      <doc xml:whitespace="preserve">Install a binding on @binding_set which causes key lookups
+to be aborted, to prevent bindings from lower priority sets
+to be activated.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="binding_set" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkBindingSet to skip an entry of</doc>
+          <type name="BindingSet" c:type="GtkBindingSet*"/>
+        </parameter>
+        <parameter name="keyval" transfer-ownership="none">
+          <doc xml:whitespace="preserve">key value of binding to skip</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="modifiers" transfer-ownership="none">
+          <doc xml:whitespace="preserve">key modifier of binding to skip</doc>
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="binding_set_by_class"
+              c:identifier="gtk_binding_set_by_class"
+              introspectable="0">
+      <doc xml:whitespace="preserve">This function returns the binding set named after the type name of
+the passed in class structure. New binding sets are created on
+demand by this function.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the binding set corresponding to @object_class</doc>
+        <type name="BindingSet" c:type="GtkBindingSet*"/>
+      </return-value>
+      <parameters>
+        <parameter name="object_class" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a valid #GtkObject class</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="binding_set_find"
+              c:identifier="gtk_binding_set_find"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Find a binding set by its globally unique name. The @set_name can
+either be a name used for gtk_binding_set_new() or the type name of
+a class used in gtk_binding_set_by_class().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">%NULL or the specified binding set</doc>
+        <type name="BindingSet" c:type="GtkBindingSet*"/>
+      </return-value>
+      <parameters>
+        <parameter name="set_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">unique binding set name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="binding_set_new"
+              c:identifier="gtk_binding_set_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">GTK+ maintains a global list of binding sets. Each binding set has
+a unique name which needs to be specified upon creation.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">new binding set</doc>
+        <type name="BindingSet" c:type="GtkBindingSet*"/>
+      </return-value>
+      <parameters>
+        <parameter name="set_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">unique name of this binding set</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bindings_activate" c:identifier="gtk_bindings_activate">
+      <doc xml:whitespace="preserve">Find a key binding matching @keyval and @modifiers and activate the
+binding on @object.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if a binding was found and activated</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">object to activate when binding found</doc>
+          <type name="Object" c:type="GtkObject*"/>
+        </parameter>
+        <parameter name="keyval" transfer-ownership="none">
+          <doc xml:whitespace="preserve">key value of the binding</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="modifiers" transfer-ownership="none">
+          <doc xml:whitespace="preserve">key modifier of the binding</doc>
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bindings_activate_event"
+              c:identifier="gtk_bindings_activate_event"
+              version="2.4">
+      <doc xml:whitespace="preserve">Looks up key bindings for @object to find one matching</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if a matching key binding was found</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkObject (generally must be a widget)</doc>
+          <type name="Object" c:type="GtkObject*"/>
+        </parameter>
+        <parameter name="event" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkEventKey</doc>
+          <type name="Gdk.EventKey" c:type="GdkEventKey*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="builder_error_quark"
+              c:identifier="gtk_builder_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="check_version" c:identifier="gtk_check_version">
+      <doc xml:whitespace="preserve">Checks that the GTK+ library in use is compatible with the
+given version. Generally you would pass in the constants
+#GTK_MAJOR_VERSION, #GTK_MINOR_VERSION, #GTK_MICRO_VERSION
+as the three arguments to this function; that produces
+a check that the library in use is compatible with
+the version of GTK+ the application or module was compiled
+against.
+of the running library is newer than the version
+the running library must be binary compatible with the
+version @required_major.required_minor.@required_micro
+(same major version.)
+This function is primarily for GTK+ modules; the module
+can call this function to check that it wasn't loaded
+into an incompatible version of GTK+. However, such a
+check isn't completely reliable, since the module may be
+linked against an old version of GTK+ and calling the
+old version of gtk_check_version(), but still get loaded
+into an application using a newer version of GTK+.
+given version, or a string describing the version mismatch.
+The returned string is owned by GTK+ and should not be modified
+or freed.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%NULL if the GTK+ library is compatible with the</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="required_major" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the required major version.</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="required_minor" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the required minor version.</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="required_micro" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the required micro version.</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="container_class_find_child_property"
+              c:identifier="gtk_container_class_find_child_property"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Finds a child property of a container class by name.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the #GParamSpec of the child property or %NULL if @class has no child property with that name.</doc>
+        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="cclass" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkContainerClass</doc>
+          <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
+        </parameter>
+        <parameter name="property_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the child property to find</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="container_class_list_child_properties"
+              c:identifier="gtk_container_class_list_child_properties"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Returns all child properties of a container class.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly allocated %NULL-terminated array of #GParamSpec*. The array must be freed with g_free().</doc>
+        <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
+      </return-value>
+      <parameters>
+        <parameter name="cclass" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkContainerClass</doc>
+          <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
+        </parameter>
+        <parameter name="n_properties" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to return the number of child properties found</doc>
+          <type name="guint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="device_grab_add"
+              c:identifier="gtk_device_grab_add"
+              version="3.0">
+      <doc xml:whitespace="preserve">Adds a GTK+ grab on @device, so all the events on @device and its
+associated pointer or keyboard (if any) are delivered to @widget.
+If the @block_others parameter is %TRUE, any other devices will be
+unable to interact with @widget during the grab.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="device" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkDevice to grab on.</doc>
+          <type name="Gdk.Device" c:type="GdkDevice*"/>
+        </parameter>
+        <parameter name="block_others" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to prevent other devices to interact with @widget.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="device_grab_remove"
+              c:identifier="gtk_device_grab_remove"
+              version="3.0">
+      <doc xml:whitespace="preserve">Removes a device grab from the given widget. You have to pair calls
+to gtk_device_grab_add() and gtk_device_grab_remove().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="device" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkDevice</doc>
+          <type name="Gdk.Device" c:type="GdkDevice*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="disable_setlocale" c:identifier="gtk_disable_setlocale">
+      <doc xml:whitespace="preserve">Prevents gtk_init(), gtk_init_check(), gtk_init_with_args() and
+gtk_parse_args() from automatically
+calling &lt;literal&gt;setlocale (LC_ALL, "")&lt;/literal&gt;. You would 
+want to use this function if you wanted to set the locale for 
+your program to something other than the user's locale, or if 
+you wanted to set different values for different locale categories.
+Most programs should not need to call this function.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="distribute_natural_allocation"
+              c:identifier="gtk_distribute_natural_allocation">
+      <doc xml:whitespace="preserve">Distributes @extra_space to child @sizes by bringing up smaller
+children up to natural size first.
+The remaining space will be added to the @minimum_size member of the
+GtkRequestedSize struct. If all sizes reach their natural size then
+the remaining space is returned.
+to @sizes.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The remainder of @extra_space after redistributing space</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="extra_space" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Extra space to redistribute among children after subtracting minimum sizes and any child padding from the overall allocation</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="n_requested_sizes" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Number of requests to fit into the allocation</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="sizes" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An array of structs with a client pointer and a minimum/natural size in the orientation of the allocation.</doc>
+          <type name="RequestedSize" c:type="GtkRequestedSize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_begin"
+              c:identifier="gtk_drag_begin"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Initiates a drag on the source side. The function
+only needs to be used when the application is
+starting drags itself, and is not needed when
+gtk_drag_source_set() is used.
+The @event is used to retrieve the timestamp that will be used internally to
+grab the pointer.  If @event is #NULL, then GDK_CURRENT_TIME will be used.
+However, you should try to pass a real event in all cases, since that can be
+used by GTK+ to get information about the start position of the drag, for
+example if the @event is a GDK_MOTION_NOTIFY.
+Generally there are three cases when you want to start a drag by hand by
+calling this function:
+1. During a button-press-event handler, if you want to start a drag
+immediately when the user presses the mouse button.  Pass the @event
+that you have in your button-press-event handler.
+2. During a motion-notify-event handler, if you want to start a drag
+when the mouse moves past a certain threshold distance after a button-press.
+Pass the @event that you have in your motion-notify-event handler.
+3. During a timeout handler, if you want to start a drag after the mouse
+button is held down for some time.  Try to save the last event that you got
+from the mouse, using gdk_event_copy(), and pass it to this function
+(remember to free the event with gdk_event_free() when you are done).
+If you can really not pass a real event, pass #NULL instead.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the context for this drag.</doc>
+        <type name="Gdk.DragContext" c:type="GdkDragContext*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the source widget.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="targets" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The targets (data formats) in which the source can provide the data.</doc>
+          <type name="TargetList" c:type="GtkTargetList*"/>
+        </parameter>
+        <parameter name="actions" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A bitmask of the allowed drag actions for this drag.</doc>
+          <type name="Gdk.DragAction" c:type="GdkDragAction"/>
+        </parameter>
+        <parameter name="button" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The button the user clicked to start the drag.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="event" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The event that triggered the start of the drag.</doc>
+          <type name="Gdk.Event" c:type="GdkEvent*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_check_threshold"
+              c:identifier="gtk_drag_check_threshold">
+      <doc xml:whitespace="preserve">Checks to see if a mouse drag starting at (@start_x, @start_y) and ending
+at (@current_x, @current_y) has passed the GTK+ drag threshold, and thus
+should trigger the beginning of a drag-and-drop operation.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the drag threshold has been passed.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="start_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of start of drag</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="start_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of start of drag</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="current_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">current X coordinate</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="current_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">current Y coordinate</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_dest_add_image_targets"
+              c:identifier="gtk_drag_dest_add_image_targets"
+              version="2.6">
+      <doc xml:whitespace="preserve">Add the image targets supported by #GtkSelection to
+the target list of the drag destination. The targets
+are added with @info = 0. If you need another value, 
+use gtk_target_list_add_image_targets() and
+gtk_drag_dest_set_target_list().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget that's a drag destination</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_dest_add_text_targets"
+              c:identifier="gtk_drag_dest_add_text_targets"
+              version="2.6">
+      <doc xml:whitespace="preserve">Add the text targets supported by #GtkSelection to
+the target list of the drag destination. The targets
+are added with @info = 0. If you need another value, 
+use gtk_target_list_add_text_targets() and
+gtk_drag_dest_set_target_list().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget that's a drag destination</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_dest_add_uri_targets"
+              c:identifier="gtk_drag_dest_add_uri_targets"
+              version="2.6">
+      <doc xml:whitespace="preserve">Add the URI targets supported by #GtkSelection to
+the target list of the drag destination. The targets
+are added with @info = 0. If you need another value, 
+use gtk_target_list_add_uri_targets() and
+gtk_drag_dest_set_target_list().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget that's a drag destination</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_dest_find_target"
+              c:identifier="gtk_drag_dest_find_target"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Looks for a match between @context-&gt;targets and the
+returning %GDK_NONE. @dest_target_list should usually be the return
+value from gtk_drag_dest_get_target_list(), but some widgets may
+have different valid targets for different parts of the widget; in
+that case, they will have to implement a drag_motion handler that
+passes the correct target list to this function.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">first target that the source offers and the dest can accept, or %GDK_NONE</doc>
+        <type name="Gdk.Atom" c:type="GdkAtom"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">drag destination widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">drag context</doc>
+          <type name="Gdk.DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+        <parameter name="target_list" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">list of droppable targets, or %NULL to use gtk_drag_dest_get_target_list (@widget).</doc>
+          <type name="TargetList" c:type="GtkTargetList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_dest_get_target_list"
+              c:identifier="gtk_drag_dest_get_target_list">
+      <doc xml:whitespace="preserve">Returns the list of targets this widget can accept from
+drag-and-drop.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the #GtkTargetList, or %NULL if none</doc>
+        <type name="TargetList" c:type="GtkTargetList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_dest_get_track_motion"
+              c:identifier="gtk_drag_dest_get_track_motion"
+              version="2.10">
+      <doc xml:whitespace="preserve">Returns whether the widget has been configured to always
+emit ::drag-motion signals.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the widget always emits ::drag-motion events</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget that's a drag destination</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_dest_set" c:identifier="gtk_drag_dest_set">
+      <doc xml:whitespace="preserve">Sets a widget as a potential drop destination, and adds default behaviors.
+The default behaviors listed in @flags have an effect similar
+to installing default handlers for the widget's drag-and-drop signals
+(#GtkWidget:drag-motion, #GtkWidget:drag-drop, ...). They all exist
+for convenience. When passing #GTK_DEST_DEFAULT_ALL for instance it is
+sufficient to connect to the widget's #GtkWidget::drag-data-received
+signal to get primitive, but consistent drag-and-drop support.
+Things become more complicated when you try to preview the dragged data,
+as described in the documentation for #GtkWidget:drag-motion. The default
+behaviors described by @flags make some assumptions, that can conflict
+with your own signal handlers. For instance #GTK_DEST_DEFAULT_DROP causes
+invokations of gdk_drag_status() in the context of #GtkWidget:drag-motion,
+and invokations of gtk_drag_finish() in #GtkWidget:drag-data-received.
+Especially the later is dramatic, when your own #GtkWidget:drag-motion
+handler calls gtk_drag_get_data() to inspect the dragged data.
+There's no way to set a default action here, you can use the
+#GtkWidget:drag-motion callback for that. Here's an example which selects
+the action to use depending on whether the control key is pressed or not:
+|[
+static void
+drag_motion (GtkWidget *widget,
+GdkDragContext *context,
+gint x,
+gint y,
+guint time)
+{
+GdkModifierType mask;
+gdk_window_get_pointer (gtk_widget_get_window (widget),
+NULL, NULL, &amp;mask);
+if (mask &amp; GDK_CONTROL_MASK)
+gdk_drag_status (context, GDK_ACTION_COPY, time);
+else
+gdk_drag_status (context, GDK_ACTION_MOVE, time);
+}
+]|</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">which types of default drag behavior to use</doc>
+          <type name="DestDefaults" c:type="GtkDestDefaults"/>
+        </parameter>
+        <parameter name="targets" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a pointer to an array of #GtkTargetEntry&lt;!-- --&gt;s indicating the drop types that this @widget will accept, or %NULL. Later you can access the list with gtk_drag_dest_get_target_list() and gtk_drag_dest_find_target().</doc>
+          <array length="3" c:type="GtkTargetEntry*">
+            <type name="TargetEntry"/>
+          </array>
+        </parameter>
+        <parameter name="n_targets" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of entries in @targets</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="actions" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a bitmask of possible actions for a drop onto this @widget.</doc>
+          <type name="Gdk.DragAction" c:type="GdkDragAction"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_dest_set_proxy"
+              c:identifier="gtk_drag_dest_set_proxy">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="proxy_window" transfer-ownership="none">
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="Gdk.DragProtocol" c:type="GdkDragProtocol"/>
+        </parameter>
+        <parameter name="use_coordinates" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_dest_set_target_list"
+              c:identifier="gtk_drag_dest_set_target_list">
+      <doc xml:whitespace="preserve">Sets the target types that this widget can accept from drag-and-drop.
+The widget must first be made into a drag destination with
+gtk_drag_dest_set().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget that's a drag destination</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="target_list" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">list of droppable targets, or %NULL for none</doc>
+          <type name="TargetList" c:type="GtkTargetList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_dest_set_track_motion"
+              c:identifier="gtk_drag_dest_set_track_motion"
+              version="2.10">
+      <doc xml:whitespace="preserve">Tells the widget to emit ::drag-motion and ::drag-leave
+events regardless of the targets and the %GTK_DEST_DEFAULT_MOTION
+flag. 
+This may be used when a widget wants to do generic
+actions regardless of the targets that the source offers.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget that's a drag destination</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="track_motion" transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether to accept all targets</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_dest_unset" c:identifier="gtk_drag_dest_unset">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_finish" c:identifier="gtk_drag_finish">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="Gdk.DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+        <parameter name="success" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="del" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_get_data" c:identifier="gtk_drag_get_data">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="context" transfer-ownership="none">
+          <type name="Gdk.DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+        <parameter name="target" transfer-ownership="none">
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_get_source_widget"
+              c:identifier="gtk_drag_get_source_widget">
+      <doc xml:whitespace="preserve">Determines the source widget for a drag.
+within a single application, a pointer to the source widget.
+Otherwise, %NULL.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">if the drag is occurring</doc>
+        <type name="Widget" c:type="GtkWidget*"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a (destination side) drag context</doc>
+          <type name="Gdk.DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_highlight" c:identifier="gtk_drag_highlight">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_set_icon_default"
+              c:identifier="gtk_drag_set_icon_default">
+      <doc xml:whitespace="preserve">Sets the icon for a particular drag to the default
+icon.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the context for a drag. (This must be called</doc>
+          <type name="Gdk.DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_set_icon_name"
+              c:identifier="gtk_drag_set_icon_name"
+              version="2.8">
+      <doc xml:whitespace="preserve">Sets the icon for a given drag from a named themed icon. See
+the docs for #GtkIconTheme for more details. Note that the
+size of the icon depends on the icon theme (the icon is
+loaded at the symbolic size #GTK_ICON_SIZE_DND), thus</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the context for a drag. (This must be called with a context for the source side of a drag)</doc>
+          <type name="Gdk.DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+        <parameter name="icon_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of icon to use</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="hot_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the X offset of the hotspot within the icon</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="hot_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the Y offset of the hotspot within the icon</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_set_icon_pixbuf"
+              c:identifier="gtk_drag_set_icon_pixbuf">
+      <doc xml:whitespace="preserve">Sets @pixbuf as the icon for a given drag.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the context for a drag. (This must be called with a  context for the source side of a drag)</doc>
+          <type name="Gdk.DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+        <parameter name="pixbuf" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkPixbuf to use as the drag icon.</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+        <parameter name="hot_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the X offset within @widget of the hotspot.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="hot_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the Y offset within @widget of the hotspot.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_set_icon_pixmap"
+              c:identifier="gtk_drag_set_icon_pixmap">
+      <doc xml:whitespace="preserve">Sets @pixmap as the icon for a given drag. GTK+ retains
+references for the arguments, and will release them when
+they are no longer needed. In general, gtk_drag_set_icon_pixbuf()
+will be more convenient to use.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the context for a drag. (This must be called with a  context for the source side of a drag)</doc>
+          <type name="Gdk.DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+        <parameter name="colormap" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the colormap of the icon</doc>
+          <type name="Gdk.Colormap" c:type="GdkColormap*"/>
+        </parameter>
+        <parameter name="pixmap" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the image data for the icon</doc>
+          <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+        </parameter>
+        <parameter name="mask" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the transparency mask for the icon or %NULL for none.</doc>
+          <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+        </parameter>
+        <parameter name="hot_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the X offset within @pixmap of the hotspot.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="hot_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the Y offset within @pixmap of the hotspot.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_set_icon_stock"
+              c:identifier="gtk_drag_set_icon_stock">
+      <doc xml:whitespace="preserve">Sets the icon for a given drag from a stock ID.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the context for a drag. (This must be called with a  context for the source side of a drag)</doc>
+          <type name="Gdk.DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+        <parameter name="stock_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ID of the stock icon to use for the drag.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="hot_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the X offset within the icon of the hotspot.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="hot_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the Y offset within the icon of the hotspot.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_set_icon_widget"
+              c:identifier="gtk_drag_set_icon_widget">
+      <doc xml:whitespace="preserve">Changes the icon for a widget to a given widget. GTK+
+will not destroy the icon, so if you don't want
+it to persist, you should connect to the "drag-end" 
+signal and destroy it yourself.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the context for a drag. (This must be called</doc>
+          <type name="Gdk.DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a toplevel window to use as an icon.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="hot_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the X offset within @widget of the hotspot.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="hot_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the Y offset within @widget of the hotspot.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_source_add_image_targets"
+              c:identifier="gtk_drag_source_add_image_targets"
+              version="2.6">
+      <doc xml:whitespace="preserve">Add the writable image targets supported by #GtkSelection to
+the target list of the drag source. The targets
+are added with @info = 0. If you need another value, 
+use gtk_target_list_add_image_targets() and
+gtk_drag_source_set_target_list().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget that's is a drag source</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_source_add_text_targets"
+              c:identifier="gtk_drag_source_add_text_targets"
+              version="2.6">
+      <doc xml:whitespace="preserve">Add the text targets supported by #GtkSelection to
+the target list of the drag source.  The targets
+are added with @info = 0. If you need another value, 
+use gtk_target_list_add_text_targets() and
+gtk_drag_source_set_target_list().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget that's is a drag source</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_source_add_uri_targets"
+              c:identifier="gtk_drag_source_add_uri_targets"
+              version="2.6">
+      <doc xml:whitespace="preserve">Add the URI targets supported by #GtkSelection to
+the target list of the drag source.  The targets
+are added with @info = 0. If you need another value, 
+use gtk_target_list_add_uri_targets() and
+gtk_drag_source_set_target_list().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget that's is a drag source</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_source_get_target_list"
+              c:identifier="gtk_drag_source_get_target_list"
+              version="2.4">
+      <doc xml:whitespace="preserve">Gets the list of targets this widget can provide for
+drag-and-drop.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the #GtkTargetList, or %NULL if none</doc>
+        <type name="TargetList" c:type="GtkTargetList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_source_set" c:identifier="gtk_drag_source_set">
+      <doc xml:whitespace="preserve">Sets up a widget so that GTK+ will start a drag operation when the user
+clicks and drags on the widget. The widget must have a window.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="start_button_mask" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the bitmask of buttons that can start the drag</doc>
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+        <parameter name="targets" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the table of targets that the drag will support, may be %NULL</doc>
+          <array length="3" c:type="GtkTargetEntry*">
+            <type name="TargetEntry"/>
+          </array>
+        </parameter>
+        <parameter name="n_targets" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of items in @targets</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="actions" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the bitmask of possible actions for a drag from this widget</doc>
+          <type name="Gdk.DragAction" c:type="GdkDragAction"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_source_set_icon"
+              c:identifier="gtk_drag_source_set_icon">
+      <doc xml:whitespace="preserve">Sets the icon that will be used for drags from a particular widget
+from a pixmap/mask. GTK+ retains references for the arguments, and
+will release them when they are no longer needed.
+Use gtk_drag_source_set_icon_pixbuf() instead.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="colormap" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the colormap of the icon</doc>
+          <type name="Gdk.Colormap" c:type="GdkColormap*"/>
+        </parameter>
+        <parameter name="pixmap" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the image data for the icon</doc>
+          <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+        </parameter>
+        <parameter name="mask" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the transparency mask for an image.</doc>
+          <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_source_set_icon_name"
+              c:identifier="gtk_drag_source_set_icon_name"
+              version="2.8">
+      <doc xml:whitespace="preserve">Sets the icon that will be used for drags from a particular source
+to a themed icon. See the docs for #GtkIconTheme for more details.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="icon_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of icon to use</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_source_set_icon_pixbuf"
+              c:identifier="gtk_drag_source_set_icon_pixbuf">
+      <doc xml:whitespace="preserve">Sets the icon that will be used for drags from a particular widget
+from a #GdkPixbuf. GTK+ retains a reference for @pixbuf and will 
+release it when it is no longer needed.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="pixbuf" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GdkPixbuf for the drag icon</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_source_set_icon_stock"
+              c:identifier="gtk_drag_source_set_icon_stock">
+      <doc xml:whitespace="preserve">Sets the icon that will be used for drags from a particular source
+to a stock icon.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="stock_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ID of the stock icon to use</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_source_set_target_list"
+              c:identifier="gtk_drag_source_set_target_list"
+              version="2.4">
+      <doc xml:whitespace="preserve">Changes the target types that this widget offers for drag-and-drop.
+The widget must first be made into a drag source with
+gtk_drag_source_set().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget that's a drag source</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="target_list" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">list of draggable targets, or %NULL for none</doc>
+          <type name="TargetList" c:type="GtkTargetList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_source_unset" c:identifier="gtk_drag_source_unset">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_unhighlight" c:identifier="gtk_drag_unhighlight">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_insertion_cursor"
+              c:identifier="gtk_draw_insertion_cursor"
+              version="2.4">
+      <doc xml:whitespace="preserve">Draws a text caret on @drawable at @location. This is not a style function
+but merely a convenience function for drawing the standard cursor shape.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="drawable" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkDrawable</doc>
+          <type name="Gdk.Drawable" c:type="GdkDrawable*"/>
+        </parameter>
+        <parameter name="area" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">rectangle to which the output is clipped, or %NULL if the output should not be clipped</doc>
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="location" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location where to draw the cursor (@location-&gt;width is ignored)</doc>
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="is_primary" transfer-ownership="none">
+          <doc xml:whitespace="preserve">if the cursor should be the primary cursor color.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="direction" transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the cursor is left-to-right or right-to-left. Should never be #GTK_TEXT_DIR_NONE</doc>
+          <type name="TextDirection" c:type="GtkTextDirection"/>
+        </parameter>
+        <parameter name="draw_arrow" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to draw a directional arrow on the cursor. Should be %FALSE unless the cursor is split.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="events_pending" c:identifier="gtk_events_pending">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="false" c:identifier="gtk_false">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="file_chooser_error_quark"
+              c:identifier="gtk_file_chooser_error_quark"
+              version="2.4">
+      <doc xml:whitespace="preserve">Registers an error quark for #GtkFileChooser if necessary.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The error quark used for #GtkFileChooser errors.</doc>
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="get_binary_age"
+              c:identifier="gtk_get_binary_age"
+              version="3.0">
+      <doc xml:whitespace="preserve">Returns the binary age as passed to
+&lt;application&gt;libtool&lt;/application&gt; when building the GTK+ library
+the process is running against. If
+&lt;application&gt;libtool&lt;/application&gt; means nothing to you, don't
+worry about it.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the binary age of the GTK+ library.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+    </function>
+    <function name="get_current_event" c:identifier="gtk_get_current_event">
+      <doc xml:whitespace="preserve">Obtains a copy of the event currently being processed by GTK+.  For
+example, if you get a "clicked" signal from #GtkButton, the current
+event will be the #GdkEventButton that triggered the "clicked"
+signal. The returned event must be freed with gdk_event_free().
+If there is no current event, the function returns %NULL.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a copy of the current event, or %NULL if no current event.</doc>
+        <type name="Gdk.Event" c:type="GdkEvent*"/>
+      </return-value>
+    </function>
+    <function name="get_current_event_device"
+              c:identifier="gtk_get_current_event_device">
+      <doc xml:whitespace="preserve">If there is a current event and it has a device, return that
+device, otherwise return %NULL.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a #GdkDevice, or %NULL</doc>
+        <type name="Gdk.Device" c:type="GdkDevice*"/>
+      </return-value>
+    </function>
+    <function name="get_current_event_state"
+              c:identifier="gtk_get_current_event_state">
+      <doc xml:whitespace="preserve">If there is a current event and it has a state field, place
+that state field in @state and return %TRUE, otherwise return
+%FALSE.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if there was a current event and it had a state field</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="state" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a location to store the state of the current event</doc>
+          <type name="Gdk.ModifierType" c:type="GdkModifierType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_current_event_time"
+              c:identifier="gtk_get_current_event_time">
+      <doc xml:whitespace="preserve">If there is a current event and it has a timestamp, return that
+timestamp, otherwise return %GDK_CURRENT_TIME.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the timestamp from the current event, or %GDK_CURRENT_TIME.</doc>
+        <type name="guint32" c:type="guint32"/>
+      </return-value>
+    </function>
+    <function name="get_debug_flags" c:identifier="gtk_get_debug_flags">
+      <doc xml:whitespace="preserve">Returns the GTK+ debug flags setting.</doc>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+    </function>
+    <function name="get_default_language"
+              c:identifier="gtk_get_default_language">
+      <doc xml:whitespace="preserve">Returns the #PangoLanguage for the default language currently in
+effect. (Note that this can change over the life of an
+application.)  The default language is derived from the current
+locale. It determines, for example, whether GTK+ uses the
+right-to-left or left-to-right text direction.
+This function is equivalent to pango_language_get_default().  See
+that function for details.
+freed</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the default language as a #PangoLanguage, must not be</doc>
+        <type name="Pango.Language" c:type="PangoLanguage*"/>
+      </return-value>
+    </function>
+    <function name="get_event_widget" c:identifier="gtk_get_event_widget">
+      <doc xml:whitespace="preserve">If @event is %NULL or the event was not associated with any widget,
+returns %NULL, otherwise returns the widget that received the event
+originally.
+received @event, or %NULL</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the widget that originally</doc>
+        <type name="Widget" c:type="GtkWidget*"/>
+      </return-value>
+      <parameters>
+        <parameter name="event" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkEvent</doc>
+          <type name="Gdk.Event" c:type="GdkEvent*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_interface_age"
+              c:identifier="gtk_get_interface_age"
+              version="3.0">
+      <doc xml:whitespace="preserve">Returns the interface age as passed to
+&lt;application&gt;libtool&lt;/application&gt; when building the GTK+ library
+the process is running against. If
+&lt;application&gt;libtool&lt;/application&gt; means nothing to you, don't
+worry about it.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the interface age of the GTK+ library.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+    </function>
+    <function name="get_major_version"
+              c:identifier="gtk_get_major_version"
+              version="3.0">
+      <doc xml:whitespace="preserve">Returns the major version number of the GTK+ library.  (e.g. in GTK+ version
+3.1.5 this is 3.) 
+This function is in the library, so it represents the GTK+ library
+your code is running against. Contrast with the #GTK_MAJOR_VERSION
+macro, which represents the major version of the GTK+ headers you
+have included when compiling your code.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the major version number of the GTK+ library.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+    </function>
+    <function name="get_micro_version"
+              c:identifier="gtk_get_micro_version"
+              version="3.0">
+      <doc xml:whitespace="preserve">Returns the micro version number of the GTK+ library.  (e.g. in GTK+ version
+3.1.5 this is 5.) 
+This function is in the library, so it represents the GTK+ library
+your code is are running against. Contrast with the
+#GTK_MICRO_VERSION macro, which represents the micro version of the
+GTK+ headers you have included when compiling your code.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the micro version number of the GTK+ library.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+    </function>
+    <function name="get_minor_version"
+              c:identifier="gtk_get_minor_version"
+              version="3.0">
+      <doc xml:whitespace="preserve">Returns the minor version number of the GTK+ library.  (e.g. in GTK+ version
+3.1.5 this is 1.) 
+This function is in the library, so it represents the GTK+ library
+your code is are running against. Contrast with the
+#GTK_MINOR_VERSION macro, which represents the minor version of the
+GTK+ headers you have included when compiling your code.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the minor version number of the GTK+ library.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+    </function>
+    <function name="get_option_group"
+              c:identifier="gtk_get_option_group"
+              version="2.6"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Returns a #GOptionGroup for the commandline arguments recognized
+by GTK+ and GDK. You should add this group to your #GOptionContext 
+with g_option_context_add_group(), if you are using 
+g_option_context_parse() to parse your commandline arguments.
+by GTK+</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a #GOptionGroup for the commandline arguments recognized</doc>
+        <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+      </return-value>
+      <parameters>
+        <parameter name="open_default_display" transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether to open the default display when parsing the commandline arguments</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="grab_add" c:identifier="gtk_grab_add">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="grab_get_current" c:identifier="gtk_grab_get_current">
+      <doc xml:whitespace="preserve">Queries the current grab of the default window group.
+has the grab or %NULL if no grab is active</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The widget which currently</doc>
+        <type name="Widget" c:type="GtkWidget*"/>
+      </return-value>
+    </function>
+    <function name="grab_remove" c:identifier="gtk_grab_remove">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="icon_size_from_name"
+              c:identifier="gtk_icon_size_from_name">
+      <doc xml:whitespace="preserve">Looks up the icon size associated with @name.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the icon size</doc>
+        <type name="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name to look up.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="icon_size_get_name" c:identifier="gtk_icon_size_get_name">
+      <doc xml:whitespace="preserve">Gets the canonical name of the given icon size. The returned string
+is statically allocated and should not be freed.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the name of the given icon size.</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkIconSize.</doc>
+          <type name="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="icon_size_lookup" c:identifier="gtk_icon_size_lookup">
+      <doc xml:whitespace="preserve">Obtains the pixel size of a semantic icon size, possibly
+modified by user preferences for the default #GtkSettings.
+(See gtk_icon_size_lookup_for_settings().)
+Normally @size would be
+#GTK_ICON_SIZE_MENU, #GTK_ICON_SIZE_BUTTON, etc.  This function
+isn't normally needed, gtk_widget_render_icon() is the usual
+way to get an icon for rendering, then just look at the size of
+the rendered pixbuf. The rendered pixbuf may not even correspond to
+the width/height returned by gtk_icon_size_lookup(), because themes
+are free to render the pixbuf however they like, including changing
+the usual size.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @size was a valid size</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an icon size</doc>
+          <type name="gint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store icon width</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store icon height</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="icon_size_lookup_for_settings"
+              c:identifier="gtk_icon_size_lookup_for_settings"
+              version="2.2">
+      <doc xml:whitespace="preserve">Obtains the pixel size of a semantic icon size, possibly
+modified by user preferences for a particular
+#GtkSettings. Normally @size would be
+#GTK_ICON_SIZE_MENU, #GTK_ICON_SIZE_BUTTON, etc.  This function
+isn't normally needed, gtk_widget_render_icon() is the usual
+way to get an icon for rendering, then just look at the size of
+the rendered pixbuf. The rendered pixbuf may not even correspond to
+the width/height returned by gtk_icon_size_lookup(), because themes
+are free to render the pixbuf however they like, including changing
+the usual size.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @size was a valid size</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="settings" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkSettings object, used to determine which set of user preferences to used.</doc>
+          <type name="Settings" c:type="GtkSettings*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an icon size</doc>
+          <type name="gint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store icon width</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store icon height</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="icon_size_register" c:identifier="gtk_icon_size_register">
+      <doc xml:whitespace="preserve">Registers a new icon size, along the same lines as #GTK_ICON_SIZE_MENU,
+etc. Returns the integer value for the size.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">integer value representing the size</doc>
+        <type name="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the icon size</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the icon width</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the icon height</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="icon_size_register_alias"
+              c:identifier="gtk_icon_size_register_alias">
+      <doc xml:whitespace="preserve">Registers @alias as another name for @target.
+So calling gtk_icon_size_from_name() with @alias as argument
+will return @target.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="alias" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an alias for @target</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="target" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an existing icon size</doc>
+          <type name="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="icon_theme_error_quark"
+              c:identifier="gtk_icon_theme_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="identifier_get_type"
+              c:identifier="gtk_identifier_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="init" c:identifier="gtk_init">
+      <doc xml:whitespace="preserve">Call this function before using any other GTK+ functions in your GUI
+applications.  It will initialize everything needed to operate the
+toolkit and parses some standard command line options. @argc and 
+never see those standard arguments. 
+if you are calling gtk_parse_args(), gtk_init_check(), 
+gtk_init_with_args() or g_option_context_parse() with 
+the option group returned by gtk_get_option_group(), you 
+&lt;emphasis&gt;don't&lt;/emphasis&gt; have to call gtk_init().
+&lt;note&gt;&lt;para&gt;
+This function will terminate your program if it was unable to initialize 
+the GUI for some reason. If you want your program to fall back to a 
+textual interface you want to call gtk_init_check() instead.
+&lt;/para&gt;&lt;/note&gt;
+&lt;note&gt;&lt;para&gt;
+Since 2.18, GTK+ calls &lt;literal&gt;signal (SIGPIPE, SIG_IGN)&lt;/literal&gt;
+during initialization, to ignore SIGPIPE signals, since these are
+almost never wanted in graphical applications. If you do need to
+handle SIGPIPE for some reason, reset the handler after gtk_init(),
+but notice that other libraries (e.g. libdbus or gvfs) might do
+similar things.
+&lt;/para&gt;&lt;/note&gt;</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">Address of the &lt;parameter&gt;argc&lt;/parameter&gt; parameter of your main() function. Changed if any arguments were handled.</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">Address of the &lt;parameter&gt;argv&lt;/parameter&gt; parameter of main(). Any parameters understood by gtk_init() are stripped before return.</doc>
+          <array length="0" c:type="char***">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_add" c:identifier="gtk_init_add" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="function" transfer-ownership="none" closure="1">
+          <type name="Function" c:type="GtkFunction"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_check" c:identifier="gtk_init_check">
+      <doc xml:whitespace="preserve">This function does the same work as gtk_init() with only
+initialized. Instead it returns %FALSE on failure.
+This way the application can fall back to some other means of communication 
+with the user - for example a curses or command line interface.
+%FALSE otherwise.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the GUI has been successfully initialized,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">Address of the &lt;parameter&gt;argc&lt;/parameter&gt; parameter of your main() function. Changed if any arguments were handled.</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">Address of the &lt;parameter&gt;argv&lt;/parameter&gt; parameter of main(). Any parameters understood by gtk_init() are stripped before return.</doc>
+          <array length="0" c:type="char***">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_with_args"
+              c:identifier="gtk_init_with_args"
+              version="2.6"
+              throws="1">
+      <doc xml:whitespace="preserve">This function does the same work as gtk_init_check().
+Additionally, it allows you to add your own commandline options,
+and it automatically generates nicely formatted
+&lt;option&gt;--help&lt;/option&gt; output. Note that your program will
+be terminated after writing out the help output.
+%FALSE otherwise.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the GUI has been successfully initialized,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the number of command line arguments.</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="argv" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the array of command line arguments.</doc>
+          <type name="utf8" c:type="gchar***"/>
+        </parameter>
+        <parameter name="parameter_string" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string which is displayed in the first line of &lt;option&gt;--help&lt;/option&gt; output, after &lt;literal&gt;&lt;replaceable&gt;programname&lt;/replaceable&gt; [OPTION...]&lt;/literal&gt;</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="entries" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a %NULL-terminated array of #GOptionEntry&lt;!-- --&gt;s describing the options of your program</doc>
+          <type name="GLib.OptionEntry" c:type="GOptionEntry*"/>
+        </parameter>
+        <parameter name="translation_domain" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a translation domain to use for translating the &lt;option&gt;--help&lt;/option&gt; output for the options in @entries and the @parameter_string with gettext(), or %NULL</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_snooper_install"
+              c:identifier="gtk_key_snooper_install"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="snooper" transfer-ownership="none" closure="1">
+          <type name="KeySnoopFunc" c:type="GtkKeySnoopFunc"/>
+        </parameter>
+        <parameter name="func_data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_snooper_remove" c:identifier="gtk_key_snooper_remove">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="snooper_handler_id" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main" c:identifier="gtk_main">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="main_do_event" c:identifier="gtk_main_do_event">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Gdk.Event" c:type="GdkEvent*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_iteration" c:identifier="gtk_main_iteration">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="main_iteration_do" c:identifier="gtk_main_iteration_do">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="blocking" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_level" c:identifier="gtk_main_level">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+    </function>
+    <function name="main_quit" c:identifier="gtk_main_quit">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="paint_arrow" c:identifier="gtk_paint_arrow">
+      <doc xml:whitespace="preserve">Draws an arrow in the given rectangle on @window using the given 
+parameters. @arrow_type determines the direction of the arrow.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="style" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkStyle</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </parameter>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="state_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="shadow_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of shadow to draw</doc>
+          <type name="ShadowType" c:type="GtkShadowType"/>
+        </parameter>
+        <parameter name="area" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">clip rectangle, or %NULL if the output should not be clipped</doc>
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a style detail</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="arrow_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of arrow to draw</doc>
+          <type name="ArrowType" c:type="GtkArrowType"/>
+        </parameter>
+        <parameter name="fill" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the arrow tip should be filled</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x origin of the rectangle to draw the arrow in</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y origin of the rectangle to draw the arrow in</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of the rectangle to draw the arrow in</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">height of the rectangle to draw the arrow in</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_box" c:identifier="gtk_paint_box">
+      <doc xml:whitespace="preserve">Draws a box on @window with the given parameters.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="style" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkStyle</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </parameter>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="state_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="shadow_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of shadow to draw</doc>
+          <type name="ShadowType" c:type="GtkShadowType"/>
+        </parameter>
+        <parameter name="area" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">clip rectangle, or %NULL if the output should not be clipped</doc>
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a style detail</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x origin of the box</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y origin of the box</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width of the box</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the height of the box</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_box_gap" c:identifier="gtk_paint_box_gap">
+      <doc xml:whitespace="preserve">Draws a box in @window using the given style and state and shadow type, 
+leaving a gap in one side.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="style" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkStyle</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </parameter>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="state_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="shadow_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">type of shadow to draw</doc>
+          <type name="ShadowType" c:type="GtkShadowType"/>
+        </parameter>
+        <parameter name="area" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">clip rectangle, or %NULL if the output should not be clipped</doc>
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a style detail</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x origin of the rectangle</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y origin of the rectangle</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of the rectangle</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of the rectangle</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="gap_side" transfer-ownership="none">
+          <doc xml:whitespace="preserve">side in which to leave the gap</doc>
+          <type name="PositionType" c:type="GtkPositionType"/>
+        </parameter>
+        <parameter name="gap_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">starting position of the gap</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="gap_width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of the gap</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_check" c:identifier="gtk_paint_check">
+      <doc xml:whitespace="preserve">Draws a check button indicator in the given rectangle on @window with 
+the given parameters.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="style" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkStyle</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </parameter>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="state_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="shadow_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of shadow to draw</doc>
+          <type name="ShadowType" c:type="GtkShadowType"/>
+        </parameter>
+        <parameter name="area" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">clip rectangle, or %NULL if the output should not be clipped</doc>
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a style detail</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x origin of the rectangle to draw the check in</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y origin of the rectangle to draw the check in</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width of the rectangle to draw the check in</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the height of the rectangle to draw the check in</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_diamond" c:identifier="gtk_paint_diamond">
+      <doc xml:whitespace="preserve">Draws a diamond in the given rectangle on @window using the given
+parameters.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="style" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkStyle</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </parameter>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="state_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="shadow_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of shadow to draw</doc>
+          <type name="ShadowType" c:type="GtkShadowType"/>
+        </parameter>
+        <parameter name="area" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">clip rectangle, or %NULL if the output should not be clipped</doc>
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a style detail</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x origin of the rectangle to draw the diamond in</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y origin of the rectangle to draw the diamond in</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of the rectangle to draw the diamond in</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">height of the rectangle to draw the diamond in</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_expander" c:identifier="gtk_paint_expander">
+      <doc xml:whitespace="preserve">Draws an expander as used in #GtkTreeView. @x and @y specify the
+center the expander. The size of the expander is determined by the
+"expander-size" style property of @widget.  (If widget is not
+specified or doesn't have an "expander-size" property, an
+unspecified default size will be used, since the caller doesn't
+have sufficient information to position the expander, this is
+likely not useful.) The expander is expander_size pixels tall
+in the collapsed position and expander_size pixels wide in the
+expanded position.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="style" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkStyle</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </parameter>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="state_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="area" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">clip rectangle, or %NULL if the output should not be clipped</doc>
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a style detail</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the x position to draw the expander at</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the y position to draw the expander at</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="expander_style" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the style to draw the expander in; determines whether the expander is collapsed, expanded, or in an intermediate state.</doc>
+          <type name="ExpanderStyle" c:type="GtkExpanderStyle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_extension" c:identifier="gtk_paint_extension">
+      <doc xml:whitespace="preserve">Draws an extension, i.e. a notebook tab.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="style" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkStyle</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </parameter>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="state_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="shadow_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">type of shadow to draw</doc>
+          <type name="ShadowType" c:type="GtkShadowType"/>
+        </parameter>
+        <parameter name="area" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">clip rectangle, or %NULL if the output should not be clipped</doc>
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a style detail</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x origin of the extension</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y origin of the extension</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of the extension</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of the extension</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="gap_side" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the side on to which the extension is attached</doc>
+          <type name="PositionType" c:type="GtkPositionType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_flat_box" c:identifier="gtk_paint_flat_box">
+      <doc xml:whitespace="preserve">Draws a flat box on @window with the given parameters.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="style" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkStyle</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </parameter>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="state_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="shadow_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of shadow to draw</doc>
+          <type name="ShadowType" c:type="GtkShadowType"/>
+        </parameter>
+        <parameter name="area" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">clip rectangle, or %NULL if the output should not be clipped</doc>
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a style detail</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x origin of the box</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y origin of the box</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width of the box</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the height of the box</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_focus" c:identifier="gtk_paint_focus">
+      <doc xml:whitespace="preserve">Draws a focus indicator around the given rectangle on @window using the
+given style.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="style" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkStyle</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </parameter>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="state_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="area" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">clip rectangle, or %NULL if the output should not be clipped</doc>
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a style detail</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the x origin of the rectangle around which to draw a focus indicator</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the y origin of the rectangle around which to draw a focus indicator</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width of the rectangle around which to draw a focus indicator</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the height of the rectangle around which to draw a focus indicator</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_handle" c:identifier="gtk_paint_handle">
+      <doc xml:whitespace="preserve">Draws a handle as used in #GtkHandleBox and #GtkPaned.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="style" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkStyle</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </parameter>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="state_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="shadow_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">type of shadow to draw</doc>
+          <type name="ShadowType" c:type="GtkShadowType"/>
+        </parameter>
+        <parameter name="area" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">clip rectangle, or %NULL if the output should not be clipped</doc>
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a style detail</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x origin of the handle</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y origin of the handle</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">with of the handle</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">height of the handle</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="orientation" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the orientation of the handle</doc>
+          <type name="Orientation" c:type="GtkOrientation"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_hline" c:identifier="gtk_paint_hline">
+      <doc xml:whitespace="preserve">Draws a horizontal line from (@x1, @y) to (@x2, @y) in @window
+using the given style and state.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="style" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkStyle</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </parameter>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="state_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="area" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">rectangle to which the output is clipped, or %NULL if the output should not be clipped</doc>
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a style detail</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="x1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the starting x coordinate</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="x2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ending x coordinate</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the y coordinate</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_layout" c:identifier="gtk_paint_layout">
+      <doc xml:whitespace="preserve">Draws a layout on @window using the given parameters.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="style" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkStyle</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </parameter>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="state_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="use_text" transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether to use the text or foreground graphics context of @style</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="area" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">clip rectangle, or %NULL if the output should not be clipped</doc>
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a style detail</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x origin</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y origin</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="layout" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the layout to draw</doc>
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_option" c:identifier="gtk_paint_option">
+      <doc xml:whitespace="preserve">Draws a radio button indicator in the given rectangle on @window with 
+the given parameters.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="style" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkStyle</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </parameter>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="state_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="shadow_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of shadow to draw</doc>
+          <type name="ShadowType" c:type="GtkShadowType"/>
+        </parameter>
+        <parameter name="area" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">clip rectangle, or %NULL if the output should not be clipped</doc>
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a style detail</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x origin of the rectangle to draw the option in</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y origin of the rectangle to draw the option in</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width of the rectangle to draw the option in</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the height of the rectangle to draw the option in</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_resize_grip" c:identifier="gtk_paint_resize_grip">
+      <doc xml:whitespace="preserve">Draws a resize grip in the given rectangle on @window using the given
+parameters.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="style" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkStyle</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </parameter>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="state_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="area" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">clip rectangle, or %NULL if the output should not be clipped</doc>
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a style detail</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="edge" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the edge in which to draw the resize grip</doc>
+          <type name="Gdk.WindowEdge" c:type="GdkWindowEdge"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the x origin of the rectangle in which to draw the resize grip</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the y origin of the rectangle in which to draw the resize grip</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width of the rectangle in which to draw the resize grip</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the height of the rectangle in which to draw the resize grip</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_shadow" c:identifier="gtk_paint_shadow">
+      <doc xml:whitespace="preserve">Draws a shadow around the given rectangle in @window 
+using the given style and state and shadow type.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="style" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkStyle</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </parameter>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="state_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="shadow_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">type of shadow to draw</doc>
+          <type name="ShadowType" c:type="GtkShadowType"/>
+        </parameter>
+        <parameter name="area" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">clip rectangle or %NULL if the output should not be clipped</doc>
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a style detail</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x origin of the rectangle</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y origin of the rectangle</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of the rectangle</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of the rectangle</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_shadow_gap" c:identifier="gtk_paint_shadow_gap">
+      <doc xml:whitespace="preserve">Draws a shadow around the given rectangle in @window 
+using the given style and state and shadow type, leaving a 
+gap in one side.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="style" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkStyle</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </parameter>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="state_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="shadow_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">type of shadow to draw</doc>
+          <type name="ShadowType" c:type="GtkShadowType"/>
+        </parameter>
+        <parameter name="area" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">clip rectangle, or %NULL if the output should not be clipped</doc>
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a style detail</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x origin of the rectangle</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y origin of the rectangle</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of the rectangle</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of the rectangle</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="gap_side" transfer-ownership="none">
+          <doc xml:whitespace="preserve">side in which to leave the gap</doc>
+          <type name="PositionType" c:type="GtkPositionType"/>
+        </parameter>
+        <parameter name="gap_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">starting position of the gap</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="gap_width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of the gap</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_slider" c:identifier="gtk_paint_slider">
+      <doc xml:whitespace="preserve">Draws a slider in the given rectangle on @window using the
+given style and orientation.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="style" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkStyle</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </parameter>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="state_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="shadow_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a shadow</doc>
+          <type name="ShadowType" c:type="GtkShadowType"/>
+        </parameter>
+        <parameter name="area" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">clip rectangle, or %NULL if the output should not be clipped</doc>
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a style detail</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the x origin of the rectangle in which to draw a slider</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the y origin of the rectangle in which to draw a slider</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width of the rectangle in which to draw a slider</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the height of the rectangle in which to draw a slider</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="orientation" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the orientation to be used</doc>
+          <type name="Orientation" c:type="GtkOrientation"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_spinner"
+              c:identifier="gtk_paint_spinner"
+              version="2.20">
+      <doc xml:whitespace="preserve">Draws a spinner on @window using the given parameters.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="style" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkStyle</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </parameter>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="state_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="area" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">clip rectangle, or %NULL if the output should not be clipped</doc>
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the widget (may be %NULL)</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a style detail (may be %NULL)</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="step" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the nth step, a value between 0 and #GtkSpinner:num-steps</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the x origin of the rectangle in which to draw the spinner</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the y origin of the rectangle in which to draw the spinner</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width of the rectangle in which to draw the spinner</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the height of the rectangle in which to draw the spinner</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_tab" c:identifier="gtk_paint_tab">
+      <doc xml:whitespace="preserve">Draws an option menu tab (i.e. the up and down pointing arrows)
+in the given rectangle on @window using the given parameters.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="style" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkStyle</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </parameter>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="state_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="shadow_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of shadow to draw</doc>
+          <type name="ShadowType" c:type="GtkShadowType"/>
+        </parameter>
+        <parameter name="area" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">clip rectangle, or %NULL if the output should not be clipped</doc>
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a style detail</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x origin of the rectangle to draw the tab in</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y origin of the rectangle to draw the tab in</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width of the rectangle to draw the tab in</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the height of the rectangle to draw the tab in</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_vline" c:identifier="gtk_paint_vline">
+      <doc xml:whitespace="preserve">Draws a vertical line from (@x, @y1_) to (@x, @y2_) in @window
+using the given style and state.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="style" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkStyle</doc>
+          <type name="Style" c:type="GtkStyle*"/>
+        </parameter>
+        <parameter name="window" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkWindow</doc>
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="state_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="area" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">rectangle to which the output is clipped, or %NULL if the output should not be clipped</doc>
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the widget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a style detail</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="y1_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the starting y coordinate</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y2_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ending y coordinate</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the x coordinate</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paper_size_get_default"
+              c:identifier="gtk_paper_size_get_default"
+              version="2.10">
+      <doc xml:whitespace="preserve">Returns the name of the default paper size, which 
+depends on the current locale.  
+is owned by GTK+ and should not be modified.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the name of the default paper size. The string</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="paper_size_get_paper_sizes"
+              c:identifier="gtk_paper_size_get_paper_sizes"
+              version="2.12">
+      <doc xml:whitespace="preserve">Creates a list of known paper sizes.
+allocated #GtkPaperSize objects</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a newly allocated list of newly</doc>
+        <type name="GLib.List" c:type="GList*">
+          <type name="PaperSize"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="include_custom" transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether to include custom paper sizes as defined in the page setup dialog</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_args" c:identifier="gtk_parse_args">
+      <doc xml:whitespace="preserve">Parses command line arguments, and initializes global
+attributes of GTK+, but does not actually open a connection
+to a display. (See gdk_display_open(), gdk_get_display_arg_name())
+Any arguments used by GTK+ or GDK are removed from the array and
+You shouldn't call this function explicitely if you are using
+gtk_init(), or gtk_init_check().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if initialization succeeded, otherwise %FALSE.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the number of command line arguments.</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the array of command line arguments.</doc>
+          <array c:type="char***">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="print_error_quark"
+              c:identifier="gtk_print_error_quark"
+              version="2.10">
+      <doc xml:whitespace="preserve">Registers an error quark for #GtkPrintOperation if necessary.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The error quark used for #GtkPrintOperation errors.</doc>
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="print_run_page_setup_dialog"
+              c:identifier="gtk_print_run_page_setup_dialog"
+              introspectable="0">
+      <return-value>
+        <type name="PageSetup" c:type="GtkPageSetup*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent" transfer-ownership="none">
+          <type name="Window" c:type="GtkWindow*"/>
+        </parameter>
+        <parameter name="page_setup" transfer-ownership="none">
+          <type name="PageSetup" c:type="GtkPageSetup*"/>
+        </parameter>
+        <parameter name="settings" transfer-ownership="none">
+          <type name="PrintSettings" c:type="GtkPrintSettings*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="print_run_page_setup_dialog_async"
+              c:identifier="gtk_print_run_page_setup_dialog_async"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent" transfer-ownership="none">
+          <type name="Window" c:type="GtkWindow*"/>
+        </parameter>
+        <parameter name="page_setup" transfer-ownership="none">
+          <type name="PageSetup" c:type="GtkPageSetup*"/>
+        </parameter>
+        <parameter name="settings" transfer-ownership="none">
+          <type name="PrintSettings" c:type="GtkPrintSettings*"/>
+        </parameter>
+        <parameter name="done_cb" transfer-ownership="none" closure="4">
+          <type name="PageSetupDoneFunc" c:type="GtkPageSetupDoneFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="propagate_event" c:identifier="gtk_propagate_event">
+      <doc xml:whitespace="preserve">Sends an event to a widget, propagating the event to parent widgets
+if the event remains unhandled. Events received by GTK+ from GDK
+normally begin in gtk_main_do_event(). Depending on the type of
+event, existence of modal dialogs, grabs, etc., the event may be
+propagated; if so, this function is used. gtk_propagate_event()
+calls gtk_widget_event() on each widget it decides to send the
+event to.  So gtk_widget_event() is the lowest-level function; it
+simply emits the "event" and possibly an event-specific signal on a
+widget.  gtk_propagate_event() is a bit higher-level, and
+gtk_main_do_event() is the highest level.
+All that said, you most likely don't want to use any of these
+functions; synthesizing events is rarely needed. Consider asking on
+the mailing list for better ways to achieve your goals. For
+example, use gdk_window_invalidate_rect() or
+gtk_widget_queue_draw() instead of making up expose events.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="event" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an event</doc>
+          <type name="Gdk.Event" c:type="GdkEvent*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="quit_add" c:identifier="gtk_quit_add" introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="main_level" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="function" transfer-ownership="none" closure="2">
+          <type name="Function" c:type="GtkFunction"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="quit_add_destroy" c:identifier="gtk_quit_add_destroy">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="main_level" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GtkObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="quit_add_full"
+              c:identifier="gtk_quit_add_full"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="main_level" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="function" transfer-ownership="none">
+          <type name="Function" c:type="GtkFunction"/>
+        </parameter>
+        <parameter name="marshal"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="3"
+                   destroy="4">
+          <type name="CallbackMarshal" c:type="GtkCallbackMarshal"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="async">
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="quit_remove" c:identifier="gtk_quit_remove">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="quit_handler_id" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="quit_remove_by_data"
+              c:identifier="gtk_quit_remove_by_data">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_add_default_file"
+              c:identifier="gtk_rc_add_default_file">
+      <doc xml:whitespace="preserve">Adds a file to the list of files to be parsed at the
+end of gtk_init().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the pathname to the file. If @filename is not absolute, it is searched in the current directory.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_find_module_in_path"
+              c:identifier="gtk_rc_find_module_in_path">
+      <doc xml:whitespace="preserve">Searches for a theme engine in the GTK+ search path. This function
+is not useful for applications and should not be used.
+otherwise %NULL.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">The filename, if found (must be freed with g_free()),</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="module_file" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of a theme engine</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_find_pixmap_in_path"
+              c:identifier="gtk_rc_find_pixmap_in_path">
+      <doc xml:whitespace="preserve">Looks up a file in pixmap path for the specified #GtkSettings.
+If the file is not found, it outputs a warning message using
+g_warning() and returns %NULL.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the filename.</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="settings" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkSettings</doc>
+          <type name="Settings" c:type="GtkSettings*"/>
+        </parameter>
+        <parameter name="scanner" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Scanner used to get line number information for the warning message, or %NULL</doc>
+          <type name="GLib.Scanner" c:type="GScanner*"/>
+        </parameter>
+        <parameter name="pixmap_file" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the pixmap file to locate.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_get_default_files"
+              c:identifier="gtk_rc_get_default_files">
+      <doc xml:whitespace="preserve">Retrieves the current list of RC files that will be parsed
+at the end of gtk_init().
+This memory is owned by GTK+ and must not be freed by the application.
+If you want to store this information, you should make a copy.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">A %NULL-terminated array of filenames.</doc>
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+    </function>
+    <function name="rc_get_im_module_file"
+              c:identifier="gtk_rc_get_im_module_file">
+      <doc xml:whitespace="preserve">Obtains the path to the IM modules file. See the documentation
+of the &lt;link linkend="im-module-file"&gt;&lt;envar&gt;GTK_IM_MODULE_FILE&lt;/envar&gt;&lt;/link&gt;
+environment variable for more details.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a newly-allocated string containing the name of the file listing the IM modules available for loading</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="rc_get_im_module_path"
+              c:identifier="gtk_rc_get_im_module_path">
+      <doc xml:whitespace="preserve">Obtains the path in which to look for IM modules. See the documentation
+of the &lt;link linkend="im-module-path"&gt;&lt;envar&gt;GTK_PATH&lt;/envar&gt;&lt;/link&gt;
+environment variable for more details about looking up modules. This
+function is useful solely for utilities supplied with GTK+ and should
+not be used by applications under normal circumstances.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a newly-allocated string containing the path in which to look for IM modules.</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="rc_get_module_dir" c:identifier="gtk_rc_get_module_dir">
+      <doc xml:whitespace="preserve">Returns a directory in which GTK+ looks for theme engines.
+For full information about the search for theme engines,
+see the docs for &lt;envar&gt;GTK_PATH&lt;/envar&gt; in
+&lt;xref linkend="gtk-running"/&gt;.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the directory. (Must be freed with g_free())</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="rc_get_style"
+              c:identifier="gtk_rc_get_style"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Finds all matching RC styles for a given widget,
+composites them together, and then creates a 
+#GtkStyle representing the composite appearance.
+(GTK+ actually keeps a cache of previously 
+created styles, so a new style may not be
+created.)
+to the returned style, so if you want to save this
+style around, you should add a reference yourself.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the resulting style. No refcount is added</doc>
+        <type name="Style" c:type="GtkStyle*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_get_style_by_paths"
+              c:identifier="gtk_rc_get_style_by_paths">
+      <doc xml:whitespace="preserve">Creates up a #GtkStyle from styles defined in a RC file by providing
+the raw components used in matching. This function may be useful
+when creating pseudo-widgets that should be themed like widgets but
+don't actually have corresponding GTK+ widgets. An example of this
+would be items inside a GNOME canvas widget.
+The action of gtk_rc_get_style() is similar to:
+|[
+gtk_widget_path (widget, NULL, &amp;path, NULL);
+gtk_widget_class_path (widget, NULL, &amp;class_path, NULL);
+gtk_rc_get_style_by_paths (gtk_widget_get_settings (widget), 
+path, class_path,
+G_OBJECT_TYPE (widget));
+]|
+supplied paths, or %NULL if nothing matching was specified and the
+default style should be used. The returned value is owned by GTK+
+as part of an internal cache, so you must call g_object_ref() on
+the returned value if you want to keep a reference to it.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">A style created by matching with the</doc>
+        <type name="Style" c:type="GtkStyle*"/>
+      </return-value>
+      <parameters>
+        <parameter name="settings" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkSettings object</doc>
+          <type name="Settings" c:type="GtkSettings*"/>
+        </parameter>
+        <parameter name="widget_path" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the widget path to use when looking up the style, or %NULL if no matching against the widget path should be done</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="class_path" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the class path to use when looking up the style, or %NULL if no matching against the class path should be done.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a type that will be used along with parent types of this type when matching against class styles, or #G_TYPE_NONE</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_get_theme_dir" c:identifier="gtk_rc_get_theme_dir">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="rc_parse" c:identifier="gtk_rc_parse">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_parse_color" c:identifier="gtk_rc_parse_color">
+      <doc xml:whitespace="preserve">Parses a color in the &lt;link linkend="color=format"&gt;format&lt;/link&gt; expected
+in a RC file. 
+Note that theme engines should use gtk_rc_parse_color_full() in 
+order to support symbolic colors.
+that was expected but not found</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%G_TOKEN_NONE if parsing succeeded, otherwise the token</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="scanner" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GScanner</doc>
+          <type name="GLib.Scanner" c:type="GScanner*"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to a #GdkColor structure in which to store the result</doc>
+          <type name="Gdk.Color" c:type="GdkColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_parse_color_full"
+              c:identifier="gtk_rc_parse_color_full"
+              version="2.12">
+      <doc xml:whitespace="preserve">Parses a color in the &lt;link linkend="color=format"&gt;format&lt;/link&gt; expected
+in a RC file. If @style is not %NULL, it will be consulted to resolve
+references to symbolic colors.
+that was expected but not found</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%G_TOKEN_NONE if parsing succeeded, otherwise the token</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="scanner" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GScanner</doc>
+          <type name="GLib.Scanner" c:type="GScanner*"/>
+        </parameter>
+        <parameter name="style" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a #GtkRcStyle, or %NULL</doc>
+          <type name="RcStyle" c:type="GtkRcStyle*"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to a #GdkColor structure in which to store the result</doc>
+          <type name="Gdk.Color" c:type="GdkColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_parse_priority" c:identifier="gtk_rc_parse_priority">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="scanner" transfer-ownership="none">
+          <type name="GLib.Scanner" c:type="GScanner*"/>
+        </parameter>
+        <parameter name="priority" transfer-ownership="none">
+          <type name="PathPriorityType" c:type="GtkPathPriorityType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_parse_state" c:identifier="gtk_rc_parse_state">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="scanner" transfer-ownership="none">
+          <type name="GLib.Scanner" c:type="GScanner*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <type name="StateType" c:type="GtkStateType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_parse_string" c:identifier="gtk_rc_parse_string">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="rc_string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_property_parse_border"
+              c:identifier="gtk_rc_property_parse_border">
+      <doc xml:whitespace="preserve">A #GtkRcPropertyParser for use with gtk_settings_install_property_parser()
+or gtk_widget_class_install_style_property_parser() which parses
+borders in the form 
+&lt;literal&gt;"{ left, right, top, bottom }"&lt;/literal&gt; for integers 
+%left, %right, %top and %bottom.
+has been set to the resulting #GtkBorder.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @gstring could be parsed and @property_value</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GParamSpec</doc>
+          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <parameter name="gstring" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GString to be parsed</doc>
+          <type name="GLib.String" c:type="GString*"/>
+        </parameter>
+        <parameter name="property_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue which must hold boxed values.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_property_parse_color"
+              c:identifier="gtk_rc_property_parse_color">
+      <doc xml:whitespace="preserve">A #GtkRcPropertyParser for use with gtk_settings_install_property_parser()
+or gtk_widget_class_install_style_property_parser() which parses a
+color given either by its name or in the form 
+&lt;literal&gt;{ red, green, blue }&lt;/literal&gt; where %red, %green and
+%blue are integers between 0 and 65535 or floating-point numbers
+between 0 and 1.
+has been set to the resulting #GdkColor.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @gstring could be parsed and @property_value</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GParamSpec</doc>
+          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <parameter name="gstring" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GString to be parsed</doc>
+          <type name="GLib.String" c:type="GString*"/>
+        </parameter>
+        <parameter name="property_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue which must hold #GdkColor values.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_property_parse_enum"
+              c:identifier="gtk_rc_property_parse_enum">
+      <doc xml:whitespace="preserve">A #GtkRcPropertyParser for use with gtk_settings_install_property_parser()
+or gtk_widget_class_install_style_property_parser() which parses a single
+enumeration value.
+The enumeration value can be specified by its name, its nickname or
+its numeric value. For consistency with flags parsing, the value
+may be surrounded by parentheses.
+has been set to the resulting #GEnumValue.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @gstring could be parsed and @property_value</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GParamSpec</doc>
+          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <parameter name="gstring" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GString to be parsed</doc>
+          <type name="GLib.String" c:type="GString*"/>
+        </parameter>
+        <parameter name="property_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue which must hold enum values.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_property_parse_flags"
+              c:identifier="gtk_rc_property_parse_flags">
+      <doc xml:whitespace="preserve">A #GtkRcPropertyParser for use with gtk_settings_install_property_parser()
+or gtk_widget_class_install_style_property_parser() which parses flags. 
+Flags can be specified by their name, their nickname or
+numerically. Multiple flags can be specified in the form 
+&lt;literal&gt;"( flag1 | flag2 | ... )"&lt;/literal&gt;.
+has been set to the resulting flags value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @gstring could be parsed and @property_value</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GParamSpec</doc>
+          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <parameter name="gstring" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GString to be parsed</doc>
+          <type name="GLib.String" c:type="GString*"/>
+        </parameter>
+        <parameter name="property_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue which must hold flags values.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_property_parse_requisition"
+              c:identifier="gtk_rc_property_parse_requisition">
+      <doc xml:whitespace="preserve">A #GtkRcPropertyParser for use with gtk_settings_install_property_parser()
+or gtk_widget_class_install_style_property_parser() which parses a
+requisition in the form 
+&lt;literal&gt;"{ width, height }"&lt;/literal&gt; for integers %width and %height.
+has been set to the resulting #GtkRequisition.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @gstring could be parsed and @property_value</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GParamSpec</doc>
+          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <parameter name="gstring" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GString to be parsed</doc>
+          <type name="GLib.String" c:type="GString*"/>
+        </parameter>
+        <parameter name="property_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue which must hold boxed values.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_reparse_all" c:identifier="gtk_rc_reparse_all">
+      <doc xml:whitespace="preserve">If the modification time on any previously read file for the
+default #GtkSettings has changed, discard all style information
+and then reread all previously read RC files.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the files were reread.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="rc_reparse_all_for_settings"
+              c:identifier="gtk_rc_reparse_all_for_settings">
+      <doc xml:whitespace="preserve">If the modification time on any previously read file
+for the given #GtkSettings has changed, discard all style information
+and then reread all previously read RC files.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the files were reread.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="settings" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkSettings</doc>
+          <type name="Settings" c:type="GtkSettings*"/>
+        </parameter>
+        <parameter name="force_load" transfer-ownership="none">
+          <doc xml:whitespace="preserve">load whether or not anything changed</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_reset_styles"
+              c:identifier="gtk_rc_reset_styles"
+              version="2.4">
+      <doc xml:whitespace="preserve">This function recomputes the styles for all widgets that use a
+particular #GtkSettings object. (There is one #GtkSettings object
+per #GdkScreen, see gtk_settings_get_for_screen()); It is useful
+when some global parameter has changed that affects the appearance
+of all widgets, because when a widget gets a new style, it will
+both redraw and recompute any cached information about its
+appearance. As an example, it is used when the default font size
+set by the operating system changes. Note that this function
+doesn't affect widgets that have a style set explicitely on them
+with gtk_widget_set_style().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="settings" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkSettings</doc>
+          <type name="Settings" c:type="GtkSettings*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_scanner_new"
+              c:identifier="gtk_rc_scanner_new"
+              introspectable="0">
+      <return-value>
+        <type name="GLib.Scanner" c:type="GScanner*"/>
+      </return-value>
+    </function>
+    <function name="rc_set_default_files"
+              c:identifier="gtk_rc_set_default_files">
+      <doc xml:whitespace="preserve">Sets the list of files that GTK+ will read at the
+end of gtk_init().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="filenames" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A %NULL-terminated list of filenames.</doc>
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="recent_chooser_error_quark"
+              c:identifier="gtk_recent_chooser_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="recent_manager_error_quark"
+              c:identifier="gtk_recent_manager_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="rgb_to_hsv" c:identifier="gtk_rgb_to_hsv" version="2.14">
+      <doc xml:whitespace="preserve">Converts a color from RGB space to HSV.
+Input values must be in the [0.0, 1.0] range;
+output values will be in the same range.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="r" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Red</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </parameter>
+        <parameter name="g" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Green</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Blue</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </parameter>
+        <parameter name="h" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Return value for the hue component</doc>
+          <type name="gdouble" c:type="gdouble*"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Return value for the saturation component</doc>
+          <type name="gdouble" c:type="gdouble*"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Return value for the value component</doc>
+          <type name="gdouble" c:type="gdouble*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_add_target"
+              c:identifier="gtk_selection_add_target">
+      <doc xml:whitespace="preserve">Appends a specified target to the list of supported targets for a 
+given widget and selection.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkTarget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="selection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the selection</doc>
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="target" transfer-ownership="none">
+          <doc xml:whitespace="preserve">target to add.</doc>
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="info" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A unsigned integer which will be passed back to the application.</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_add_targets"
+              c:identifier="gtk_selection_add_targets">
+      <doc xml:whitespace="preserve">Prepends a table of targets to the list of supported targets
+for a given widget and selection.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="selection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the selection</doc>
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="targets" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a table of targets to add</doc>
+          <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+        </parameter>
+        <parameter name="ntargets" transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of entries in @targets</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_clear_targets"
+              c:identifier="gtk_selection_clear_targets">
+      <doc xml:whitespace="preserve">Remove all targets registered for the given selection for the
+widget.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="selection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an atom representing a selection</doc>
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_convert" c:identifier="gtk_selection_convert">
+      <doc xml:whitespace="preserve">Requests the contents of a selection. When received, 
+a "selection-received" signal will be generated.
+request. (e.g., there was already a request in process for
+this widget).</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if requested succeeded. %FALSE if we could not process</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The widget which acts as requestor</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="selection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Which selection to get</doc>
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="target" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Form of information desired (e.g., STRING)</doc>
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Time of request (usually of triggering event)</doc>
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_owner_set"
+              c:identifier="gtk_selection_owner_set">
+      <doc xml:whitespace="preserve">Claims ownership of a given selection for a particular widget,
+or, if @widget is %NULL, release ownership of the selection.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the operation succeeded</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a #GtkWidget, or %NULL.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="selection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an interned atom representing the selection to claim</doc>
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">timestamp with which to claim the selection</doc>
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_owner_set_for_display"
+              c:identifier="gtk_selection_owner_set_for_display"
+              version="2.2">
+      <doc xml:whitespace="preserve">Claim ownership of a given selection for a particular widget, or,
+if @widget is %NULL, release ownership of the selection.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if the operation succeeded</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #Gdkdisplay where the selection is set</doc>
+          <type name="Gdk.Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">new selection owner (a #GdkWidget), or %NULL.</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="selection" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an interned atom representing the selection to claim.</doc>
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">timestamp with which to claim the selection</doc>
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_remove_all"
+              c:identifier="gtk_selection_remove_all">
+      <doc xml:whitespace="preserve">Removes all handlers and unsets ownership of all 
+selections for a widget. Called when widget is being
+destroyed. This function will not generally be
+called by applications.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_debug_flags" c:identifier="gtk_set_debug_flags">
+      <doc xml:whitespace="preserve">Sets the GTK+ debug flags.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_locale" c:identifier="gtk_set_locale">
+      <doc xml:whitespace="preserve">Initializes internationalization support for GTK+. gtk_init()
+automatically does this, so there is typically no point
+in calling this function.
+If you are calling this function because you changed the locale
+after GTK+ is was initialized, then calling this function
+may help a bit. (Note, however, that changing the locale
+after GTK+ is initialized may produce inconsistent results and
+is not really supported.)
+In detail - sets the current locale according to the
+program environment. This is the same as calling the C library function
+&lt;literal&gt;setlocale (LC_ALL, "")&lt;/literal&gt; but also takes care of the 
+locale specific setup of the windowing system used by GDK.
+form lang_COUNTRY, where lang is an ISO-639 language code, and
+COUNTRY is an ISO-3166 country code. On Unix, this form matches the
+result of the setlocale(); it is also used on other machines, such as 
+Windows, where the C library returns a different result. The string is 
+owned by GTK+ and should not be modified or freed.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a string corresponding to the locale set, typically in the</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="show_about_dialog"
+              c:identifier="gtk_show_about_dialog"
+              version="2.6"
+              introspectable="0">
+      <doc xml:whitespace="preserve">This is a convenience function for showing an application's about box.
+The constructed dialog is associated with the parent window and
+reused for future invocations of this function.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">transient parent, or %NULL for none</doc>
+          <type name="Window" c:type="GtkWindow*"/>
+        </parameter>
+        <parameter name="first_property_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the first property</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="show_uri"
+              c:identifier="gtk_show_uri"
+              version="2.14"
+              throws="1">
+      <doc xml:whitespace="preserve">This is a convenience function for launching the default application
+to show the uri. The uri must be of a form understood by GIO. Typical
+examples are
+&lt;simplelist&gt;
+&lt;member&gt;&lt;filename&gt;file:///home/gnome/pict.jpg&lt;/filename&gt;&lt;/member&gt;
+&lt;member&gt;&lt;filename&gt;http://www.gnome.org&lt;/filename&gt;&lt;/member&gt;
+&lt;member&gt;&lt;filename&gt;mailto:me&amp;commat;gnome.org&lt;/filename&gt;&lt;/member&gt;
+&lt;/simplelist&gt;
+Ideally the timestamp is taken from the event triggering
+the gtk_show_uri() call. If timestamp is not known you can take
+%GDK_CURRENT_TIME.
+This function can be used as a replacement for gnome_vfs_url_show()
+and gnome_url_show().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE on success, %FALSE on error.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="screen" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">screen to show the uri on or %NULL for the default screen</doc>
+          <type name="Gdk.Screen" c:type="GdkScreen*"/>
+        </parameter>
+        <parameter name="uri" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the uri to show</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="timestamp" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a timestamp to prevent focus stealing.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="stock_add" c:identifier="gtk_stock_add">
+      <doc xml:whitespace="preserve">Registers each of the stock items in @items. If an item already
+exists with the same stock ID as one of the @items, the old item
+gets replaced. The stock items are copied, so GTK+ does not hold
+any pointer into @items and @items can be freed. Use
+gtk_stock_add_static() if @items is persistent and GTK+ need not
+copy the array.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="items" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkStockItem or array of items</doc>
+          <type name="StockItem" c:type="GtkStockItem*"/>
+        </parameter>
+        <parameter name="n_items" transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of #GtkStockItem in @items</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="stock_add_static" c:identifier="gtk_stock_add_static">
+      <doc xml:whitespace="preserve">Same as gtk_stock_add(), but doesn't copy @items, so</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="items" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkStockItem or array of #GtkStockItem</doc>
+          <type name="StockItem" c:type="GtkStockItem*"/>
+        </parameter>
+        <parameter name="n_items" transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of items</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="stock_list_ids" c:identifier="gtk_stock_list_ids">
+      <doc xml:whitespace="preserve">Retrieves a list of all known stock IDs added to a #GtkIconFactory
+or registered with gtk_stock_add(). The list must be freed with g_slist_free(),
+and each string in the list must be freed with g_free().</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a list of known stock IDs</doc>
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="utf8"/>
+        </type>
+      </return-value>
+    </function>
+    <function name="stock_lookup" c:identifier="gtk_stock_lookup">
+      <doc xml:whitespace="preserve">Fills @item with the registered values for @stock_id, returning %TRUE
+if @stock_id was known.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @item was initialized</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="stock_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a stock item name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="item" transfer-ownership="none">
+          <doc xml:whitespace="preserve">stock item to initialize with values</doc>
+          <type name="StockItem" c:type="GtkStockItem*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="stock_set_translate_func"
+              c:identifier="gtk_stock_set_translate_func"
+              version="2.8">
+      <doc xml:whitespace="preserve">Sets a function to be used for translating the @label of 
+a stock item.
+If no function is registered for a translation domain,
+g_dgettext() is used.
+The function is used for all stock items whose
+to use strings different from the actual gettext translation domain
+of your application for this, as long as your #GtkTranslateFunc uses
+the correct domain when calling dgettext(). This can be useful, e.g.
+when dealing with message contexts:
+|[
+GtkStockItem items[] = { 
+{ MY_ITEM1, NC_("odd items", "Item 1"), 0, 0, "odd-item-domain" },
+{ MY_ITEM2, NC_("even items", "Item 2"), 0, 0, "even-item-domain" },
+};
+gchar *
+my_translate_func (const gchar *msgid,
+gpointer     data)
+{
+gchar *msgctxt = data;
+return (gchar*)g_dpgettext2 (GETTEXT_PACKAGE, msgctxt, msgid);
+}
+/&amp;ast; ... &amp;ast;/
+gtk_stock_add (items, G_N_ELEMENTS (items));
+gtk_stock_set_translate_func ("odd-item-domain", my_translate_func, "odd items"); 
+gtk_stock_set_translate_func ("even-item-domain", my_translate_func, "even items"); 
+]|</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="domain" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the translation domain for which @func shall be used</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <doc xml:whitespace="preserve">a #GtkTranslateFunc</doc>
+          <type name="TranslateFunc" c:type="GtkTranslateFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to @func</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="async">
+          <doc xml:whitespace="preserve">a #GDestroyNotify that is called when @data is no longer needed</doc>
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="target_table_free"
+              c:identifier="gtk_target_table_free"
+              version="2.10">
+      <doc xml:whitespace="preserve">This function frees a target table as returned by
+gtk_target_table_new_from_list()</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="targets" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkTargetEntry array</doc>
+          <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+        </parameter>
+        <parameter name="n_targets" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of entries in the array</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="target_table_new_from_list"
+              c:identifier="gtk_target_table_new_from_list"
+              version="2.10"
+              introspectable="0">
+      <doc xml:whitespace="preserve">This function creates an #GtkTargetEntry array that contains the
+same targets as the passed %list. The returned table is newly
+allocated and should be freed using gtk_target_table_free() when no
+longer needed.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the new table.</doc>
+        <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkTargetList</doc>
+          <type name="TargetList" c:type="GtkTargetList*"/>
+        </parameter>
+        <parameter name="n_targets" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for the number ot targets in the table</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="targets_include_image"
+              c:identifier="gtk_targets_include_image"
+              version="2.10">
+      <doc xml:whitespace="preserve">Determines if any of the targets in @targets can be used to
+provide a #GdkPixbuf.
+otherwise %FALSE.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @targets include a suitable target for images,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="targets" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an array of #GdkAtom&lt;!-- --&gt;s</doc>
+          <type name="Gdk.Atom" c:type="GdkAtom*"/>
+        </parameter>
+        <parameter name="n_targets" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the length of @targets</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="writable" transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether to accept only targets for which GTK+ knows how to convert a pixbuf into the format</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="targets_include_rich_text"
+              c:identifier="gtk_targets_include_rich_text"
+              version="2.10">
+      <doc xml:whitespace="preserve">Determines if any of the targets in @targets can be used to
+provide rich text.
+otherwise %FALSE.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @targets include a suitable target for rich text,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="targets" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an array of #GdkAtom&lt;!-- --&gt;s</doc>
+          <type name="Gdk.Atom" c:type="GdkAtom*"/>
+        </parameter>
+        <parameter name="n_targets" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the length of @targets</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkTextBuffer</doc>
+          <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="targets_include_text"
+              c:identifier="gtk_targets_include_text"
+              version="2.10">
+      <doc xml:whitespace="preserve">Determines if any of the targets in @targets can be used to
+provide text.
+otherwise %FALSE.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @targets include a suitable target for text,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="targets" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an array of #GdkAtom&lt;!-- --&gt;s</doc>
+          <type name="Gdk.Atom" c:type="GdkAtom*"/>
+        </parameter>
+        <parameter name="n_targets" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the length of @targets</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="targets_include_uri"
+              c:identifier="gtk_targets_include_uri"
+              version="2.10">
+      <doc xml:whitespace="preserve">Determines if any of the targets in @targets can be used to
+provide an uri list.
+otherwise %FALSE.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @targets include a suitable target for uri lists,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="targets" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an array of #GdkAtom&lt;!-- --&gt;s</doc>
+          <type name="Gdk.Atom" c:type="GdkAtom*"/>
+        </parameter>
+        <parameter name="n_targets" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the length of @targets</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_create_simple_window"
+              c:identifier="gtk_test_create_simple_window"
+              introspectable="0">
+      <return-value>
+        <type name="Widget" c:type="GtkWidget*"/>
+      </return-value>
+      <parameters>
+        <parameter name="window_title" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="dialog_text" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_create_widget"
+              c:identifier="gtk_test_create_widget"
+              introspectable="0">
+      <return-value>
+        <type name="Widget" c:type="GtkWidget*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="first_property_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_display_button_window"
+              c:identifier="gtk_test_display_button_window"
+              introspectable="0">
+      <return-value>
+        <type name="Widget" c:type="GtkWidget*"/>
+      </return-value>
+      <parameters>
+        <parameter name="window_title" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="dialog_text" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_find_label"
+              c:identifier="gtk_test_find_label"
+              introspectable="0">
+      <return-value>
+        <type name="Widget" c:type="GtkWidget*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="label_pattern" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_find_sibling"
+              c:identifier="gtk_test_find_sibling"
+              introspectable="0">
+      <return-value>
+        <type name="Widget" c:type="GtkWidget*"/>
+      </return-value>
+      <parameters>
+        <parameter name="base_widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="widget_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_find_widget"
+              c:identifier="gtk_test_find_widget"
+              introspectable="0">
+      <return-value>
+        <type name="Widget" c:type="GtkWidget*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="label_pattern" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="widget_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_init"
+              c:identifier="gtk_test_init"
+              version="2.14"
+              introspectable="0">
+      <doc xml:whitespace="preserve">This function is used to initialize a GTK+ test program.
+It will in turn call g_test_init() and gtk_init() to properly
+initialize the testing framework and graphical toolkit. It'll 
+also set the program's locale to "C" and prevent loading of rc 
+files and Gtk+ modules. This is done to make tets program
+environments as deterministic as possible.
+Like gtk_init() and g_test_init(), any known arguments will be
+processed and stripped from @argc and @argv.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="argcp" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Address of the &lt;parameter&gt;argc&lt;/parameter&gt; parameter of the main() function. Changed if any arguments were handled.</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="argvp" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Address of the &lt;parameter&gt;argv&lt;/parameter&gt; parameter of main(). Any parameters understood by g_test_init() or gtk_init() are stripped before return.</doc>
+          <type name="utf8" c:type="char***"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_list_all_types"
+              c:identifier="gtk_test_list_all_types">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_types" transfer-ownership="none">
+          <type name="guint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_register_all_types"
+              c:identifier="gtk_test_register_all_types">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="test_slider_get_value"
+              c:identifier="gtk_test_slider_get_value">
+      <return-value transfer-ownership="none">
+        <type name="gdouble" c:type="double"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_slider_set_perc"
+              c:identifier="gtk_test_slider_set_perc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="percentage" transfer-ownership="none">
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_spin_button_click"
+              c:identifier="gtk_test_spin_button_click">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="spinner" transfer-ownership="none">
+          <type name="SpinButton" c:type="GtkSpinButton*"/>
+        </parameter>
+        <parameter name="button" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="upwards" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_text_get" c:identifier="gtk_test_text_get">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_text_set" c:identifier="gtk_test_text_set">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_widget_click" c:identifier="gtk_test_widget_click">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="button" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="modifiers" transfer-ownership="none">
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_widget_send_key"
+              c:identifier="gtk_test_widget_send_key">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="keyval" transfer-ownership="none">
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="modifiers" transfer-ownership="none">
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="text_layout_draw"
+              c:identifier="gtk_text_layout_draw"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="layout" transfer-ownership="none">
+          <type c:type="GtkTextLayout*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="drawable" transfer-ownership="none">
+          <type name="Gdk.Drawable" c:type="GdkDrawable*"/>
+        </parameter>
+        <parameter name="cursor_gc" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="x_offset" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y_offset" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="widgets" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList**">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_get_row_drag_data"
+              c:identifier="gtk_tree_get_row_drag_data">
+      <doc xml:whitespace="preserve">Obtains a @tree_model and @path from selection data of target type
+%GTK_TREE_MODEL_ROW. Normally called from a drag_data_received handler.
+This function can only be used if @selection_data originates from the same
+process that's calling this function, because a pointer to the tree model
+is being passed around. If you aren't in the same process, then you'll
+get memory corruption. In the #GtkTreeDragDest drag_data_received handler,
+you can assume that selection data of type %GTK_TREE_MODEL_ROW is
+in from the current process. The returned path must be freed with
+gtk_tree_path_free().
+is otherwise valid</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @selection_data had target type %GTK_TREE_MODEL_ROW and</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="selection_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkSelectionData</doc>
+          <type name="SelectionData" c:type="GtkSelectionData*"/>
+        </parameter>
+        <parameter name="tree_model" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkTreeModel</doc>
+          <type name="TreeModel" c:type="GtkTreeModel**"/>
+        </parameter>
+        <parameter name="path" transfer-ownership="none">
+          <doc xml:whitespace="preserve">row in @tree_model</doc>
+          <type name="TreePath" c:type="GtkTreePath**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_row_reference_deleted"
+              c:identifier="gtk_tree_row_reference_deleted">
+      <doc xml:whitespace="preserve">Lets a set of row reference created by gtk_tree_row_reference_new_proxy()
+know that the model emitted the "row_deleted" signal.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="proxy" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GObject</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="path" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The path position that was deleted</doc>
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_row_reference_inserted"
+              c:identifier="gtk_tree_row_reference_inserted">
+      <doc xml:whitespace="preserve">Lets a set of row reference created by gtk_tree_row_reference_new_proxy()
+know that the model emitted the "row_inserted" signal.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="proxy" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GObject</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="path" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The row position that was inserted</doc>
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_row_reference_reordered"
+              c:identifier="gtk_tree_row_reference_reordered">
+      <doc xml:whitespace="preserve">Lets a set of row reference created by gtk_tree_row_reference_new_proxy()
+know that the model emitted the "rows_reordered" signal.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="proxy" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GObject</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="path" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The parent path of the reordered signal</doc>
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </parameter>
+        <parameter name="iter" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The iter pointing to the parent of the reordered</doc>
+          <type name="TreeIter" c:type="GtkTreeIter*"/>
+        </parameter>
+        <parameter name="new_order" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The new order of rows</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_set_row_drag_data"
+              c:identifier="gtk_tree_set_row_drag_data">
+      <doc xml:whitespace="preserve">Sets selection data of target type %GTK_TREE_MODEL_ROW. Normally used
+in a drag_data_get handler.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the #GtkSelectionData had the proper target type to allow us to set a tree row</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="selection_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">some #GtkSelectionData</doc>
+          <type name="SelectionData" c:type="GtkSelectionData*"/>
+        </parameter>
+        <parameter name="tree_model" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkTreeModel</doc>
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </parameter>
+        <parameter name="path" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a row in @tree_model</doc>
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="true" c:identifier="gtk_true">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+  </namespace>
+</repository>
diff --git a/basis/gtk/authors.txt b/basis/gtk/authors.txt
new file mode 100644 (file)
index 0000000..ce9bcc8
--- /dev/null
@@ -0,0 +1 @@
+Anton Gorenko
\ No newline at end of file
diff --git a/basis/gtk/ffi/ffi.factor b/basis/gtk/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..1a4c3eb
--- /dev/null
@@ -0,0 +1,34 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.destructors alien.libraries
+alien.syntax combinators gobject-introspection
+gobject-introspection.standard-types kernel pango.ffi system
+vocabs.loader ;
+IN: gtk.ffi
+
+<<
+"atk.ffi" require
+"gdk.ffi" require
+>>
+
+LIBRARY: gtk
+
+<<
+"gtk" {
+    { [ os winnt? ] [ "libgtk-win32-2.0-0.dll" cdecl add-library ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgtk-x11-2.0.so" cdecl add-library ] }
+} cond
+>>
+
+IMPLEMENT-STRUCTS: GtkTreeIter ;
+
+GIR: vocab:gtk/Gtk-3.0.gir
+
+DESTRUCTOR: gtk_widget_destroy
+
+! <workaround
+FORGET: gtk_im_context_get_preedit_string
+FUNCTION: void
+gtk_im_context_get_preedit_string ( GtkIMContext* imcontext, gchar** str, PangoAttrList** attrs, gint* cursor_pos ) ;
+! workaround>
diff --git a/basis/gtk/gl/GtkGLExt-1.0.gir b/basis/gtk/gl/GtkGLExt-1.0.gir
new file mode 100644 (file)
index 0000000..01b4bd0
--- /dev/null
@@ -0,0 +1,213 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="Atk" version="1.0"/>
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gdk" version="3.0"/>
+  <include name="GdkGLExt" version="1.0"/>
+  <include name="GdkPixbuf" version="2.0"/>
+  <include name="Gio" version="2.0"/>
+  <include name="Gtk" version="3.0"/>
+  <include name="Pango" version="1.0"/>
+  <include name="cairo" version="1.0"/>
+  <package name="gtkglext-1.0"/>
+  <namespace name="GtkGL"
+             version="1.0"
+             shared-library="libgtkglext-x11-1.0.so.0"
+             c:identifier-prefixes="GtkGL,Gtk"
+             c:symbol-prefixes="gtk_gl,gtk">
+    <bitfield name="DebugFlag" c:type="GtkGLDebugFlag">
+      <member name="misc" value="1" c:identifier="GTK_GL_DEBUG_MISC"/>
+      <member name="func" value="2" c:identifier="GTK_GL_DEBUG_FUNC"/>
+    </bitfield>
+    <function name="init" c:identifier="gtk_gl_init">
+      <doc xml:whitespace="preserve">Call this function before using any other GtkGLExt functions in your
+applications.  It will initialize everything needed to operate the library
+and parses some standard command line options. @argc and
+never see those standard arguments.
+&lt;note&gt;&lt;para&gt;
+This function will terminate your program if it was unable to initialize
+the library for some reason. If you want your program to fall back to a
+textual interface you want to call gtk_gl_init_check() instead.
+&lt;/para&gt;&lt;/note&gt;</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">Address of the &lt;parameter&gt;argc&lt;/parameter&gt; parameter of your &lt;function&gt;main()&lt;/function&gt; function. Changed if any arguments were handled.</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">Address of the &lt;parameter&gt;argv&lt;/parameter&gt; parameter of &lt;function&gt;main()&lt;/function&gt;. Any parameters understood by gtk_gl_init() are stripped before return.</doc>
+          <array length="0" c:type="char***">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_check" c:identifier="gtk_gl_init_check">
+      <doc xml:whitespace="preserve">This function does the same work as gtk_gl_init() with only
+initialized. Instead it returns %FALSE on failure.
+This way the application can fall back to some other means of communication
+with the user - for example a curses or command line interface.
+%FALSE otherwise.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the GUI has been successfully initialized,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">Address of the &lt;parameter&gt;argc&lt;/parameter&gt; parameter of your &lt;function&gt;main()&lt;/function&gt; function. Changed if any arguments were handled.</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">Address of the &lt;parameter&gt;argv&lt;/parameter&gt; parameter of &lt;function&gt;main()&lt;/function&gt;. Any parameters understood by gtk_gl_init() are stripped before return.</doc>
+          <array length="0" c:type="char***">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="widget_create_gl_context"
+              c:identifier="gtk_widget_create_gl_context">
+      <doc xml:whitespace="preserve">Creates a new #GdkGLContext with the appropriate #GdkGLDrawable
+for this widget. The GL context must be freed when you're
+finished with it. See also gtk_widget_get_gl_context().</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the new #GdkGLContext.</doc>
+        <type name="GdkGL.Context" c:type="GdkGLContext*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget.</doc>
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="share_list" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the #GdkGLContext with which to share display lists and texture objects. NULL indicates that no sharing is to take place.</doc>
+          <type name="GdkGL.Context" c:type="GdkGLContext*"/>
+        </parameter>
+        <parameter name="direct" transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether rendering is to be done with a direct connection to the graphics system.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="render_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">GDK_GL_RGBA_TYPE or GDK_GL_COLOR_INDEX_TYPE (currently not used).</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="widget_get_gl_config"
+              c:identifier="gtk_widget_get_gl_config">
+      <doc xml:whitespace="preserve">Returns the #GdkGLConfig referred by the @widget.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the #GdkGLConfig.</doc>
+        <type name="GdkGL.Config" c:type="GdkGLConfig*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget.</doc>
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="widget_get_gl_context"
+              c:identifier="gtk_widget_get_gl_context">
+      <doc xml:whitespace="preserve">Returns the #GdkGLContext with the appropriate #GdkGLDrawable
+for this widget. Unlike the GL context returned by
+gtk_widget_create_gl_context(),  this context is owned by the widget.
+#GdkGLContext is needed for the function gdk_gl_drawable_begin,
+or for sharing display lists (see gtk_widget_set_gl_capability()).</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the #GdkGLContext.</doc>
+        <type name="GdkGL.Context" c:type="GdkGLContext*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget.</doc>
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="widget_get_gl_window"
+              c:identifier="gtk_widget_get_gl_window">
+      <doc xml:whitespace="preserve">Returns the #GdkGLWindow owned by the @widget.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the #GdkGLWindow.</doc>
+        <type name="GdkGL.Window" c:type="GdkGLWindow*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget.</doc>
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="widget_is_gl_capable"
+              c:identifier="gtk_widget_is_gl_capable">
+      <doc xml:whitespace="preserve">Returns whether the @widget is OpenGL-capable.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if the @widget is OpenGL-capable, FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget.</doc>
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="widget_set_gl_capability"
+              c:identifier="gtk_widget_set_gl_capability">
+      <doc xml:whitespace="preserve">Set the OpenGL-capability to the @widget.
+This function prepares the widget for its use with OpenGL.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if it is successful, FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GtkWidget to be used as the rendering area.</doc>
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="glconfig" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkGLConfig.</doc>
+          <type name="GdkGL.Config" c:type="GdkGLConfig*"/>
+        </parameter>
+        <parameter name="share_list" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the #GdkGLContext with which to share display lists and texture objects. NULL indicates that no sharing is to take place.</doc>
+          <type name="GdkGL.Context" c:type="GdkGLContext*"/>
+        </parameter>
+        <parameter name="direct" transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether rendering is to be done with a direct connection to the graphics system.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="render_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">GDK_GL_RGBA_TYPE or GDK_GL_COLOR_INDEX_TYPE (currently not used).</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/basis/gtk/gl/authors.txt b/basis/gtk/gl/authors.txt
new file mode 100644 (file)
index 0000000..ce9bcc8
--- /dev/null
@@ -0,0 +1 @@
+Anton Gorenko
\ No newline at end of file
diff --git a/basis/gtk/gl/ffi/ffi.factor b/basis/gtk/gl/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..e901c5b
--- /dev/null
@@ -0,0 +1,22 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries alien.syntax combinators
+gobject-introspection kernel system vocabs.loader ;
+IN: gtk.gl.ffi
+
+<<
+"gtk.ffi" require
+"gdk.gl.ffi" require
+>>
+
+LIBRARY: gtk.gl
+
+<<
+"gtk.gl" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgtkglext-x11-1.0.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gtk/gl/GtkGLExt-1.0.gir
diff --git a/basis/gtk/gl/gl.factor b/basis/gtk/gl/gl.factor
new file mode 100644 (file)
index 0000000..3a9a104
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gtk.gl.ffi ;
+IN: gtk.gl
+
diff --git a/basis/gtk/gl/summary.txt b/basis/gtk/gl/summary.txt
new file mode 100644 (file)
index 0000000..91afcb6
--- /dev/null
@@ -0,0 +1 @@
+GtkGLExt binding
diff --git a/basis/gtk/gl/tags.txt b/basis/gtk/gl/tags.txt
new file mode 100755 (executable)
index 0000000..bb863cf
--- /dev/null
@@ -0,0 +1 @@
+bindings
diff --git a/basis/gtk/gtk.factor b/basis/gtk/gtk.factor
new file mode 100644 (file)
index 0000000..d91e1f3
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gtk.ffi ;
+IN: gtk
+
diff --git a/basis/gtk/summary.txt b/basis/gtk/summary.txt
new file mode 100644 (file)
index 0000000..836eaf6
--- /dev/null
@@ -0,0 +1 @@
+Gtk binding
diff --git a/basis/gtk/tags.txt b/basis/gtk/tags.txt
new file mode 100755 (executable)
index 0000000..bb863cf
--- /dev/null
@@ -0,0 +1 @@
+bindings
index 1c6cd3d9edf9287c6a4f51258b9f4de13c225d85..327b552fa2ea043088fd4d3098065a68477bdcb8 100644 (file)
@@ -7,7 +7,7 @@ ERROR: unknown-gl-platform ;
 << {
     { [ os windows? ] [ "opengl.gl.windows" ] }
     { [ os macosx? ]  [ "opengl.gl.macosx" ] }
-    { [ os unix? ] [ "opengl.gl.x11" ] }
+    { [ os unix? ] [ "opengl.gl.gtk" ] }
     [ unknown-gl-platform ]
 } cond use-vocab >>
 
diff --git a/basis/opengl/gl/gtk/authors.txt b/basis/opengl/gl/gtk/authors.txt
new file mode 100644 (file)
index 0000000..4af9fbe
--- /dev/null
@@ -0,0 +1 @@
+Anton Gorenko
diff --git a/basis/opengl/gl/gtk/gtk.factor b/basis/opengl/gl/gtk/gtk.factor
new file mode 100644 (file)
index 0000000..0521d2f
--- /dev/null
@@ -0,0 +1,14 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.strings io.encodings.ascii
+gdk.gl.ffi ;
+IN: opengl.gl.gtk
+
+: gl-function-context ( -- context )
+    gdk_gl_context_get_current ; inline
+
+: gl-function-address ( name -- address )
+    ascii string>alien gdk_gl_get_proc_address ; inline
+
+: gl-function-calling-convention ( -- str ) cdecl ; inline
+
diff --git a/basis/pango/Pango-1.0.gir b/basis/pango/Pango-1.0.gir
new file mode 100644 (file)
index 0000000..99ec659
--- /dev/null
@@ -0,0 +1,7825 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="cairo" version="1.0"/>
+  <package name="cairo"/>
+  <package name="freetype2"/>
+  <package name="gobject-2.0"/>
+  <namespace name="Pango"
+             version="1.0"
+             shared-library="libpango-1.0.so.0"
+             c:identifier-prefixes="Pango"
+             c:symbol-prefixes="pango">
+    <alias name="Glyph" c:type="PangoGlyph">
+      <type name="guint32" c:type="guint32"/>
+    </alias>
+    <alias name="GlyphUnit" c:type="PangoGlyphUnit">
+      <type name="gint32" c:type="gint32"/>
+    </alias>
+    <alias name="LayoutRun" c:type="PangoLayoutRun">
+      <type name="GlyphItem" c:type="PangoGlyphItem"/>
+    </alias>
+    <constant name="ANALYSIS_FLAG_CENTERED_BASELINE" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ATTR_INDEX_FROM_TEXT_BEGINNING" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="Alignment"
+                 glib:type-name="PangoAlignment"
+                 glib:get-type="pango_alignment_get_type"
+                 c:type="PangoAlignment">
+      <member name="left"
+              value="0"
+              c:identifier="PANGO_ALIGN_LEFT"
+              glib:nick="left"/>
+      <member name="center"
+              value="1"
+              c:identifier="PANGO_ALIGN_CENTER"
+              glib:nick="center"/>
+      <member name="right"
+              value="2"
+              c:identifier="PANGO_ALIGN_RIGHT"
+              glib:nick="right"/>
+    </enumeration>
+    <record name="Analysis" c:type="PangoAnalysis">
+      <field name="shape_engine" writable="1">
+        <type name="EngineShape" c:type="PangoEngineShape*"/>
+      </field>
+      <field name="lang_engine" writable="1">
+        <type name="EngineLang" c:type="PangoEngineLang*"/>
+      </field>
+      <field name="font" writable="1">
+        <type name="Font" c:type="PangoFont*"/>
+      </field>
+      <field name="level" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="gravity" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="script" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="language" writable="1">
+        <type name="Language" c:type="PangoLanguage*"/>
+      </field>
+      <field name="extra_attrs" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+    </record>
+    <record name="AttrClass" c:type="PangoAttrClass">
+      <field name="type" writable="1">
+        <type name="AttrType" c:type="PangoAttrType"/>
+      </field>
+      <field name="copy" introspectable="0">
+        <callback name="copy" introspectable="0">
+          <return-value>
+            <type name="Attribute" c:type="PangoAttribute*"/>
+          </return-value>
+          <parameters>
+            <parameter name="attr" transfer-ownership="none">
+              <type name="Attribute" c:type="PangoAttribute*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="destroy">
+        <callback name="destroy">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="attr" transfer-ownership="none">
+              <type name="Attribute" c:type="PangoAttribute*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="equal">
+        <callback name="equal">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="attr1" transfer-ownership="none">
+              <type name="Attribute" c:type="PangoAttribute*"/>
+            </parameter>
+            <parameter name="attr2" transfer-ownership="none">
+              <type name="Attribute" c:type="PangoAttribute*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="AttrColor" c:type="PangoAttrColor">
+      <field name="attr" writable="1">
+        <type name="Attribute" c:type="PangoAttribute"/>
+      </field>
+      <field name="color" writable="1">
+        <type name="Color" c:type="PangoColor"/>
+      </field>
+    </record>
+    <callback name="AttrDataCopyFunc"
+              c:type="PangoAttrDataCopyFunc"
+              introspectable="0">
+      <return-value>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="AttrFilterFunc" c:type="PangoAttrFilterFunc">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="attribute" transfer-ownership="none">
+          <type name="Attribute" c:type="PangoAttribute*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="AttrFloat" c:type="PangoAttrFloat">
+      <field name="attr" writable="1">
+        <type name="Attribute" c:type="PangoAttribute"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="gdouble" c:type="double"/>
+      </field>
+    </record>
+    <record name="AttrFontDesc" c:type="PangoAttrFontDesc">
+      <field name="attr" writable="1">
+        <type name="Attribute" c:type="PangoAttribute"/>
+      </field>
+      <field name="desc" writable="1">
+        <type name="FontDescription" c:type="PangoFontDescription*"/>
+      </field>
+    </record>
+    <record name="AttrInt" c:type="PangoAttrInt">
+      <field name="attr" writable="1">
+        <type name="Attribute" c:type="PangoAttribute"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="gint" c:type="int"/>
+      </field>
+    </record>
+    <record name="AttrIterator" c:type="PangoAttrIterator" disguised="1">
+      <method name="copy"
+              c:identifier="pango_attr_iterator_copy"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Copy a #PangoAttrIterator
+be freed with pango_attr_iterator_destroy().</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the newly allocated #PangoAttrIterator, which should</doc>
+          <type name="AttrIterator" c:type="PangoAttrIterator*"/>
+        </return-value>
+      </method>
+      <method name="destroy" c:identifier="pango_attr_iterator_destroy">
+        <doc xml:whitespace="preserve">Destroy a #PangoAttrIterator and free all associated memory.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get"
+              c:identifier="pango_attr_iterator_get"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Find the current attribute of a particular type at the iterator
+location. When multiple attributes of the same type overlap,
+the attribute whose range starts closest to the current location
+is used.
+if no attribute of that type applies to the current
+location.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the current attribute of the given type, or %NULL</doc>
+          <type name="Attribute" c:type="PangoAttribute*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of attribute to find.</doc>
+            <type name="AttrType" c:type="PangoAttrType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attrs"
+              c:identifier="pango_attr_iterator_get_attrs"
+              version="1.2">
+        <doc xml:whitespace="preserve">Gets a list of all attributes at the current position of the
+iterator.
+all attributes for the current range.
+To free this value, call pango_attribute_destroy() on
+each value and g_slist_free() on the list.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a list of</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Attribute"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_font" c:identifier="pango_attr_iterator_get_font">
+        <doc xml:whitespace="preserve">Get the font and other attributes at the current iterator position.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="desc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoFontDescription to fill in with the current values. The family name in this structure will be set using pango_font_description_set_family_static() using values from an attribute in the #PangoAttrList associated with the iterator, so if you plan to keep it around, you must call: &lt;literal&gt;pango_font_description_set_family (desc, pango_font_description_get_family (desc))&lt;/literal&gt;.</doc>
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+          <parameter name="language" transfer-ownership="none">
+            <doc xml:whitespace="preserve">if non-%NULL, location to store language tag for item, or %NULL if none is found.</doc>
+            <type name="Language" c:type="PangoLanguage**"/>
+          </parameter>
+          <parameter name="extra_attrs" transfer-ownership="full">
+            <doc xml:whitespace="preserve">if non-%NULL, location in which to store a list of non-font attributes at the the current position; only the highest priority value of each attribute will be added to this list. In order to free this value, you must call pango_attribute_destroy() on each member.</doc>
+            <type name="GLib.SList" c:type="GSList**">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="next" c:identifier="pango_attr_iterator_next">
+        <doc xml:whitespace="preserve">Advance the iterator until the next change of style.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%FALSE if the iterator is at the end of the list, otherwise %TRUE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="range" c:identifier="pango_attr_iterator_range">
+        <doc xml:whitespace="preserve">Get the range of the current segment. Note that the
+stored return values are signed, not unsigned like
+the values in #PangoAttribute. To deal with this API
+oversight, stored return values that wouldn't fit into
+a signed integer are clamped to %G_MAXINT.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the start of the range</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the end of the range</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="AttrLanguage" c:type="PangoAttrLanguage">
+      <field name="attr" writable="1">
+        <type name="Attribute" c:type="PangoAttribute"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="Language" c:type="PangoLanguage*"/>
+      </field>
+    </record>
+    <record name="AttrList"
+            c:type="PangoAttrList"
+            glib:type-name="PangoAttrList"
+            glib:get-type="pango_attr_list_get_type"
+            c:symbol-prefix="attr_list">
+      <constructor name="new" c:identifier="pango_attr_list_new">
+        <doc xml:whitespace="preserve">Create a new empty attribute list with a reference count of one.
+be freed with pango_attr_list_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated #PangoAttrList, which should</doc>
+          <type name="AttrList" c:type="PangoAttrList*"/>
+        </return-value>
+      </constructor>
+      <method name="change" c:identifier="pango_attr_list_change">
+        <doc xml:whitespace="preserve">Insert the given attribute into the #PangoAttrList. It will
+replace any attributes of the same type on that segment
+and be merged with any adjoining attributes that are identical.
+This function is slower than pango_attr_list_insert() for
+creating a attribute list in order (potentially much slower
+for large lists). However, pango_attr_list_insert() is not
+suitable for continually changing a set of attributes
+since it never removes or combines existing attributes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attr" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the attribute to insert. Ownership of this value is assumed by the list.</doc>
+            <type name="Attribute" c:type="PangoAttribute*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="pango_attr_list_copy">
+        <doc xml:whitespace="preserve">Copy @list and return an identical new list.
+reference count of one, which should
+be freed with pango_attr_list_unref().
+Returns %NULL if @list was %NULL.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated #PangoAttrList, with a</doc>
+          <type name="AttrList" c:type="PangoAttrList*"/>
+        </return-value>
+      </method>
+      <method name="filter"
+              c:identifier="pango_attr_list_filter"
+              version="1.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Given a #PangoAttrList and callback function, removes any elements
+of @list for which @func returns %TRUE and inserts them into
+a new list.
+no attributes of the given types were found.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #PangoAttrList or %NULL if</doc>
+          <type name="AttrList" c:type="PangoAttrList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">callback function; returns %TRUE if an attribute should be filtered out.</doc>
+            <type name="AttrFilterFunc" c:type="PangoAttrFilterFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Data to be passed to @func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_iterator"
+              c:identifier="pango_attr_list_get_iterator"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Create a iterator initialized to the beginning of the list.
+be freed with pango_attr_iterator_destroy().</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the newly allocated #PangoAttrIterator, which should</doc>
+          <type name="AttrIterator" c:type="PangoAttrIterator*"/>
+        </return-value>
+      </method>
+      <method name="insert" c:identifier="pango_attr_list_insert">
+        <doc xml:whitespace="preserve">Insert the given attribute into the #PangoAttrList. It will
+be inserted after all other attributes with a matching</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attr" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the attribute to insert. Ownership of this value is assumed by the list.</doc>
+            <type name="Attribute" c:type="PangoAttribute*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_before"
+              c:identifier="pango_attr_list_insert_before">
+        <doc xml:whitespace="preserve">Insert the given attribute into the #PangoAttrList. It will
+be inserted before all other attributes with a matching</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attr" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the attribute to insert. Ownership of this value is assumed by the list.</doc>
+            <type name="Attribute" c:type="PangoAttribute*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref" c:identifier="pango_attr_list_ref" version="1.10">
+        <doc xml:whitespace="preserve">Increase the reference count of the given attribute list by one.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The attribute list passed in</doc>
+          <type name="AttrList" c:type="PangoAttrList*"/>
+        </return-value>
+      </method>
+      <method name="splice" c:identifier="pango_attr_list_splice">
+        <doc xml:whitespace="preserve">This function opens up a hole in @list, fills it in with attributes from
+the left, and then merges @other on top of the hole.
+This operation is equivalent to stretching every attribute
+that applies at position @pos in @list by an amount @len,
+and then calling pango_attr_list_change() with a copy
+of each attribute in @other in sequence (offset in position by @pos).
+This operation proves useful for, for instance, inserting
+a pre-edit string in the middle of an edit buffer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="other" transfer-ownership="none">
+            <doc xml:whitespace="preserve">another #PangoAttrList</doc>
+            <type name="AttrList" c:type="PangoAttrList*"/>
+          </parameter>
+          <parameter name="pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position in @list at which to insert @other</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of the spliced segment. (Note that this must be specified since the attributes in @other may only be present at some subsection of this range)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unref" c:identifier="pango_attr_list_unref">
+        <doc xml:whitespace="preserve">Decrease the reference count of the given attribute list by one.
+If the result is zero, free the attribute list and the attributes
+it contains.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="AttrShape" c:type="PangoAttrShape">
+      <field name="attr" writable="1">
+        <type name="Attribute" c:type="PangoAttribute"/>
+      </field>
+      <field name="ink_rect" writable="1">
+        <type name="Rectangle" c:type="PangoRectangle"/>
+      </field>
+      <field name="logical_rect" writable="1">
+        <type name="Rectangle" c:type="PangoRectangle"/>
+      </field>
+      <field name="data" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="copy_func" introspectable="0" writable="1">
+        <type name="AttrDataCopyFunc" c:type="PangoAttrDataCopyFunc"/>
+      </field>
+      <field name="destroy_func" writable="1">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+    </record>
+    <record name="AttrSize" c:type="PangoAttrSize">
+      <field name="attr" writable="1">
+        <type name="Attribute" c:type="PangoAttribute"/>
+      </field>
+      <field name="size" writable="1">
+        <type name="gint" c:type="int"/>
+      </field>
+      <field name="absolute" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="AttrString" c:type="PangoAttrString">
+      <field name="attr" writable="1">
+        <type name="Attribute" c:type="PangoAttribute"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="utf8" c:type="char*"/>
+      </field>
+    </record>
+    <enumeration name="AttrType"
+                 glib:type-name="PangoAttrType"
+                 glib:get-type="pango_attr_type_get_type"
+                 c:type="PangoAttrType">
+      <member name="invalid"
+              value="0"
+              c:identifier="PANGO_ATTR_INVALID"
+              glib:nick="invalid"/>
+      <member name="language"
+              value="1"
+              c:identifier="PANGO_ATTR_LANGUAGE"
+              glib:nick="language"/>
+      <member name="family"
+              value="2"
+              c:identifier="PANGO_ATTR_FAMILY"
+              glib:nick="family"/>
+      <member name="style"
+              value="3"
+              c:identifier="PANGO_ATTR_STYLE"
+              glib:nick="style"/>
+      <member name="weight"
+              value="4"
+              c:identifier="PANGO_ATTR_WEIGHT"
+              glib:nick="weight"/>
+      <member name="variant"
+              value="5"
+              c:identifier="PANGO_ATTR_VARIANT"
+              glib:nick="variant"/>
+      <member name="stretch"
+              value="6"
+              c:identifier="PANGO_ATTR_STRETCH"
+              glib:nick="stretch"/>
+      <member name="size"
+              value="7"
+              c:identifier="PANGO_ATTR_SIZE"
+              glib:nick="size"/>
+      <member name="font_desc"
+              value="8"
+              c:identifier="PANGO_ATTR_FONT_DESC"
+              glib:nick="font-desc"/>
+      <member name="foreground"
+              value="9"
+              c:identifier="PANGO_ATTR_FOREGROUND"
+              glib:nick="foreground"/>
+      <member name="background"
+              value="10"
+              c:identifier="PANGO_ATTR_BACKGROUND"
+              glib:nick="background"/>
+      <member name="underline"
+              value="11"
+              c:identifier="PANGO_ATTR_UNDERLINE"
+              glib:nick="underline"/>
+      <member name="strikethrough"
+              value="12"
+              c:identifier="PANGO_ATTR_STRIKETHROUGH"
+              glib:nick="strikethrough"/>
+      <member name="rise"
+              value="13"
+              c:identifier="PANGO_ATTR_RISE"
+              glib:nick="rise"/>
+      <member name="shape"
+              value="14"
+              c:identifier="PANGO_ATTR_SHAPE"
+              glib:nick="shape"/>
+      <member name="scale"
+              value="15"
+              c:identifier="PANGO_ATTR_SCALE"
+              glib:nick="scale"/>
+      <member name="fallback"
+              value="16"
+              c:identifier="PANGO_ATTR_FALLBACK"
+              glib:nick="fallback"/>
+      <member name="letter_spacing"
+              value="17"
+              c:identifier="PANGO_ATTR_LETTER_SPACING"
+              glib:nick="letter-spacing"/>
+      <member name="underline_color"
+              value="18"
+              c:identifier="PANGO_ATTR_UNDERLINE_COLOR"
+              glib:nick="underline-color"/>
+      <member name="strikethrough_color"
+              value="19"
+              c:identifier="PANGO_ATTR_STRIKETHROUGH_COLOR"
+              glib:nick="strikethrough-color"/>
+      <member name="absolute_size"
+              value="20"
+              c:identifier="PANGO_ATTR_ABSOLUTE_SIZE"
+              glib:nick="absolute-size"/>
+      <member name="gravity"
+              value="21"
+              c:identifier="PANGO_ATTR_GRAVITY"
+              glib:nick="gravity"/>
+      <member name="gravity_hint"
+              value="22"
+              c:identifier="PANGO_ATTR_GRAVITY_HINT"
+              glib:nick="gravity-hint"/>
+    </enumeration>
+    <record name="Attribute" c:type="PangoAttribute">
+      <field name="klass" writable="1">
+        <type name="AttrClass" c:type="PangoAttrClass*"/>
+      </field>
+      <field name="start_index" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="end_index" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <method name="copy"
+              c:identifier="pango_attribute_copy"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Make a copy of an attribute.
+freed with pango_attribute_destroy().</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the newly allocated #PangoAttribute, which should be</doc>
+          <type name="Attribute" c:type="PangoAttribute*"/>
+        </return-value>
+      </method>
+      <method name="destroy" c:identifier="pango_attribute_destroy">
+        <doc xml:whitespace="preserve">Destroy a #PangoAttribute and free all associated memory.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="equal" c:identifier="pango_attribute_equal">
+        <doc xml:whitespace="preserve">Compare two attributes for equality. This compares only the
+actual value of the two attributes and not the ranges that the
+attributes apply to.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the two attributes have the same value.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attr2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">another #PangoAttribute</doc>
+            <type name="Attribute" c:type="PangoAttribute*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init" c:identifier="pango_attribute_init" version="1.20">
+        <doc xml:whitespace="preserve">Initializes @attr's klass to @klass,
+it's start_index to %PANGO_ATTR_INDEX_FROM_TEXT_BEGINNING
+and end_index to %PANGO_ATTR_INDEX_TO_TEXT_END
+such that the attribute applies
+to the entire text by default.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="klass" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoAttributeClass</doc>
+            <type name="AttrClass" c:type="PangoAttrClass*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="BidiType"
+                 version="1.22"
+                 glib:type-name="PangoBidiType"
+                 glib:get-type="pango_bidi_type_get_type"
+                 c:type="PangoBidiType">
+      <doc xml:whitespace="preserve">The #PangoBidiType type represents the bidirectional character
+type of a Unicode character as specified by the
+&lt;ulink url="http://www.unicode.org/reports/tr9/"&gt;Unicode bidirectional algorithm&lt;/ulink&gt;.</doc>
+      <member name="l"
+              value="0"
+              c:identifier="PANGO_BIDI_TYPE_L"
+              glib:nick="l"/>
+      <member name="lre"
+              value="1"
+              c:identifier="PANGO_BIDI_TYPE_LRE"
+              glib:nick="lre"/>
+      <member name="lro"
+              value="2"
+              c:identifier="PANGO_BIDI_TYPE_LRO"
+              glib:nick="lro"/>
+      <member name="r"
+              value="3"
+              c:identifier="PANGO_BIDI_TYPE_R"
+              glib:nick="r"/>
+      <member name="al"
+              value="4"
+              c:identifier="PANGO_BIDI_TYPE_AL"
+              glib:nick="al"/>
+      <member name="rle"
+              value="5"
+              c:identifier="PANGO_BIDI_TYPE_RLE"
+              glib:nick="rle"/>
+      <member name="rlo"
+              value="6"
+              c:identifier="PANGO_BIDI_TYPE_RLO"
+              glib:nick="rlo"/>
+      <member name="pdf"
+              value="7"
+              c:identifier="PANGO_BIDI_TYPE_PDF"
+              glib:nick="pdf"/>
+      <member name="en"
+              value="8"
+              c:identifier="PANGO_BIDI_TYPE_EN"
+              glib:nick="en"/>
+      <member name="es"
+              value="9"
+              c:identifier="PANGO_BIDI_TYPE_ES"
+              glib:nick="es"/>
+      <member name="et"
+              value="10"
+              c:identifier="PANGO_BIDI_TYPE_ET"
+              glib:nick="et"/>
+      <member name="an"
+              value="11"
+              c:identifier="PANGO_BIDI_TYPE_AN"
+              glib:nick="an"/>
+      <member name="cs"
+              value="12"
+              c:identifier="PANGO_BIDI_TYPE_CS"
+              glib:nick="cs"/>
+      <member name="nsm"
+              value="13"
+              c:identifier="PANGO_BIDI_TYPE_NSM"
+              glib:nick="nsm"/>
+      <member name="bn"
+              value="14"
+              c:identifier="PANGO_BIDI_TYPE_BN"
+              glib:nick="bn"/>
+      <member name="b"
+              value="15"
+              c:identifier="PANGO_BIDI_TYPE_B"
+              glib:nick="b"/>
+      <member name="s"
+              value="16"
+              c:identifier="PANGO_BIDI_TYPE_S"
+              glib:nick="s"/>
+      <member name="ws"
+              value="17"
+              c:identifier="PANGO_BIDI_TYPE_WS"
+              glib:nick="ws"/>
+      <member name="on"
+              value="18"
+              c:identifier="PANGO_BIDI_TYPE_ON"
+              glib:nick="on"/>
+    </enumeration>
+    <record name="Color"
+            c:type="PangoColor"
+            glib:type-name="PangoColor"
+            glib:get-type="pango_color_get_type"
+            c:symbol-prefix="color">
+      <field name="red" writable="1">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="green" writable="1">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="blue" writable="1">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <method name="copy" c:identifier="pango_color_copy">
+        <doc xml:whitespace="preserve">Creates a copy of @src, which should be freed with
+pango_color_free(). Primarily used by language bindings,
+not that useful otherwise (since colors can just be copied
+by assignment in C).
+be freed with pango_color_free(), or %NULL
+if @src was %NULL.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated #PangoColor, which should</doc>
+          <type name="Color" c:type="PangoColor*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="pango_color_free">
+        <doc xml:whitespace="preserve">Frees a color allocated by pango_color_copy().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="parse" c:identifier="pango_color_parse">
+        <doc xml:whitespace="preserve">Fill in the fields of a color from a string specification. The
+string can either one of a large set of standard names. (Taken
+from the X11 &lt;filename&gt;rgb.txt&lt;/filename&gt; file), or it can be a hex value in the
+form '&amp;num;rgb' '&amp;num;rrggbb' '&amp;num;rrrgggbbb' or '&amp;num;rrrrggggbbbb' where
+'r', 'g' and 'b' are hex digits of the red, green, and blue
+components of the color, respectively. (White in the four
+forms is '&amp;num;fff' '&amp;num;ffffff' '&amp;num;fffffffff' and '&amp;num;ffffffffffff')
+otherwise false.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if parsing of the specifier succeeded,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="spec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string specifying the new color</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_string"
+              c:identifier="pango_color_to_string"
+              version="1.16">
+        <doc xml:whitespace="preserve">Returns a textual specification of @color in the hexadecimal form
+&lt;literal&gt;&amp;num;rrrrggggbbbb&lt;/literal&gt;, where &lt;literal&gt;r&lt;/literal&gt;,
+&lt;literal&gt;g&lt;/literal&gt; and &lt;literal&gt;b&lt;/literal&gt; are hex digits representing
+the red, green, and blue components respectively.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly-allocated text string that must be freed with g_free().</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="Context"
+           c:symbol-prefix="context"
+           c:type="PangoContext"
+           parent="GObject.Object"
+           glib:type-name="PangoContext"
+           glib:get-type="pango_context_get_type"
+           glib:type-struct="ContextClass">
+      <constructor name="new" c:identifier="pango_context_new">
+        <doc xml:whitespace="preserve">Creates a new #PangoContext initialized to default values.
+This function is not particularly useful as it should always
+be followed by a pango_context_set_font_map() call, and the
+function pango_font_map_create_context() does these two steps
+together and hence users are recommended to use that.
+If you are using Pango as part of a higher-level system,
+that system may have it's own way of create a #PangoContext.
+For instance, the GTK+ toolkit has, among others,
+gdk_pango_context_get_for_screen(), and
+gtk_widget_get_pango_context().  Use those instead.
+be freed with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated #PangoContext, which should</doc>
+          <type name="Context" c:type="PangoContext*"/>
+        </return-value>
+      </constructor>
+      <method name="get_base_dir" c:identifier="pango_context_get_base_dir">
+        <doc xml:whitespace="preserve">Retrieves the base direction for the context. See
+pango_context_set_base_dir().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the base direction for the context.</doc>
+          <type name="Direction" c:type="PangoDirection"/>
+        </return-value>
+      </method>
+      <method name="get_base_gravity"
+              c:identifier="pango_context_get_base_gravity"
+              version="1.16">
+        <doc xml:whitespace="preserve">Retrieves the base gravity for the context. See
+pango_context_set_base_gravity().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the base gravity for the context.</doc>
+          <type name="Gravity" c:type="PangoGravity"/>
+        </return-value>
+      </method>
+      <method name="get_font_description"
+              c:identifier="pango_context_get_font_description">
+        <doc xml:whitespace="preserve">Retrieve the default font description for the context.
+This value must not be modified or freed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the context's default font description.</doc>
+          <type name="FontDescription" c:type="PangoFontDescription*"/>
+        </return-value>
+      </method>
+      <method name="get_font_map"
+              c:identifier="pango_context_get_font_map"
+              version="1.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the #PangoFontmap used to look up fonts for this context.
+is owned by Pango and should not be unreferenced.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the font map for the #PangoContext. This value</doc>
+          <type name="FontMap" c:type="PangoFontMap*"/>
+        </return-value>
+      </method>
+      <method name="get_gravity"
+              c:identifier="pango_context_get_gravity"
+              version="1.16">
+        <doc xml:whitespace="preserve">Retrieves the gravity for the context. This is similar to
+pango_context_get_base_gravity(), except for when the base gravity
+is %PANGO_GRAVITY_AUTO for which pango_gravity_get_for_matrix() is used
+to return the gravity from the current context matrix.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the resolved gravity for the context.</doc>
+          <type name="Gravity" c:type="PangoGravity"/>
+        </return-value>
+      </method>
+      <method name="get_gravity_hint"
+              c:identifier="pango_context_get_gravity_hint"
+              version="1.16">
+        <doc xml:whitespace="preserve">Retrieves the gravity hint for the context. See
+pango_context_set_gravity_hint() for details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the gravity hint for the context.</doc>
+          <type name="GravityHint" c:type="PangoGravityHint"/>
+        </return-value>
+      </method>
+      <method name="get_language" c:identifier="pango_context_get_language">
+        <doc xml:whitespace="preserve">Retrieves the global language tag for the context.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the global language tag.</doc>
+          <type name="Language" c:type="PangoLanguage*"/>
+        </return-value>
+      </method>
+      <method name="get_matrix"
+              c:identifier="pango_context_get_matrix"
+              version="1.6">
+        <doc xml:whitespace="preserve">Gets the transformation matrix that will be applied when
+rendering with this context. See pango_context_set_matrix().
+(which is the same as the identity matrix). The returned
+matrix is owned by Pango and must not be modified or
+freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the matrix, or %NULL if no matrix has been set</doc>
+          <type name="Matrix" c:type="PangoMatrix*"/>
+        </return-value>
+      </method>
+      <method name="get_metrics" c:identifier="pango_context_get_metrics">
+        <doc xml:whitespace="preserve">Get overall metric information for a particular font
+description.  Since the metrics may be substantially different for
+different scripts, a language tag can be provided to indicate that
+the metrics should be retrieved that correspond to the script(s)
+used by that language.
+The #PangoFontDescription is interpreted in the same way as
+by pango_itemize(), and the family name may be a comma separated
+list of figures. If characters from multiple of these families
+would be used to render the string, then the returned fonts would
+be a composite of the metrics for the fonts loaded for the
+individual families.
+when finished using the object.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #PangoFontMetrics object. The caller must call pango_font_metrics_unref()</doc>
+          <type name="FontMetrics" c:type="PangoFontMetrics*"/>
+        </return-value>
+        <parameters>
+          <parameter name="desc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoFontDescription structure.  %NULL means that the font description from the context will be used.</doc>
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+          <parameter name="language" transfer-ownership="none">
+            <doc xml:whitespace="preserve">language tag used to determine which script to get the metrics for. %NULL means that the language tag from the context will be used. If no language tag is set on the context, metrics for the default language (as determined by pango_language_get_default()) will be returned.</doc>
+            <type name="Language" c:type="PangoLanguage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_families" c:identifier="pango_context_list_families">
+        <doc xml:whitespace="preserve">List all families for a context.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="families" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store a pointer to an array of #PangoFontFamily *. This array should be freed with g_free().</doc>
+            <type name="FontFamily" c:type="PangoFontFamily***"/>
+          </parameter>
+          <parameter name="n_families" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the number of elements in @descs</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_font"
+              c:identifier="pango_context_load_font"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Loads the font in one of the fontmaps in the context
+that is the closest match for @desc.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the font loaded, or %NULL if no font matched.</doc>
+          <type name="Font" c:type="PangoFont*"/>
+        </return-value>
+        <parameters>
+          <parameter name="desc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoFontDescription describing the font to load</doc>
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_fontset"
+              c:identifier="pango_context_load_fontset"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Load a set of fonts in the context that can be used to render
+a font matching @desc.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the fontset, or %NULL if no font matched.</doc>
+          <type name="Fontset" c:type="PangoFontset*"/>
+        </return-value>
+        <parameters>
+          <parameter name="desc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoFontDescription describing the fonts to load</doc>
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+          <parameter name="language" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoLanguage the fonts will be used for</doc>
+            <type name="Language" c:type="PangoLanguage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_base_dir" c:identifier="pango_context_set_base_dir">
+        <doc xml:whitespace="preserve">Sets the base direction for the context.
+The base direction is used in applying the Unicode bidirectional
+algorithm; if the @direction is %PANGO_DIRECTION_LTR or
+%PANGO_DIRECTION_RTL, then the value will be used as the paragraph
+direction in the Unicode bidirectional algorithm.  A value of
+%PANGO_DIRECTION_WEAK_LTR or %PANGO_DIRECTION_WEAK_RTL is used only
+for paragraphs that do not contain any strong characters themselves.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new base direction</doc>
+            <type name="Direction" c:type="PangoDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_base_gravity"
+              c:identifier="pango_context_set_base_gravity"
+              version="1.16">
+        <doc xml:whitespace="preserve">Sets the base gravity for the context.
+The base gravity is used in laying vertical text out.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gravity" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new base gravity</doc>
+            <type name="Gravity" c:type="PangoGravity"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_font_description"
+              c:identifier="pango_context_set_font_description">
+        <doc xml:whitespace="preserve">Set the default font description for the context</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="desc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new pango font description</doc>
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_font_map" c:identifier="pango_context_set_font_map">
+        <doc xml:whitespace="preserve">Sets the font map to be searched when fonts are looked-up in this context.
+This is only for internal use by Pango backends, a #PangoContext obtained
+via one of the recommended methods should already have a suitable font map.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_map" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #PangoFontMap to set.</doc>
+            <type name="FontMap" c:type="PangoFontMap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_gravity_hint"
+              c:identifier="pango_context_set_gravity_hint"
+              version="1.16">
+        <doc xml:whitespace="preserve">Sets the gravity hint for the context.
+The gravity hint is used in laying vertical text out, and is only relevant
+if gravity of the context as returned by pango_context_get_gravity()
+is set %PANGO_GRAVITY_EAST or %PANGO_GRAVITY_WEST.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hint" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new gravity hint</doc>
+            <type name="GravityHint" c:type="PangoGravityHint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_language" c:identifier="pango_context_set_language">
+        <doc xml:whitespace="preserve">Sets the global language tag for the context.  The default language
+for the locale of the running process can be found using
+pango_language_get_default().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="language" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new language tag.</doc>
+            <type name="Language" c:type="PangoLanguage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_matrix"
+              c:identifier="pango_context_set_matrix"
+              version="1.6">
+        <doc xml:whitespace="preserve">Sets the transformation matrix that will be applied when rendering
+with this context. Note that reported metrics are in the user space
+coordinates before the application of the matrix, not device-space
+coordinates after the application of the matrix. So, they don't scale
+with the matrix, though they may change slightly for different
+matrices, depending on how the text is fit to the pixel grid.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="matrix" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoMatrix, or %NULL to unset any existing matrix. (No matrix set is the same as setting the identity matrix.)</doc>
+            <type name="Matrix" c:type="PangoMatrix*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <record name="ContextClass"
+            c:type="PangoContextClass"
+            disguised="1"
+            glib:is-gtype-struct-for="Context">
+    </record>
+    <record name="Coverage" c:type="PangoCoverage" disguised="1">
+      <method name="copy"
+              c:identifier="pango_coverage_copy"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Copy an existing #PangoCoverage. (This function may now be unnecessary
+since we refcount the structure. File a bug if you use it.)
+with a reference count of one, which
+should be freed with pango_coverage_unref().</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the newly allocated #PangoCoverage,</doc>
+          <type name="Coverage" c:type="PangoCoverage*"/>
+        </return-value>
+      </method>
+      <method name="get" c:identifier="pango_coverage_get">
+        <doc xml:whitespace="preserve">Determine whether a particular index is covered by @coverage</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the coverage level of @coverage for character @index_.</doc>
+          <type name="CoverageLevel" c:type="PangoCoverageLevel"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index to check</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="max" c:identifier="pango_coverage_max">
+        <doc xml:whitespace="preserve">Set the coverage for each index in @coverage to be the max (better)
+value of the current coverage for the index and the coverage for
+the corresponding index in @other.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="other" transfer-ownership="none">
+            <doc xml:whitespace="preserve">another #PangoCoverage</doc>
+            <type name="Coverage" c:type="PangoCoverage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref" c:identifier="pango_coverage_ref" introspectable="0">
+        <doc xml:whitespace="preserve">Increase the reference count on the #PangoCoverage by one</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">@coverage</doc>
+          <type name="Coverage" c:type="PangoCoverage*"/>
+        </return-value>
+      </method>
+      <method name="set" c:identifier="pango_coverage_set">
+        <doc xml:whitespace="preserve">Modify a particular index within @coverage</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index to modify</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="level" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new level for @index_</doc>
+            <type name="CoverageLevel" c:type="PangoCoverageLevel"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_bytes" c:identifier="pango_coverage_to_bytes">
+        <doc xml:whitespace="preserve">Convert a #PangoCoverage structure into a flat binary format</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="bytes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store result (must be freed with g_free())</doc>
+            <type name="guint8" c:type="guchar**"/>
+          </parameter>
+          <parameter name="n_bytes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store size of result</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unref" c:identifier="pango_coverage_unref">
+        <doc xml:whitespace="preserve">Decrease the reference count on the #PangoCoverage by one.
+If the result is zero, free the coverage and all associated memory.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="CoverageLevel"
+                 glib:type-name="PangoCoverageLevel"
+                 glib:get-type="pango_coverage_level_get_type"
+                 c:type="PangoCoverageLevel">
+      <member name="none"
+              value="0"
+              c:identifier="PANGO_COVERAGE_NONE"
+              glib:nick="none"/>
+      <member name="fallback"
+              value="1"
+              c:identifier="PANGO_COVERAGE_FALLBACK"
+              glib:nick="fallback"/>
+      <member name="approximate"
+              value="2"
+              c:identifier="PANGO_COVERAGE_APPROXIMATE"
+              glib:nick="approximate"/>
+      <member name="exact"
+              value="3"
+              c:identifier="PANGO_COVERAGE_EXACT"
+              glib:nick="exact"/>
+    </enumeration>
+    <enumeration name="Direction"
+                 glib:type-name="PangoDirection"
+                 glib:get-type="pango_direction_get_type"
+                 c:type="PangoDirection">
+      <doc xml:whitespace="preserve">The #PangoDirection type represents a direction in the
+Unicode bidirectional algorithm; not every value in this
+enumeration makes sense for every usage of #PangoDirection;
+for example, the return value of pango_unichar_direction()
+and pango_find_base_dir() cannot be %PANGO_DIRECTION_WEAK_LTR
+or %PANGO_DIRECTION_WEAK_RTL, since every character is either
+neutral or has a strong direction; on the other hand
+%PANGO_DIRECTION_NEUTRAL doesn't make sense to pass
+to pango_itemize_with_base_dir().
+The %PANGO_DIRECTION_TTB_LTR, %PANGO_DIRECTION_TTB_RTL
+values come from an earlier interpretation of this
+enumeration as the writing direction of a block of
+text and are no longer used; See #PangoGravity for how
+vertical text is handled in Pango.</doc>
+      <member name="ltr"
+              value="0"
+              c:identifier="PANGO_DIRECTION_LTR"
+              glib:nick="ltr"/>
+      <member name="rtl"
+              value="1"
+              c:identifier="PANGO_DIRECTION_RTL"
+              glib:nick="rtl"/>
+      <member name="ttb_ltr"
+              value="2"
+              c:identifier="PANGO_DIRECTION_TTB_LTR"
+              glib:nick="ttb-ltr"/>
+      <member name="ttb_rtl"
+              value="3"
+              c:identifier="PANGO_DIRECTION_TTB_RTL"
+              glib:nick="ttb-rtl"/>
+      <member name="weak_ltr"
+              value="4"
+              c:identifier="PANGO_DIRECTION_WEAK_LTR"
+              glib:nick="weak-ltr"/>
+      <member name="weak_rtl"
+              value="5"
+              c:identifier="PANGO_DIRECTION_WEAK_RTL"
+              glib:nick="weak-rtl"/>
+      <member name="neutral"
+              value="6"
+              c:identifier="PANGO_DIRECTION_NEUTRAL"
+              glib:nick="neutral"/>
+    </enumeration>
+    <constant name="ENGINE_TYPE_LANG" value="PangoEngineLang">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="ENGINE_TYPE_SHAPE" value="PangoEngineShape">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <enumeration name="EllipsizeMode"
+                 glib:type-name="PangoEllipsizeMode"
+                 glib:get-type="pango_ellipsize_mode_get_type"
+                 c:type="PangoEllipsizeMode">
+      <member name="none"
+              value="0"
+              c:identifier="PANGO_ELLIPSIZE_NONE"
+              glib:nick="none"/>
+      <member name="start"
+              value="1"
+              c:identifier="PANGO_ELLIPSIZE_START"
+              glib:nick="start"/>
+      <member name="middle"
+              value="2"
+              c:identifier="PANGO_ELLIPSIZE_MIDDLE"
+              glib:nick="middle"/>
+      <member name="end"
+              value="3"
+              c:identifier="PANGO_ELLIPSIZE_END"
+              glib:nick="end"/>
+    </enumeration>
+    <record name="EngineLang" c:type="PangoEngineLang" disguised="1">
+    </record>
+    <record name="EngineShape" c:type="PangoEngineShape" disguised="1">
+    </record>
+    <class name="Font"
+           c:symbol-prefix="font"
+           c:type="PangoFont"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="PangoFont"
+           glib:get-type="pango_font_get_type">
+      <function name="descriptions_free"
+                c:identifier="pango_font_descriptions_free">
+        <doc xml:whitespace="preserve">Frees an array of font descriptions.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="descs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to an array of #PangoFontDescription, may be %NULL</doc>
+            <type name="FontDescription" c:type="PangoFontDescription**"/>
+          </parameter>
+          <parameter name="n_descs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of font descriptions in @descs</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="describe" c:identifier="pango_font_describe">
+        <doc xml:whitespace="preserve">Returns a description of the font, with font size set in points.
+Use pango_font_describe_with_absolute_size() if you want the font
+size in device units.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly-allocated #PangoFontDescription object.</doc>
+          <type name="FontDescription" c:type="PangoFontDescription*"/>
+        </return-value>
+      </method>
+      <method name="describe_with_absolute_size"
+              c:identifier="pango_font_describe_with_absolute_size"
+              version="1.14">
+        <doc xml:whitespace="preserve">Returns a description of the font, with absolute font size set
+(in device units). Use pango_font_describe() if you want the font
+size in points.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly-allocated #PangoFontDescription object.</doc>
+          <type name="FontDescription" c:type="PangoFontDescription*"/>
+        </return-value>
+      </method>
+      <method name="find_shaper"
+              c:identifier="pango_font_find_shaper"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Finds the best matching shaper for a font for a particular
+language tag and character point.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the best matching shaper.</doc>
+          <type name="EngineShape" c:type="PangoEngineShape*"/>
+        </return-value>
+        <parameters>
+          <parameter name="language" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the language tag</doc>
+            <type name="Language" c:type="PangoLanguage*"/>
+          </parameter>
+          <parameter name="ch" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a Unicode character.</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_coverage"
+              c:identifier="pango_font_get_coverage"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Computes the coverage map for a given font and language tag.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a newly-allocated #PangoCoverage object.</doc>
+          <type name="Coverage" c:type="PangoCoverage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="language" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the language tag</doc>
+            <type name="Language" c:type="PangoLanguage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_font_map"
+              c:identifier="pango_font_get_font_map"
+              version="1.10"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the font map for which the font was created.
+Note that the font maintains a &lt;firstterm&gt;weak&lt;/firstterm&gt; reference
+to the font map, so if all references to font map are dropped, the font
+map will be finalized even if there are fonts created with the font
+map that are still alive.  In that case this function will return %NULL.
+It is the responsibility of the user to ensure that the font map is kept
+alive.  In most uses this is not an issue as a #PangoContext holds
+a reference to the font map.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the #PangoFontMap for the font, or %NULL if @font is %NULL.</doc>
+          <type name="FontMap" c:type="PangoFontMap*"/>
+        </return-value>
+      </method>
+      <method name="get_glyph_extents"
+              c:identifier="pango_font_get_glyph_extents">
+        <doc xml:whitespace="preserve">Gets the logical and ink extents of a glyph within a font. The
+coordinate system for each rectangle has its origin at the
+base line and horizontal origin of the character with increasing
+coordinates extending to the right and down. The macros PANGO_ASCENT(),
+PANGO_DESCENT(), PANGO_LBEARING(), and PANGO_RBEARING() can be used to convert
+from the extents rectangle to more traditional font metrics. The units
+of the rectangles are in 1/PANGO_SCALE of a device unit.
+If @font is %NULL, this function gracefully sets some sane values in the
+output variables and returns.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="glyph" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the glyph index</doc>
+            <type name="Glyph" c:type="PangoGlyph"/>
+          </parameter>
+          <parameter name="ink_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle used to store the extents of the glyph as drawn or %NULL to indicate that the result is not needed.</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle used to store the logical extents of the glyph or %NULL to indicate that the result is not needed.</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_metrics" c:identifier="pango_font_get_metrics">
+        <doc xml:whitespace="preserve">Gets overall metric information for a font. Since the metrics may be
+substantially different for different scripts, a language tag can
+be provided to indicate that the metrics should be retrieved that
+correspond to the script(s) used by that language.
+If @font is %NULL, this function gracefully sets some sane values in the
+output variables and returns.
+when finished using the object.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #PangoFontMetrics object. The caller must call pango_font_metrics_unref()</doc>
+          <type name="FontMetrics" c:type="PangoFontMetrics*"/>
+        </return-value>
+        <parameters>
+          <parameter name="language" transfer-ownership="none">
+            <doc xml:whitespace="preserve">language tag used to determine which script to get the metrics for, or %NULL to indicate to get the metrics for the entire font.</doc>
+            <type name="Language" c:type="PangoLanguage*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <record name="FontDescription"
+            c:type="PangoFontDescription"
+            glib:type-name="PangoFontDescription"
+            glib:get-type="pango_font_description_get_type"
+            c:symbol-prefix="font_description">
+      <constructor name="new" c:identifier="pango_font_description_new">
+        <doc xml:whitespace="preserve">Creates a new font description structure with all fields unset.
+should be freed using pango_font_description_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated #PangoFontDescription, which</doc>
+          <type name="FontDescription" c:type="PangoFontDescription*"/>
+        </return-value>
+      </constructor>
+      <method name="better_match"
+              c:identifier="pango_font_description_better_match">
+        <doc xml:whitespace="preserve">Determines if the style attributes of @new_match are a closer match
+for @desc than those of @old_match are, or if @old_match is %NULL,
+determines if @new_match is a match at all.
+Approximate matching is done for
+weight and style; other style attributes must match exactly.
+Style attributes are all attributes other than family and size-related
+attributes.  Approximate matching for style considers PANGO_STYLE_OBLIQUE
+and PANGO_STYLE_ITALIC as matches, but not as good a match as when the
+styles are equal.
+Note that @old_match must match @desc.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @new_match is a better match</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_match" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoFontDescription, or %NULL</doc>
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+          <parameter name="new_match" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoFontDescription</doc>
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="pango_font_description_copy">
+        <doc xml:whitespace="preserve">Make a copy of a #PangoFontDescription.
+be freed with pango_font_description_free(), or %NULL
+if @desc was %NULL.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated #PangoFontDescription, which should</doc>
+          <type name="FontDescription" c:type="PangoFontDescription*"/>
+        </return-value>
+      </method>
+      <method name="copy_static"
+              c:identifier="pango_font_description_copy_static">
+        <doc xml:whitespace="preserve">Like pango_font_description_copy(), but only a shallow copy is made
+of the family name and other allocated fields. The result can only
+be used until @desc is modified or freed. This is meant to be used
+when the copy is only needed temporarily.
+be freed with pango_font_description_free(), or %NULL
+if @desc was %NULL.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated #PangoFontDescription, which should</doc>
+          <type name="FontDescription" c:type="PangoFontDescription*"/>
+        </return-value>
+      </method>
+      <method name="equal" c:identifier="pango_font_description_equal">
+        <doc xml:whitespace="preserve">Compares two font descriptions for equality. Two font descriptions
+are considered equal if the fonts they describe are provably identical.
+This means that their masks do not have to match, as long as other fields
+are all the same. (Two font descriptions may result in identical fonts
+being loaded, but still compare %FALSE.)
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the two font descriptions are identical,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="desc2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">another #PangoFontDescription</doc>
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="pango_font_description_free">
+        <doc xml:whitespace="preserve">Frees a font description.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_family"
+              c:identifier="pango_font_description_get_family">
+        <doc xml:whitespace="preserve">Gets the family name field of a font description. See
+pango_font_description_set_family().
+%NULL if not previously set.  This has the same life-time
+as the font description itself and should not be freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the family name field for the font description, or</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_gravity"
+              c:identifier="pango_font_description_get_gravity"
+              version="1.16">
+        <doc xml:whitespace="preserve">Gets the gravity field of a font description. See
+pango_font_description_set_gravity().
+pango_font_description_get_set_fields() to find out if
+the field was explicitly set or not.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the gravity field for the font description. Use</doc>
+          <type name="Gravity" c:type="PangoGravity"/>
+        </return-value>
+      </method>
+      <method name="get_set_fields"
+              c:identifier="pango_font_description_get_set_fields">
+        <doc xml:whitespace="preserve">Determines which fields in a font description have been set.
+fields in @desc that have been set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a bitmask with bits set corresponding to the</doc>
+          <type name="FontMask" c:type="PangoFontMask"/>
+        </return-value>
+      </method>
+      <method name="get_size" c:identifier="pango_font_description_get_size">
+        <doc xml:whitespace="preserve">Gets the size field of a font description.
+See pango_font_description_set_size().
+You must call pango_font_description_get_size_is_absolute()
+to find out which is the case. Returns 0 if the size field has not
+previously been set or it has been set to 0 explicitly.
+Use pango_font_description_get_set_fields() to
+find out if the field was explicitly set or not.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the size field for the font description in points or device units.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_size_is_absolute"
+              c:identifier="pango_font_description_get_size_is_absolute"
+              version="1.8">
+        <doc xml:whitespace="preserve">Determines whether the size of the font is in points (not absolute) or device units (absolute).
+See pango_font_description_set_size() and pango_font_description_set_absolute_size().
+points or device units.  Use pango_font_description_get_set_fields() to
+find out if the size field of the font description was explicitly set or not.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the size for the font description is in</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_stretch"
+              c:identifier="pango_font_description_get_stretch">
+        <doc xml:whitespace="preserve">Gets the stretch field of a font description.
+See pango_font_description_set_stretch().
+pango_font_description_get_set_fields() to find out if
+the field was explicitly set or not.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the stretch field for the font description. Use</doc>
+          <type name="Stretch" c:type="PangoStretch"/>
+        </return-value>
+      </method>
+      <method name="get_style" c:identifier="pango_font_description_get_style">
+        <doc xml:whitespace="preserve">Gets the style field of a #PangoFontDescription. See
+pango_font_description_set_style().
+Use pango_font_description_get_set_fields() to find out if
+the field was explicitly set or not.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the style field for the font description.</doc>
+          <type name="Style" c:type="PangoStyle"/>
+        </return-value>
+      </method>
+      <method name="get_variant"
+              c:identifier="pango_font_description_get_variant">
+        <doc xml:whitespace="preserve">Gets the variant field of a #PangoFontDescription. See
+pango_font_description_set_variant().
+pango_font_description_get_set_fields() to find out if
+the field was explicitly set or not.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the variant field for the font description. Use</doc>
+          <type name="Variant" c:type="PangoVariant"/>
+        </return-value>
+      </method>
+      <method name="get_weight"
+              c:identifier="pango_font_description_get_weight">
+        <doc xml:whitespace="preserve">Gets the weight field of a font description. See
+pango_font_description_set_weight().
+pango_font_description_get_set_fields() to find out if
+the field was explicitly set or not.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the weight field for the font description. Use</doc>
+          <type name="Weight" c:type="PangoWeight"/>
+        </return-value>
+      </method>
+      <method name="hash" c:identifier="pango_font_description_hash">
+        <doc xml:whitespace="preserve">Computes a hash of a #PangoFontDescription structure suitable
+to be used, for example, as an argument to g_hash_table_new().
+The hash value is independent of @desc-&gt;mask.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the hash value.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="merge" c:identifier="pango_font_description_merge">
+        <doc xml:whitespace="preserve">Merges the fields that are set in @desc_to_merge into the fields in
+are not already set are affected. If %TRUE, then fields that are
+already set will be replaced as well.
+If @desc_to_merge is %NULL, this function performs nothing.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="desc_to_merge" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #PangoFontDescription to merge from, or %NULL</doc>
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+          <parameter name="replace_existing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">if %TRUE, replace fields in @desc with the corresponding values from @desc_to_merge, even if they are already exist.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="merge_static"
+              c:identifier="pango_font_description_merge_static">
+        <doc xml:whitespace="preserve">Like pango_font_description_merge(), but only a shallow copy is made
+of the family name and other allocated fields. @desc can only be
+used until @desc_to_merge is modified or freed. This is meant
+to be used when the merged font description is only needed temporarily.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="desc_to_merge" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #PangoFontDescription to merge from</doc>
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+          <parameter name="replace_existing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">if %TRUE, replace fields in @desc with the corresponding values from @desc_to_merge, even if they are already exist.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_absolute_size"
+              c:identifier="pango_font_description_set_absolute_size"
+              version="1.8">
+        <doc xml:whitespace="preserve">Sets the size field of a font description, in device units. This is mutually
+exclusive with pango_font_description_set_size() which sets the font size
+in points.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new size, in Pango units. There are %PANGO_SCALE Pango units in one device unit. For an output backend where a device unit is a pixel, a @size value of 10 * PANGO_SCALE gives a 10 pixel font.</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_family"
+              c:identifier="pango_font_description_set_family">
+        <doc xml:whitespace="preserve">Sets the family name field of a font description. The family
+name represents a family of related font styles, and will
+resolve to a particular #PangoFontFamily. In some uses of
+#PangoFontDescription, it is also possible to use a comma
+separated list of family names for this field.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="family" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string representing the family name.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_family_static"
+              c:identifier="pango_font_description_set_family_static">
+        <doc xml:whitespace="preserve">Like pango_font_description_set_family(), except that no
+copy of @family is made. The caller must make sure that the
+string passed in stays around until @desc has been freed
+or the name is set again. This function can be used if
+if @desc is only needed temporarily.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="family" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string representing the family name.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_gravity"
+              c:identifier="pango_font_description_set_gravity"
+              version="1.16">
+        <doc xml:whitespace="preserve">Sets the gravity field of a font description. The gravity field
+specifies how the glyphs should be rotated.  If @gravity is
+%PANGO_GRAVITY_AUTO, this actually unsets the gravity mask on
+the font description.
+This function is seldom useful to the user.  Gravity should normally
+be set on a #PangoContext.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gravity" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the gravity for the font description.</doc>
+            <type name="Gravity" c:type="PangoGravity"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_size" c:identifier="pango_font_description_set_size">
+        <doc xml:whitespace="preserve">Sets the size field of a font description in fractional points. This is mutually
+exclusive with pango_font_description_set_absolute_size().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of the font in points, scaled by PANGO_SCALE. (That is, a @size value of 10 * PANGO_SCALE is a 10 point font. The conversion factor between points and device units depends on system configuration and the output device. For screen display, a logical DPI of 96 is common, in which case a 10 point font corresponds to a 10 * (96 / 72) = 13.3 pixel font. Use pango_font_description_set_absolute_size() if you need a particular size in device units.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_stretch"
+              c:identifier="pango_font_description_set_stretch">
+        <doc xml:whitespace="preserve">Sets the stretch field of a font description. The stretch field
+specifies how narrow or wide the font should be.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stretch" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the stretch for the font description</doc>
+            <type name="Stretch" c:type="PangoStretch"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_style" c:identifier="pango_font_description_set_style">
+        <doc xml:whitespace="preserve">Sets the style field of a #PangoFontDescription. The
+#PangoStyle enumeration describes whether the font is slanted and
+the manner in which it is slanted; it can be either
+#PANGO_STYLE_NORMAL, #PANGO_STYLE_ITALIC, or #PANGO_STYLE_OBLIQUE.
+Most fonts will either have a italic style or an oblique
+style, but not both, and font matching in Pango will
+match italic specifications with oblique fonts and vice-versa
+if an exact match is not found.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="style" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the style for the font description</doc>
+            <type name="Style" c:type="PangoStyle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_variant"
+              c:identifier="pango_font_description_set_variant">
+        <doc xml:whitespace="preserve">Sets the variant field of a font description. The #PangoVariant
+can either be %PANGO_VARIANT_NORMAL or %PANGO_VARIANT_SMALL_CAPS.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="variant" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the variant type for the font description.</doc>
+            <type name="Variant" c:type="PangoVariant"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_weight"
+              c:identifier="pango_font_description_set_weight">
+        <doc xml:whitespace="preserve">Sets the weight field of a font description. The weight field
+specifies how bold or light the font should be. In addition
+to the values of the #PangoWeight enumeration, other intermediate
+numeric values are possible.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="weight" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the weight for the font description.</doc>
+            <type name="Weight" c:type="PangoWeight"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_filename"
+              c:identifier="pango_font_description_to_filename">
+        <doc xml:whitespace="preserve">Creates a filename representation of a font description. The
+filename is identical to the result from calling
+pango_font_description_to_string(), but with underscores instead of
+characters that are untypical in filenames, and in lower case only.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string that must be freed with g_free().</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="to_string" c:identifier="pango_font_description_to_string">
+        <doc xml:whitespace="preserve">Creates a string representation of a font description. See
+pango_font_description_from_string() for a description of the
+format of the string representation. The family list in the
+string description will only have a terminating comma if the
+last word of the list is a valid style option.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new string that must be freed with g_free().</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="unset_fields"
+              c:identifier="pango_font_description_unset_fields">
+        <doc xml:whitespace="preserve">Unsets some of the fields in a #PangoFontDescription.  The unset
+fields will get back to their default values.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="to_unset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">bitmask of fields in the @desc to unset.</doc>
+            <type name="FontMask" c:type="PangoFontMask"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <class name="FontFace"
+           c:symbol-prefix="font_face"
+           c:type="PangoFontFace"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="PangoFontFace"
+           glib:get-type="pango_font_face_get_type">
+      <method name="describe" c:identifier="pango_font_face_describe">
+        <doc xml:whitespace="preserve">Returns the family, style, variant, weight and stretch of
+a #PangoFontFace. The size field of the resulting font description
+will be unset.
+holding the description of the face. Use pango_font_description_free()
+to free the result.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly-created #PangoFontDescription structure</doc>
+          <type name="FontDescription" c:type="PangoFontDescription*"/>
+        </return-value>
+      </method>
+      <method name="get_face_name"
+              c:identifier="pango_font_face_get_face_name">
+        <doc xml:whitespace="preserve">Gets a name representing the style of this face among the
+different faces in the #PangoFontFamily for the face. This
+name is unique among all faces in the family and is suitable
+for displaying to users.
+owned by the face object and must not be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the face name for the face. This string is</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="is_synthesized"
+              c:identifier="pango_font_face_is_synthesized"
+              version="1.18">
+        <doc xml:whitespace="preserve">Returns whether a #PangoFontFace is synthesized by the underlying
+font rendering engine from another face, perhaps by shearing, emboldening,
+or lightening it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @face is synthesized.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="list_sizes"
+              c:identifier="pango_font_face_list_sizes"
+              version="1.4">
+        <doc xml:whitespace="preserve">List the available sizes for a font. This is only applicable to bitmap
+fonts. For scalable fonts, stores %NULL at the location pointed to by
+are in Pango units and are sorted in ascending order.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sizes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store a pointer to an array of int. This array should be freed with g_free().</doc>
+            <type name="gint" c:type="int**"/>
+          </parameter>
+          <parameter name="n_sizes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the number of elements in @sizes</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <class name="FontFamily"
+           c:symbol-prefix="font_family"
+           c:type="PangoFontFamily"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="PangoFontFamily"
+           glib:get-type="pango_font_family_get_type">
+      <method name="get_name" c:identifier="pango_font_family_get_name">
+        <doc xml:whitespace="preserve">Gets the name of the family. The name is unique among all
+fonts for the font backend and can be used in a #PangoFontDescription
+to specify that a face from this family is desired.
+by the family object and must not be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the family. This string is owned</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="is_monospace"
+              c:identifier="pango_font_family_is_monospace"
+              version="1.4">
+        <doc xml:whitespace="preserve">A monospace font is a font designed for text display where the the
+characters form a regular grid. For Western languages this would
+mean that the advance width of all characters are the same, but
+this categorization also includes Asian fonts which include
+g_unichar_iswide() returns a result that indicates whether a
+character is typically double-width in a monospace font.
+The best way to find out the grid-cell size is to call
+pango_font_metrics_get_approximate_digit_width(), since the results
+of pango_font_metrics_get_approximate_char_width() may be affected
+by double-width characters.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the family is monospace.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="list_faces" c:identifier="pango_font_family_list_faces">
+        <doc xml:whitespace="preserve">Lists the different font faces that make up @family. The faces
+in a family share a common design, but differ in slant, weight,
+width and other aspects.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="faces" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store an array of pointers to #PangoFontFace objects, or %NULL. This array should be freed with g_free() when it is no longer needed.</doc>
+            <type name="FontFace" c:type="PangoFontFace***"/>
+          </parameter>
+          <parameter name="n_faces" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store number of elements in @faces.</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <class name="FontMap"
+           c:symbol-prefix="font_map"
+           c:type="PangoFontMap"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="PangoFontMap"
+           glib:get-type="pango_font_map_get_type">
+      <method name="create_context"
+              c:identifier="pango_font_map_create_context"
+              version="1.22"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Creates a #PangoContext connected to @fontmap.  This is equivalent
+to pango_context_new() followed by pango_context_set_font_map().
+If you are using Pango as part of a higher-level system,
+that system may have it's own way of create a #PangoContext.
+For instance, the GTK+ toolkit has, among others,
+gdk_pango_context_get_for_screen(), and
+gtk_widget_get_pango_context().  Use those instead.
+be freed with g_object_unref().</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the newly allocated #PangoContext, which should</doc>
+          <type name="Context" c:type="PangoContext*"/>
+        </return-value>
+      </method>
+      <method name="list_families" c:identifier="pango_font_map_list_families">
+        <doc xml:whitespace="preserve">List all families for a fontmap.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="families" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store a pointer to an array of #PangoFontFamily *. This array should be freed with g_free().</doc>
+            <type name="FontFamily" c:type="PangoFontFamily***"/>
+          </parameter>
+          <parameter name="n_families" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the number of elements in @families</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_font"
+              c:identifier="pango_font_map_load_font"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Load the font in the fontmap that is the closest match for @desc.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the font loaded, or %NULL if no font matched.</doc>
+          <type name="Font" c:type="PangoFont*"/>
+        </return-value>
+        <parameters>
+          <parameter name="context" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #PangoContext the font will be used with</doc>
+            <type name="Context" c:type="PangoContext*"/>
+          </parameter>
+          <parameter name="desc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoFontDescription describing the font to load</doc>
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_fontset"
+              c:identifier="pango_font_map_load_fontset"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Load a set of fonts in the fontmap that can be used to render
+a font matching @desc.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the fontset, or %NULL if no font matched.</doc>
+          <type name="Fontset" c:type="PangoFontset*"/>
+        </return-value>
+        <parameters>
+          <parameter name="context" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #PangoContext the font will be used with</doc>
+            <type name="Context" c:type="PangoContext*"/>
+          </parameter>
+          <parameter name="desc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoFontDescription describing the font to load</doc>
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+          <parameter name="language" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoLanguage the fonts will be used for</doc>
+            <type name="Language" c:type="PangoLanguage*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <bitfield name="FontMask"
+              glib:type-name="PangoFontMask"
+              glib:get-type="pango_font_mask_get_type"
+              c:type="PangoFontMask">
+      <member name="family"
+              value="1"
+              c:identifier="PANGO_FONT_MASK_FAMILY"
+              glib:nick="family"/>
+      <member name="style"
+              value="2"
+              c:identifier="PANGO_FONT_MASK_STYLE"
+              glib:nick="style"/>
+      <member name="variant"
+              value="4"
+              c:identifier="PANGO_FONT_MASK_VARIANT"
+              glib:nick="variant"/>
+      <member name="weight"
+              value="8"
+              c:identifier="PANGO_FONT_MASK_WEIGHT"
+              glib:nick="weight"/>
+      <member name="stretch"
+              value="16"
+              c:identifier="PANGO_FONT_MASK_STRETCH"
+              glib:nick="stretch"/>
+      <member name="size"
+              value="32"
+              c:identifier="PANGO_FONT_MASK_SIZE"
+              glib:nick="size"/>
+      <member name="gravity"
+              value="64"
+              c:identifier="PANGO_FONT_MASK_GRAVITY"
+              glib:nick="gravity"/>
+    </bitfield>
+    <record name="FontMetrics"
+            c:type="PangoFontMetrics"
+            glib:type-name="PangoFontMetrics"
+            glib:get-type="pango_font_metrics_get_type"
+            c:symbol-prefix="font_metrics">
+      <method name="get_approximate_char_width"
+              c:identifier="pango_font_metrics_get_approximate_char_width">
+        <doc xml:whitespace="preserve">Gets the approximate character width for a font metrics structure.
+This is merely a representative value useful, for example, for
+determining the initial size for a window. Actual characters in
+text will be wider and narrower than this.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the character width, in Pango units.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_approximate_digit_width"
+              c:identifier="pango_font_metrics_get_approximate_digit_width">
+        <doc xml:whitespace="preserve">Gets the approximate digit width for a font metrics structure.
+This is merely a representative value useful, for example, for
+determining the initial size for a window. Actual digits in
+text can be wider or narrower than this, though this value
+is generally somewhat more accurate than the result of
+pango_font_metrics_get_approximate_char_width() for digits.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the digit width, in Pango units.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_ascent" c:identifier="pango_font_metrics_get_ascent">
+        <doc xml:whitespace="preserve">Gets the ascent from a font metrics structure. The ascent is
+the distance from the baseline to the logical top of a line
+of text. (The logical top may be above or below the top of the
+actual drawn ink. It is necessary to lay out the text to figure
+where the ink will be.)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ascent, in Pango units.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_descent" c:identifier="pango_font_metrics_get_descent">
+        <doc xml:whitespace="preserve">Gets the descent from a font metrics structure. The descent is
+the distance from the baseline to the logical bottom of a line
+of text. (The logical bottom may be above or below the bottom of the
+actual drawn ink. It is necessary to lay out the text to figure
+where the ink will be.)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the descent, in Pango units.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_strikethrough_position"
+              c:identifier="pango_font_metrics_get_strikethrough_position"
+              version="1.6">
+        <doc xml:whitespace="preserve">Gets the suggested position to draw the strikethrough.
+The value returned is the distance &lt;emphasis&gt;above&lt;/emphasis&gt; the
+baseline of the top of the strikethrough.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the suggested strikethrough position, in Pango units.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_strikethrough_thickness"
+              c:identifier="pango_font_metrics_get_strikethrough_thickness"
+              version="1.6">
+        <doc xml:whitespace="preserve">Gets the suggested thickness to draw for the strikethrough.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the suggested strikethrough thickness, in Pango units.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_underline_position"
+              c:identifier="pango_font_metrics_get_underline_position"
+              version="1.6">
+        <doc xml:whitespace="preserve">Gets the suggested position to draw the underline.
+The value returned is the distance &lt;emphasis&gt;above&lt;/emphasis&gt; the
+baseline of the top of the underline. Since most fonts have
+underline positions beneath the baseline, this value is typically
+negative.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the suggested underline position, in Pango units.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_underline_thickness"
+              c:identifier="pango_font_metrics_get_underline_thickness"
+              version="1.6">
+        <doc xml:whitespace="preserve">Gets the suggested thickness to draw for the underline.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the suggested underline thickness, in Pango units.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="ref" c:identifier="pango_font_metrics_ref">
+        <doc xml:whitespace="preserve">Increase the reference count of a font metrics structure by one.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">@metrics</doc>
+          <type name="FontMetrics" c:type="PangoFontMetrics*"/>
+        </return-value>
+      </method>
+      <method name="unref" c:identifier="pango_font_metrics_unref">
+        <doc xml:whitespace="preserve">Decrease the reference count of a font metrics structure by one. If
+the result is zero, frees the structure and any associated
+memory.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="Fontset"
+           c:symbol-prefix="fontset"
+           c:type="PangoFontset"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="PangoFontset"
+           glib:get-type="pango_fontset_get_type">
+      <method name="foreach"
+              c:identifier="pango_fontset_foreach"
+              version="1.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Iterates through all the fonts in a fontset, calling @func for
+each one. If @func returns %TRUE, that stops the iteration.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">Callback function</doc>
+            <type name="FontsetForeachFunc" c:type="PangoFontsetForeachFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to the callback function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_font"
+              c:identifier="pango_fontset_get_font"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns the font in the fontset that contains the best glyph for the
+Unicode character @wc.
+with the font.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a #PangoFont. The caller must call g_object_unref when finished</doc>
+          <type name="Font" c:type="PangoFont*"/>
+        </return-value>
+        <parameters>
+          <parameter name="wc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a Unicode character</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_metrics" c:identifier="pango_fontset_get_metrics">
+        <doc xml:whitespace="preserve">Get overall metric information for the fonts in the fontset.
+when finished using the object.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #PangoFontMetrics object. The caller must call pango_font_metrics_unref()</doc>
+          <type name="FontMetrics" c:type="PangoFontMetrics*"/>
+        </return-value>
+      </method>
+    </class>
+    <callback name="FontsetForeachFunc" c:type="PangoFontsetForeachFunc">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="fontset" transfer-ownership="none">
+          <type name="Fontset" c:type="PangoFontset*"/>
+        </parameter>
+        <parameter name="font" transfer-ownership="none">
+          <type name="Font" c:type="PangoFont*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="GlyphGeometry" c:type="PangoGlyphGeometry">
+      <field name="width" writable="1">
+        <type name="GlyphUnit" c:type="PangoGlyphUnit"/>
+      </field>
+      <field name="x_offset" writable="1">
+        <type name="GlyphUnit" c:type="PangoGlyphUnit"/>
+      </field>
+      <field name="y_offset" writable="1">
+        <type name="GlyphUnit" c:type="PangoGlyphUnit"/>
+      </field>
+    </record>
+    <record name="GlyphInfo" c:type="PangoGlyphInfo">
+      <field name="glyph" writable="1">
+        <type name="Glyph" c:type="PangoGlyph"/>
+      </field>
+      <field name="geometry" writable="1">
+        <type name="GlyphGeometry" c:type="PangoGlyphGeometry"/>
+      </field>
+      <field name="attr" writable="1">
+        <type name="GlyphVisAttr" c:type="PangoGlyphVisAttr"/>
+      </field>
+    </record>
+    <record name="GlyphItem"
+            c:type="PangoGlyphItem"
+            glib:type-name="PangoGlyphItem"
+            glib:get-type="pango_glyph_item_get_type"
+            c:symbol-prefix="glyph_item">
+      <field name="item" writable="1">
+        <type name="Item" c:type="PangoItem*"/>
+      </field>
+      <field name="glyphs" writable="1">
+        <type name="GlyphString" c:type="PangoGlyphString*"/>
+      </field>
+      <method name="apply_attrs"
+              c:identifier="pango_glyph_item_apply_attrs"
+              version="1.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Splits a shaped item (PangoGlyphItem) into multiple items based
+on an attribute list. The idea is that if you have attributes
+that don't affect shaping, such as color or underline, to avoid
+affecting shaping, you filter them out (pango_attr_list_filter()),
+apply the shaping process and then reapply them to the result using
+this function.
+All attributes that start or end inside a cluster are applied
+to that cluster; for instance, if half of a cluster is underlined
+and the other-half strikethrough, then the cluster will end
+up with both underline and strikethrough attributes. In these
+cases, it may happen that item-&gt;extra_attrs for some of the
+result items can have multiple attributes of the same type.
+This function takes ownership of @glyph_item; it will be reused
+as one of the elements in the list.
+the list using g_slist_free().</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a list of glyph items resulting from splitting</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">text that @list applies to</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="list" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoAttrList</doc>
+            <type name="AttrList" c:type="PangoAttrList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="pango_glyph_item_copy" version="1.20">
+        <doc xml:whitespace="preserve">Make a deep copy of an existing #PangoGlyphItem structure.
+be freed with pango_glyph_item_free(), or %NULL
+if @orig was %NULL.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated #PangoGlyphItem, which should</doc>
+          <type name="GlyphItem" c:type="PangoGlyphItem*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="pango_glyph_item_free" version="1.6">
+        <doc xml:whitespace="preserve">Frees a #PangoGlyphItem and resources to which it points.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_logical_widths"
+              c:identifier="pango_glyph_item_get_logical_widths"
+              version="1.26">
+        <doc xml:whitespace="preserve">Given a #PangoGlyphItem and the corresponding
+text, determine the screen width corresponding to each character. When
+multiple characters compose a single cluster, the width of the entire
+cluster is divided equally among the characters.
+See also pango_glyph_string_get_logical_widths().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">text that @glyph_item corresponds to (glyph_item-&gt;item-&gt;offset is an offset from the start of @text)</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="logical_widths" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array whose length is the number of characters in glyph_item (equal to glyph_item-&gt;item-&gt;num_chars) to be filled in with the resulting character widths.</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="letter_space"
+              c:identifier="pango_glyph_item_letter_space"
+              version="1.6">
+        <doc xml:whitespace="preserve">Adds spacing between the graphemes of @glyph_item to
+give the effect of typographic letter spacing.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">text that @glyph_item corresponds to (glyph_item-&gt;item-&gt;offset is an offset from the start of @text)</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="log_attrs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">logical attributes for the item (the first logical attribute refers to the position before the first character in the item)</doc>
+            <type name="LogAttr" c:type="PangoLogAttr*"/>
+          </parameter>
+          <parameter name="letter_spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">amount of letter spacing to add in Pango units. May be negative, though too large negative values will give ugly results.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="split" c:identifier="pango_glyph_item_split" version="1.2">
+        <doc xml:whitespace="preserve">Modifies @orig to cover only the text after @split_index, and
+returns a new item that covers the text before @split_index that
+used to be in @orig. You can think of @split_index as the length of
+the returned item. @split_index may not be 0, and it may not be
+greater than or equal to the length of @orig (that is, there must
+be at least one byte assigned to each item, you can't create a
+zero-length item).
+This function is similar in function to pango_item_split() (and uses
+it internally.)
+with pango_glyph_item_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated item representing text before</doc>
+          <type name="GlyphItem" c:type="PangoGlyphItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">text to which positions in @orig apply</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="split_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">byte index of position to split item, relative to the start of the item</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="GlyphItemIter"
+            c:type="PangoGlyphItemIter"
+            glib:type-name="PangoGlyphItemIter"
+            glib:get-type="pango_glyph_item_iter_get_type"
+            c:symbol-prefix="glyph_item_iter">
+      <field name="glyph_item" writable="1">
+        <type name="GlyphItem" c:type="PangoGlyphItem*"/>
+      </field>
+      <field name="text" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="start_glyph" writable="1">
+        <type name="gint" c:type="int"/>
+      </field>
+      <field name="start_index" writable="1">
+        <type name="gint" c:type="int"/>
+      </field>
+      <field name="start_char" writable="1">
+        <type name="gint" c:type="int"/>
+      </field>
+      <field name="end_glyph" writable="1">
+        <type name="gint" c:type="int"/>
+      </field>
+      <field name="end_index" writable="1">
+        <type name="gint" c:type="int"/>
+      </field>
+      <field name="end_char" writable="1">
+        <type name="gint" c:type="int"/>
+      </field>
+      <method name="copy"
+              c:identifier="pango_glyph_item_iter_copy"
+              version="1.22">
+        <doc xml:whitespace="preserve">Make a shallow copy of an existing #PangoGlyphItemIter structure.
+be freed with pango_glyph_item_iter_free(), or %NULL
+if @orig was %NULL.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated #PangoGlyphItemIter, which should</doc>
+          <type name="GlyphItemIter" c:type="PangoGlyphItemIter*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="pango_glyph_item_iter_free"
+              version="1.22">
+        <doc xml:whitespace="preserve">Frees a #PangoGlyphItemIter created by pango_glyph_item_iter_copy().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="init_end"
+              c:identifier="pango_glyph_item_iter_init_end"
+              version="1.22">
+        <doc xml:whitespace="preserve">Initializes a #PangoGlyphItemIter structure to point to the
+last cluster in a glyph item.
+See #PangoGlyphItemIter for details of cluster orders.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%FALSE if there are no clusters in the glyph item</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="glyph_item" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the glyph item to iterate over</doc>
+            <type name="GlyphItem" c:type="PangoGlyphItem*"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">text corresponding to the glyph item</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_start"
+              c:identifier="pango_glyph_item_iter_init_start"
+              version="1.22">
+        <doc xml:whitespace="preserve">Initializes a #PangoGlyphItemIter structure to point to the
+first cluster in a glyph item.
+See #PangoGlyphItemIter for details of cluster orders.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%FALSE if there are no clusters in the glyph item</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="glyph_item" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the glyph item to iterate over</doc>
+            <type name="GlyphItem" c:type="PangoGlyphItem*"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">text corresponding to the glyph item</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="next_cluster"
+              c:identifier="pango_glyph_item_iter_next_cluster"
+              version="1.22">
+        <doc xml:whitespace="preserve">Advances the iterator to the next cluster in the glyph item.
+See #PangoGlyphItemIter for details of cluster orders.
+last cluster.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the iterator was advanced, %FALSE if we were already on the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="prev_cluster"
+              c:identifier="pango_glyph_item_iter_prev_cluster"
+              version="1.22">
+        <doc xml:whitespace="preserve">Moves the iterator to the preceding cluster in the glyph item.
+See #PangoGlyphItemIter for details of cluster orders.
+first cluster.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the iterator was moved, %FALSE if we were already on the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="GlyphString"
+            c:type="PangoGlyphString"
+            glib:type-name="PangoGlyphString"
+            glib:get-type="pango_glyph_string_get_type"
+            c:symbol-prefix="glyph_string">
+      <field name="num_glyphs" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="glyphs" writable="1">
+        <type name="GlyphInfo" c:type="PangoGlyphInfo*"/>
+      </field>
+      <field name="log_clusters" writable="1">
+        <type name="gint" c:type="gint*"/>
+      </field>
+      <field name="space" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <constructor name="new" c:identifier="pango_glyph_string_new">
+        <doc xml:whitespace="preserve">Create a new #PangoGlyphString.
+should be freed with pango_glyph_string_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated #PangoGlyphString, which</doc>
+          <type name="GlyphString" c:type="PangoGlyphString*"/>
+        </return-value>
+      </constructor>
+      <method name="copy" c:identifier="pango_glyph_string_copy">
+        <doc xml:whitespace="preserve">Copy a glyph string and associated storage.
+should be freed with pango_glyph_string_free(),
+or %NULL if @string was %NULL.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated #PangoGlyphString, which</doc>
+          <type name="GlyphString" c:type="PangoGlyphString*"/>
+        </return-value>
+      </method>
+      <method name="extents" c:identifier="pango_glyph_string_extents">
+        <doc xml:whitespace="preserve">Compute the logical and ink extents of a glyph string. See the documentation
+for pango_font_get_glyph_extents() for details about the interpretation
+of the rectangles.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoFont</doc>
+            <type name="Font" c:type="PangoFont*"/>
+          </parameter>
+          <parameter name="ink_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle used to store the extents of the glyph string as drawn or %NULL to indicate that the result is not needed.</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle used to store the logical extents of the glyph string or %NULL to indicate that the result is not needed.</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="extents_range"
+              c:identifier="pango_glyph_string_extents_range">
+        <doc xml:whitespace="preserve">or %NULL to indicate that the result is not needed.
+or %NULL to indicate that the result is not needed.
+Computes the extents of a sub-portion of a glyph string. The extents are
+relative to the start of the glyph string range (the origin of their
+coordinate system is at the start of the range, not at the start of the entire
+glyph string).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start index</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">end index (the range is the set of bytes with</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="font" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoFont</doc>
+            <type name="Font" c:type="PangoFont*"/>
+          </parameter>
+          <parameter name="ink_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle used to store the extents of the glyph string range as drawn</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle used to store the logical extents of the glyph string range</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="pango_glyph_string_free">
+        <doc xml:whitespace="preserve">Free a glyph string and associated storage.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_logical_widths"
+              c:identifier="pango_glyph_string_get_logical_widths">
+        <doc xml:whitespace="preserve">Given a #PangoGlyphString resulting from pango_shape() and the corresponding
+text, determine the screen width corresponding to each character. When
+multiple characters compose a single cluster, the width of the entire
+cluster is divided equally among the characters.
+See also pango_glyph_item_get_logical_widths().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text corresponding to the glyphs</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of @text, in bytes</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="embedding_level" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the embedding level of the string</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="logical_widths" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array whose length is the number of characters in text (equal to g_utf8_strlen (text, length) unless text has NUL bytes) to be filled in with the resulting character widths.</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_width"
+              c:identifier="pango_glyph_string_get_width"
+              version="1.14">
+        <doc xml:whitespace="preserve">Computes the logical width of the glyph string as can also be computed
+using pango_glyph_string_extents().  However, since this only computes the
+width, it's much faster.  This is in fact only a convenience function that
+computes the sum of geometry.width for each glyph in the @glyphs.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the logical width of the glyph string.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="index_to_x" c:identifier="pango_glyph_string_index_to_x">
+        <doc xml:whitespace="preserve">Converts from character position to x position. (X position
+is measured from the left edge of the run). Character positions
+are computed by dividing up each cluster into equal portions.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text for the run</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes (not characters) in @text.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="analysis" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the analysis information return from pango_itemize()</doc>
+            <type name="Analysis" c:type="PangoAnalysis*"/>
+          </parameter>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the byte index within @text</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="trailing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether we should compute the result for the beginning (%FALSE) or end (%TRUE) of the character.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="x_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store result</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_size" c:identifier="pango_glyph_string_set_size">
+        <doc xml:whitespace="preserve">Resize a glyph string to the given length.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new length of the string.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="x_to_index" c:identifier="pango_glyph_string_x_to_index">
+        <doc xml:whitespace="preserve">Convert from x offset to character position. Character positions
+are computed by dividing up each cluster into equal portions.
+In scripts where positioning within a cluster is not allowed
+(such as Thai), the returned value may not be a valid cursor
+position; the caller must combine the result with the logical
+attributes for the text to compute the valid cursor position.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text for the run</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes (not characters) in text.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="analysis" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the analysis information return from pango_itemize()</doc>
+            <type name="Analysis" c:type="PangoAnalysis*"/>
+          </parameter>
+          <parameter name="x_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x offset (in Pango units)</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store calculated byte index within @text</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+          <parameter name="trailing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store a boolean indicating whether the user clicked on the leading or trailing edge of the character.</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="GlyphVisAttr" c:type="PangoGlyphVisAttr">
+      <field name="is_cluster_start" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <enumeration name="Gravity"
+                 version="1.16"
+                 glib:type-name="PangoGravity"
+                 glib:get-type="pango_gravity_get_type"
+                 c:type="PangoGravity">
+      <doc xml:whitespace="preserve">The #PangoGravity type represents the orientation of glyphs in a segment
+of text.  This is useful when rendering vertical text layouts.  In
+those situations, the layout is rotated using a non-identity PangoMatrix,
+and then glyph orientation is controlled using #PangoGravity.
+Not every value in this enumeration makes sense for every usage of
+#PangoGravity; for example, %PANGO_GRAVITY_AUTO only can be passed to
+pango_context_set_base_gravity() and can only be returned by
+pango_context_get_base_gravity().</doc>
+      <member name="south"
+              value="0"
+              c:identifier="PANGO_GRAVITY_SOUTH"
+              glib:nick="south"/>
+      <member name="east"
+              value="1"
+              c:identifier="PANGO_GRAVITY_EAST"
+              glib:nick="east"/>
+      <member name="north"
+              value="2"
+              c:identifier="PANGO_GRAVITY_NORTH"
+              glib:nick="north"/>
+      <member name="west"
+              value="3"
+              c:identifier="PANGO_GRAVITY_WEST"
+              glib:nick="west"/>
+      <member name="auto"
+              value="4"
+              c:identifier="PANGO_GRAVITY_AUTO"
+              glib:nick="auto"/>
+    </enumeration>
+    <enumeration name="GravityHint"
+                 version="1.16"
+                 glib:type-name="PangoGravityHint"
+                 glib:get-type="pango_gravity_hint_get_type"
+                 c:type="PangoGravityHint">
+      <doc xml:whitespace="preserve">The #PangoGravityHint defines how horizontal scripts should behave in a
+vertical context.  That is, English excerpt in a vertical paragraph for
+example.
+See #PangoGravity.</doc>
+      <member name="natural"
+              value="0"
+              c:identifier="PANGO_GRAVITY_HINT_NATURAL"
+              glib:nick="natural"/>
+      <member name="strong"
+              value="1"
+              c:identifier="PANGO_GRAVITY_HINT_STRONG"
+              glib:nick="strong"/>
+      <member name="line"
+              value="2"
+              c:identifier="PANGO_GRAVITY_HINT_LINE"
+              glib:nick="line"/>
+    </enumeration>
+    <record name="Item"
+            c:type="PangoItem"
+            glib:type-name="PangoItem"
+            glib:get-type="pango_item_get_type"
+            c:symbol-prefix="item">
+      <field name="offset" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="length" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="num_chars" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="analysis" writable="1">
+        <type name="Analysis" c:type="PangoAnalysis"/>
+      </field>
+      <constructor name="new" c:identifier="pango_item_new">
+        <doc xml:whitespace="preserve">Creates a new #PangoItem structure initialized to default values.
+be freed with pango_item_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated #PangoItem, which should</doc>
+          <type name="Item" c:type="PangoItem*"/>
+        </return-value>
+      </constructor>
+      <method name="copy" c:identifier="pango_item_copy">
+        <doc xml:whitespace="preserve">Copy an existing #PangoItem structure.
+be freed with pango_item_free(), or %NULL if</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated #PangoItem, which should</doc>
+          <type name="Item" c:type="PangoItem*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="pango_item_free">
+        <doc xml:whitespace="preserve">Free a #PangoItem and all associated memory.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="split" c:identifier="pango_item_split">
+        <doc xml:whitespace="preserve">Modifies @orig to cover only the text after @split_index, and
+returns a new item that covers the text before @split_index that
+used to be in @orig. You can think of @split_index as the length of
+the returned item. @split_index may not be 0, and it may not be
+greater than or equal to the length of @orig (that is, there must
+be at least one byte assigned to each item, you can't create a
+zero-length item). @split_offset is the length of the first item in
+chars, and must be provided because the text used to generate the
+item isn't available, so pango_item_split() can't count the char
+length of the split items itself.
+should be freed with pango_item_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">new item representing text before @split_index, which</doc>
+          <type name="Item" c:type="PangoItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="split_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">byte index of position to split item, relative to the start of the item</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="split_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of chars between start of @orig and @split_index</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="Language"
+            c:type="PangoLanguage"
+            glib:type-name="PangoLanguage"
+            glib:get-type="pango_language_get_type"
+            c:symbol-prefix="language">
+      <method name="get_sample_string"
+              c:identifier="pango_language_get_sample_string">
+        <doc xml:whitespace="preserve">Get a string that is representative of the characters needed to
+render a particular language.
+The sample text may be a pangram, but is not necessarily.  It is chosen to
+be demonstrative of normal text in the language, as well as exposing font
+feature requirements unique to the language.  It is suitable for use
+as sample text in a font selection dialog.
+If @language is %NULL, the default language as found by
+pango_language_get_default() is used.
+If Pango does not have a sample string for @language, the classic
+"The quick brown fox..." is returned.  This can be detected by
+comparing the returned pointer value to that returned for (non-existent)
+language code "xx".  That is, compare to:
+&lt;informalexample&gt;&lt;programlisting&gt;
+pango_language_get_sample_string (pango_language_from_string ("xx"))
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+and should not be freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the sample string. This value is owned by Pango</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_scripts"
+              c:identifier="pango_language_get_scripts"
+              version="1.22">
+        <doc xml:whitespace="preserve">Determines the scripts used to to write @language.
+If nothing is known about the language tag @language,
+or if @language is %NULL, then %NULL is returned.
+The list of scripts returned starts with the script that the
+language uses most and continues to the one it uses least.
+The value @num_script points at will be set to the number
+of scripts in the returned array (or zero if %NULL is returned).
+Most languages use only one script for writing, but there are
+some that use two (Latin and Cyrillic for example), and a few
+use three (Japanese for example).  Applications should not make
+any assumptions on the maximum number of scripts returned
+though, except that it is positive if the return value is not
+%NULL, and it is a small number.
+The pango_language_includes_script() function uses this function
+internally.
+number of entries in the array stored in @num_scripts, or
+%NULL if Pango does not have any information about this
+particular language tag (also the case if @language is %NULL).
+The returned array is owned by Pango and should not be modified
+or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">An array of #PangoScript values, with the</doc>
+          <type name="Script" c:type="PangoScript*"/>
+        </return-value>
+        <parameters>
+          <parameter name="num_scripts" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to return number of scripts, or %NULL</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="includes_script"
+              c:identifier="pango_language_includes_script"
+              version="1.4">
+        <doc xml:whitespace="preserve">Determines if @script is one of the scripts used to
+write @language. The returned value is conservative;
+if nothing is known about the language tag @language,
+%TRUE will be returned, since, as far as Pango knows,
+This routine is used in Pango's itemization process when
+determining if a supplied language tag is relevant to
+a particular section of text. It probably is not useful for
+applications in most circumstances.
+This function uses pango_language_get_scripts() internally.
+to write @language or if nothing is known about @language
+(including the case that @language is %NULL),
+%FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @script is one of the scripts used</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="script" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoScript</doc>
+            <type name="Script" c:type="PangoScript"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="matches" c:identifier="pango_language_matches">
+        <doc xml:whitespace="preserve">Checks if a language tag matches one of the elements in a list of
+language ranges. A language tag is considered to match a range
+in the list if the range is '*', the range is exactly the tag,
+or the range is a prefix of the tag, and the character after it
+in the tag is '-'.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a match was found.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="range_list" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a list of language ranges, separated by ';', ':', ',', or space characters. Each element must either be '*', or a RFC 3066 language range canonicalized as by pango_language_from_string()</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_string" c:identifier="pango_language_to_string">
+        <doc xml:whitespace="preserve">Gets the RFC-3066 format string representing the given language tag. 
+Pango and should not be freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string representing the language tag.  This is owned by</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="Layout"
+           c:symbol-prefix="layout"
+           c:type="PangoLayout"
+           parent="GObject.Object"
+           glib:type-name="PangoLayout"
+           glib:get-type="pango_layout_get_type"
+           glib:type-struct="LayoutClass">
+      <constructor name="new" c:identifier="pango_layout_new">
+        <doc xml:whitespace="preserve">Create a new #PangoLayout object with attributes initialized to
+default values for a particular #PangoContext.
+count of one, which should be freed with
+g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated #PangoLayout, with a reference</doc>
+          <type name="Layout" c:type="PangoLayout*"/>
+        </return-value>
+        <parameters>
+          <parameter name="context" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoContext</doc>
+            <type name="Context" c:type="PangoContext*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="context_changed"
+              c:identifier="pango_layout_context_changed">
+        <doc xml:whitespace="preserve">Forces recomputation of any state in the #PangoLayout that
+might depend on the layout's context. This function should
+be called if you make changes to the context subsequent
+to creating the layout.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="copy" c:identifier="pango_layout_copy" introspectable="0">
+        <doc xml:whitespace="preserve">Does a deep copy-by-value of the @src layout. The attribute list,
+tab array, and text from the original layout are all copied by
+value.
+count of one, which should be freed with
+g_object_unref().</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the newly allocated #PangoLayout, with a reference</doc>
+          <type name="Layout" c:type="PangoLayout*"/>
+        </return-value>
+      </method>
+      <method name="get_alignment" c:identifier="pango_layout_get_alignment">
+        <doc xml:whitespace="preserve">positioned within the horizontal space available.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the alignment.</doc>
+          <type name="Alignment" c:type="PangoAlignment"/>
+        </return-value>
+      </method>
+      <method name="get_attributes" c:identifier="pango_layout_get_attributes">
+        <doc xml:whitespace="preserve">Gets the attribute list for the layout, if any.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #PangoAttrList.</doc>
+          <type name="AttrList" c:type="PangoAttrList*"/>
+        </return-value>
+      </method>
+      <method name="get_auto_dir"
+              c:identifier="pango_layout_get_auto_dir"
+              version="1.4">
+        <doc xml:whitespace="preserve">Gets whether to calculate the bidirectional base direction
+for the layout according to the contents of the layout.
+See pango_layout_set_auto_dir().
+is computed from the layout's contents, %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the bidirectional base direction</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_baseline"
+              c:identifier="pango_layout_get_baseline"
+              version="1.22">
+        <doc xml:whitespace="preserve">Gets the Y position of baseline of the first line in @layout.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">baseline of first line, from top of @layout.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_context"
+              c:identifier="pango_layout_get_context"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Retrieves the #PangoContext used for this layout.
+have an additional refcount added, so if you want to keep
+a copy of this around, you must reference it yourself.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the #PangoContext for the layout. This does not</doc>
+          <type name="Context" c:type="PangoContext*"/>
+        </return-value>
+      </method>
+      <method name="get_cursor_pos" c:identifier="pango_layout_get_cursor_pos">
+        <doc xml:whitespace="preserve">Given an index within a layout, determines the positions that of the
+strong and weak cursors if the insertion point is at that
+index. The position of each cursor is stored as a zero-width
+rectangle. The strong cursor location is the location where
+characters of the directionality equal to the base direction of the
+layout are inserted.  The weak cursor location is the location
+where characters of the directionality opposite to the base
+direction of the layout are inserted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the byte index of the cursor</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="strong_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the strong cursor position (may be %NULL)</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="weak_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the weak cursor position (may be %NULL)</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ellipsize"
+              c:identifier="pango_layout_get_ellipsize"
+              version="1.6">
+        <doc xml:whitespace="preserve">Gets the type of ellipsization being performed for @layout.
+See pango_layout_set_ellipsize()
+Use pango_layout_is_ellipsized() to query whether any paragraphs
+were actually ellipsized.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current ellipsization mode for @layout.</doc>
+          <type name="EllipsizeMode" c:type="PangoEllipsizeMode"/>
+        </return-value>
+      </method>
+      <method name="get_extents" c:identifier="pango_layout_get_extents">
+        <doc xml:whitespace="preserve">Computes the logical and ink extents of @layout. Logical extents
+are usually what you want for positioning things.  Note that both extents
+may have non-zero x and y.  You may want to use those to offset where you
+render the layout.  Not doing that is a very typical bug that shows up as
+right-to-left layouts not being correctly positioned in a layout with
+a set width.
+The extents are given in layout coordinates and in Pango units; layout
+coordinates begin at the top left corner of the layout.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ink_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle used to store the extents of the layout as drawn or %NULL to indicate that the result is not needed.</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle used to store the logical extents of the layout</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_font_description"
+              c:identifier="pango_layout_get_font_description"
+              version="1.8">
+        <doc xml:whitespace="preserve">Gets the font description for the layout, if any.
+or %NULL if the font description from the layout's
+context is inherited. This value is owned by the layout
+and must not be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the layout's font description,</doc>
+          <type name="FontDescription" c:type="PangoFontDescription*"/>
+        </return-value>
+      </method>
+      <method name="get_height"
+              c:identifier="pango_layout_get_height"
+              version="1.20">
+        <doc xml:whitespace="preserve">Gets the height of layout used for ellipsization.  See
+pango_layout_set_height() for details.
+number of lines if negative.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the height, in Pango units if positive, or</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_indent" c:identifier="pango_layout_get_indent">
+        <doc xml:whitespace="preserve">Gets the paragraph indent width in Pango units. A negative value
+indicates a hanging indentation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the indent in Pango units.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_iter" c:identifier="pango_layout_get_iter">
+        <doc xml:whitespace="preserve">Returns an iterator to iterate over the visual extents of the layout.
+pango_layout_iter_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #PangoLayoutIter that should be freed using</doc>
+          <type name="LayoutIter" c:type="PangoLayoutIter*"/>
+        </return-value>
+      </method>
+      <method name="get_justify" c:identifier="pango_layout_get_justify">
+        <doc xml:whitespace="preserve">Gets whether each complete line should be stretched to fill the entire
+width of the layout.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the justify.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_line" c:identifier="pango_layout_get_line">
+        <doc xml:whitespace="preserve">Retrieves a particular line from a #PangoLayout.
+Use the faster pango_layout_get_line_readonly() if you do not plan
+to modify the contents of the line (glyphs, glyph widths, etc.).
+index is out of range. This layout line can
+be ref'ed and retained, but will become invalid
+if changes are made to the #PangoLayout.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the requested #PangoLayoutLine, or %NULL if the</doc>
+          <type name="LayoutLine" c:type="PangoLayoutLine*"/>
+        </return-value>
+        <parameters>
+          <parameter name="line" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of a line, which must be between 0 and &lt;literal&gt;pango_layout_get_line_count(layout) - 1&lt;/literal&gt;, inclusive.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_line_count" c:identifier="pango_layout_get_line_count">
+        <doc xml:whitespace="preserve">Retrieves the count of lines for the @layout.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the line count.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_line_readonly"
+              c:identifier="pango_layout_get_line_readonly"
+              version="1.16">
+        <doc xml:whitespace="preserve">Retrieves a particular line from a #PangoLayout.
+This is a faster alternative to pango_layout_get_line(),
+but the user is not expected
+to modify the contents of the line (glyphs, glyph widths, etc.).
+index is out of range. This layout line can
+be ref'ed and retained, but will become invalid
+if changes are made to the #PangoLayout.
+No changes should be made to the line.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the requested #PangoLayoutLine, or %NULL if the</doc>
+          <type name="LayoutLine" c:type="PangoLayoutLine*"/>
+        </return-value>
+        <parameters>
+          <parameter name="line" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of a line, which must be between 0 and &lt;literal&gt;pango_layout_get_line_count(layout) - 1&lt;/literal&gt;, inclusive.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_lines" c:identifier="pango_layout_get_lines">
+        <doc xml:whitespace="preserve">Returns the lines of the @layout as a list.
+Use the faster pango_layout_get_lines_readonly() if you do not plan
+to modify the contents of the lines (glyphs, glyph widths, etc.).
+the lines in the layout. This points to internal data of the #PangoLayout
+and must be used with care. It will become invalid on any change to the layout's
+text or properties.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GSList containing</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="LayoutLine"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_lines_readonly"
+              c:identifier="pango_layout_get_lines_readonly"
+              version="1.16">
+        <doc xml:whitespace="preserve">Returns the lines of the @layout as a list.
+This is a faster alternative to pango_layout_get_lines(),
+but the user is not expected
+to modify the contents of the lines (glyphs, glyph widths, etc.).
+the lines in the layout. This points to internal data of the #PangoLayout and
+must be used with care. It will become invalid on any change to the layout's
+text or properties.  No changes should be made to the lines.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GSList containing</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="LayoutLine"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_log_attrs" c:identifier="pango_layout_get_log_attrs">
+        <doc xml:whitespace="preserve">Retrieves an array of logical attributes for each character in
+the @layout.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attrs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store a pointer to an array of logical attributes This value must be freed with g_free().</doc>
+            <type name="LogAttr" c:type="PangoLogAttr**"/>
+          </parameter>
+          <parameter name="n_attrs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the number of the attributes in the array. (The stored value will be one more than the total number of characters in the layout, since there need to be attributes corresponding to both the position before the first character and the position after the last character.)</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pixel_extents"
+              c:identifier="pango_layout_get_pixel_extents">
+        <doc xml:whitespace="preserve">Computes the logical and ink extents of @layout in device units.
+This function just calls pango_layout_get_extents() followed by
+two pango_extents_to_pixels() calls, rounding @ink_rect and @logical_rect
+such that the rounded rectangles fully contain the unrounded one (that is,
+passes them as first argument to pango_extents_to_pixels()).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ink_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle used to store the extents of the layout as drawn or %NULL to indicate that the result is not needed.</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle used to store the logical extents of the layout or %NULL to indicate that the result is not needed.</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pixel_size" c:identifier="pango_layout_get_pixel_size">
+        <doc xml:whitespace="preserve">Determines the logical width and height of a #PangoLayout
+in device units. (pango_layout_get_size() returns the width
+and height scaled by %PANGO_SCALE.) This
+is simply a convenience function around
+pango_layout_get_pixel_extents().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the logical width, or %NULL</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the logical height, or %NULL</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_single_paragraph_mode"
+              c:identifier="pango_layout_get_single_paragraph_mode">
+        <doc xml:whitespace="preserve">Obtains the value set by pango_layout_set_single_paragraph_mode().
+paragraph separator characters, %FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the layout does not break paragraphs at</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_size" c:identifier="pango_layout_get_size">
+        <doc xml:whitespace="preserve">Determines the logical width and height of a #PangoLayout
+in Pango units (device units scaled by %PANGO_SCALE). This
+is simply a convenience function around pango_layout_get_extents().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the logical width, or %NULL</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the logical height, or %NULL</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_spacing" c:identifier="pango_layout_get_spacing">
+        <doc xml:whitespace="preserve">Gets the amount of spacing between the lines of the layout.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the spacing in Pango units.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_tabs" c:identifier="pango_layout_get_tabs">
+        <doc xml:whitespace="preserve">Gets the current #PangoTabArray used by this layout. If no
+#PangoTabArray has been set, then the default tabs are in use
+and %NULL is returned. Default tabs are every 8 spaces.
+The return value should be freed with pango_tab_array_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a copy of the tabs for this layout, or %NULL.</doc>
+          <type name="TabArray" c:type="PangoTabArray*"/>
+        </return-value>
+      </method>
+      <method name="get_text" c:identifier="pango_layout_get_text">
+        <doc xml:whitespace="preserve">Gets the text in the layout. The returned text should not
+be freed or modified.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the text in the @layout.</doc>
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_unknown_glyphs_count"
+              c:identifier="pango_layout_get_unknown_glyphs_count"
+              version="1.16">
+        <doc xml:whitespace="preserve">Counts the number unknown glyphs in @layout.  That is, zero if
+glyphs for all characters in the layout text were found, or more
+than zero otherwise.
+This function can be used to determine if there are any fonts
+available to render all characters in a certain string, or when
+used in combination with %PANGO_ATTR_FALLBACK, to check if a
+certain font supports all the characters in the string.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of unknown glyphs in @layout.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_width" c:identifier="pango_layout_get_width">
+        <doc xml:whitespace="preserve">Gets the width to which the lines of the #PangoLayout should wrap.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width in Pango units, or -1 if no width set.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_wrap" c:identifier="pango_layout_get_wrap">
+        <doc xml:whitespace="preserve">Gets the wrap mode for the layout.
+Use pango_layout_is_wrapped() to query whether any paragraphs
+were actually wrapped.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">active wrap mode.</doc>
+          <type name="WrapMode" c:type="PangoWrapMode"/>
+        </return-value>
+      </method>
+      <method name="index_to_line_x"
+              c:identifier="pango_layout_index_to_line_x">
+        <doc xml:whitespace="preserve">Converts from byte @index_ within the @layout to line and X position.
+(X position is measured from the left edge of the line)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the byte index of a grapheme within the layout.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="trailing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an integer indicating the edge of the grapheme to retrieve the position of. If 0, the trailing edge of the grapheme, if &gt; 0, the leading of the grapheme.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="line" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store resulting line index. (which will between 0 and pango_layout_get_line_count(layout) - 1)</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+          <parameter name="x_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store resulting position within line (%PANGO_SCALE units per device unit)</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="index_to_pos" c:identifier="pango_layout_index_to_pos">
+        <doc xml:whitespace="preserve">Converts from an index within a #PangoLayout to the onscreen position
+corresponding to the grapheme at that index, which is represented
+as rectangle.  Note that &lt;literal&gt;pos-&gt;x&lt;/literal&gt; is always the leading
+edge of the grapheme and &lt;literal&gt;pos-&gt;x + pos-&gt;width&lt;/literal&gt; the trailing
+edge of the grapheme. If the directionality of the grapheme is right-to-left,
+then &lt;literal&gt;pos-&gt;width&lt;/literal&gt; will be negative.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">byte index within @layout</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle in which to store the position of the grapheme</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_ellipsized"
+              c:identifier="pango_layout_is_ellipsized"
+              version="1.16">
+        <doc xml:whitespace="preserve">Queries whether the layout had to ellipsize any paragraphs.
+This returns %TRUE if the ellipsization mode for @layout
+is not %PANGO_ELLIPSIZE_NONE, a positive width is set on @layout,
+and there are paragraphs exceeding that width that have to be
+ellipsized.
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if any paragraphs had to be ellipsized, %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_wrapped"
+              c:identifier="pango_layout_is_wrapped"
+              version="1.16">
+        <doc xml:whitespace="preserve">Queries whether the layout had to wrap any paragraphs.
+This returns %TRUE if a positive width is set on @layout,
+ellipsization mode of @layout is set to %PANGO_ELLIPSIZE_NONE,
+and there are paragraphs exceeding the layout width that have
+to be wrapped.
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if any paragraphs had to be wrapped, %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="move_cursor_visually"
+              c:identifier="pango_layout_move_cursor_visually">
+        <doc xml:whitespace="preserve">Computes a new cursor position from an old position and
+a count of positions to move visually. If @direction is positive,
+then the new strong cursor position will be one position
+to the right of the old cursor position. If @direction is negative,
+then the new strong cursor position will be one position
+to the left of the old cursor position.
+In the presence of bidirectional text, the correspondence
+between logical and visual order will depend on the direction
+of the current run, and there may be jumps when the cursor
+is moved off of the end of a run.
+Motion here is in cursor positions, not in characters, so a
+single call to pango_layout_move_cursor_visually() may move the
+cursor over multiple characters when multiple characters combine
+to form a single grapheme.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="strong" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the moving cursor is the strong cursor or the weak cursor. The strong cursor is the cursor corresponding to text insertion in the base direction for the layout.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="old_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the byte index of the grapheme for the old index</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="old_trailing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">if 0, the cursor was at the trailing edge of the grapheme indicated by @old_index, if &gt; 0, the cursor was at the leading edge.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">direction to move cursor. A negative value indicates motion to the left.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="new_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the new cursor byte index. A value of -1 indicates that the cursor has been moved off the beginning of the layout. A value of %G_MAXINT indicates that the cursor has been moved off the end of the layout.</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+          <parameter name="new_trailing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of characters to move forward from the location returned for @new_index to get the position where the cursor should be displayed. This allows distinguishing the position at the beginning of one line from the position at the end of the preceding line. @new_index is always on the line where the cursor should be displayed.</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alignment" c:identifier="pango_layout_set_alignment">
+        <doc xml:whitespace="preserve">positioned within the horizontal space available.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alignment" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the alignment</doc>
+            <type name="Alignment" c:type="PangoAlignment"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attributes" c:identifier="pango_layout_set_attributes">
+        <doc xml:whitespace="preserve">Sets the text attributes for a layout object.
+References @attrs, so the caller can unref its reference.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attrs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoAttrList, can be %NULL</doc>
+            <type name="AttrList" c:type="PangoAttrList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_auto_dir"
+              c:identifier="pango_layout_set_auto_dir"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets whether to calculate the bidirectional base direction
+for the layout according to the contents of the layout;
+when this flag is on (the default), then paragraphs in
+(Arabic and Hebrew principally), will have right-to-left
+layout, paragraphs with letters from other scripts will
+have left-to-right layout. Paragraphs with only neutral
+characters get their direction from the surrounding paragraphs.
+When %FALSE, the choice between left-to-right and
+right-to-left layout is done according to the base direction
+of the layout's #PangoContext. (See pango_context_set_base_dir()).
+When the auto-computed direction of a paragraph differs from the
+base direction of the context, the interpretation of
+%PANGO_ALIGN_LEFT and %PANGO_ALIGN_RIGHT are swapped.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="auto_dir" transfer-ownership="none">
+            <doc xml:whitespace="preserve">if %TRUE, compute the bidirectional base direction from the layout's contents.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_ellipsize"
+              c:identifier="pango_layout_set_ellipsize"
+              version="1.6">
+        <doc xml:whitespace="preserve">Sets the type of ellipsization being performed for @layout.
+Depending on the ellipsization mode @ellipsize text is
+removed from the start, middle, or end of text so they
+fit within the width and height of layout set with
+pango_layout_set_width() and pango_layout_set_height().
+If the layout contains characters such as newlines that
+force it to be layed out in multiple paragraphs, then whether
+each paragraph is ellipsized separately or the entire layout
+is ellipsized as a whole depends on the set height of the layout.
+See pango_layout_set_height() for details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ellipsize" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new ellipsization mode for @layout</doc>
+            <type name="EllipsizeMode" c:type="PangoEllipsizeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_font_description"
+              c:identifier="pango_layout_set_font_description">
+        <doc xml:whitespace="preserve">Sets the default font description for the layout. If no font
+description is set on the layout, the font description from
+the layout's context is used.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="desc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new #PangoFontDescription, or %NULL to unset the current font description</doc>
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_height"
+              c:identifier="pango_layout_set_height"
+              version="1.20">
+        <doc xml:whitespace="preserve">Sets the height to which the #PangoLayout should be ellipsized at.  There
+are two different behaviors, based on whether @height is positive or
+negative.
+If @height is positive, it will be the maximum height of the layout.  Only
+lines would be shown that would fit, and if there is any text omitted,
+an ellipsis added.  At least one line is included in each paragraph regardless
+of how small the height value is.  A value of zero will render exactly one
+line for the entire layout.
+If @height is negative, it will be the (negative of) maximum number of lines per
+paragraph.  That is, the total number of lines shown may well be more than
+this value if the layout contains multiple paragraphs of text.
+The default value of -1 means that first line of each paragraph is ellipsized.
+This behvaior may be changed in the future to act per layout instead of per
+paragraph.  File a bug against pango at &lt;ulink
+url="http://bugzilla.gnome.org/"&gt;http://bugzilla.gnome.org/&lt;/ulink&gt; if your
+code relies on this behavior.
+Height setting only has effect if a positive width is set on
+The behavior is undefined if a height other than -1 is set and
+ellipsization mode is set to %PANGO_ELLIPSIZE_NONE, and may change in the
+future.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the desired height of the layout in Pango units if positive, or desired number of lines if negative.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_indent" c:identifier="pango_layout_set_indent">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="indent" transfer-ownership="none">
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_justify" c:identifier="pango_layout_set_justify">
+        <doc xml:whitespace="preserve">Sets whether each complete line should be stretched to
+fill the entire width of the layout. This stretching is typically
+done by adding whitespace, but for some scripts (such as Arabic),
+the justification may be done in more complex ways, like extending
+the characters.
+Note that this setting is not implemented and so is ignored in Pango
+older than 1.18.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="justify" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the lines in the layout should be justified.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_markup" c:identifier="pango_layout_set_markup">
+        <doc xml:whitespace="preserve">Same as pango_layout_set_markup_with_accel(), but
+the markup text isn't scanned for accelerators.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="markup" transfer-ownership="none">
+            <doc xml:whitespace="preserve">marked-up text</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">length of marked-up text in bytes, or -1 if @markup is nul-terminated</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_markup_with_accel"
+              c:identifier="pango_layout_set_markup_with_accel"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the layout text and attribute list from marked-up text (see
+&lt;link linkend="PangoMarkupFormat"&gt;markup format&lt;/link&gt;). Replaces
+the current text and attribute list.
+If @accel_marker is nonzero, the given character will mark the
+character following it as an accelerator. For example, @accel_marker
+might be an ampersand or underscore. All characters marked
+as an accelerator will receive a %PANGO_UNDERLINE_LOW attribute,
+and the first character so marked will be returned in @accel_char.
+Two @accel_marker characters following each other produce a single
+literal @accel_marker character.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="markup" transfer-ownership="none">
+            <doc xml:whitespace="preserve">marked-up text (see &lt;link linkend="PangoMarkupFormat"&gt;markup format&lt;/link&gt;)</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">length of marked-up text in bytes, or -1 if @markup is nul-terminated</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="accel_marker" transfer-ownership="none">
+            <doc xml:whitespace="preserve">marker for accelerators in the text</doc>
+            <type name="gunichar" c:type="gunichar"/>
+          </parameter>
+          <parameter name="accel_char" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for first located accelerator, or %NULL</doc>
+            <type name="gunichar" c:type="gunichar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_single_paragraph_mode"
+              c:identifier="pango_layout_set_single_paragraph_mode">
+        <doc xml:whitespace="preserve">If @setting is %TRUE, do not treat newlines and similar characters
+as paragraph separators; instead, keep all text in a single paragraph,
+and display a glyph for paragraph separator characters. Used when
+you want to allow editing of newlines on a single text line.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new setting</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_spacing" c:identifier="pango_layout_set_spacing">
+        <doc xml:whitespace="preserve">Sets the amount of spacing in Pango unit between the lines of the
+layout.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the amount of spacing</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tabs" c:identifier="pango_layout_set_tabs">
+        <doc xml:whitespace="preserve">Sets the tabs to use for @layout, overriding the default tabs
+(by default, tabs are every 8 spaces). If @tabs is %NULL, the default
+tabs are reinstated. @tabs is copied into the layout; you must
+free your copy of @tabs yourself.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tabs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoTabArray, or %NULL</doc>
+            <type name="TabArray" c:type="PangoTabArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_text" c:identifier="pango_layout_set_text">
+        <doc xml:whitespace="preserve">Sets the text of the layout.
+Note that if you have used
+pango_layout_set_markup() or pango_layout_set_markup_with_accel() on
+the attributes set on the layout from the markup as this function does not
+clear attributes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a valid UTF-8 string</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">maximum length of @text, in bytes. -1 indicates that the string is nul-terminated and the length should be calculated.  The text will also be truncated on encountering a nul-termination even when @length is positive.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_width" c:identifier="pango_layout_set_width">
+        <doc xml:whitespace="preserve">Sets the width to which the lines of the #PangoLayout should wrap or</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the desired width in Pango units, or -1 to indicate that no wrapping or ellipsization should be performed.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_wrap" c:identifier="pango_layout_set_wrap">
+        <doc xml:whitespace="preserve">Sets the wrap mode; the wrap mode only has effect if a width
+is set on the layout with pango_layout_set_width().
+To turn off wrapping, set the width to -1.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wrap" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the wrap mode</doc>
+            <type name="WrapMode" c:type="PangoWrapMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="xy_to_index" c:identifier="pango_layout_xy_to_index">
+        <doc xml:whitespace="preserve">Converts from X and Y position within a layout to the byte
+index to the character at that logical position. If the
+Y position is not inside the layout, the closest position is chosen
+(the position will be clamped inside the layout). If the
+X position is not within the layout, then the start or the
+end of the line is chosen as  described for pango_layout_x_to_index().
+If either the X or Y positions were not inside the layout, then the
+function returns %FALSE; on an exact hit, it returns %TRUE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the coordinates were inside text, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the X offset (in Pango units) from the left edge of the layout.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the Y offset (in Pango units) from the top edge of the layout</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store calculated byte index</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+          <parameter name="trailing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store a integer indicating where in the grapheme the user clicked. It will either be zero, or the number of characters in the grapheme. 0 represents the trailing edge of the grapheme.</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <record name="LayoutClass"
+            c:type="PangoLayoutClass"
+            disguised="1"
+            glib:is-gtype-struct-for="Layout">
+    </record>
+    <record name="LayoutIter"
+            c:type="PangoLayoutIter"
+            glib:type-name="PangoLayoutIter"
+            glib:get-type="pango_layout_iter_get_type"
+            c:symbol-prefix="layout_iter">
+      <method name="at_last_line"
+              c:identifier="pango_layout_iter_at_last_line">
+        <doc xml:whitespace="preserve">Determines whether @iter is on the last line of the layout.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter is on the last line.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="copy" c:identifier="pango_layout_iter_copy" version="1.20">
+        <doc xml:whitespace="preserve">Copies a #PangLayoutIter.
+be freed with pango_layout_iter_free(), or %NULL if</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated #PangoLayoutIter, which should</doc>
+          <type name="LayoutIter" c:type="PangoLayoutIter*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="pango_layout_iter_free">
+        <doc xml:whitespace="preserve">Frees an iterator that's no longer in use.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_baseline"
+              c:identifier="pango_layout_iter_get_baseline">
+        <doc xml:whitespace="preserve">Gets the Y position of the current line's baseline, in layout
+coordinates (origin at top left of the entire layout).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">baseline of current line.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_char_extents"
+              c:identifier="pango_layout_iter_get_char_extents">
+        <doc xml:whitespace="preserve">Gets the extents of the current character, in layout coordinates
+(origin is the top left of the entire layout). Only logical extents
+can sensibly be obtained for characters; ink extents make sense only
+down to the level of clusters.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle to fill with logical extents</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cluster_extents"
+              c:identifier="pango_layout_iter_get_cluster_extents">
+        <doc xml:whitespace="preserve">Gets the extents of the current cluster, in layout coordinates
+(origin is the top left of the entire layout).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ink_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle to fill with ink extents, or %NULL</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle to fill with logical extents, or %NULL</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_index" c:identifier="pango_layout_iter_get_index">
+        <doc xml:whitespace="preserve">Gets the current byte index. Note that iterating forward by char
+moves in visual order, not logical order, so indexes may not be
+sequential. Also, the index may be equal to the length of the text
+in the layout, if on the %NULL run (see pango_layout_iter_get_run()).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">current byte index.</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_layout"
+              c:identifier="pango_layout_iter_get_layout"
+              version="1.20"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the layout associated with a #PangoLayoutIter.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the layout associated with @iter.</doc>
+          <type name="Layout" c:type="PangoLayout*"/>
+        </return-value>
+      </method>
+      <method name="get_layout_extents"
+              c:identifier="pango_layout_iter_get_layout_extents">
+        <doc xml:whitespace="preserve">Obtains the extents of the #PangoLayout being iterated
+over. @ink_rect or @logical_rect can be %NULL if you
+aren't interested in them.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ink_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle to fill with ink extents, or %NULL</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle to fill with logical extents, or %NULL</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_line" c:identifier="pango_layout_iter_get_line">
+        <doc xml:whitespace="preserve">Gets the current line.
+Use the faster pango_layout_iter_get_line_readonly() if you do not plan
+to modify the contents of the line (glyphs, glyph widths, etc.).</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the current line.</doc>
+          <type name="LayoutLine" c:type="PangoLayoutLine*"/>
+        </return-value>
+      </method>
+      <method name="get_line_extents"
+              c:identifier="pango_layout_iter_get_line_extents">
+        <doc xml:whitespace="preserve">Obtains the extents of the current line. @ink_rect or @logical_rect
+can be %NULL if you aren't interested in them. Extents are in layout
+coordinates (origin is the top-left corner of the entire
+#PangoLayout).  Thus the extents returned by this function will be
+the same width/height but not at the same x/y as the extents
+returned from pango_layout_line_get_extents().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ink_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle to fill with ink extents, or %NULL</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle to fill with logical extents, or %NULL</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_line_readonly"
+              c:identifier="pango_layout_iter_get_line_readonly"
+              version="1.16">
+        <doc xml:whitespace="preserve">Gets the current line for read-only access.
+This is a faster alternative to pango_layout_iter_get_line(),
+but the user is not expected
+to modify the contents of the line (glyphs, glyph widths, etc.).</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the current line, that should not be modified.</doc>
+          <type name="LayoutLine" c:type="PangoLayoutLine*"/>
+        </return-value>
+      </method>
+      <method name="get_line_yrange"
+              c:identifier="pango_layout_iter_get_line_yrange">
+        <doc xml:whitespace="preserve">Divides the vertical space in the #PangoLayout being iterated over
+between the lines in the layout, and returns the space belonging to
+the current line.  A line's range includes the line's logical
+extents, plus half of the spacing above and below the line, if
+pango_layout_set_spacing() has been called to set layout spacing.
+The Y positions are in layout coordinates (origin at top left of the
+entire layout).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="y0_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start of line</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+          <parameter name="y1_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">end of line</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_run"
+              c:identifier="pango_layout_iter_get_run"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the current run. When iterating by run, at the end of each
+line, there's a position with a %NULL run, so this function can return
+%NULL. The %NULL run at the end of each line ensures that all lines have
+at least one run, even lines consisting of only a newline.
+Use the faster pango_layout_iter_get_run_readonly() if you do not plan
+to modify the contents of the run (glyphs, glyph widths, etc.).</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the current run.</doc>
+          <type name="LayoutRun" c:type="PangoLayoutRun*"/>
+        </return-value>
+      </method>
+      <method name="get_run_extents"
+              c:identifier="pango_layout_iter_get_run_extents">
+        <doc xml:whitespace="preserve">Gets the extents of the current run in layout coordinates
+(origin is the top left of the entire layout).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ink_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle to fill with ink extents, or %NULL</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle to fill with logical extents, or %NULL</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_run_readonly"
+              c:identifier="pango_layout_iter_get_run_readonly"
+              version="1.16"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the current run. When iterating by run, at the end of each
+line, there's a position with a %NULL run, so this function can return
+%NULL. The %NULL run at the end of each line ensures that all lines have
+at least one run, even lines consisting of only a newline.
+This is a faster alternative to pango_layout_iter_get_run(),
+but the user is not expected
+to modify the contents of the run (glyphs, glyph widths, etc.).</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the current run, that should not be modified.</doc>
+          <type name="LayoutRun" c:type="PangoLayoutRun*"/>
+        </return-value>
+      </method>
+      <method name="next_char" c:identifier="pango_layout_iter_next_char">
+        <doc xml:whitespace="preserve">Moves @iter forward to the next character in visual order. If @iter was already at
+the end of the layout, returns %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether motion was possible.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="next_cluster"
+              c:identifier="pango_layout_iter_next_cluster">
+        <doc xml:whitespace="preserve">Moves @iter forward to the next cluster in visual order. If @iter
+was already at the end of the layout, returns %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether motion was possible.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="next_line" c:identifier="pango_layout_iter_next_line">
+        <doc xml:whitespace="preserve">Moves @iter forward to the start of the next line. If @iter is
+already on the last line, returns %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether motion was possible.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="next_run" c:identifier="pango_layout_iter_next_run">
+        <doc xml:whitespace="preserve">Moves @iter forward to the next run in visual order. If @iter was
+already at the end of the layout, returns %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether motion was possible.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="LayoutLine"
+            c:type="PangoLayoutLine"
+            glib:type-name="PangoLayoutLine"
+            glib:get-type="pango_layout_line_get_type"
+            c:symbol-prefix="layout_line">
+      <field name="layout" writable="1">
+        <type name="Layout" c:type="PangoLayout*"/>
+      </field>
+      <field name="start_index" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="length" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="runs" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="is_paragraph_start" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="resolved_dir" writable="1" bits="3">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <method name="get_extents" c:identifier="pango_layout_line_get_extents">
+        <doc xml:whitespace="preserve">Computes the logical and ink extents of a layout line. See
+pango_font_get_glyph_extents() for details about the interpretation
+of the rectangles.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ink_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle used to store the extents of the glyph string as drawn, or %NULL</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle used to store the logical extents of the glyph string, or %NULL</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pixel_extents"
+              c:identifier="pango_layout_line_get_pixel_extents">
+        <doc xml:whitespace="preserve">Computes the logical and ink extents of @layout_line in device units.
+This function just calls pango_layout_line_get_extents() followed by
+two pango_extents_to_pixels() calls, rounding @ink_rect and @logical_rect
+such that the rounded rectangles fully contain the unrounded one (that is,
+passes them as first argument to pango_extents_to_pixels()).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ink_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle used to store the extents of the glyph string as drawn, or %NULL</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rectangle used to store the logical extents of the glyph string, or %NULL</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_x_ranges"
+              c:identifier="pango_layout_line_get_x_ranges">
+        <doc xml:whitespace="preserve">Gets a list of visual ranges corresponding to a given logical range.
+This list is not necessarily minimal - there may be consecutive
+ranges which are adjacent. The ranges will be sorted from left to
+right. The ranges are with respect to the left edge of the entire
+layout, not with respect to the line.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Start byte index of the logical range. If this value is less than the start index for the line, then the first range will extend all the way to the leading edge of the layout. Otherwise it will start at the leading edge of the first character.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="end_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Ending byte index of the logical range. If this value is greater than the end index for the line, then the last range will extend all the way to the trailing edge of the layout. Otherwise, it will end at the trailing edge of the last character.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="ranges"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location to store a pointer to an array of ranges. The array will be of length &lt;literal&gt;2*n_ranges&lt;/literal&gt;, with each range starting at &lt;literal&gt;(*ranges)[2*n]&lt;/literal&gt; and of width &lt;literal&gt;(*ranges)[2*n + 1] - (*ranges)[2*n]&lt;/literal&gt;. This array must be freed with g_free(). The coordinates are relative to the layout and are in Pango units.</doc>
+            <array length="3" c:type="int**">
+              <type name="gint"/>
+            </array>
+          </parameter>
+          <parameter name="n_ranges"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">The number of ranges stored in @ranges.</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="index_to_x" c:identifier="pango_layout_line_index_to_x">
+        <doc xml:whitespace="preserve">Converts an index within a line to a X position.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">byte offset of a grapheme within the layout</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="trailing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an integer indicating the edge of the grapheme to retrieve the position of. If &gt; 0, the trailing edge of the grapheme, if 0, the leading of the grapheme.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="x_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the x_offset (in Pango unit)</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref" c:identifier="pango_layout_line_ref" version="1.10">
+        <doc xml:whitespace="preserve">Increase the reference count of a #PangoLayoutLine by one.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the line passed in.</doc>
+          <type name="LayoutLine" c:type="PangoLayoutLine*"/>
+        </return-value>
+      </method>
+      <method name="unref" c:identifier="pango_layout_line_unref">
+        <doc xml:whitespace="preserve">Decrease the reference count of a #PangoLayoutLine by one.
+If the result is zero, the line and all associated memory
+will be freed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="x_to_index" c:identifier="pango_layout_line_x_to_index">
+        <doc xml:whitespace="preserve">Converts from x offset to the byte index of the corresponding
+character within the text of the layout. If @x_pos is outside the line,
+in the line. This determination is based on the resolved direction
+of the paragraph; for example, if the resolved direction is
+right-to-left, then an X position to the right of the line (after it)
+results in 0 being stored in @index_ and @trailing. An X position to the
+left of the line results in @index_ pointing to the (logical) last
+grapheme in the line and @trailing being set to the number of characters
+in that grapheme. The reverse is true for a left-to-right line.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%FALSE if @x_pos was outside the line, %TRUE if inside</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the X offset (in Pango units) from the left edge of the line.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store calculated byte index for the grapheme in which the user clicked.</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+          <parameter name="trailing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store an integer indicating where in the grapheme the user clicked. It will either be zero, or the number of characters in the grapheme. 0 represents the leading edge of the grapheme.</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="LogAttr" c:type="PangoLogAttr">
+      <field name="is_line_break" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="is_mandatory_break" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="is_char_break" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="is_white" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="is_cursor_position" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="is_word_start" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="is_word_end" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="is_sentence_boundary" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="is_sentence_start" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="is_sentence_end" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="backspace_deletes_character" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="is_expandable_space" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="is_word_boundary" writable="1" bits="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="Matrix"
+            c:type="PangoMatrix"
+            version="1.6"
+            glib:type-name="PangoMatrix"
+            glib:get-type="pango_matrix_get_type"
+            c:symbol-prefix="matrix">
+      <doc xml:whitespace="preserve">A structure specifying a transformation between user-space
+coordinates and device coordinates. The transformation
+is given by
+&lt;programlisting&gt;
+x_device = x_user * matrix-&gt;xx + y_user * matrix-&gt;xy + matrix-&gt;x0;
+y_device = x_user * matrix-&gt;yx + y_user * matrix-&gt;yy + matrix-&gt;y0;
+&lt;/programlisting&gt;</doc>
+      <field name="xx" writable="1">
+        <type name="gdouble" c:type="double"/>
+      </field>
+      <field name="xy" writable="1">
+        <type name="gdouble" c:type="double"/>
+      </field>
+      <field name="yx" writable="1">
+        <type name="gdouble" c:type="double"/>
+      </field>
+      <field name="yy" writable="1">
+        <type name="gdouble" c:type="double"/>
+      </field>
+      <field name="x0" writable="1">
+        <type name="gdouble" c:type="double"/>
+      </field>
+      <field name="y0" writable="1">
+        <type name="gdouble" c:type="double"/>
+      </field>
+      <method name="concat" c:identifier="pango_matrix_concat" version="1.6">
+        <doc xml:whitespace="preserve">Changes the transformation represented by @matrix to be the
+transformation given by first applying transformation
+given by @new_matrix then applying the original transformation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_matrix" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoMatrix</doc>
+            <type name="Matrix" c:type="PangoMatrix*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="pango_matrix_copy" version="1.6">
+        <doc xml:whitespace="preserve">Copies a #PangoMatrix.
+be freed with pango_matrix_free(), or %NULL if</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated #PangoMatrix, which should</doc>
+          <type name="Matrix" c:type="PangoMatrix*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="pango_matrix_free" version="1.6">
+        <doc xml:whitespace="preserve">Free a #PangoMatrix created with pango_matrix_copy().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_font_scale_factor"
+              c:identifier="pango_matrix_get_font_scale_factor"
+              version="1.12">
+        <doc xml:whitespace="preserve">Returns the scale factor of a matrix on the height of the font.
+That is, the scale factor in the direction perpendicular to the
+vector that the X coordinate is mapped to.
+or 1.0 if @matrix is %NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the scale factor of @matrix on the height of the font,</doc>
+          <type name="gdouble" c:type="double"/>
+        </return-value>
+      </method>
+      <method name="rotate" c:identifier="pango_matrix_rotate" version="1.6">
+        <doc xml:whitespace="preserve">Changes the transformation represented by @matrix to be the
+transformation given by first rotating by @degrees degrees
+counter-clockwise then applying the original transformation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="degrees" transfer-ownership="none">
+            <doc xml:whitespace="preserve">degrees to rotate counter-clockwise</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scale" c:identifier="pango_matrix_scale" version="1.6">
+        <doc xml:whitespace="preserve">Changes the transformation represented by @matrix to be the
+transformation given by first scaling by @sx in the X direction
+and @sy in the Y direction then applying the original
+transformation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scale_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">amount to scale by in X direction</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="scale_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">amount to scale by in Y direction</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="transform_distance"
+              c:identifier="pango_matrix_transform_distance"
+              version="1.16">
+        <doc xml:whitespace="preserve">Transforms the distance vector (@dx,@dy) by @matrix. This is
+similar to pango_matrix_transform_point() except that the translation
+components of the transformation are ignored. The calculation of
+the returned vector is as follows:
+&lt;programlisting&gt;
+dx2 = dx1 * xx + dy1 * xy;
+dy2 = dx1 * yx + dy1 * yy;
+&lt;/programlisting&gt;
+Affine transformations are position invariant, so the same vector
+always transforms to the same vector. If (@x1,@y1) transforms
+to (@x2,@y2) then (@x1+@dx1,@y1+@dy1) will transform to
+(@x1+@dx2,@y1+@dy2) for all values of @x1 and @x2.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dx" transfer-ownership="none">
+            <doc xml:whitespace="preserve">in/out X component of a distance vector</doc>
+            <type name="gdouble" c:type="double*"/>
+          </parameter>
+          <parameter name="dy" transfer-ownership="none">
+            <doc xml:whitespace="preserve">yn/out Y component of a distance vector</doc>
+            <type name="gdouble" c:type="double*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="transform_pixel_rectangle"
+              c:identifier="pango_matrix_transform_pixel_rectangle"
+              version="1.16">
+        <doc xml:whitespace="preserve">First transforms the @rect using @matrix, then calculates the bounding box
+of the transformed rectangle.  The rectangle should be in device units
+(pixels).
+This function is useful for example when you want to draw a rotated
+should be and how much you should shift the layout when rendering.
+For better accuracy, you should use pango_matrix_transform_rectangle() on
+original rectangle in Pango units and convert to pixels afterward
+using pango_extents_to_pixels()'s first argument.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">in/out bounding box in device units, or %NULL</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="transform_point"
+              c:identifier="pango_matrix_transform_point"
+              version="1.16">
+        <doc xml:whitespace="preserve">Transforms the point (@x, @y) by @matrix.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">in/out X position</doc>
+            <type name="gdouble" c:type="double*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">in/out Y position</doc>
+            <type name="gdouble" c:type="double*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="transform_rectangle"
+              c:identifier="pango_matrix_transform_rectangle"
+              version="1.16">
+        <doc xml:whitespace="preserve">First transforms @rect using @matrix, then calculates the bounding box
+of the transformed rectangle.  The rectangle should be in Pango units.
+This function is useful for example when you want to draw a rotated
+should be and how much you should shift the layout when rendering.
+If you have a rectangle in device units (pixels), use
+pango_matrix_transform_pixel_rectangle().
+If you have the rectangle in Pango units and want to convert to
+transformed pixel bounding box, it is more accurate to transform it first
+(using this function) and pass the result to pango_extents_to_pixels(),
+first argument, for an inclusive rounded rectangle.
+However, there are valid reasons that you may want to convert
+to pixels first and then transform, for example when the transformed
+coordinates may overflow in Pango units (large matrix translation for
+example).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">in/out bounding box in Pango units, or %NULL</doc>
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="translate"
+              c:identifier="pango_matrix_translate"
+              version="1.6">
+        <doc xml:whitespace="preserve">Changes the transformation represented by @matrix to be the
+transformation given by first translating by (@tx, @ty)
+then applying the original transformation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tx" transfer-ownership="none">
+            <doc xml:whitespace="preserve">amount to translate in the X direction</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="ty" transfer-ownership="none">
+            <doc xml:whitespace="preserve">amount to translate in the Y direction</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <constant name="RENDER_TYPE_NONE" value="PangoRenderNone">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <record name="Rectangle" c:type="PangoRectangle">
+      <field name="x" writable="1">
+        <type name="gint" c:type="int"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gint" c:type="int"/>
+      </field>
+      <field name="width" writable="1">
+        <type name="gint" c:type="int"/>
+      </field>
+      <field name="height" writable="1">
+        <type name="gint" c:type="int"/>
+      </field>
+    </record>
+    <enumeration name="RenderPart"
+                 version="1.8"
+                 glib:type-name="PangoRenderPart"
+                 glib:get-type="pango_render_part_get_type"
+                 c:type="PangoRenderPart">
+      <doc xml:whitespace="preserve">#PangoRenderPart defines different items to render for such
+purposes as setting colors.</doc>
+      <member name="foreground"
+              value="0"
+              c:identifier="PANGO_RENDER_PART_FOREGROUND"
+              glib:nick="foreground"/>
+      <member name="background"
+              value="1"
+              c:identifier="PANGO_RENDER_PART_BACKGROUND"
+              glib:nick="background"/>
+      <member name="underline"
+              value="2"
+              c:identifier="PANGO_RENDER_PART_UNDERLINE"
+              glib:nick="underline"/>
+      <member name="strikethrough"
+              value="3"
+              c:identifier="PANGO_RENDER_PART_STRIKETHROUGH"
+              glib:nick="strikethrough"/>
+    </enumeration>
+    <class name="Renderer"
+           c:symbol-prefix="renderer"
+           c:type="PangoRenderer"
+           version="1.8"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="PangoRenderer"
+           glib:get-type="pango_renderer_get_type"
+           glib:type-struct="RendererClass">
+      <doc xml:whitespace="preserve">#PangoRenderer is a base class for objects that are used to
+render Pango objects such as #PangoGlyphString and
+#PangoLayout.</doc>
+      <virtual-method name="begin">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="draw_error_underline"
+                      invoker="draw_error_underline"
+                      version="1.8">
+        <doc xml:whitespace="preserve">Draw a squiggly line that approximately covers the given rectangle
+in the style of an underline used to indicate a spelling error.
+(The width of the underline is rounded to an integer number
+of up/down segments and the resulting rectangle is centered
+in the original rectangle)
+This should be called while @renderer is already active.  Use
+pango_renderer_activate() to activate a renderer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of underline, in Pango units in user coordinate system</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of underline, in Pango units in user coordinate system</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width of underline, in Pango units in user coordinate system</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height of underline, in Pango units in user coordinate system</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_glyph" invoker="draw_glyph" version="1.8">
+        <doc xml:whitespace="preserve">Draws a single glyph with coordinates in device space.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoFont</doc>
+            <type name="Font" c:type="PangoFont*"/>
+          </parameter>
+          <parameter name="glyph" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the glyph index of a single glyph</doc>
+            <type name="Glyph" c:type="PangoGlyph"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of left edge of baseline of glyph</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of left edge of baseline of glyph</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_glyph_item"
+                      invoker="draw_glyph_item"
+                      version="1.22">
+        <doc xml:whitespace="preserve">Draws the glyphs in @glyph_item with the specified #PangoRenderer,
+embedding the text associated with the glyphs in the output if the
+output format supports it (PDF for example).
+Note that @text is the start of the text for layout, which is then
+indexed by &lt;literal&gt;@glyph_item-&gt;item-&gt;offset&lt;/literal&gt;.
+If @text is %NULL, this simply calls pango_renderer_draw_glyphs().
+The default implementation of this method simply falls back to
+pango_renderer_draw_glyphs().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the UTF-8 text that @glyph_item refers to, or %NULL</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="glyph_item" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoGlyphItem</doc>
+            <type name="GlyphItem" c:type="PangoGlyphItem*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X position of left edge of baseline, in user space coordinates in Pango units.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y position of left edge of baseline, in user space coordinates in Pango units.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_glyphs" invoker="draw_glyphs" version="1.8">
+        <doc xml:whitespace="preserve">Draws the glyphs in @glyphs with the specified #PangoRenderer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoFont</doc>
+            <type name="Font" c:type="PangoFont*"/>
+          </parameter>
+          <parameter name="glyphs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoGlyphString</doc>
+            <type name="GlyphString" c:type="PangoGlyphString*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X position of left edge of baseline, in user space coordinates in Pango units.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y position of left edge of baseline, in user space coordinates in Pango units.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_rectangle"
+                      invoker="draw_rectangle"
+                      version="1.8">
+        <doc xml:whitespace="preserve">Draws an axis-aligned rectangle in user space coordinates with the
+specified #PangoRenderer.
+This should be called while @renderer is already active.  Use
+pango_renderer_activate() to activate a renderer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="part" transfer-ownership="none">
+            <doc xml:whitespace="preserve">type of object this rectangle is part of</doc>
+            <type name="RenderPart" c:type="PangoRenderPart"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X position at which to draw rectangle, in user space coordinates in Pango units</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y position at which to draw rectangle, in user space coordinates in Pango units</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width of rectangle in Pango units in user space coordinates</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height of rectangle in Pango units in user space coordinates</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_shape">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attr" transfer-ownership="none">
+            <type name="AttrShape" c:type="PangoAttrShape*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_trapezoid"
+                      invoker="draw_trapezoid"
+                      version="1.8">
+        <doc xml:whitespace="preserve">Draws a trapezoid with the parallel sides aligned with the X axis
+using the given #PangoRenderer; coordinates are in device space.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="part" transfer-ownership="none">
+            <doc xml:whitespace="preserve">type of object this trapezoid is part of</doc>
+            <type name="RenderPart" c:type="PangoRenderPart"/>
+          </parameter>
+          <parameter name="y1_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of top of trapezoid</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="x11" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of left end of top of trapezoid</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="x21" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of right end of top of trapezoid</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="y2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of bottom of trapezoid</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="x12" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of left end of bottom of trapezoid</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="x22" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of right end of bottom of trapezoid</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="end">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="part_changed" invoker="part_changed" version="1.8">
+        <doc xml:whitespace="preserve">Informs Pango that the way that the rendering is done
+for @part has changed in a way that would prevent multiple
+pieces being joined together into one drawing call. For
+instance, if a subclass of #PangoRenderer was to add a stipple
+option for drawing underlines, it needs to call
+&lt;informalexample&gt;&lt;programlisting&gt;
+pango_renderer_part_changed (render, PANGO_RENDER_PART_UNDERLINE);
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+When the stipple changes or underlines with different stipples
+might be joined together. Pango automatically calls this for
+changes to colors. (See pango_renderer_set_color())</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="part" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the part for which rendering has changed.</doc>
+            <type name="RenderPart" c:type="PangoRenderPart"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="prepare_run">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="run" transfer-ownership="none">
+            <type name="LayoutRun" c:type="PangoLayoutRun*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="activate"
+              c:identifier="pango_renderer_activate"
+              version="1.8">
+        <doc xml:whitespace="preserve">Does initial setup before rendering operations on @renderer.
+pango_renderer_deactivate() should be called when done drawing.
+Calls such as pango_renderer_draw_layout() automatically
+activate the layout before drawing on it. Calls to
+pango_renderer_activate() and pango_renderer_deactivate() can
+be nested and the renderer will only be initialized and
+deinitialized once.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="deactivate"
+              c:identifier="pango_renderer_deactivate"
+              version="1.8">
+        <doc xml:whitespace="preserve">Cleans up after rendering operations on @renderer. See
+docs for pango_renderer_activate().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="draw_error_underline"
+              c:identifier="pango_renderer_draw_error_underline"
+              version="1.8">
+        <doc xml:whitespace="preserve">Draw a squiggly line that approximately covers the given rectangle
+in the style of an underline used to indicate a spelling error.
+(The width of the underline is rounded to an integer number
+of up/down segments and the resulting rectangle is centered
+in the original rectangle)
+This should be called while @renderer is already active.  Use
+pango_renderer_activate() to activate a renderer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of underline, in Pango units in user coordinate system</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of underline, in Pango units in user coordinate system</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width of underline, in Pango units in user coordinate system</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height of underline, in Pango units in user coordinate system</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="draw_glyph"
+              c:identifier="pango_renderer_draw_glyph"
+              version="1.8">
+        <doc xml:whitespace="preserve">Draws a single glyph with coordinates in device space.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoFont</doc>
+            <type name="Font" c:type="PangoFont*"/>
+          </parameter>
+          <parameter name="glyph" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the glyph index of a single glyph</doc>
+            <type name="Glyph" c:type="PangoGlyph"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of left edge of baseline of glyph</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of left edge of baseline of glyph</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="draw_glyph_item"
+              c:identifier="pango_renderer_draw_glyph_item"
+              version="1.22">
+        <doc xml:whitespace="preserve">Draws the glyphs in @glyph_item with the specified #PangoRenderer,
+embedding the text associated with the glyphs in the output if the
+output format supports it (PDF for example).
+Note that @text is the start of the text for layout, which is then
+indexed by &lt;literal&gt;@glyph_item-&gt;item-&gt;offset&lt;/literal&gt;.
+If @text is %NULL, this simply calls pango_renderer_draw_glyphs().
+The default implementation of this method simply falls back to
+pango_renderer_draw_glyphs().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the UTF-8 text that @glyph_item refers to, or %NULL</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="glyph_item" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoGlyphItem</doc>
+            <type name="GlyphItem" c:type="PangoGlyphItem*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X position of left edge of baseline, in user space coordinates in Pango units.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y position of left edge of baseline, in user space coordinates in Pango units.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="draw_glyphs"
+              c:identifier="pango_renderer_draw_glyphs"
+              version="1.8">
+        <doc xml:whitespace="preserve">Draws the glyphs in @glyphs with the specified #PangoRenderer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoFont</doc>
+            <type name="Font" c:type="PangoFont*"/>
+          </parameter>
+          <parameter name="glyphs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoGlyphString</doc>
+            <type name="GlyphString" c:type="PangoGlyphString*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X position of left edge of baseline, in user space coordinates in Pango units.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y position of left edge of baseline, in user space coordinates in Pango units.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="draw_layout"
+              c:identifier="pango_renderer_draw_layout"
+              version="1.8">
+        <doc xml:whitespace="preserve">Draws @layout with the specified #PangoRenderer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layout" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoLayout</doc>
+            <type name="Layout" c:type="PangoLayout*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X position of left edge of baseline, in user space coordinates in Pango units.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y position of left edge of baseline, in user space coordinates in Pango units.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="draw_layout_line"
+              c:identifier="pango_renderer_draw_layout_line"
+              version="1.8">
+        <doc xml:whitespace="preserve">Draws @line with the specified #PangoRenderer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="line" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoLayoutLine</doc>
+            <type name="LayoutLine" c:type="PangoLayoutLine*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X position of left edge of baseline, in user space coordinates in Pango units.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y position of left edge of baseline, in user space coordinates in Pango units.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="draw_rectangle"
+              c:identifier="pango_renderer_draw_rectangle"
+              version="1.8">
+        <doc xml:whitespace="preserve">Draws an axis-aligned rectangle in user space coordinates with the
+specified #PangoRenderer.
+This should be called while @renderer is already active.  Use
+pango_renderer_activate() to activate a renderer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="part" transfer-ownership="none">
+            <doc xml:whitespace="preserve">type of object this rectangle is part of</doc>
+            <type name="RenderPart" c:type="PangoRenderPart"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X position at which to draw rectangle, in user space coordinates in Pango units</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y position at which to draw rectangle, in user space coordinates in Pango units</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width of rectangle in Pango units in user space coordinates</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height of rectangle in Pango units in user space coordinates</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="draw_trapezoid"
+              c:identifier="pango_renderer_draw_trapezoid"
+              version="1.8">
+        <doc xml:whitespace="preserve">Draws a trapezoid with the parallel sides aligned with the X axis
+using the given #PangoRenderer; coordinates are in device space.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="part" transfer-ownership="none">
+            <doc xml:whitespace="preserve">type of object this trapezoid is part of</doc>
+            <type name="RenderPart" c:type="PangoRenderPart"/>
+          </parameter>
+          <parameter name="y1_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of top of trapezoid</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="x11" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of left end of top of trapezoid</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="x21" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of right end of top of trapezoid</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="y2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of bottom of trapezoid</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="x12" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of left end of bottom of trapezoid</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+          <parameter name="x22" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of right end of bottom of trapezoid</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_color"
+              c:identifier="pango_renderer_get_color"
+              version="1.8">
+        <doc xml:whitespace="preserve">Gets the current rendering color for the specified part.
+if it hasn't been set and should be inherited from the
+environment.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the color for the specified part, or %NULL</doc>
+          <type name="Color" c:type="PangoColor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="part" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the part to get the color for</doc>
+            <type name="RenderPart" c:type="PangoRenderPart"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_layout"
+              c:identifier="pango_renderer_get_layout"
+              version="1.20"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the layout currently being rendered using @renderer.
+Calling this function only makes sense from inside a subclass's
+methods, like in its draw_shape&lt;!----&gt;() for example.
+The returned layout should not be modified while still being
+rendered.
+rendered using @renderer at this time.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the layout, or %NULL if no layout is being</doc>
+          <type name="Layout" c:type="PangoLayout*"/>
+        </return-value>
+      </method>
+      <method name="get_layout_line"
+              c:identifier="pango_renderer_get_layout_line"
+              version="1.20">
+        <doc xml:whitespace="preserve">Gets the layout line currently being rendered using @renderer.
+Calling this function only makes sense from inside a subclass's
+methods, like in its draw_shape&lt;!----&gt;() for example.
+The returned layout line should not be modified while still being
+rendered.
+rendered using @renderer at this time.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the layout line, or %NULL if no layout line is being</doc>
+          <type name="LayoutLine" c:type="PangoLayoutLine*"/>
+        </return-value>
+      </method>
+      <method name="get_matrix"
+              c:identifier="pango_renderer_get_matrix"
+              version="1.8">
+        <doc xml:whitespace="preserve">Gets the transformation matrix that will be applied when
+rendering. See pango_renderer_set_matrix().
+(which is the same as the identity matrix). The returned
+matrix is owned by Pango and must not be modified or
+freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the matrix, or %NULL if no matrix has been set</doc>
+          <type name="Matrix" c:type="PangoMatrix*"/>
+        </return-value>
+      </method>
+      <method name="part_changed"
+              c:identifier="pango_renderer_part_changed"
+              version="1.8">
+        <doc xml:whitespace="preserve">Informs Pango that the way that the rendering is done
+for @part has changed in a way that would prevent multiple
+pieces being joined together into one drawing call. For
+instance, if a subclass of #PangoRenderer was to add a stipple
+option for drawing underlines, it needs to call
+&lt;informalexample&gt;&lt;programlisting&gt;
+pango_renderer_part_changed (render, PANGO_RENDER_PART_UNDERLINE);
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+When the stipple changes or underlines with different stipples
+might be joined together. Pango automatically calls this for
+changes to colors. (See pango_renderer_set_color())</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="part" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the part for which rendering has changed.</doc>
+            <type name="RenderPart" c:type="PangoRenderPart"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_color"
+              c:identifier="pango_renderer_set_color"
+              version="1.8">
+        <doc xml:whitespace="preserve">Sets the color for part of the rendering.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="part" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the part to change the color of</doc>
+            <type name="RenderPart" c:type="PangoRenderPart"/>
+          </parameter>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new color or %NULL to unset the current color</doc>
+            <type name="Color" c:type="PangoColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_matrix"
+              c:identifier="pango_renderer_set_matrix"
+              version="1.8">
+        <doc xml:whitespace="preserve">Sets the transformation matrix that will be applied when rendering.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="matrix" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoMatrix, or %NULL to unset any existing matrix. (No matrix set is the same as setting the identity matrix.)</doc>
+            <type name="Matrix" c:type="PangoMatrix*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="underline">
+        <type name="Underline" c:type="PangoUnderline"/>
+      </field>
+      <field name="strikethrough">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="active_count">
+        <type name="gint" c:type="int"/>
+      </field>
+      <field name="matrix">
+        <type name="Matrix" c:type="PangoMatrix*"/>
+      </field>
+      <field name="priv">
+        <type name="RendererPrivate" c:type="PangoRendererPrivate*"/>
+      </field>
+    </class>
+    <record name="RendererClass"
+            c:type="PangoRendererClass"
+            glib:is-gtype-struct-for="Renderer"
+            version="1.8">
+      <doc xml:whitespace="preserve">Class structure for #PangoRenderer.</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="draw_glyphs">
+        <callback name="draw_glyphs">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="renderer" transfer-ownership="none">
+              <type name="Renderer" c:type="PangoRenderer*"/>
+            </parameter>
+            <parameter name="font" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #PangoFont</doc>
+              <type name="Font" c:type="PangoFont*"/>
+            </parameter>
+            <parameter name="glyphs" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #PangoGlyphString</doc>
+              <type name="GlyphString" c:type="PangoGlyphString*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <doc xml:whitespace="preserve">X position of left edge of baseline, in user space coordinates in Pango units.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <doc xml:whitespace="preserve">Y position of left edge of baseline, in user space coordinates in Pango units.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_rectangle">
+        <callback name="draw_rectangle">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="renderer" transfer-ownership="none">
+              <type name="Renderer" c:type="PangoRenderer*"/>
+            </parameter>
+            <parameter name="part" transfer-ownership="none">
+              <doc xml:whitespace="preserve">type of object this rectangle is part of</doc>
+              <type name="RenderPart" c:type="PangoRenderPart"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <doc xml:whitespace="preserve">X position at which to draw rectangle, in user space coordinates in Pango units</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <doc xml:whitespace="preserve">Y position at which to draw rectangle, in user space coordinates in Pango units</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <doc xml:whitespace="preserve">width of rectangle in Pango units in user space coordinates</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <doc xml:whitespace="preserve">height of rectangle in Pango units in user space coordinates</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_error_underline">
+        <callback name="draw_error_underline">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="renderer" transfer-ownership="none">
+              <type name="Renderer" c:type="PangoRenderer*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <doc xml:whitespace="preserve">X coordinate of underline, in Pango units in user coordinate system</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <doc xml:whitespace="preserve">Y coordinate of underline, in Pango units in user coordinate system</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <doc xml:whitespace="preserve">width of underline, in Pango units in user coordinate system</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <doc xml:whitespace="preserve">height of underline, in Pango units in user coordinate system</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_shape">
+        <callback name="draw_shape">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="renderer" transfer-ownership="none">
+              <type name="Renderer" c:type="PangoRenderer*"/>
+            </parameter>
+            <parameter name="attr" transfer-ownership="none">
+              <type name="AttrShape" c:type="PangoAttrShape*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="gint" c:type="int"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_trapezoid">
+        <callback name="draw_trapezoid">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="renderer" transfer-ownership="none">
+              <type name="Renderer" c:type="PangoRenderer*"/>
+            </parameter>
+            <parameter name="part" transfer-ownership="none">
+              <doc xml:whitespace="preserve">type of object this trapezoid is part of</doc>
+              <type name="RenderPart" c:type="PangoRenderPart"/>
+            </parameter>
+            <parameter name="y1_" transfer-ownership="none">
+              <doc xml:whitespace="preserve">Y coordinate of top of trapezoid</doc>
+              <type name="gdouble" c:type="double"/>
+            </parameter>
+            <parameter name="x11" transfer-ownership="none">
+              <doc xml:whitespace="preserve">X coordinate of left end of top of trapezoid</doc>
+              <type name="gdouble" c:type="double"/>
+            </parameter>
+            <parameter name="x21" transfer-ownership="none">
+              <doc xml:whitespace="preserve">X coordinate of right end of top of trapezoid</doc>
+              <type name="gdouble" c:type="double"/>
+            </parameter>
+            <parameter name="y2" transfer-ownership="none">
+              <doc xml:whitespace="preserve">Y coordinate of bottom of trapezoid</doc>
+              <type name="gdouble" c:type="double"/>
+            </parameter>
+            <parameter name="x12" transfer-ownership="none">
+              <doc xml:whitespace="preserve">X coordinate of left end of bottom of trapezoid</doc>
+              <type name="gdouble" c:type="double"/>
+            </parameter>
+            <parameter name="x22" transfer-ownership="none">
+              <doc xml:whitespace="preserve">X coordinate of right end of bottom of trapezoid</doc>
+              <type name="gdouble" c:type="double"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_glyph">
+        <callback name="draw_glyph">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="renderer" transfer-ownership="none">
+              <type name="Renderer" c:type="PangoRenderer*"/>
+            </parameter>
+            <parameter name="font" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #PangoFont</doc>
+              <type name="Font" c:type="PangoFont*"/>
+            </parameter>
+            <parameter name="glyph" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the glyph index of a single glyph</doc>
+              <type name="Glyph" c:type="PangoGlyph"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <doc xml:whitespace="preserve">X coordinate of left edge of baseline of glyph</doc>
+              <type name="gdouble" c:type="double"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <doc xml:whitespace="preserve">Y coordinate of left edge of baseline of glyph</doc>
+              <type name="gdouble" c:type="double"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="part_changed">
+        <callback name="part_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="renderer" transfer-ownership="none">
+              <type name="Renderer" c:type="PangoRenderer*"/>
+            </parameter>
+            <parameter name="part" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the part for which rendering has changed.</doc>
+              <type name="RenderPart" c:type="PangoRenderPart"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="begin">
+        <callback name="begin">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="renderer" transfer-ownership="none">
+              <type name="Renderer" c:type="PangoRenderer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="end">
+        <callback name="end">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="renderer" transfer-ownership="none">
+              <type name="Renderer" c:type="PangoRenderer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="prepare_run">
+        <callback name="prepare_run">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="renderer" transfer-ownership="none">
+              <type name="Renderer" c:type="PangoRenderer*"/>
+            </parameter>
+            <parameter name="run" transfer-ownership="none">
+              <type name="LayoutRun" c:type="PangoLayoutRun*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_glyph_item">
+        <callback name="draw_glyph_item">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="renderer" transfer-ownership="none">
+              <type name="Renderer" c:type="PangoRenderer*"/>
+            </parameter>
+            <parameter name="text" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the UTF-8 text that @glyph_item refers to, or %NULL</doc>
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="glyph_item" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #PangoGlyphItem</doc>
+              <type name="GlyphItem" c:type="PangoGlyphItem*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <doc xml:whitespace="preserve">X position of left edge of baseline, in user space coordinates in Pango units.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <doc xml:whitespace="preserve">Y position of left edge of baseline, in user space coordinates in Pango units.</doc>
+              <type name="gint" c:type="int"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_pango_reserved2" introspectable="0">
+        <callback name="_pango_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_pango_reserved3" introspectable="0">
+        <callback name="_pango_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_pango_reserved4" introspectable="0">
+        <callback name="_pango_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="RendererPrivate" c:type="PangoRendererPrivate" disguised="1">
+    </record>
+    <constant name="SCALE" value="1024">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="Script"
+                 glib:type-name="PangoScript"
+                 glib:get-type="pango_script_get_type"
+                 c:type="PangoScript">
+      <member name="invalid_code"
+              value="-1"
+              c:identifier="PANGO_SCRIPT_INVALID_CODE"
+              glib:nick="invalid-code"/>
+      <member name="common"
+              value="0"
+              c:identifier="PANGO_SCRIPT_COMMON"
+              glib:nick="common"/>
+      <member name="inherited"
+              value="1"
+              c:identifier="PANGO_SCRIPT_INHERITED"
+              glib:nick="inherited"/>
+      <member name="arabic"
+              value="2"
+              c:identifier="PANGO_SCRIPT_ARABIC"
+              glib:nick="arabic"/>
+      <member name="armenian"
+              value="3"
+              c:identifier="PANGO_SCRIPT_ARMENIAN"
+              glib:nick="armenian"/>
+      <member name="bengali"
+              value="4"
+              c:identifier="PANGO_SCRIPT_BENGALI"
+              glib:nick="bengali"/>
+      <member name="bopomofo"
+              value="5"
+              c:identifier="PANGO_SCRIPT_BOPOMOFO"
+              glib:nick="bopomofo"/>
+      <member name="cherokee"
+              value="6"
+              c:identifier="PANGO_SCRIPT_CHEROKEE"
+              glib:nick="cherokee"/>
+      <member name="coptic"
+              value="7"
+              c:identifier="PANGO_SCRIPT_COPTIC"
+              glib:nick="coptic"/>
+      <member name="cyrillic"
+              value="8"
+              c:identifier="PANGO_SCRIPT_CYRILLIC"
+              glib:nick="cyrillic"/>
+      <member name="deseret"
+              value="9"
+              c:identifier="PANGO_SCRIPT_DESERET"
+              glib:nick="deseret"/>
+      <member name="devanagari"
+              value="10"
+              c:identifier="PANGO_SCRIPT_DEVANAGARI"
+              glib:nick="devanagari"/>
+      <member name="ethiopic"
+              value="11"
+              c:identifier="PANGO_SCRIPT_ETHIOPIC"
+              glib:nick="ethiopic"/>
+      <member name="georgian"
+              value="12"
+              c:identifier="PANGO_SCRIPT_GEORGIAN"
+              glib:nick="georgian"/>
+      <member name="gothic"
+              value="13"
+              c:identifier="PANGO_SCRIPT_GOTHIC"
+              glib:nick="gothic"/>
+      <member name="greek"
+              value="14"
+              c:identifier="PANGO_SCRIPT_GREEK"
+              glib:nick="greek"/>
+      <member name="gujarati"
+              value="15"
+              c:identifier="PANGO_SCRIPT_GUJARATI"
+              glib:nick="gujarati"/>
+      <member name="gurmukhi"
+              value="16"
+              c:identifier="PANGO_SCRIPT_GURMUKHI"
+              glib:nick="gurmukhi"/>
+      <member name="han"
+              value="17"
+              c:identifier="PANGO_SCRIPT_HAN"
+              glib:nick="han"/>
+      <member name="hangul"
+              value="18"
+              c:identifier="PANGO_SCRIPT_HANGUL"
+              glib:nick="hangul"/>
+      <member name="hebrew"
+              value="19"
+              c:identifier="PANGO_SCRIPT_HEBREW"
+              glib:nick="hebrew"/>
+      <member name="hiragana"
+              value="20"
+              c:identifier="PANGO_SCRIPT_HIRAGANA"
+              glib:nick="hiragana"/>
+      <member name="kannada"
+              value="21"
+              c:identifier="PANGO_SCRIPT_KANNADA"
+              glib:nick="kannada"/>
+      <member name="katakana"
+              value="22"
+              c:identifier="PANGO_SCRIPT_KATAKANA"
+              glib:nick="katakana"/>
+      <member name="khmer"
+              value="23"
+              c:identifier="PANGO_SCRIPT_KHMER"
+              glib:nick="khmer"/>
+      <member name="lao"
+              value="24"
+              c:identifier="PANGO_SCRIPT_LAO"
+              glib:nick="lao"/>
+      <member name="latin"
+              value="25"
+              c:identifier="PANGO_SCRIPT_LATIN"
+              glib:nick="latin"/>
+      <member name="malayalam"
+              value="26"
+              c:identifier="PANGO_SCRIPT_MALAYALAM"
+              glib:nick="malayalam"/>
+      <member name="mongolian"
+              value="27"
+              c:identifier="PANGO_SCRIPT_MONGOLIAN"
+              glib:nick="mongolian"/>
+      <member name="myanmar"
+              value="28"
+              c:identifier="PANGO_SCRIPT_MYANMAR"
+              glib:nick="myanmar"/>
+      <member name="ogham"
+              value="29"
+              c:identifier="PANGO_SCRIPT_OGHAM"
+              glib:nick="ogham"/>
+      <member name="old_italic"
+              value="30"
+              c:identifier="PANGO_SCRIPT_OLD_ITALIC"
+              glib:nick="old-italic"/>
+      <member name="oriya"
+              value="31"
+              c:identifier="PANGO_SCRIPT_ORIYA"
+              glib:nick="oriya"/>
+      <member name="runic"
+              value="32"
+              c:identifier="PANGO_SCRIPT_RUNIC"
+              glib:nick="runic"/>
+      <member name="sinhala"
+              value="33"
+              c:identifier="PANGO_SCRIPT_SINHALA"
+              glib:nick="sinhala"/>
+      <member name="syriac"
+              value="34"
+              c:identifier="PANGO_SCRIPT_SYRIAC"
+              glib:nick="syriac"/>
+      <member name="tamil"
+              value="35"
+              c:identifier="PANGO_SCRIPT_TAMIL"
+              glib:nick="tamil"/>
+      <member name="telugu"
+              value="36"
+              c:identifier="PANGO_SCRIPT_TELUGU"
+              glib:nick="telugu"/>
+      <member name="thaana"
+              value="37"
+              c:identifier="PANGO_SCRIPT_THAANA"
+              glib:nick="thaana"/>
+      <member name="thai"
+              value="38"
+              c:identifier="PANGO_SCRIPT_THAI"
+              glib:nick="thai"/>
+      <member name="tibetan"
+              value="39"
+              c:identifier="PANGO_SCRIPT_TIBETAN"
+              glib:nick="tibetan"/>
+      <member name="canadian_aboriginal"
+              value="40"
+              c:identifier="PANGO_SCRIPT_CANADIAN_ABORIGINAL"
+              glib:nick="canadian-aboriginal"/>
+      <member name="yi"
+              value="41"
+              c:identifier="PANGO_SCRIPT_YI"
+              glib:nick="yi"/>
+      <member name="tagalog"
+              value="42"
+              c:identifier="PANGO_SCRIPT_TAGALOG"
+              glib:nick="tagalog"/>
+      <member name="hanunoo"
+              value="43"
+              c:identifier="PANGO_SCRIPT_HANUNOO"
+              glib:nick="hanunoo"/>
+      <member name="buhid"
+              value="44"
+              c:identifier="PANGO_SCRIPT_BUHID"
+              glib:nick="buhid"/>
+      <member name="tagbanwa"
+              value="45"
+              c:identifier="PANGO_SCRIPT_TAGBANWA"
+              glib:nick="tagbanwa"/>
+      <member name="braille"
+              value="46"
+              c:identifier="PANGO_SCRIPT_BRAILLE"
+              glib:nick="braille"/>
+      <member name="cypriot"
+              value="47"
+              c:identifier="PANGO_SCRIPT_CYPRIOT"
+              glib:nick="cypriot"/>
+      <member name="limbu"
+              value="48"
+              c:identifier="PANGO_SCRIPT_LIMBU"
+              glib:nick="limbu"/>
+      <member name="osmanya"
+              value="49"
+              c:identifier="PANGO_SCRIPT_OSMANYA"
+              glib:nick="osmanya"/>
+      <member name="shavian"
+              value="50"
+              c:identifier="PANGO_SCRIPT_SHAVIAN"
+              glib:nick="shavian"/>
+      <member name="linear_b"
+              value="51"
+              c:identifier="PANGO_SCRIPT_LINEAR_B"
+              glib:nick="linear-b"/>
+      <member name="tai_le"
+              value="52"
+              c:identifier="PANGO_SCRIPT_TAI_LE"
+              glib:nick="tai-le"/>
+      <member name="ugaritic"
+              value="53"
+              c:identifier="PANGO_SCRIPT_UGARITIC"
+              glib:nick="ugaritic"/>
+      <member name="new_tai_lue"
+              value="54"
+              c:identifier="PANGO_SCRIPT_NEW_TAI_LUE"
+              glib:nick="new-tai-lue"/>
+      <member name="buginese"
+              value="55"
+              c:identifier="PANGO_SCRIPT_BUGINESE"
+              glib:nick="buginese"/>
+      <member name="glagolitic"
+              value="56"
+              c:identifier="PANGO_SCRIPT_GLAGOLITIC"
+              glib:nick="glagolitic"/>
+      <member name="tifinagh"
+              value="57"
+              c:identifier="PANGO_SCRIPT_TIFINAGH"
+              glib:nick="tifinagh"/>
+      <member name="syloti_nagri"
+              value="58"
+              c:identifier="PANGO_SCRIPT_SYLOTI_NAGRI"
+              glib:nick="syloti-nagri"/>
+      <member name="old_persian"
+              value="59"
+              c:identifier="PANGO_SCRIPT_OLD_PERSIAN"
+              glib:nick="old-persian"/>
+      <member name="kharoshthi"
+              value="60"
+              c:identifier="PANGO_SCRIPT_KHAROSHTHI"
+              glib:nick="kharoshthi"/>
+      <member name="unknown"
+              value="61"
+              c:identifier="PANGO_SCRIPT_UNKNOWN"
+              glib:nick="unknown"/>
+      <member name="balinese"
+              value="62"
+              c:identifier="PANGO_SCRIPT_BALINESE"
+              glib:nick="balinese"/>
+      <member name="cuneiform"
+              value="63"
+              c:identifier="PANGO_SCRIPT_CUNEIFORM"
+              glib:nick="cuneiform"/>
+      <member name="phoenician"
+              value="64"
+              c:identifier="PANGO_SCRIPT_PHOENICIAN"
+              glib:nick="phoenician"/>
+      <member name="phags_pa"
+              value="65"
+              c:identifier="PANGO_SCRIPT_PHAGS_PA"
+              glib:nick="phags-pa"/>
+      <member name="nko"
+              value="66"
+              c:identifier="PANGO_SCRIPT_NKO"
+              glib:nick="nko"/>
+      <member name="kayah_li"
+              value="67"
+              c:identifier="PANGO_SCRIPT_KAYAH_LI"
+              glib:nick="kayah-li"/>
+      <member name="lepcha"
+              value="68"
+              c:identifier="PANGO_SCRIPT_LEPCHA"
+              glib:nick="lepcha"/>
+      <member name="rejang"
+              value="69"
+              c:identifier="PANGO_SCRIPT_REJANG"
+              glib:nick="rejang"/>
+      <member name="sundanese"
+              value="70"
+              c:identifier="PANGO_SCRIPT_SUNDANESE"
+              glib:nick="sundanese"/>
+      <member name="saurashtra"
+              value="71"
+              c:identifier="PANGO_SCRIPT_SAURASHTRA"
+              glib:nick="saurashtra"/>
+      <member name="cham"
+              value="72"
+              c:identifier="PANGO_SCRIPT_CHAM"
+              glib:nick="cham"/>
+      <member name="ol_chiki"
+              value="73"
+              c:identifier="PANGO_SCRIPT_OL_CHIKI"
+              glib:nick="ol-chiki"/>
+      <member name="vai"
+              value="74"
+              c:identifier="PANGO_SCRIPT_VAI"
+              glib:nick="vai"/>
+      <member name="carian"
+              value="75"
+              c:identifier="PANGO_SCRIPT_CARIAN"
+              glib:nick="carian"/>
+      <member name="lycian"
+              value="76"
+              c:identifier="PANGO_SCRIPT_LYCIAN"
+              glib:nick="lycian"/>
+      <member name="lydian"
+              value="77"
+              c:identifier="PANGO_SCRIPT_LYDIAN"
+              glib:nick="lydian"/>
+    </enumeration>
+    <record name="ScriptIter" c:type="PangoScriptIter" disguised="1">
+      <doc xml:whitespace="preserve">A #PangoScriptIter is used to iterate through a string
+and identify ranges in different scripts.</doc>
+      <method name="free" c:identifier="pango_script_iter_free" version="1.4">
+        <doc xml:whitespace="preserve">Frees a #PangoScriptIter created with pango_script_iter_new().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_range"
+              c:identifier="pango_script_iter_get_range"
+              version="1.4">
+        <doc xml:whitespace="preserve">Gets information about the range to which @iter currently points.
+The range is the set of locations p where *start &lt;= p &lt; *end.
+(That is, it doesn't include the character stored at *end)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store start position of the range, or %NULL</doc>
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store end position of the range, or %NULL</doc>
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+          <parameter name="script" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store script for range, or %NULL</doc>
+            <type name="Script" c:type="PangoScript*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="next" c:identifier="pango_script_iter_next" version="1.4">
+        <doc xml:whitespace="preserve">Advances a #PangoScriptIter to the next range. If @iter
+is already at the end, it is left unchanged and %FALSE
+is returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @iter was successfully advanced.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="Stretch"
+                 glib:type-name="PangoStretch"
+                 glib:get-type="pango_stretch_get_type"
+                 c:type="PangoStretch">
+      <member name="ultra_condensed"
+              value="0"
+              c:identifier="PANGO_STRETCH_ULTRA_CONDENSED"
+              glib:nick="ultra-condensed"/>
+      <member name="extra_condensed"
+              value="1"
+              c:identifier="PANGO_STRETCH_EXTRA_CONDENSED"
+              glib:nick="extra-condensed"/>
+      <member name="condensed"
+              value="2"
+              c:identifier="PANGO_STRETCH_CONDENSED"
+              glib:nick="condensed"/>
+      <member name="semi_condensed"
+              value="3"
+              c:identifier="PANGO_STRETCH_SEMI_CONDENSED"
+              glib:nick="semi-condensed"/>
+      <member name="normal"
+              value="4"
+              c:identifier="PANGO_STRETCH_NORMAL"
+              glib:nick="normal"/>
+      <member name="semi_expanded"
+              value="5"
+              c:identifier="PANGO_STRETCH_SEMI_EXPANDED"
+              glib:nick="semi-expanded"/>
+      <member name="expanded"
+              value="6"
+              c:identifier="PANGO_STRETCH_EXPANDED"
+              glib:nick="expanded"/>
+      <member name="extra_expanded"
+              value="7"
+              c:identifier="PANGO_STRETCH_EXTRA_EXPANDED"
+              glib:nick="extra-expanded"/>
+      <member name="ultra_expanded"
+              value="8"
+              c:identifier="PANGO_STRETCH_ULTRA_EXPANDED"
+              glib:nick="ultra-expanded"/>
+    </enumeration>
+    <enumeration name="Style"
+                 glib:type-name="PangoStyle"
+                 glib:get-type="pango_style_get_type"
+                 c:type="PangoStyle">
+      <doc xml:whitespace="preserve">An enumeration specifying the various slant styles possible for a font.</doc>
+      <member name="normal"
+              value="0"
+              c:identifier="PANGO_STYLE_NORMAL"
+              glib:nick="normal"/>
+      <member name="oblique"
+              value="1"
+              c:identifier="PANGO_STYLE_OBLIQUE"
+              glib:nick="oblique"/>
+      <member name="italic"
+              value="2"
+              c:identifier="PANGO_STYLE_ITALIC"
+              glib:nick="italic"/>
+    </enumeration>
+    <enumeration name="TabAlign"
+                 glib:type-name="PangoTabAlign"
+                 glib:get-type="pango_tab_align_get_type"
+                 c:type="PangoTabAlign">
+      <member name="left"
+              value="0"
+              c:identifier="PANGO_TAB_LEFT"
+              glib:nick="left"/>
+    </enumeration>
+    <record name="TabArray"
+            c:type="PangoTabArray"
+            glib:type-name="PangoTabArray"
+            glib:get-type="pango_tab_array_get_type"
+            c:symbol-prefix="tab_array">
+      <constructor name="new" c:identifier="pango_tab_array_new">
+        <doc xml:whitespace="preserve">Creates an array of @initial_size tab stops. Tab stops are specified in
+pixel units if @positions_in_pixels is %TRUE, otherwise in Pango
+units. All stops are initially at position 0.
+be freed with pango_tab_array_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated #PangoTabArray, which should</doc>
+          <type name="TabArray" c:type="PangoTabArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="initial_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Initial number of tab stops to allocate, can be 0</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="positions_in_pixels" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether positions are in pixel units</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_positions"
+                   c:identifier="pango_tab_array_new_with_positions"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">This is a convenience function that creates a #PangoTabArray
+and allows you to specify the alignment and position of each
+tab stop. You &lt;emphasis&gt;must&lt;/emphasis&gt; provide an alignment
+and position for @size tab stops.
+be freed with pango_tab_array_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated #PangoTabArray, which should</doc>
+          <type name="TabArray" c:type="PangoTabArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of tab stops in the array</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="positions_in_pixels" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether positions are in pixel units</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="first_alignment" transfer-ownership="none">
+            <doc xml:whitespace="preserve">alignment of first tab stop</doc>
+            <type name="TabAlign" c:type="PangoTabAlign"/>
+          </parameter>
+          <parameter name="first_position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position of first tab stop</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy" c:identifier="pango_tab_array_copy">
+        <doc xml:whitespace="preserve">Copies a #PangoTabArray
+be freed with pango_tab_array_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated #PangoTabArray, which should</doc>
+          <type name="TabArray" c:type="PangoTabArray*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="pango_tab_array_free">
+        <doc xml:whitespace="preserve">Frees a tab array and associated resources.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_positions_in_pixels"
+              c:identifier="pango_tab_array_get_positions_in_pixels">
+        <doc xml:whitespace="preserve">Returns %TRUE if the tab positions are in pixels, %FALSE if they are
+in Pango units.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether positions are in pixels.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_size" c:identifier="pango_tab_array_get_size">
+        <doc xml:whitespace="preserve">Gets the number of tab stops in @tab_array.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of tab stops in the array.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_tab" c:identifier="pango_tab_array_get_tab">
+        <doc xml:whitespace="preserve">Gets the alignment and position of a tab stop.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tab_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tab stop index</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="alignment" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store alignment, or %NULL</doc>
+            <type name="TabAlign" c:type="PangoTabAlign*"/>
+          </parameter>
+          <parameter name="location" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store tab position, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tabs" c:identifier="pango_tab_array_get_tabs">
+        <doc xml:whitespace="preserve">If non-%NULL, @alignments and @locations are filled with allocated
+arrays of length pango_tab_array_get_size(). You must free the
+returned array.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alignments" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store an array of tab stop alignments, or %NULL</doc>
+            <type name="TabAlign" c:type="PangoTabAlign**"/>
+          </parameter>
+          <parameter name="locations" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store an array of tab positions, or %NULL</doc>
+            <type name="gint" c:type="gint**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="resize" c:identifier="pango_tab_array_resize">
+        <doc xml:whitespace="preserve">Resizes a tab array. You must subsequently initialize any tabs that
+were added as a result of growing the array.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new size of the array</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tab" c:identifier="pango_tab_array_set_tab">
+        <doc xml:whitespace="preserve">Sets the alignment and location of a tab stop.
+implementation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tab_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of a tab stop</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="alignment" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tab alignment</doc>
+            <type name="TabAlign" c:type="PangoTabAlign"/>
+          </parameter>
+          <parameter name="location" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tab location in Pango units</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <constant name="UNKNOWN_GLYPH_HEIGHT" value="14">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="UNKNOWN_GLYPH_WIDTH" value="10">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="Underline"
+                 glib:type-name="PangoUnderline"
+                 glib:get-type="pango_underline_get_type"
+                 c:type="PangoUnderline">
+      <member name="none"
+              value="0"
+              c:identifier="PANGO_UNDERLINE_NONE"
+              glib:nick="none"/>
+      <member name="single"
+              value="1"
+              c:identifier="PANGO_UNDERLINE_SINGLE"
+              glib:nick="single"/>
+      <member name="double"
+              value="2"
+              c:identifier="PANGO_UNDERLINE_DOUBLE"
+              glib:nick="double"/>
+      <member name="low"
+              value="3"
+              c:identifier="PANGO_UNDERLINE_LOW"
+              glib:nick="low"/>
+      <member name="error"
+              value="4"
+              c:identifier="PANGO_UNDERLINE_ERROR"
+              glib:nick="error"/>
+    </enumeration>
+    <enumeration name="Variant"
+                 glib:type-name="PangoVariant"
+                 glib:get-type="pango_variant_get_type"
+                 c:type="PangoVariant">
+      <member name="normal"
+              value="0"
+              c:identifier="PANGO_VARIANT_NORMAL"
+              glib:nick="normal"/>
+      <member name="small_caps"
+              value="1"
+              c:identifier="PANGO_VARIANT_SMALL_CAPS"
+              glib:nick="small-caps"/>
+    </enumeration>
+    <enumeration name="Weight"
+                 glib:type-name="PangoWeight"
+                 glib:get-type="pango_weight_get_type"
+                 c:type="PangoWeight">
+      <member name="thin"
+              value="100"
+              c:identifier="PANGO_WEIGHT_THIN"
+              glib:nick="thin"/>
+      <member name="ultralight"
+              value="200"
+              c:identifier="PANGO_WEIGHT_ULTRALIGHT"
+              glib:nick="ultralight"/>
+      <member name="light"
+              value="300"
+              c:identifier="PANGO_WEIGHT_LIGHT"
+              glib:nick="light"/>
+      <member name="book"
+              value="380"
+              c:identifier="PANGO_WEIGHT_BOOK"
+              glib:nick="book"/>
+      <member name="normal"
+              value="400"
+              c:identifier="PANGO_WEIGHT_NORMAL"
+              glib:nick="normal"/>
+      <member name="medium"
+              value="500"
+              c:identifier="PANGO_WEIGHT_MEDIUM"
+              glib:nick="medium"/>
+      <member name="semibold"
+              value="600"
+              c:identifier="PANGO_WEIGHT_SEMIBOLD"
+              glib:nick="semibold"/>
+      <member name="bold"
+              value="700"
+              c:identifier="PANGO_WEIGHT_BOLD"
+              glib:nick="bold"/>
+      <member name="ultrabold"
+              value="800"
+              c:identifier="PANGO_WEIGHT_ULTRABOLD"
+              glib:nick="ultrabold"/>
+      <member name="heavy"
+              value="900"
+              c:identifier="PANGO_WEIGHT_HEAVY"
+              glib:nick="heavy"/>
+      <member name="ultraheavy"
+              value="1000"
+              c:identifier="PANGO_WEIGHT_ULTRAHEAVY"
+              glib:nick="ultraheavy"/>
+    </enumeration>
+    <enumeration name="WrapMode"
+                 glib:type-name="PangoWrapMode"
+                 glib:get-type="pango_wrap_mode_get_type"
+                 c:type="PangoWrapMode">
+      <member name="word"
+              value="0"
+              c:identifier="PANGO_WRAP_WORD"
+              glib:nick="word"/>
+      <member name="char"
+              value="1"
+              c:identifier="PANGO_WRAP_CHAR"
+              glib:nick="char"/>
+      <member name="word_char"
+              value="2"
+              c:identifier="PANGO_WRAP_WORD_CHAR"
+              glib:nick="word-char"/>
+    </enumeration>
+    <record name="_ScriptForLang" c:type="_PangoScriptForLang">
+      <field name="lang" writable="1">
+        <array zero-terminated="0" c:type="gchar" fixed-size="7">
+          <type name="gchar" c:type="char"/>
+        </array>
+      </field>
+      <field name="scripts" writable="1">
+        <array zero-terminated="0" c:type="PangoScript" fixed-size="3">
+          <type name="Script" c:type="PangoScript"/>
+        </array>
+      </field>
+    </record>
+    <function name="attr_background_new"
+              c:identifier="pango_attr_background_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new background color attribute.
+freed with pango_attribute_destroy().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoAttribute, which should be</doc>
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the red value (ranging from 0 to 65535)</doc>
+          <type name="guint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the green value</doc>
+          <type name="guint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the blue value</doc>
+          <type name="guint16" c:type="guint16"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_fallback_new"
+              c:identifier="pango_attr_fallback_new"
+              version="1.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new font fallback attribute.
+If fallback is disabled, characters will only be used from the
+closest matching font on the system. No fallback will be done to
+other fonts on the system that might contain the characters in the
+text.
+freed with pango_attribute_destroy().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoAttribute, which should be</doc>
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="enable_fallback" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if we should fall back on other fonts for characters the active font is missing.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_family_new"
+              c:identifier="pango_attr_family_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new font family attribute.
+freed with pango_attribute_destroy().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoAttribute, which should be</doc>
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="family" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the family or comma separated list of families</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_font_desc_new"
+              c:identifier="pango_attr_font_desc_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new font description attribute. This attribute
+allows setting family, style, weight, variant, stretch,
+and size simultaneously.
+freed with pango_attribute_destroy().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoAttribute, which should be</doc>
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="desc" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the font description</doc>
+          <type name="FontDescription" c:type="PangoFontDescription*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_foreground_new"
+              c:identifier="pango_attr_foreground_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new foreground color attribute.
+freed with pango_attribute_destroy().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoAttribute, which should be</doc>
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the red value (ranging from 0 to 65535)</doc>
+          <type name="guint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the green value</doc>
+          <type name="guint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the blue value</doc>
+          <type name="guint16" c:type="guint16"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_gravity_hint_new"
+              c:identifier="pango_attr_gravity_hint_new"
+              version="1.16"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new gravity hint attribute.
+freed with pango_attribute_destroy().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoAttribute, which should be</doc>
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the gravity hint value.</doc>
+          <type name="GravityHint" c:type="PangoGravityHint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_gravity_new"
+              c:identifier="pango_attr_gravity_new"
+              version="1.16"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new gravity attribute.
+freed with pango_attribute_destroy().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoAttribute, which should be</doc>
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gravity" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the gravity value; should not be %PANGO_GRAVITY_AUTO.</doc>
+          <type name="Gravity" c:type="PangoGravity"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_language_new"
+              c:identifier="pango_attr_language_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new language tag attribute.
+freed with pango_attribute_destroy().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoAttribute, which should be</doc>
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="language" transfer-ownership="none">
+          <doc xml:whitespace="preserve">language tag</doc>
+          <type name="Language" c:type="PangoLanguage*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_letter_spacing_new"
+              c:identifier="pango_attr_letter_spacing_new"
+              version="1.6"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new letter-spacing attribute.
+freed with pango_attribute_destroy().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoAttribute, which should be</doc>
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="letter_spacing" transfer-ownership="none">
+          <doc xml:whitespace="preserve">amount of extra space to add between graphemes of the text, in Pango units.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_rise_new"
+              c:identifier="pango_attr_rise_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new baseline displacement attribute.
+freed with pango_attribute_destroy().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoAttribute, which should be</doc>
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="rise" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the amount that the text should be displaced vertically, in Pango units. Positive values displace the text upwards.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_scale_new"
+              c:identifier="pango_attr_scale_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new font size scale attribute. The base font for the
+affected text will have its size multiplied by @scale_factor.
+freed with pango_attribute_destroy().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoAttribute, which should be</doc>
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="scale_factor" transfer-ownership="none">
+          <doc xml:whitespace="preserve">factor to scale the font</doc>
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_shape_new"
+              c:identifier="pango_attr_shape_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new shape attribute. A shape is used to impose a
+particular ink and logical rectangle on the result of shaping a
+particular glyph. This might be used, for instance, for
+embedding a picture or a widget inside a #PangoLayout.
+freed with pango_attribute_destroy().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoAttribute, which should be</doc>
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="ink_rect" transfer-ownership="none">
+          <doc xml:whitespace="preserve">ink rectangle to assign to each character</doc>
+          <type name="Rectangle" c:type="PangoRectangle*"/>
+        </parameter>
+        <parameter name="logical_rect" transfer-ownership="none">
+          <doc xml:whitespace="preserve">logical rectangle to assign to each character</doc>
+          <type name="Rectangle" c:type="PangoRectangle*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_shape_new_with_data"
+              c:identifier="pango_attr_shape_new_with_data"
+              version="1.8"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Like pango_attr_shape_new(), but a user data pointer is also
+provided; this pointer can be accessed when later
+rendering the glyph.
+freed with pango_attribute_destroy().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoAttribute, which should be</doc>
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="ink_rect" transfer-ownership="none">
+          <doc xml:whitespace="preserve">ink rectangle to assign to each character</doc>
+          <type name="Rectangle" c:type="PangoRectangle*"/>
+        </parameter>
+        <parameter name="logical_rect" transfer-ownership="none">
+          <doc xml:whitespace="preserve">logical rectangle to assign to each character</doc>
+          <type name="Rectangle" c:type="PangoRectangle*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data pointer</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="copy_func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   destroy="4">
+          <doc xml:whitespace="preserve">function to copy @data when the attribute is copied. If %NULL, @data is simply copied as a pointer.</doc>
+          <type name="AttrDataCopyFunc" c:type="PangoAttrDataCopyFunc"/>
+        </parameter>
+        <parameter name="destroy_func" transfer-ownership="none" scope="async">
+          <doc xml:whitespace="preserve">function to free @data when the attribute is freed, or %NULL</doc>
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_size_new"
+              c:identifier="pango_attr_size_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new font-size attribute in fractional points.
+freed with pango_attribute_destroy().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoAttribute, which should be</doc>
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the font size, in %PANGO_SCALE&lt;!-- --&gt;ths of a point.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_size_new_absolute"
+              c:identifier="pango_attr_size_new_absolute"
+              version="1.8"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new font-size attribute in device units.
+freed with pango_attribute_destroy().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoAttribute, which should be</doc>
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the font size, in %PANGO_SCALE&lt;!-- --&gt;ths of a device unit.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_stretch_new"
+              c:identifier="pango_attr_stretch_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new font stretch attribute
+freed with pango_attribute_destroy().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoAttribute, which should be</doc>
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="stretch" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the stretch</doc>
+          <type name="Stretch" c:type="PangoStretch"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_strikethrough_color_new"
+              c:identifier="pango_attr_strikethrough_color_new"
+              version="1.8"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new strikethrough color attribute. This attribute
+modifies the color of strikethrough lines. If not set, strikethrough
+lines will use the foreground color.
+freed with pango_attribute_destroy().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoAttribute, which should be</doc>
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the red value (ranging from 0 to 65535)</doc>
+          <type name="guint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the green value</doc>
+          <type name="guint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the blue value</doc>
+          <type name="guint16" c:type="guint16"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_strikethrough_new"
+              c:identifier="pango_attr_strikethrough_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new strike-through attribute.
+freed with pango_attribute_destroy().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoAttribute, which should be</doc>
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="strikethrough" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the text should be struck-through.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_style_new"
+              c:identifier="pango_attr_style_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new font slant style attribute.
+freed with pango_attribute_destroy().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoAttribute, which should be</doc>
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="style" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the slant style</doc>
+          <type name="Style" c:type="PangoStyle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_type_get_name"
+              c:identifier="pango_attr_type_get_name"
+              version="1.22">
+      <doc xml:whitespace="preserve">Fetches the attribute type name passed in when registering the type using
+pango_attr_type_register().
+The returned value is an interned string (see g_intern_string() for what
+that means) that should not be modified or freed.
+a built-in Pango attribute type or invalid.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the type ID name (which may be %NULL), or %NULL if @type is</doc>
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an attribute type ID to fetch the name for</doc>
+          <type name="AttrType" c:type="PangoAttrType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_type_register"
+              c:identifier="pango_attr_type_register">
+      <doc xml:whitespace="preserve">Allocate a new attribute type ID.  The attribute type name can be accessed
+later by using pango_attr_type_get_name().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the new type ID.</doc>
+        <type name="AttrType" c:type="PangoAttrType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an identifier for the type</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_underline_color_new"
+              c:identifier="pango_attr_underline_color_new"
+              version="1.8"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new underline color attribute. This attribute
+modifies the color of underlines. If not set, underlines
+will use the foreground color.
+freed with pango_attribute_destroy().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoAttribute, which should be</doc>
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the red value (ranging from 0 to 65535)</doc>
+          <type name="guint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the green value</doc>
+          <type name="guint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the blue value</doc>
+          <type name="guint16" c:type="guint16"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_underline_new"
+              c:identifier="pango_attr_underline_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new underline-style attribute.
+freed with pango_attribute_destroy().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoAttribute, which should be</doc>
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="underline" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the underline style.</doc>
+          <type name="Underline" c:type="PangoUnderline"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_variant_new"
+              c:identifier="pango_attr_variant_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new font variant attribute (normal or small caps)
+freed with pango_attribute_destroy().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoAttribute, which should be</doc>
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="variant" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the variant</doc>
+          <type name="Variant" c:type="PangoVariant"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_weight_new"
+              c:identifier="pango_attr_weight_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new font weight attribute.
+freed with pango_attribute_destroy().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoAttribute, which should be</doc>
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="weight" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the weight</doc>
+          <type name="Weight" c:type="PangoWeight"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bidi_type_for_unichar"
+              c:identifier="pango_bidi_type_for_unichar"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="BidiType" c:type="PangoBidiType"/>
+      </return-value>
+      <parameters>
+        <parameter name="ch" transfer-ownership="none">
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="break" c:identifier="pango_break">
+      <doc xml:whitespace="preserve">Determines possible line, word, and character breaks
+for a string of Unicode text with a single analysis.  For most
+purposes you may want to use pango_get_log_attrs().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="text" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the text to process</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">length of @text in bytes (may be -1 if @text is nul-terminated)</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="analysis" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#PangoAnalysis structure from pango_itemize()</doc>
+          <type name="Analysis" c:type="PangoAnalysis*"/>
+        </parameter>
+        <parameter name="attrs" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an array to store character information in</doc>
+          <type name="LogAttr" c:type="PangoLogAttr*"/>
+        </parameter>
+        <parameter name="attrs_len" transfer-ownership="none">
+          <doc xml:whitespace="preserve">size of the array passed as @attrs</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="coverage_from_bytes"
+              c:identifier="pango_coverage_from_bytes"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Convert data generated from pango_converage_to_bytes() back
+to a #PangoCoverage
+the data was invalid.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly allocated #PangoCoverage, or %NULL if</doc>
+        <type name="Coverage" c:type="PangoCoverage*"/>
+      </return-value>
+      <parameters>
+        <parameter name="bytes" transfer-ownership="none">
+          <doc xml:whitespace="preserve">binary data representing a #PangoCoverage</doc>
+          <type name="guint8" c:type="guchar*"/>
+        </parameter>
+        <parameter name="n_bytes" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the size of @bytes in bytes</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="coverage_new"
+              c:identifier="pango_coverage_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new #PangoCoverage
+initialized to %PANGO_COVERAGE_NONE
+with a reference count of one, which
+should be freed with pango_coverage_unref().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoCoverage,</doc>
+        <type name="Coverage" c:type="PangoCoverage*"/>
+      </return-value>
+    </function>
+    <function name="extents_to_pixels"
+              c:identifier="pango_extents_to_pixels"
+              version="1.16">
+      <doc xml:whitespace="preserve">Converts extents from Pango units to device units, dividing by the
+%PANGO_SCALE factor and performing rounding.
+The @inclusive rectangle is converted by flooring the x/y coordinates and extending
+width/height, such that the final rectangle completely includes the original
+rectangle.
+The @nearest rectangle is converted by rounding the coordinates
+of the rectangle to the nearest device unit (pixel).
+rectangle to completely contain the original rectangle, pass it in as @inclusive.
+If you want two touching-but-not-overlapping rectangles stay
+touching-but-not-overlapping after rounding to device units, pass them in
+as @nearest.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="inclusive" transfer-ownership="none">
+          <doc xml:whitespace="preserve">rectangle to round to pixels inclusively, or %NULL.</doc>
+          <type name="Rectangle" c:type="PangoRectangle*"/>
+        </parameter>
+        <parameter name="nearest" transfer-ownership="none">
+          <doc xml:whitespace="preserve">rectangle to round to nearest pixels, or %NULL.</doc>
+          <type name="Rectangle" c:type="PangoRectangle*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="find_base_dir"
+              c:identifier="pango_find_base_dir"
+              version="1.4">
+      <doc xml:whitespace="preserve">Searches a string the first character that has a strong
+direction, according to the Unicode bidirectional algorithm.
+If no such character is found, then %PANGO_DIRECTION_NEUTRAL is returned.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The direction corresponding to the first strong character.</doc>
+        <type name="Direction" c:type="PangoDirection"/>
+      </return-value>
+      <parameters>
+        <parameter name="text" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the text to process</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">length of @text in bytes (may be -1 if @text is nul-terminated)</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="find_paragraph_boundary"
+              c:identifier="pango_find_paragraph_boundary">
+      <doc xml:whitespace="preserve">Locates a paragraph boundary in @text. A boundary is caused by
+delimiter characters, such as a newline, carriage return, carriage
+return-newline pair, or Unicode paragraph separator character.  The
+index of the run of delimiters is returned in
+(index after all delimiters) is stored in @next_paragraph_start.
+If no delimiters are found, both @paragraph_delimiter_index and
+off the end).</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="text" transfer-ownership="none">
+          <doc xml:whitespace="preserve">UTF-8 text</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">length of @text in bytes, or -1 if nul-terminated</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="paragraph_delimiter_index" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for index of delimiter</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="next_paragraph_start" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for start of next paragraph</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_description_from_string"
+              c:identifier="pango_font_description_from_string">
+      <doc xml:whitespace="preserve">Creates a new font description from a string representation in the
+form "[FAMILY-LIST] [STYLE-OPTIONS] [SIZE]", where FAMILY-LIST is a
+comma separated list of families optionally terminated by a comma,
+STYLE_OPTIONS is a whitespace separated list of words where each WORD
+describes one of style, variant, weight, stretch, or gravity, and SIZE
+is a decimal number (size in points) or optionally followed by the
+unit modifier "px" for absolute size. Any one of the options may
+be absent.  If FAMILY-LIST is absent, then the family_name field of
+the resulting font description will be initialized to %NULL.  If
+STYLE-OPTIONS is missing, then all style options will be set to the
+default values. If SIZE is missing, the size in the resulting font
+description will be set to 0.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #PangoFontDescription.</doc>
+        <type name="FontDescription" c:type="PangoFontDescription*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <doc xml:whitespace="preserve">string representation of a font description.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_log_attrs" c:identifier="pango_get_log_attrs">
+      <doc xml:whitespace="preserve">Computes a #PangoLogAttr for each character in @text. The @log_attrs
+array must have one #PangoLogAttr for each position in @text; if
+last position at the end of the text. @text should be an entire
+paragraph; logical attributes can't be computed without context
+(for example you need to see spaces on either side of a word to know
+the word is a word).</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="text" transfer-ownership="none">
+          <doc xml:whitespace="preserve">text to process</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">length in bytes of @text</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <doc xml:whitespace="preserve">embedding level, or -1 if unknown</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="language" transfer-ownership="none">
+          <doc xml:whitespace="preserve">language tag</doc>
+          <type name="Language" c:type="PangoLanguage*"/>
+        </parameter>
+        <parameter name="log_attrs" transfer-ownership="none">
+          <doc xml:whitespace="preserve">array with one #PangoLogAttr per character in @text, plus one extra, to be filled in</doc>
+          <type name="LogAttr" c:type="PangoLogAttr*"/>
+        </parameter>
+        <parameter name="attrs_len" transfer-ownership="none">
+          <doc xml:whitespace="preserve">length of @log_attrs array</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_mirror_char"
+              c:identifier="pango_get_mirror_char"
+              introspectable="0">
+      <doc xml:whitespace="preserve">If @ch has the Unicode mirrored property and there is another Unicode
+character that typically has a glyph that is the mirror image of @ch's
+glyph, puts that character in the address pointed to by @mirrored_ch.
+Use g_unichar_get_mirror_char() instead; the docs for that function
+provide full details.
+filled in, %FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @ch has a mirrored character and @mirrored_ch is</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="ch" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a Unicode character</doc>
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+        <parameter name="mirrored_ch" transfer-ownership="none">
+          <doc xml:whitespace="preserve">location to store the mirrored character</doc>
+          <type name="gunichar" c:type="gunichar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gravity_get_for_matrix"
+              c:identifier="pango_gravity_get_for_matrix"
+              version="1.16">
+      <doc xml:whitespace="preserve">Finds the gravity that best matches the rotation component
+in a #PangoMatrix.
+%PANGO_GRAVITY_AUTO, or %PANGO_GRAVITY_SOUTH if @matrix is %NULL</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the gravity of @matrix, which will never be</doc>
+        <type name="Gravity" c:type="PangoGravity"/>
+      </return-value>
+      <parameters>
+        <parameter name="matrix" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoMatrix</doc>
+          <type name="Matrix" c:type="PangoMatrix*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gravity_get_for_script"
+              c:identifier="pango_gravity_get_for_script"
+              version="1.16">
+      <doc xml:whitespace="preserve">Based on the script, base gravity, and hint, returns actual gravity
+to use in laying out a single #PangoItem.
+If @base_gravity is %PANGO_GRAVITY_AUTO, it is first replaced with the
+preferred gravity of @script.  To get the preferred gravity of a script,
+pass %PANGO_GRAVITY_AUTO and %PANGO_GRAVITY_HINT_STRONG in.
+with @script.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">resolved gravity suitable to use for a run of text</doc>
+        <type name="Gravity" c:type="PangoGravity"/>
+      </return-value>
+      <parameters>
+        <parameter name="script" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#PangoScript to query</doc>
+          <type name="Script" c:type="PangoScript"/>
+        </parameter>
+        <parameter name="base_gravity" transfer-ownership="none">
+          <doc xml:whitespace="preserve">base gravity of the paragraph</doc>
+          <type name="Gravity" c:type="PangoGravity"/>
+        </parameter>
+        <parameter name="hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">orientation hint</doc>
+          <type name="GravityHint" c:type="PangoGravityHint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gravity_get_for_script_and_width"
+              c:identifier="pango_gravity_get_for_script_and_width"
+              version="1.26">
+      <doc xml:whitespace="preserve">Based on the script, East Asian width, base gravity, and hint,
+returns actual gravity to use in laying out a single character
+or #PangoItem.
+This function is similar to pango_gravity_get_for_script() except
+that this function makes a distinction between narrow/half-width and
+wide/full-width characters also.  Wide/full-width characters always
+stand &lt;emph&gt;upright&lt;/emph&gt;, that is, they always take the base gravity,
+whereas narrow/full-width characters are always rotated in vertical
+context.
+If @base_gravity is %PANGO_GRAVITY_AUTO, it is first replaced with the
+preferred gravity of @script.
+with @script and @wide.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">resolved gravity suitable to use for a run of text</doc>
+        <type name="Gravity" c:type="PangoGravity"/>
+      </return-value>
+      <parameters>
+        <parameter name="script" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#PangoScript to query</doc>
+          <type name="Script" c:type="PangoScript"/>
+        </parameter>
+        <parameter name="wide" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE for wide characters as returned by g_unichar_iswide()</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="base_gravity" transfer-ownership="none">
+          <doc xml:whitespace="preserve">base gravity of the paragraph</doc>
+          <type name="Gravity" c:type="PangoGravity"/>
+        </parameter>
+        <parameter name="hint" transfer-ownership="none">
+          <doc xml:whitespace="preserve">orientation hint</doc>
+          <type name="GravityHint" c:type="PangoGravityHint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gravity_to_rotation"
+              c:identifier="pango_gravity_to_rotation"
+              version="1.16">
+      <doc xml:whitespace="preserve">Converts a #PangoGravity value to its natural rotation in radians.
+Note that pango_matrix_rotate() takes angle in degrees, not radians.
+So, to call pango_matrix_rotate() with the output of this function
+you should multiply it by (180. / G_PI).</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the rotation value corresponding to @gravity.</doc>
+        <type name="gdouble" c:type="double"/>
+      </return-value>
+      <parameters>
+        <parameter name="gravity" transfer-ownership="none">
+          <doc xml:whitespace="preserve">gravity to query</doc>
+          <type name="Gravity" c:type="PangoGravity"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_zero_width"
+              c:identifier="pango_is_zero_width"
+              version="1.10"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Checks @ch to see if it is a character that should not be
+normally rendered on the screen.  This includes all Unicode characters
+with "ZERO WIDTH" in their name, as well as &lt;firstterm&gt;bidi&lt;/firstterm&gt; formatting characters, and
+a few other ones.  This is totally different from g_unichar_iszerowidth()
+and is at best misnamed.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @ch is a zero-width character, %FALSE otherwise</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="ch" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a Unicode character</doc>
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="itemize" c:identifier="pango_itemize" introspectable="0">
+      <doc xml:whitespace="preserve">after @start_index.
+This must be &gt;= 0.
+Breaks a piece of text into segments with consistent
+directional level and shaping engine. Each byte of @text will
+be contained in exactly one of the items in the returned list;
+the generated list of items will be in logical order (the start
+offsets of the items are ascending).
+range before or containing @start_index; @cached_iter will be advanced to
+the range covering the position just after @start_index + @length.
+(i.e. if itemizing in a loop, just keep passing in the same @cached_iter).</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a #GList of #PangoItem structures.</doc>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a structure holding information that affects</doc>
+          <type name="Context" c:type="PangoContext*"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the text to itemize.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="start_index" transfer-ownership="none">
+          <doc xml:whitespace="preserve">first byte in @text to process</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of bytes (not characters) to process</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="attrs" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the set of attributes that apply to @text.</doc>
+          <type name="AttrList" c:type="PangoAttrList*"/>
+        </parameter>
+        <parameter name="cached_iter" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Cached attribute iterator, or %NULL</doc>
+          <type name="AttrIterator" c:type="PangoAttrIterator*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="itemize_with_base_dir"
+              c:identifier="pango_itemize_with_base_dir"
+              version="1.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">after @start_index.
+This must be &gt;= 0.
+Like pango_itemize(), but the base direction to use when
+computing bidirectional levels (see pango_context_set_base_dir ()),
+is specified explicitly rather than gotten from the #PangoContext.
+freed using pango_item_free() probably in combination with g_list_foreach(),
+and the list itself using g_list_free().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a #GList of #PangoItem structures.  The items should be</doc>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a structure holding information that affects</doc>
+          <type name="Context" c:type="PangoContext*"/>
+        </parameter>
+        <parameter name="base_dir" transfer-ownership="none">
+          <doc xml:whitespace="preserve">base direction to use for bidirectional processing</doc>
+          <type name="Direction" c:type="PangoDirection"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the text to itemize.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="start_index" transfer-ownership="none">
+          <doc xml:whitespace="preserve">first byte in @text to process</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of bytes (not characters) to process</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="attrs" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the set of attributes that apply to @text.</doc>
+          <type name="AttrList" c:type="PangoAttrList*"/>
+        </parameter>
+        <parameter name="cached_iter" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Cached attribute iterator, or %NULL</doc>
+          <type name="AttrIterator" c:type="PangoAttrIterator*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="language_from_string"
+              c:identifier="pango_language_from_string">
+      <doc xml:whitespace="preserve">Take a RFC-3066 format language tag as a string and convert it to a
+#PangoLanguage pointer that can be efficiently copied (copy the
+pointer) and compared with other language tags (compare the
+pointer.)
+This function first canonicalizes the string by converting it to
+lowercase, mapping '_' to '-', and stripping all characters other
+than letters and '-'.
+Use pango_language_get_default() if you want to get the #PangoLanguage for
+the current locale of the process.
+if @language was %NULL.  The returned pointer will be valid
+forever after, and should not be freed.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">an opaque pointer to a #PangoLanguage structure, or %NULL</doc>
+        <type name="Language" c:type="PangoLanguage*"/>
+      </return-value>
+      <parameters>
+        <parameter name="language" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string representing a language tag, or %NULL</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="language_get_default"
+              c:identifier="pango_language_get_default"
+              version="1.16">
+      <doc xml:whitespace="preserve">Returns the #PangoLanguage for the current locale of the process.
+Note that this can change over the life of an application.
+On Unix systems, this is the return value is derived from
+&lt;literal&gt;setlocale(LC_CTYPE, NULL)&lt;/literal&gt;, and the user can
+affect this through the environment variables LC_ALL, LC_CTYPE or
+LANG (checked in that order). The locale string typically is in
+the form lang_COUNTRY, where lang is an ISO-639 language code, and
+COUNTRY is an ISO-3166 country code. For instance, sv_FI for
+Swedish as written in Finland or pt_BR for Portuguese as written in
+Brazil.
+On Windows, the C library does not use any such environment
+variables, and setting them won't affect the behavior of functions
+like ctime(). The user sets the locale through the Regional Options
+in the Control Panel. The C library (in the setlocale() function)
+does not use country and language codes, but country and language
+names spelled out in English.
+However, this function does check the above environment
+variables, and does return a Unix-style locale string based on
+either said environment variables or the thread's current locale.
+Your application should call &lt;literal&gt;setlocale(LC_ALL, "");&lt;/literal&gt;
+for the user settings to take effect.  Gtk+ does this in its initialization
+functions automatically (by calling gtk_set_locale()).
+See &lt;literal&gt;man setlocale&lt;/literal&gt; for more details.
+freed.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the default language as a #PangoLanguage, must not be</doc>
+        <type name="Language" c:type="PangoLanguage*"/>
+      </return-value>
+    </function>
+    <function name="log2vis_get_embedding_levels"
+              c:identifier="pango_log2vis_get_embedding_levels"
+              version="1.4">
+      <doc xml:whitespace="preserve">This will return the bidirectional embedding levels of the input paragraph
+as defined by the Unicode Bidirectional Algorithm available at:
+http://www.unicode.org/reports/tr9/
+If the input base direction is a weak direction, the direction of the
+characters in the text will determine the final resolved direction.
+character (not byte), that should be freed using g_free.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a newly allocated array of embedding levels, one item per</doc>
+        <type name="guint8" c:type="guint8*"/>
+      </return-value>
+      <parameters>
+        <parameter name="text" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the text to itemize.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of bytes (not characters) to process, or -1 if @text is nul-terminated and the length should be calculated.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="pbase_dir" transfer-ownership="none">
+          <doc xml:whitespace="preserve">input base direction, and output resolved direction.</doc>
+          <type name="Direction" c:type="PangoDirection*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_enum" c:identifier="pango_parse_enum" version="1.16">
+      <doc xml:whitespace="preserve">Parses an enum type and stores the result in @value.
+If @str does not match the nick name of any of the possible values for the
+enum and is not an integer, %FALSE is returned, a warning is issued
+if @warn is %TRUE, and a
+string representing the list of possible values is stored in
+"none/start/middle/end".  If failed and @possible_values is not %NULL,
+returned string should be freed using g_free().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @str was successfully parsed.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">enum type to parse, eg. %PANGO_TYPE_ELLIPSIZE_MODE.</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="str" transfer-ownership="none">
+          <doc xml:whitespace="preserve">string to parse.  May be %NULL.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">integer to store the result in, or %NULL.</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="warn" transfer-ownership="none">
+          <doc xml:whitespace="preserve">if %TRUE, issue a g_warning() on bad input.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="possible_values" transfer-ownership="none">
+          <doc xml:whitespace="preserve">place to store list of possible values on failure, or %NULL.</doc>
+          <type name="utf8" c:type="char**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_markup"
+              c:identifier="pango_parse_markup"
+              introspectable="0"
+              throws="1">
+      <doc xml:whitespace="preserve">Parses marked-up text (see
+&lt;link linkend="PangoMarkupFormat"&gt;markup format&lt;/link&gt;) to create
+a plain-text string and an attribute list.
+If @accel_marker is nonzero, the given character will mark the
+character following it as an accelerator. For example, @accel_marker
+might be an ampersand or underscore. All characters marked
+as an accelerator will receive a %PANGO_UNDERLINE_LOW attribute,
+and the first character so marked will be returned in @accel_char.
+Two @accel_marker characters following each other produce a single
+literal @accel_marker character.
+If any error happens, none of the output arguments are touched except
+for @error.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%FALSE if @error is set, otherwise %TRUE</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="markup_text" transfer-ownership="none">
+          <doc xml:whitespace="preserve">markup to parse (see &lt;link linkend="PangoMarkupFormat"&gt;markup format&lt;/link&gt;)</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">length of @markup_text, or -1 if nul-terminated</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="accel_marker" transfer-ownership="none">
+          <doc xml:whitespace="preserve">character that precedes an accelerator, or 0 for none</doc>
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+        <parameter name="attr_list" transfer-ownership="none">
+          <doc xml:whitespace="preserve">address of return location for a #PangoAttrList, or %NULL</doc>
+          <type name="AttrList" c:type="PangoAttrList**"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <doc xml:whitespace="preserve">address of return location for text with tags stripped, or %NULL</doc>
+          <type name="utf8" c:type="char**"/>
+        </parameter>
+        <parameter name="accel_char" transfer-ownership="none">
+          <doc xml:whitespace="preserve">address of return location for accelerator char, or %NULL</doc>
+          <type name="gunichar" c:type="gunichar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_stretch" c:identifier="pango_parse_stretch">
+      <doc xml:whitespace="preserve">Parses a font stretch. The allowed values are
+"ultra_condensed", "extra_condensed", "condensed",
+"semi_condensed", "normal", "semi_expanded", "expanded",
+"extra_expanded" and "ultra_expanded". Case variations are
+ignored and the '_' characters may be omitted.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @str was successfully parsed.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string to parse.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="stretch" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoStretch to store the result in.</doc>
+          <type name="Stretch" c:type="PangoStretch*"/>
+        </parameter>
+        <parameter name="warn" transfer-ownership="none">
+          <doc xml:whitespace="preserve">if %TRUE, issue a g_warning() on bad input.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_style" c:identifier="pango_parse_style">
+      <doc xml:whitespace="preserve">Parses a font style. The allowed values are "normal",
+"italic" and "oblique", case variations being
+ignored.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @str was successfully parsed.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string to parse.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="style" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoStyle to store the result in.</doc>
+          <type name="Style" c:type="PangoStyle*"/>
+        </parameter>
+        <parameter name="warn" transfer-ownership="none">
+          <doc xml:whitespace="preserve">if %TRUE, issue a g_warning() on bad input.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_variant" c:identifier="pango_parse_variant">
+      <doc xml:whitespace="preserve">Parses a font variant. The allowed values are "normal"
+and "smallcaps" or "small_caps", case variations being
+ignored.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @str was successfully parsed.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string to parse.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="variant" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoVariant to store the result in.</doc>
+          <type name="Variant" c:type="PangoVariant*"/>
+        </parameter>
+        <parameter name="warn" transfer-ownership="none">
+          <doc xml:whitespace="preserve">if %TRUE, issue a g_warning() on bad input.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_weight" c:identifier="pango_parse_weight">
+      <doc xml:whitespace="preserve">Parses a font weight. The allowed values are "heavy",
+"ultrabold", "bold", "normal", "light", "ultraleight"
+and integers. Case variations are ignored.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if @str was successfully parsed.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string to parse.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="weight" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoWeight to store the result in.</doc>
+          <type name="Weight" c:type="PangoWeight*"/>
+        </parameter>
+        <parameter name="warn" transfer-ownership="none">
+          <doc xml:whitespace="preserve">if %TRUE, issue a g_warning() on bad input.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="quantize_line_geometry"
+              c:identifier="pango_quantize_line_geometry"
+              version="1.12">
+      <doc xml:whitespace="preserve">Quantizes the thickness and position of a line, typically an
+underline or strikethrough, to whole device pixels, that is integer
+multiples of %PANGO_SCALE. The purpose of this function is to avoid
+such lines looking blurry.
+Care is taken to make sure @thickness is at least one pixel when this
+function returns, but returned @position may become zero as a result
+of rounding.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="thickness" transfer-ownership="none">
+          <doc xml:whitespace="preserve">pointer to the thickness of a line, in Pango units</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="position" transfer-ownership="none">
+          <doc xml:whitespace="preserve">corresponding position</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="read_line" c:identifier="pango_read_line">
+      <doc xml:whitespace="preserve">Reads an entire line from a file into a buffer. Lines may
+be delimited with '\n', '\r', '\n\r', or '\r\n'. The delimiter
+is not written into the buffer. Text after a '#' character is treated as
+a comment and skipped. '\' can be used to escape a # character.
+'\' proceeding a line delimiter combines adjacent lines. A '\' proceeding
+any other character is ignored and written into the output buffer
+unmodified.
+the number of lines read (this is useful for maintaining
+a line number counter which doesn't combine lines with '\')</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">0 if the stream was already at an %EOF character, otherwise</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a stdio stream</doc>
+          <type name="gpointer" c:type="FILE*"/>
+        </parameter>
+        <parameter name="str" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GString buffer into which to write the result</doc>
+          <type name="GLib.String" c:type="GString*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="reorder_items"
+              c:identifier="pango_reorder_items"
+              introspectable="0">
+      <doc xml:whitespace="preserve">From a list of items in logical order and the associated
+directional levels, produce a list in visual order.
+The original list is unmodified.
+(Please open a bug if you use this function.
+It is not a particularly convenient interface, and the code
+is duplicated elsewhere in Pango for that reason.)</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a #GList of #PangoItem structures in visual order.</doc>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="logical_items" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GList of #PangoItem in logical order.</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scan_int" c:identifier="pango_scan_int">
+      <doc xml:whitespace="preserve">Scans an integer.
+Leading white space is skipped.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%FALSE if a parse error occurred.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pos" transfer-ownership="none">
+          <doc xml:whitespace="preserve">in/out string position</doc>
+          <type name="utf8" c:type="char**"/>
+        </parameter>
+        <parameter name="out" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an int into which to write the result</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scan_string" c:identifier="pango_scan_string">
+      <doc xml:whitespace="preserve">Scans a string into a #GString buffer. The string may either
+be a sequence of non-white-space characters, or a quoted
+string with '"'. Instead a quoted string, '\"' represents
+a literal quote. Leading white space outside of quotes is skipped.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%FALSE if a parse error occurred.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pos" transfer-ownership="none">
+          <doc xml:whitespace="preserve">in/out string position</doc>
+          <type name="utf8" c:type="char**"/>
+        </parameter>
+        <parameter name="out" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GString into which to write the result</doc>
+          <type name="GLib.String" c:type="GString*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scan_word" c:identifier="pango_scan_word">
+      <doc xml:whitespace="preserve">Scans a word into a #GString buffer. A word consists
+of [A-Za-z_] followed by zero or more [A-Za-z_0-9]
+Leading white space is skipped.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%FALSE if a parse error occurred.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pos" transfer-ownership="none">
+          <doc xml:whitespace="preserve">in/out string position</doc>
+          <type name="utf8" c:type="char**"/>
+        </parameter>
+        <parameter name="out" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GString into which to write the result</doc>
+          <type name="GLib.String" c:type="GString*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="script_for_unichar"
+              c:identifier="pango_script_for_unichar"
+              version="1.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Looks up the #PangoScript for a particular character (as defined by
+Unicode Standard Annex #24). No check is made for @ch being a
+valid Unicode character; if you pass in invalid character, the
+result is undefined.
+As of Pango 1.18, this function simply returns the return value of
+g_unichar_get_script().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the #PangoScript for the character.</doc>
+        <type name="Script" c:type="PangoScript"/>
+      </return-value>
+      <parameters>
+        <parameter name="ch" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a Unicode character</doc>
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="script_get_sample_language"
+              c:identifier="pango_script_get_sample_language"
+              version="1.4">
+      <doc xml:whitespace="preserve">Given a script, finds a language tag that is reasonably
+representative of that script. This will usually be the
+most widely spoken or used language written in that script:
+for instance, the sample language for %PANGO_SCRIPT_CYRILLIC
+is &lt;literal&gt;ru&lt;/literal&gt; (Russian), the sample language
+for %PANGO_SCRIPT_ARABIC is &lt;literal&gt;ar&lt;/literal&gt;.
+For some
+scripts, no sample language will be returned because there
+is no language that is sufficiently representative. The best
+example of this is %PANGO_SCRIPT_HAN, where various different
+variants of written Chinese, Japanese, and Korean all use
+significantly different sets of Han characters and forms
+of shared characters. No sample language can be provided
+for many historical scripts as well.
+As of 1.18, this function checks the environment variables
+PANGO_LANGUAGE and LANGUAGE (checked in that order) first.
+If one of them is set, it is parsed as a list of language tags
+separated by colons or other separators.  This function
+will return the first language in the parsed list that Pango
+believes may use @script for writing.  This last predicate
+is tested using pango_language_includes_script().  This can
+be used to control Pango's font selection for non-primary
+languages.  For example, a PANGO_LANGUAGE enviroment variable
+set to "en:fa" makes Pango choose fonts suitable for Persian (fa) 
+instead of Arabic (ar) when a segment of Arabic text is found
+in an otherwise non-Arabic text.  The same trick can be used to
+choose a default language for %PANGO_SCRIPT_HAN when setting
+context language is not feasible.
+of the script, or %NULL if no such language exists.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a #PangoLanguage that is representative</doc>
+        <type name="Language" c:type="PangoLanguage*"/>
+      </return-value>
+      <parameters>
+        <parameter name="script" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoScript</doc>
+          <type name="Script" c:type="PangoScript"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="script_iter_new"
+              c:identifier="pango_script_iter_new"
+              version="1.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new #PangoScriptIter, used to break a string of
+Unicode into runs by text. No copy is made of @text, so
+the caller needs to make sure it remains valid until
+the iterator is freed with pango_script_iter_free().
+to point at the first range in the text, which should be
+freed with pango_script_iter_free(). If the string is
+empty, it will point at an empty range.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the new script iterator, initialized</doc>
+        <type name="ScriptIter" c:type="PangoScriptIter*"/>
+      </return-value>
+      <parameters>
+        <parameter name="text" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a UTF-8 string</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">length of @text, or -1 if @text is nul-terminated.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shape" c:identifier="pango_shape">
+      <doc xml:whitespace="preserve">Given a segment of text and the corresponding
+#PangoAnalysis structure returned from pango_itemize(),
+convert the characters into glyphs. You may also pass
+in only a substring of the item from pango_itemize().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="text" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the text to process</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the length (in bytes) of @text</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="analysis" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#PangoAnalysis structure from pango_itemize()</doc>
+          <type name="Analysis" c:type="PangoAnalysis*"/>
+        </parameter>
+        <parameter name="glyphs" transfer-ownership="none">
+          <doc xml:whitespace="preserve">glyph string in which to store results</doc>
+          <type name="GlyphString" c:type="PangoGlyphString*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="skip_space" c:identifier="pango_skip_space">
+      <doc xml:whitespace="preserve">Skips 0 or more characters of white space.
+the position at a '\0' character.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%FALSE if skipping the white space leaves</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pos" transfer-ownership="none">
+          <doc xml:whitespace="preserve">in/out string position</doc>
+          <type name="utf8" c:type="char**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="split_file_list"
+              c:identifier="pango_split_file_list"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Splits a %G_SEARCHPATH_SEPARATOR-separated list of files, stripping
+white space and substituting ~/ with $HOME/.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a list of strings to be freed with g_strfreev()</doc>
+        <array c:type="char**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a %G_SEARCHPATH_SEPARATOR separated list of filenames</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="trim_string" c:identifier="pango_trim_string">
+      <doc xml:whitespace="preserve">Trims leading and trailing whitespace from a string.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">A newly-allocated string that must be freed with g_free()</doc>
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_direction"
+              c:identifier="pango_unichar_direction"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Determines the inherent direction of a character; either
+%PANGO_DIRECTION_LTR, %PANGO_DIRECTION_RTL, or
+%PANGO_DIRECTION_NEUTRAL.
+This function is useful to categorize characters into left-to-right
+letters, right-to-left letters, and everything else.  If full
+Unicode bidirectional type of a character is needed,
+pango_bidi_type_for_gunichar() can be used instead.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the direction of the character.</doc>
+        <type name="Direction" c:type="PangoDirection"/>
+      </return-value>
+      <parameters>
+        <parameter name="ch" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a Unicode character</doc>
+          <type name="gunichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="units_from_double"
+              c:identifier="pango_units_from_double"
+              version="1.16">
+      <doc xml:whitespace="preserve">it by %PANGO_SCALE and rounds to nearest integer.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the value in Pango units.</doc>
+        <type name="gint" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="d" transfer-ownership="none">
+          <doc xml:whitespace="preserve">double floating-point value</doc>
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="units_to_double"
+              c:identifier="pango_units_to_double"
+              version="1.16">
+      <doc xml:whitespace="preserve">it by %PANGO_SCALE.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the double value.</doc>
+        <type name="gdouble" c:type="double"/>
+      </return-value>
+      <parameters>
+        <parameter name="i" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value in Pango units</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="version" c:identifier="pango_version" version="1.16">
+      <doc xml:whitespace="preserve">This is similar to the macro %PANGO_VERSION except that
+it returns the encoded version of Pango available at run-time,
+as opposed to the version available at compile-time.
+A version number can be encoded into an integer using
+PANGO_VERSION_ENCODE().
+available at run time.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The encoded version of Pango library</doc>
+        <type name="gint" c:type="int"/>
+      </return-value>
+    </function>
+    <function name="version_check"
+              c:identifier="pango_version_check"
+              version="1.16">
+      <doc xml:whitespace="preserve">Checks that the Pango library in use is compatible with the
+given version. Generally you would pass in the constants
+%PANGO_VERSION_MAJOR, %PANGO_VERSION_MINOR, %PANGO_VERSION_MICRO
+as the three arguments to this function; that produces
+a check that the library in use at run-time is compatible with
+the version of Pango the application or module was compiled against.
+of the running library is newer than the version
+the running library must be binary compatible with the
+version @required_major.required_minor.@required_micro
+(same major version.)
+For compile-time version checking use PANGO_VERSION_CHECK().
+given version, or a string describing the version mismatch.
+The returned string is owned by Pango and should not be modified
+or freed.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%NULL if the Pango library is compatible with the</doc>
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="required_major" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the required major version.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="required_minor" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the required minor version.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="required_micro" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the required major version.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="version_string"
+              c:identifier="pango_version_string"
+              version="1.16">
+      <doc xml:whitespace="preserve">This is similar to the macro %PANGO_VERSION_STRING except that
+it returns the version of Pango available at run-time, as opposed to
+the version available at compile-time.
+available at run time.
+The returned string is owned by Pango and should not be modified
+or freed.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">A string containing the version of Pango library</doc>
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+    </function>
+  </namespace>
+</repository>
diff --git a/basis/pango/authors.txt b/basis/pango/authors.txt
new file mode 100644 (file)
index 0000000..ce9bcc8
--- /dev/null
@@ -0,0 +1 @@
+Anton Gorenko
\ No newline at end of file
diff --git a/basis/pango/cairo/PangoCairo-1.0.gir b/basis/pango/cairo/PangoCairo-1.0.gir
new file mode 100644 (file)
index 0000000..2f6b01a
--- /dev/null
@@ -0,0 +1,658 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Pango" version="1.0"/>
+  <include name="PangoFT2" version="1.0"/>
+  <include name="cairo" version="1.0"/>
+  <include name="fontconfig" version="2.0"/>
+  <include name="freetype2" version="2.0"/>
+  <package name="cairo"/>
+  <package name="gobject-2.0"/>
+  <namespace name="PangoCairo"
+             version="1.0"
+             shared-library="libpangocairo-1.0.so.0"
+             c:identifier-prefixes="PangoCairo"
+             c:symbol-prefixes="pango_cairo">
+    <class name="FcFontMap"
+           c:symbol-prefix="fc_font_map"
+           c:type="PangoCairoFcFontMap"
+           parent="Pango.FontMap"
+           glib:type-name="PangoCairoFcFontMap"
+           glib:get-type="pango_cairo_fc_font_map_get_type">
+      <implements name="FontMap"/>
+      <field name="parent_instance" introspectable="0">
+        <type c:type="PangoFcFontMap"/>
+      </field>
+      <field name="dpi">
+        <type name="gdouble" c:type="double"/>
+      </field>
+      <field name="library">
+        <type name="freetype2.Library" c:type="FT_Library"/>
+      </field>
+    </class>
+    <interface name="Font"
+               c:symbol-prefix="font"
+               c:type="PangoCairoFont"
+               version="1.18"
+               glib:type-name="PangoCairoFont"
+               glib:get-type="pango_cairo_font_get_type">
+      <doc xml:whitespace="preserve">#PangoCairoFont is an interface exported by fonts for
+use with Cairo. The actual type of the font will depend
+on the particular font technology Cairo was compiled to use.</doc>
+      <prerequisite name="Pango.Font"/>
+      <method name="get_scaled_font"
+              c:identifier="pango_cairo_font_get_scaled_font"
+              version="1.18">
+        <doc xml:whitespace="preserve">Gets the #cairo_scaled_font_t used by @font.
+The scaled font can be referenced and kept using
+cairo_scaled_font_reference().
+or %NULL if @font is %NULL.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #cairo_scaled_font_t used by @font,</doc>
+          <type name="cairo.ScaledFont" c:type="cairo_scaled_font_t*"/>
+        </return-value>
+      </method>
+    </interface>
+    <interface name="FontMap"
+               c:symbol-prefix="font_map"
+               c:type="PangoCairoFontMap"
+               version="1.10"
+               glib:type-name="PangoCairoFontMap"
+               glib:get-type="pango_cairo_font_map_get_type">
+      <doc xml:whitespace="preserve">#PangoCairoFontMap is an interface exported by font maps for
+use with Cairo. The actual type of the font map will depend
+on the particular font technology Cairo was compiled to use.</doc>
+      <prerequisite name="Pango.FontMap"/>
+      <method name="create_context"
+              c:identifier="pango_cairo_font_map_create_context"
+              version="1.10"
+              introspectable="0"
+              deprecated="Use pango_font_map_create_context() instead."
+              deprecated-version="1.22">
+        <doc xml:whitespace="preserve">Create a #PangoContext for the given fontmap.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the newly created context; free with g_object_unref().</doc>
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </return-value>
+      </method>
+      <method name="get_font_type"
+              c:identifier="pango_cairo_font_map_get_font_type"
+              version="1.18">
+        <doc xml:whitespace="preserve">Gets the type of Cairo font backend that @fontmap uses.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #cairo_font_type_t cairo font backend type</doc>
+          <type name="cairo.FontType" c:type="cairo_font_type_t"/>
+        </return-value>
+      </method>
+      <method name="get_resolution"
+              c:identifier="pango_cairo_font_map_get_resolution"
+              version="1.10">
+        <doc xml:whitespace="preserve">Gets the resolution for the fontmap. See pango_cairo_font_map_set_resolution()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the resolution in "dots per inch"</doc>
+          <type name="gdouble" c:type="double"/>
+        </return-value>
+      </method>
+      <method name="set_default"
+              c:identifier="pango_cairo_font_map_set_default"
+              version="1.22">
+        <doc xml:whitespace="preserve">Sets a default #PangoCairoFontMap to use with Cairo.
+This can be used to change the Cairo font backend that the
+default fontmap uses for example.  The old default font map
+is unreffed and the new font map referenced.
+A value of %NULL for @fontmap will cause the current default
+font map to be released and a new default font
+map to be created on demand, using pango_cairo_font_map_new().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_resolution"
+              c:identifier="pango_cairo_font_map_set_resolution"
+              version="1.10">
+        <doc xml:whitespace="preserve">Sets the resolution for the fontmap. This is a scale factor between
+points specified in a #PangoFontDescription and Cairo units. The
+default value is 96, meaning that a 10 point font will be 13
+units high. (10 * 96. / 72. = 13.3).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dpi" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the resolution in "dots per inch". (Physical inches aren't actually involved; the terminology is conventional.)</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <callback name="ShapeRendererFunc" c:type="PangoCairoShapeRendererFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cr" transfer-ownership="none">
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </parameter>
+        <parameter name="attr" transfer-ownership="none">
+          <type name="Pango.AttrShape" c:type="PangoAttrShape*"/>
+        </parameter>
+        <parameter name="do_path" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="context_get_font_options"
+              c:identifier="pango_cairo_context_get_font_options"
+              version="1.10">
+      <doc xml:whitespace="preserve">Retrieves any font rendering options previously set with
+pango_cairo_font_map_set_font_options(). This function does not report options
+that are derived from the target surface by pango_cairo_update_context()
+if no options have been set. This value is owned by the context
+and must not be modified or freed.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the font options previously set on the context, or %NULL</doc>
+        <type name="cairo.FontOptions" c:type="cairo_font_options_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoContext, from a pangocairo font map</doc>
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="context_get_resolution"
+              c:identifier="pango_cairo_context_get_resolution"
+              version="1.10">
+      <doc xml:whitespace="preserve">Gets the resolution for the context. See pango_cairo_context_set_resolution()
+be returned if no resolution has previously been set.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the resolution in "dots per inch". A negative value will</doc>
+        <type name="gdouble" c:type="double"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoContext, from a pangocairo font map</doc>
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="context_get_shape_renderer"
+              c:identifier="pango_cairo_context_get_shape_renderer"
+              version="1.18"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Sets callback function for context to use for rendering attributes
+of type %PANGO_ATTR_SHAPE.  See #PangoCairoShapeRendererFunc for
+details.
+Retrieves callback function and associated user data for rendering
+attributes of type %PANGO_ATTR_SHAPE as set by
+pango_cairo_context_set_shape_renderer(), if any.
+if no shape rendering callback have been set.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the shape rendering callback previously set on the context, or %NULL</doc>
+        <type name="ShapeRendererFunc" c:type="PangoCairoShapeRendererFunc"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoContext, from a pangocairo font map</doc>
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Pointer to #gpointer to return user data</doc>
+          <type name="gpointer" c:type="gpointer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="context_set_font_options"
+              c:identifier="pango_cairo_context_set_font_options"
+              version="1.10">
+      <doc xml:whitespace="preserve">Sets the font options used when rendering text with this context.
+These options override any options that pango_cairo_update_context()
+derives from the target surface.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoContext, from a pangocairo font map</doc>
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </parameter>
+        <parameter name="options" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #cairo_font_options_t, or %NULL to unset any previously set options. A copy is made.</doc>
+          <type name="cairo.FontOptions" c:type="cairo_font_options_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="context_set_resolution"
+              c:identifier="pango_cairo_context_set_resolution"
+              version="1.10">
+      <doc xml:whitespace="preserve">Sets the resolution for the context. This is a scale factor between
+points specified in a #PangoFontDescription and Cairo units. The
+default value is 96, meaning that a 10 point font will be 13
+units high. (10 * 96. / 72. = 13.3).</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoContext, from a pangocairo font map</doc>
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </parameter>
+        <parameter name="dpi" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the resolution in "dots per inch". (Physical inches aren't actually involved; the terminology is conventional.) A 0 or negative value means to use the resolution from the font map.</doc>
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="context_set_shape_renderer"
+              c:identifier="pango_cairo_context_set_shape_renderer"
+              version="1.18">
+      <doc xml:whitespace="preserve">Sets callback function for context to use for rendering attributes
+of type %PANGO_ATTR_SHAPE.  See #PangoCairoShapeRendererFunc for
+details.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoContext, from a pangocairo font map</doc>
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <doc xml:whitespace="preserve">Callback function for rendering attributes of type %PANGO_ATTR_SHAPE, or %NULL to disable shape rendering.</doc>
+          <type name="ShapeRendererFunc" c:type="PangoCairoShapeRendererFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">User data that will be passed to @func.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="dnotify" transfer-ownership="none" scope="async">
+          <doc xml:whitespace="preserve">Callback that will be called when the context is freed to release @data, or %NULL.</doc>
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="create_context"
+              c:identifier="pango_cairo_create_context"
+              version="1.22"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a context object set up to match the current transformation
+and target surface of the Cairo context.  This context can then be
+used to create a layout using pango_layout_new().
+This function is a convenience function that creates a context using
+the default font map, then updates it to @cr.  If you just need to
+create a layout for use with @cr and do not need to access #PangoContext
+directly, you can use pango_cairo_create_layout() instead.
+g_object_unref().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly created #PangoContext. Free with</doc>
+        <type name="Pango.Context" c:type="PangoContext*"/>
+      </return-value>
+      <parameters>
+        <parameter name="cr" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a Cairo context</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="create_layout"
+              c:identifier="pango_cairo_create_layout"
+              version="1.10"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a layout object set up to match the current transformation
+and target surface of the Cairo context.  This layout can then be
+used for text measurement with functions like
+pango_layout_get_size() or drawing with functions like
+pango_cairo_show_layout(). If you change the transformation
+or target surface for @cr, you need to call pango_cairo_update_layout()
+This function is the most convenient way to use Cairo with Pango,
+however it is slightly inefficient since it creates a separate
+#PangoContext object for each layout. This might matter in an
+application that was laying out large amounts of text.
+g_object_unref().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly created #PangoLayout. Free with</doc>
+        <type name="Pango.Layout" c:type="PangoLayout*"/>
+      </return-value>
+      <parameters>
+        <parameter name="cr" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a Cairo context</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="error_underline_path"
+              c:identifier="pango_cairo_error_underline_path"
+              version="1.14">
+      <doc xml:whitespace="preserve">Add a squiggly line to the current path in the specified cairo context that
+approximately covers the given rectangle in the style of an underline used
+to indicate a spelling error.  (The width of the underline is rounded to an
+integer number of up/down segments and the resulting rectangle is centered
+in the original rectangle)</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cr" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a Cairo context</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The X coordinate of one corner of the rectangle</doc>
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The Y coordinate of one corner of the rectangle</doc>
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Non-negative width of the rectangle</doc>
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Non-negative height of the rectangle</doc>
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_map_get_default"
+              c:identifier="pango_cairo_font_map_get_default"
+              version="1.10"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Gets a default #PangoCairoFontMap to use with Cairo.
+Note that the type of the returned object will depend
+on the particular font backend Cairo was compiled to use;
+You generally should only use the #PangoFontMap and
+#PangoCairoFontMap interfaces on the returned object.
+The default Cairo fontmap can be changed by using
+pango_cairo_font_map_set_default().  This can be used to
+change the Cairo font backend that the default fontmap
+uses for example.
+object is owned by Pango and must not be freed.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the default Cairo fontmap for Pango. This</doc>
+        <type name="Pango.FontMap" c:type="PangoFontMap*"/>
+      </return-value>
+    </function>
+    <function name="font_map_new"
+              c:identifier="pango_cairo_font_map_new"
+              version="1.10"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #PangoCairoFontMap object; a fontmap is used
+to cache information about available fonts, and holds
+certain global parameters such as the resolution.
+In most cases, you can use pango_cairo_font_map_get_default()
+instead.
+Note that the type of the returned object will depend
+on the particular font backend Cairo was compiled to use;
+You generally should only use the #PangoFontMap and
+#PangoCairoFontMap interfaces on the returned object.
+be freed with g_object_unref().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoFontMap, which should</doc>
+        <type name="Pango.FontMap" c:type="PangoFontMap*"/>
+      </return-value>
+    </function>
+    <function name="font_map_new_for_font_type"
+              c:identifier="pango_cairo_font_map_new_for_font_type"
+              version="1.18"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #PangoCairoFontMap object of the type suitable
+to be used with cairo font backend of type @fonttype.
+In most cases one should simply use @pango_cairo_font_map_new(),
+or in fact in most of those cases, just use
+which should be freed with g_object_unref(),
+or %NULL if the requested cairo font backend is
+not supported / compiled in.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly allocated #PangoFontMap of suitable type</doc>
+        <type name="Pango.FontMap" c:type="PangoFontMap*"/>
+      </return-value>
+      <parameters>
+        <parameter name="fonttype" transfer-ownership="none">
+          <doc xml:whitespace="preserve">desired #cairo_font_type_t</doc>
+          <type name="cairo.FontType" c:type="cairo_font_type_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="glyph_string_path"
+              c:identifier="pango_cairo_glyph_string_path">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cr" transfer-ownership="none">
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </parameter>
+        <parameter name="font" transfer-ownership="none">
+          <type name="Pango.Font" c:type="PangoFont*"/>
+        </parameter>
+        <parameter name="glyphs" transfer-ownership="none">
+          <type name="Pango.GlyphString" c:type="PangoGlyphString*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="layout_line_path"
+              c:identifier="pango_cairo_layout_line_path"
+              version="1.10">
+      <doc xml:whitespace="preserve">Adds the text in #PangoLayoutLine to the current path in the
+specified cairo context.  The origin of the glyphs (the left edge
+of the line) will be at the current point of the cairo context.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cr" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a Cairo context</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </parameter>
+        <parameter name="line" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoLayoutLine</doc>
+          <type name="Pango.LayoutLine" c:type="PangoLayoutLine*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="layout_path"
+              c:identifier="pango_cairo_layout_path"
+              version="1.10">
+      <doc xml:whitespace="preserve">Adds the text in a #PangoLayout to the current path in the
+specified cairo context.  The top-left corner of the #PangoLayout
+will be at the current point of the cairo context.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cr" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a Cairo context</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </parameter>
+        <parameter name="layout" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a Pango layout</doc>
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="show_error_underline"
+              c:identifier="pango_cairo_show_error_underline"
+              version="1.14">
+      <doc xml:whitespace="preserve">Draw a squiggly line in the specified cairo context that approximately
+covers the given rectangle in the style of an underline used to indicate a
+spelling error.  (The width of the underline is rounded to an integer
+number of up/down segments and the resulting rectangle is centered in the
+original rectangle)</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cr" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a Cairo context</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The X coordinate of one corner of the rectangle</doc>
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The Y coordinate of one corner of the rectangle</doc>
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Non-negative width of the rectangle</doc>
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Non-negative height of the rectangle</doc>
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="show_glyph_item"
+              c:identifier="pango_cairo_show_glyph_item"
+              version="1.22">
+      <doc xml:whitespace="preserve">Draws the glyphs in @glyph_item in the specified cairo context,
+embedding the text associated with the glyphs in the output if the
+output format supports it (PDF for example), otherwise it acts
+similar to pango_cairo_show_glyph_string().
+The origin of the glyphs (the left edge of the baseline) will
+be drawn at the current point of the cairo context.
+Note that @text is the start of the text for layout, which is then
+indexed by &lt;literal&gt;@glyph_item-&gt;item-&gt;offset&lt;/literal&gt;.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cr" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a Cairo context</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the UTF-8 text that @glyph_item refers to</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="glyph_item" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoGlyphItem</doc>
+          <type name="Pango.GlyphItem" c:type="PangoGlyphItem*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="show_glyph_string"
+              c:identifier="pango_cairo_show_glyph_string"
+              version="1.10">
+      <doc xml:whitespace="preserve">Draws the glyphs in @glyphs in the specified cairo context.
+The origin of the glyphs (the left edge of the baseline) will
+be drawn at the current point of the cairo context.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cr" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a Cairo context</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </parameter>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoFont from a #PangoCairoFontMap</doc>
+          <type name="Pango.Font" c:type="PangoFont*"/>
+        </parameter>
+        <parameter name="glyphs" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoGlyphString</doc>
+          <type name="Pango.GlyphString" c:type="PangoGlyphString*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="show_layout"
+              c:identifier="pango_cairo_show_layout"
+              version="1.10">
+      <doc xml:whitespace="preserve">Draws a #PangoLayout in the specified cairo context.
+The top-left corner of the #PangoLayout will be drawn
+at the current point of the cairo context.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cr" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a Cairo context</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </parameter>
+        <parameter name="layout" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a Pango layout</doc>
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="show_layout_line"
+              c:identifier="pango_cairo_show_layout_line"
+              version="1.10">
+      <doc xml:whitespace="preserve">Draws a #PangoLayoutLine in the specified cairo context.
+The origin of the glyphs (the left edge of the line) will
+be drawn at the current point of the cairo context.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cr" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a Cairo context</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </parameter>
+        <parameter name="line" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoLayoutLine</doc>
+          <type name="Pango.LayoutLine" c:type="PangoLayoutLine*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="update_context"
+              c:identifier="pango_cairo_update_context"
+              version="1.10">
+      <doc xml:whitespace="preserve">Updates a #PangoContext previously created for use with Cairo to
+match the current transformation and target surface of a Cairo
+context. If any layouts have been created for the context,
+it's necessary to call pango_layout_context_changed() on those
+layouts.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cr" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a Cairo context</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </parameter>
+        <parameter name="context" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoContext, from a pangocairo font map</doc>
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="update_layout"
+              c:identifier="pango_cairo_update_layout"
+              version="1.10">
+      <doc xml:whitespace="preserve">Updates the private #PangoContext of a #PangoLayout created with
+pango_cairo_create_layout() to match the current transformation
+and target surface of a Cairo context.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cr" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a Cairo context</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </parameter>
+        <parameter name="layout" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoLayout, from pango_cairo_create_layout()</doc>
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
index 367ba74d80bcb336316194b7e7c3553a7c59a5de..ce9bcc8313b1cb11ba70f325610cc39f3c09e5eb 100644 (file)
@@ -1,2 +1 @@
-Matthew Willis
-Slava Pestov
+Anton Gorenko
\ No newline at end of file
index 32ae836458bfaca36bb44863e2bdd2bd9ff43b8f..38307ed347d000a1e2f38a323a9388fe530620ae 100644 (file)
@@ -1,243 +1,5 @@
-! Copyright (C) 2008 Matthew Willis.
-! Copyright (C) 2009 Slava Pestov.
+! Copyright (C) 2010 Anton Gorenko.
 ! See http://factorcode.org/license.txt for BSD license.
-!
-! pangocairo bindings, from pango/pangocairo.h
-USING: arrays sequences alien alien.c-types alien.data
-alien.destructors alien.libraries alien.syntax math
-math.functions math.vectors destructors combinators colors fonts
-accessors assocs namespaces kernel pango pango.fonts
-pango.layouts glib unicode.data images cache init system
-math.rectangles fry memoize io.encodings.utf8 classes.struct
-cairo cairo.ffi ;
+USING: pango.cairo.ffi ;
 IN: pango.cairo
 
-<< {
-    { [ os winnt? ] [ "pangocairo" "libpangocairo-1.0-0.dll" cdecl add-library ] }
-    { [ os macosx? ] [ "pangocairo" "/opt/local/lib/libpangocairo-1.0.0.dylib" cdecl add-library ] }
-    { [ os unix? ] [ ] }
-} cond >>
-
-LIBRARY: pangocairo
-
-C-TYPE: PangoCairoFontMap
-C-TYPE: PangoCairoFont
-
-FUNCTION: PangoFontMap*
-pango_cairo_font_map_new ( ) ;
-
-FUNCTION: PangoFontMap*
-pango_cairo_font_map_new_for_font_type ( cairo_font_type_t fonttype ) ;
-
-FUNCTION: PangoFontMap*
-pango_cairo_font_map_get_default ( ) ;
-
-FUNCTION: cairo_font_type_t
-pango_cairo_font_map_get_font_type ( PangoCairoFontMap* fontmap ) ;
-
-FUNCTION: void
-pango_cairo_font_map_set_resolution ( PangoCairoFontMap* fontmap, double dpi ) ;
-
-FUNCTION: double
-pango_cairo_font_map_get_resolution ( PangoCairoFontMap* fontmap ) ;
-
-FUNCTION: PangoContext*
-pango_cairo_font_map_create_context ( PangoCairoFontMap* fontmap ) ;
-
-FUNCTION: cairo_scaled_font_t*
-pango_cairo_font_get_scaled_font ( PangoCairoFont* font ) ;
-
-! Update a Pango context for the current state of a cairo context
-FUNCTION: void
-pango_cairo_update_context ( cairo_t* cr, PangoContext* context ) ;
-
-FUNCTION: void
-pango_cairo_context_set_font_options ( PangoContext* context, cairo_font_options_t* options ) ;
-
-FUNCTION: cairo_font_options_t*
-pango_cairo_context_get_font_options ( PangoContext* context ) ;
-
-FUNCTION: void
-pango_cairo_context_set_resolution ( PangoContext* context, double dpi ) ;
-
-FUNCTION: double
-pango_cairo_context_get_resolution ( PangoContext* context ) ;
-
-! Convenience
-FUNCTION: PangoLayout*
-pango_cairo_create_layout ( cairo_t* cr ) ;
-
-FUNCTION: void
-pango_cairo_update_layout ( cairo_t* cr, PangoLayout* layout ) ;
-
-! Rendering
-FUNCTION: void
-pango_cairo_show_glyph_string ( cairo_t* cr, PangoFont* font, PangoGlyphString* glyphs ) ;
-
-FUNCTION: void
-pango_cairo_show_layout_line ( cairo_t* cr, PangoLayoutLine* line ) ;
-
-FUNCTION: void
-pango_cairo_show_layout ( cairo_t* cr, PangoLayout* layout ) ;
-
-FUNCTION: void
-pango_cairo_show_error_underline ( cairo_t* cr, double x, double y, double width, double height ) ;
-
-! Rendering to a path
-FUNCTION: void
-pango_cairo_glyph_string_path ( cairo_t* cr, PangoFont* font, PangoGlyphString* glyphs ) ;
-
-FUNCTION: void
-pango_cairo_layout_line_path  ( cairo_t* cr, PangoLayoutLine* line ) ;
-
-FUNCTION: void
-pango_cairo_layout_path ( cairo_t* cr, PangoLayout* layout ) ;
-
-FUNCTION: void
-pango_cairo_error_underline_path ( cairo_t* cr, double x, double y, double width, double height ) ;
-
-TUPLE: layout < disposable font string selection layout metrics ink-rect logical-rect image ;
-
-SYMBOL: dpi
-
-72 dpi set-global
-
-: set-layout-font ( font layout -- )
-    swap cache-font-description pango_layout_set_font_description ;
-
-: set-layout-text ( str layout -- )
-    swap -1 pango_layout_set_text ;
-
-: layout-extents ( layout -- ink-rect logical-rect )
-    PangoRectangle <struct>
-    PangoRectangle <struct>
-    [ pango_layout_get_extents ] 2keep
-    [ PangoRectangle>rect ] bi@ ;
-
-: layout-baseline ( layout -- baseline )
-    pango_layout_get_iter &pango_layout_iter_free
-    pango_layout_iter_get_baseline
-    pango>float ;
-
-: set-foreground ( cr font -- )
-    foreground>> set-source-color ;
-
-: fill-background ( cr font dim -- )
-    [ background>> set-source-color ]
-    [ [ { 0 0 } ] dip <rect> fill-rect ] bi-curry* bi ;
-
-: rect-translate-x ( rect x -- rect' )
-    '[ _ 0 2array v- ] change-loc ;
-
-: first-line ( layout -- line )
-    layout>> 0 pango_layout_get_line_readonly ;
-
-: line-offset>x ( layout n -- x )
-    #! n is an index into the UTF8 encoding of the text
-    [ drop first-line ] [ swap string>> >utf8-index ] 2bi
-    0 { int } [ pango_layout_line_index_to_x ] with-out-parameters
-    pango>float ;
-
-: x>line-offset ( layout x -- n )
-    #! n is an index into the UTF8 encoding of the text
-    [
-        [ first-line ] dip
-        float>pango
-        { int int }
-        [ pango_layout_line_x_to_index drop ] with-out-parameters
-        swap
-    ] [ drop string>> ] 2bi utf8-index> + ;
-
-: selection-start/end ( selection -- start end )
-    selection>> [ start>> ] [ end>> ] bi ;
-
-: selection-rect ( layout -- rect )
-    [ ink-rect>> dim>> ] [ ] [ selection-start/end ] tri [ line-offset>x ] bi-curry@ bi
-    [ drop nip 0 2array ] [ swap - swap second 2array ] 3bi <rect> ;
-
-: fill-selection-background ( cr layout -- )
-    dup selection>> [
-        [ selection>> color>> set-source-color ]
-        [
-            [ selection-rect ] [ ink-rect>> loc>> first ] bi
-            rect-translate-x
-            fill-rect
-        ] 2bi
-    ] [ 2drop ] if ;
-
-: text-position ( layout -- loc )
-    [ logical-rect>> ] [ ink-rect>> ] bi [ loc>> ] bi@ v- ;
-
-: set-text-position ( cr loc -- )
-    first2 cairo_move_to ;
-
-: draw-layout ( layout -- image )
-    dup ink-rect>> dim>> [ >fixnum ] map [
-        swap {
-            [ layout>> pango_cairo_update_layout ]
-            [ [ font>> ] [ ink-rect>> dim>> ] bi fill-background ]
-            [ fill-selection-background ]
-            [ text-position set-text-position ]
-            [ font>> set-foreground ]
-            [ layout>> pango_cairo_show_layout ]
-        } 2cleave
-    ] make-bitmap-image ;
-
-: escape-nulls ( str -- str' )
-    { { 0 CHAR: zero-width-no-break-space } } substitute ;
-
-: unpack-selection ( layout string/selection -- layout )
-    dup selection? [
-        [ string>> escape-nulls >>string ] [ >>selection ] bi
-    ] [ escape-nulls >>string ] if ; inline
-
-: set-layout-resolution ( layout -- )
-    pango_layout_get_context dpi get pango_cairo_context_set_resolution ;
-
-: <PangoLayout> ( text font -- layout )
-    dummy-cairo pango_cairo_create_layout |g_object_unref
-    [ set-layout-resolution ] keep
-    [ set-layout-font ] keep
-    [ set-layout-text ] keep ;
-
-: glyph-height ( font string -- y )
-    swap <PangoLayout> &g_object_unref layout-extents drop dim>> second ;
-
-MEMO: missing-font-metrics ( font -- metrics )
-    #! Pango doesn't provide x-height and cap-height but Core Text does, so we
-    #! simulate them on Pango.
-    [
-        [ metrics new ] dip
-        [ "x" glyph-height >>x-height ]
-        [ "Y" glyph-height >>cap-height ] bi
-    ] with-destructors ;
-
-: layout-metrics ( layout -- metrics )
-    dup font>> missing-font-metrics clone
-        swap
-        [ layout>> layout-baseline >>ascent ]
-        [ logical-rect>> dim>> [ first >>width ] [ second >>height ] bi ] bi
-        dup [ height>> ] [ ascent>> ] bi - >>descent ;
-
-: <layout> ( font string -- line )
-    [
-        layout new-disposable
-            swap unpack-selection
-            swap >>font
-            dup [ string>> ] [ font>> ] bi <PangoLayout> >>layout
-            dup layout>> layout-extents [ >>ink-rect ] [ >>logical-rect ] bi*
-            dup layout-metrics >>metrics
-            dup draw-layout >>image
-    ] with-destructors ;
-
-M: layout dispose* layout>> g_object_unref ;
-
-SYMBOL: cached-layouts
-
-: cached-layout ( font string -- layout )
-    cached-layouts get [ <layout> ] 2cache ;
-
-: cached-line ( font string -- line )
-    cached-layout layout>> first-line ;
-
-[ <cache-assoc> cached-layouts set-global ] "pango.cairo" add-startup-hook
diff --git a/basis/pango/cairo/ffi/ffi.factor b/basis/pango/cairo/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..1b19ba6
--- /dev/null
@@ -0,0 +1,26 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries alien.syntax cairo.ffi combinators
+gobject-introspection system vocabs.loader ;
+IN: pango.cairo.ffi
+
+<<
+"pango.ffi" require
+>>
+
+LIBRARY: pango.cairo
+
+<< 
+"pango.cairo" {
+    { [ os winnt? ] [ "libpangocairo-1.0-0.dll" cdecl add-library ] }
+    { [ os macosx? ] [ "/opt/local/lib/libpangocairo-1.0.0.dylib" cdecl add-library ] }
+    { [ os unix? ] [ "libpangocairo-1.0.so" cdecl add-library ] }
+} cond 
+>>
+
+FOREIGN-RECORD-TYPE: cairo.Context cairo_t
+FOREIGN-RECORD-TYPE: cairo.ScaledFont cairo_scaled_font_t
+FOREIGN-ENUM-TYPE: cairo.FontType cairo_font_type_t
+FOREIGN-RECORD-TYPE: cairo.FontOptions cairo_font_options_t
+
+GIR: vocab:pango/cairo/PangoCairo-1.0.gir
diff --git a/basis/pango/cairo/summary.txt b/basis/pango/cairo/summary.txt
new file mode 100644 (file)
index 0000000..8c2dacc
--- /dev/null
@@ -0,0 +1 @@
+PangoCairo binding
diff --git a/basis/pango/cairo/tags.txt b/basis/pango/cairo/tags.txt
new file mode 100755 (executable)
index 0000000..bb863cf
--- /dev/null
@@ -0,0 +1 @@
+bindings
diff --git a/basis/pango/ffi/ffi.factor b/basis/pango/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..4e05226
--- /dev/null
@@ -0,0 +1,39 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.destructors alien.libraries
+alien.syntax combinators gobject-introspection
+gobject-introspection.standard-types system vocabs.loader ;
+IN: pango.ffi
+
+<<
+"gobject.ffi" require
+>>
+
+LIBRARY: pango
+
+<< 
+"pango" {
+    { [ os winnt? ] [ "libpango-1.0-0.dll" cdecl add-library ] }
+    { [ os macosx? ] [ "/opt/local/lib/libpango-1.0.0.dylib" cdecl add-library ] }
+    { [ os unix? ] [ "libpango-1.0.so" cdecl add-library ] }
+} cond 
+>>
+
+IMPLEMENT-STRUCTS: PangoRectangle ;
+
+GIR: vocab:pango/Pango-1.0.gir
+
+DESTRUCTOR: pango_font_description_free
+DESTRUCTOR: pango_layout_iter_free
+
+! <workaround
+
+FORGET: pango_layout_line_index_to_x
+FUNCTION: void
+pango_layout_line_index_to_x ( PangoLayoutLine* line, gint index_, gboolean trailing, gint* x_pos ) ;
+
+FORGET: pango_layout_line_x_to_index
+FUNCTION: gboolean
+pango_layout_line_x_to_index ( PangoLayoutLine* line, gint x_pos, gint* index_, gint* trailing ) ;
+
+! workaround>
diff --git a/basis/pango/fonts/authors.txt b/basis/pango/fonts/authors.txt
deleted file mode 100644 (file)
index 367ba74..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Matthew Willis
-Slava Pestov
diff --git a/basis/pango/fonts/fonts.factor b/basis/pango/fonts/fonts.factor
deleted file mode 100644 (file)
index 979e409..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-! Copyright (C) 2008 Matthew Willis.
-! Copyright (C) 2009 Slava Pestov.
-! See http://factorcode.org/license.txt for BSD license
-USING: pango alien.syntax alien.c-types alien.destructors
-kernel glib accessors combinators destructors init fonts
-memoize math ;
-IN: pango.fonts
-
-LIBRARY: pango
-
-ENUM: PangoStyle
-PANGO_STYLE_NORMAL
-PANGO_STYLE_OBLIQUE
-PANGO_STYLE_ITALIC ;
-
-TYPEDEF: int PangoWeight
-C-TYPE: PangoFont
-C-TYPE: PangoFontFamily
-C-TYPE: PangoFontFace
-C-TYPE: PangoFontMap
-C-TYPE: PangoFontMetrics
-C-TYPE: PangoFontDescription
-C-TYPE: PangoGlyphString
-C-TYPE: PangoLanguage
-
-CONSTANT: PANGO_WEIGHT_THIN 100
-CONSTANT: PANGO_WEIGHT_ULTRALIGHT 200
-CONSTANT: PANGO_WEIGHT_LIGHT 300
-CONSTANT: PANGO_WEIGHT_BOOK 380
-CONSTANT: PANGO_WEIGHT_NORMAL 400
-CONSTANT: PANGO_WEIGHT_MEDIUM 500
-CONSTANT: PANGO_WEIGHT_SEMIBOLD 600
-CONSTANT: PANGO_WEIGHT_BOLD 700
-CONSTANT: PANGO_WEIGHT_ULTRABOLD 800
-CONSTANT: PANGO_WEIGHT_HEAVY 900
-CONSTANT: PANGO_WEIGHT_ULTRAHEAVY 1000
-
-FUNCTION: PangoFontDescription*
-pango_font_description_new ( ) ;
-
-FUNCTION: void
-pango_font_description_free ( PangoFontDescription* desc ) ;
-
-DESTRUCTOR: pango_font_description_free
-
-FUNCTION: PangoFontDescription*
-pango_font_description_from_string ( c-string str ) ;
-
-FUNCTION: c-string
-pango_font_description_to_string ( PangoFontDescription* desc ) ;
-
-FUNCTION: c-string
-pango_font_description_to_filename ( PangoFontDescription* desc ) ;
-
-FUNCTION: void
-pango_font_description_set_family ( PangoFontDescription* desc, c-string family ) ;
-
-FUNCTION: void
-pango_font_description_set_style ( PangoFontDescription* desc, PangoStyle style ) ;
-
-FUNCTION: void
-pango_font_description_set_weight ( PangoFontDescription* desc, PangoWeight weight ) ;
-
-FUNCTION: void
-pango_font_description_set_size ( PangoFontDescription* desc, gint size ) ;
-
-FUNCTION: void
-pango_font_map_list_families ( PangoFontMap* fontmap, PangoFontFamily*** families, int* n_families ) ;
-
-FUNCTION: c-string
-pango_font_family_get_name ( PangoFontFamily* family ) ;
-
-FUNCTION: int
-pango_font_family_is_monospace ( PangoFontFamily* family ) ;
-
-FUNCTION: void
-pango_font_family_list_faces ( PangoFontFamily* family, PangoFontFace*** faces, int* n_faces ) ;
-
-FUNCTION: c-string
-pango_font_face_get_face_name ( PangoFontFace* face ) ;
-
-FUNCTION: void
-pango_font_face_list_sizes ( PangoFontFace* face, int** sizes, int* n_sizes ) ;
-
-FUNCTION: void pango_font_metrics_unref ( PangoFontMetrics* metrics ) ;
-
-DESTRUCTOR: pango_font_metrics_unref
-
-FUNCTION: int pango_font_metrics_get_ascent ( PangoFontMetrics* metrics ) ;
-
-FUNCTION: int pango_font_metrics_get_descent ( PangoFontMetrics* metrics ) ;
-
-FUNCTION: PangoFont* pango_font_map_load_font ( PangoFontMap* fontmap, PangoContext* context, PangoFontDescription* desc ) ;
-
-FUNCTION: PangoFontMetrics* pango_context_get_metrics ( PangoContext* context, PangoFontDescription* desc, PangoLanguage* language ) ;
-
-FUNCTION: PangoFontMetrics* pango_font_get_metrics ( PangoFont* font, PangoLanguage* language ) ;
-                                                         
-MEMO: (cache-font-description) ( font -- description )
-    [
-        [ pango_font_description_new |pango_font_description_free ] dip {
-            [ name>> pango_font_description_set_family ]
-            [ size>> float>pango pango_font_description_set_size ]
-            [ bold?>> PANGO_WEIGHT_BOLD PANGO_WEIGHT_NORMAL ? pango_font_description_set_weight ]
-            [ italic?>> PANGO_STYLE_ITALIC PANGO_STYLE_NORMAL ? pango_font_description_set_style ]
-            [ drop ]
-        } 2cleave
-    ] with-destructors ;
-
-: cache-font-description ( font -- description )
-    strip-font-colors (cache-font-description) ;
-
-[ \ (cache-font-description) reset-memoized ] "pango.fonts" add-startup-hook
diff --git a/basis/pango/fonts/tags.txt b/basis/pango/fonts/tags.txt
deleted file mode 100644 (file)
index bb863cf..0000000
+++ /dev/null
@@ -1 +0,0 @@
-bindings
diff --git a/basis/pango/layouts/layouts-tests.factor b/basis/pango/layouts/layouts-tests.factor
deleted file mode 100644 (file)
index a4a83f7..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-IN: pango.layouts.tests
-USING: pango.layouts pango.cairo tools.test glib fonts accessors
-sequences combinators.short-circuit math destructors ;
-
-[ t ] [
-    [
-        <font> "Helvetica" >>name 12 >>size
-        "OH, HAI"
-        cached-layout ink-rect>> dim>>
-    ] with-destructors [ 0 > ] all?
-] unit-test
\ No newline at end of file
diff --git a/basis/pango/layouts/layouts.factor b/basis/pango/layouts/layouts.factor
deleted file mode 100644 (file)
index 2e3369d..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-! Copyright (C) 2008 Matthew Willis.
-! Copyright (C) 2009 Slava Pestov.
-! See http://factorcode.org/license.txt for BSD license.
-USING: alien.c-types alien.destructors alien.syntax glib pango
-pango.fonts ;
-IN: pango.layouts
-
-LIBRARY: pango
-
-C-TYPE: PangoLayout
-C-TYPE: PangoLayoutIter
-C-TYPE: PangoLayoutLine
-
-FUNCTION: PangoLayout*
-pango_layout_new ( PangoContext* context ) ;
-
-FUNCTION: PangoContext*
-pango_layout_get_context ( PangoLayout* layout ) ;
-
-FUNCTION: void
-pango_layout_set_text ( PangoLayout* layout, c-string text, int length ) ;
-
-FUNCTION: c-string
-pango_layout_get_text ( PangoLayout* layout ) ;
-
-FUNCTION: void
-pango_layout_get_size ( PangoLayout* layout, int* width, int* height ) ;
-
-FUNCTION: void
-pango_layout_set_font_description ( PangoLayout* layout, PangoFontDescription* desc ) ;
-
-FUNCTION: PangoFontDescription*
-pango_layout_get_font_description ( PangoLayout* layout ) ;
-
-FUNCTION: void
-pango_layout_get_pixel_size ( PangoLayout* layout, int* width, int* height ) ;
-
-FUNCTION: void
-pango_layout_get_extents ( PangoLayout* layout, PangoRectangle* ink_rect, PangoRectangle* logical_rect ) ;
-
-FUNCTION: void
-pango_layout_get_pixel_extents ( PangoLayout* layout, PangoRectangle* ink_rect, PangoRectangle* logical_rect ) ;
-
-FUNCTION: PangoLayoutLine*
-pango_layout_get_line_readonly ( PangoLayout* layout, int line ) ;
-                                                         
-FUNCTION: void
-pango_layout_line_index_to_x ( PangoLayoutLine* line, int index_, uint trailing, int* x_pos ) ;
-
-FUNCTION: gboolean
-pango_layout_line_x_to_index ( PangoLayoutLine* line, int x_pos, int* index_, int* trailing ) ;
-
-FUNCTION: PangoLayoutIter*
-pango_layout_get_iter ( PangoLayout* layout ) ;
-
-FUNCTION: int
-pango_layout_iter_get_baseline ( PangoLayoutIter* iter ) ;
-
-FUNCTION: void
-pango_layout_iter_free ( PangoLayoutIter* iter ) ;
-
-DESTRUCTOR: pango_layout_iter_free
-
index 3a249c664c6a99be83cfe5f6d45e227bf997ac70..221308f25787c3a73c5c9e382e0e94a538cfeeda 100644 (file)
@@ -1,39 +1,5 @@
-! Copyright (C) 2008 Matthew Willis.
-! Copyright (C) 2009 Slava Pestov.
-! See http://factorcode.org/license.txt for BSD license
-USING: arrays system alien.destructors alien.c-types alien.syntax alien
-combinators math.rectangles kernel math alien.libraries classes.struct
-accessors ;
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: pango.ffi ;
 IN: pango
 
-! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-! Helpful functions from other parts of pango
-! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-<< {
-    { [ os winnt? ] [ "pango" "libpango-1.0-0.dll" cdecl add-library ] }
-    { [ os macosx? ] [ "pango" "/opt/local/lib/libpango-1.0.0.dylib" cdecl add-library ] }
-    { [ os unix? ] [ ] }
-} cond >>
-
-LIBRARY: pango
-
-CONSTANT: PANGO_SCALE 1024
-
-: pango>float ( n -- x ) PANGO_SCALE /f ; inline
-: float>pango ( x -- n ) PANGO_SCALE * >integer ; inline
-
-C-TYPE: PangoContext
-
-FUNCTION: PangoContext* pango_context_new ( ) ;
-
-STRUCT: PangoRectangle
-    { x int }
-    { y int }
-    { width int }
-    { height int } ;
-
-: PangoRectangle>rect ( PangoRectangle -- rect )
-    [ [ x>> pango>float ] [ y>> pango>float ] bi 2array ]
-    [ [ width>> pango>float ] [ height>> pango>float ] bi 2array ] bi
-    <rect> ;
diff --git a/basis/pango/summary.txt b/basis/pango/summary.txt
new file mode 100644 (file)
index 0000000..256187f
--- /dev/null
@@ -0,0 +1 @@
+Pango binding
diff --git a/basis/pango/tags.txt b/basis/pango/tags.txt
new file mode 100755 (executable)
index 0000000..bb863cf
--- /dev/null
@@ -0,0 +1 @@
+bindings
diff --git a/basis/ui/backend/gtk/authors.txt b/basis/ui/backend/gtk/authors.txt
new file mode 100644 (file)
index 0000000..7239f42
--- /dev/null
@@ -0,0 +1,2 @@
+Anton Gorenko
+Philipp Brüschweiler
diff --git a/basis/ui/backend/gtk/gtk.factor b/basis/ui/backend/gtk/gtk.factor
new file mode 100644 (file)
index 0000000..743d98b
--- /dev/null
@@ -0,0 +1,560 @@
+! Copyright (C) 2010 Anton Gorenko, Philipp Brüschweiler.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors alien.accessors alien.c-types alien.data
+alien.strings arrays assocs classes.struct command-line destructors
+gdk.ffi gdk.gl.ffi glib.ffi gobject-introspection.standard-types
+gobject.ffi gtk.ffi gtk.gl.ffi io.backend io.backend.unix.multiplexers
+io.encodings.utf8 io.thread kernel libc literals locals math
+math.bitwise math.order math.vectors namespaces sequences strings
+system threads ui ui.backend ui.clipboards ui.event-loop ui.gadgets
+ui.gadgets.editors ui.gadgets.private ui.gadgets.worlds ui.gestures
+ui.pixel-formats ui.pixel-formats.private ui.private ;
+IN: ui.backend.gtk
+
+SINGLETON: gtk-ui-backend
+
+TUPLE: handle ;
+TUPLE: window-handle < handle window fullscreen? im-context ;
+
+: <window-handle> ( window im-context -- window-handle )
+    window-handle new
+        swap >>im-context
+        swap >>window ;
+
+: connect-signal-with-data ( object signal-name callback data -- )
+    [ utf8 string>alien ] 2dip g_signal_connect drop ;
+
+: connect-signal ( object signal-name callback -- )
+    f connect-signal-with-data ;
+
+! Clipboards
+
+TUPLE: gtk-clipboard handle ;
+
+C: <gtk-clipboard> gtk-clipboard
+
+M: gtk-clipboard clipboard-contents
+    [
+        handle>> gtk_clipboard_wait_for_text
+        [ &g_free utf8 alien>string ] [ f ] if*
+    ] with-destructors ;
+
+M: gtk-clipboard set-clipboard-contents
+    swap [ handle>> ] [ utf8 string>alien ] bi*
+    -1 gtk_clipboard_set_text ;
+
+: init-clipboard ( -- )
+    selection "PRIMARY"
+    clipboard "CLIPBOARD"
+    [
+        utf8 string>alien gdk_atom_intern_static_string
+        gtk_clipboard_get <gtk-clipboard> swap set-global
+    ] 2bi@ ;
+
+! IO events
+
+: io-source-prepare ( source timeout -- ? )
+    2drop f ;
+
+: io-source-check ( source -- ? )
+    poll_fds>> 0 g_slist_nth_data GPollFD memory>struct
+    revents>> 0 = not ;
+
+: io-source-dispatch ( source callback user_data -- ? )
+     3drop
+     0 mx get wait-for-events
+     yield t ;
+
+CONSTANT: poll-fd-events
+    flags{
+        G_IO_IN
+        G_IO_OUT
+        G_IO_PRI
+        G_IO_ERR
+        G_IO_HUP
+        G_IO_NVAL
+    }
+
+: create-poll-fd ( -- poll-fd )
+    GPollFD malloc-struct &free
+        mx get fd>> >>fd
+        poll-fd-events >>events ;
+
+HOOK: init-io-event-source io-backend ( -- )
+
+M: f init-io-event-source ;
+M: c-io-backend init-io-event-source ;
+
+M: object init-io-event-source
+    GSourceFuncs malloc-struct &free
+        [ io-source-prepare ] GSourceFuncsPrepareFunc >>prepare
+        [ io-source-check ] GSourceFuncsCheckFunc >>check
+        [ io-source-dispatch ] GSourceFuncsDispatchFunc >>dispatch
+    GSource heap-size g_source_new &g_source_unref
+    [ create-poll-fd g_source_add_poll ]
+    [ f g_source_attach drop ] bi ;
+
+SYMBOL: next-timeout
+
+: set-timeout*-value ( alien value -- )
+    swap 0 set-alien-signed-4 ; inline
+
+: timeout-prepare ( source timeout* -- ? )
+    nip next-timeout get-global nano-count [-]
+    [ 1,000,000 /i set-timeout*-value ] keep 0 = ;
+
+: timeout-check ( source -- ? )
+    drop next-timeout get-global nano-count [-] 0 = ;
+
+: timeout-dispatch ( source callback user_data -- ? )
+    3drop sleep-time [ 1,000,000,000 ] unless* nano-count +
+    next-timeout set-global
+    yield t ;
+
+: init-timeout ( -- )
+    GSourceFuncs malloc-struct &free
+        [ timeout-prepare ] GSourceFuncsPrepareFunc >>prepare
+        [ timeout-check ] GSourceFuncsCheckFunc >>check
+        [ timeout-dispatch ] GSourceFuncsDispatchFunc >>dispatch
+    GSource heap-size g_source_new &g_source_unref
+    f g_source_attach drop
+    nano-count next-timeout set-global ;
+
+! User input
+
+CONSTANT: events-mask
+    flags{
+        GDK_POINTER_MOTION_MASK
+        GDK_POINTER_MOTION_HINT_MASK
+        GDK_ENTER_NOTIFY_MASK
+        GDK_LEAVE_NOTIFY_MASK
+        GDK_BUTTON_PRESS_MASK
+        GDK_BUTTON_RELEASE_MASK
+        GDK_KEY_PRESS_MASK
+        GDK_KEY_RELEASE_MASK
+        GDK_FOCUS_CHANGE_MASK
+    }
+
+CONSTANT: modifiers
+    {
+        { S+ $ GDK_SHIFT_MASK }
+        { C+ $ GDK_CONTROL_MASK }
+        { A+ $ GDK_MOD1_MASK }
+    }
+
+CONSTANT: action-key-codes
+    H{
+        { $ GDK_KEY_BackSpace "BACKSPACE" }
+        { $ GDK_KEY_Tab "TAB" }
+        { $ GDK_KEY_Return "RET" }
+        { $ GDK_KEY_KP_Enter "ENTER" }
+        { $ GDK_KEY_Escape "ESC" }
+        { $ GDK_KEY_Delete "DELETE" }
+        { $ GDK_KEY_Home "HOME" }
+        { $ GDK_KEY_Left "LEFT" }
+        { $ GDK_KEY_Up "UP" }
+        { $ GDK_KEY_Right "RIGHT" }
+        { $ GDK_KEY_Down "DOWN" }
+        { $ GDK_KEY_Page_Up "PAGE_UP" }
+        { $ GDK_KEY_Page_Down "PAGE_DOWN" }
+        { $ GDK_KEY_End "END" }
+        { $ GDK_KEY_Begin "BEGIN" }
+        { $ GDK_KEY_F1 "F1" }
+        { $ GDK_KEY_F2 "F2" }
+        { $ GDK_KEY_F3 "F3" }
+        { $ GDK_KEY_F4 "F4" }
+        { $ GDK_KEY_F5 "F5" }
+        { $ GDK_KEY_F6 "F6" }
+        { $ GDK_KEY_F7 "F7" }
+        { $ GDK_KEY_F8 "F8" }
+        { $ GDK_KEY_F9 "F9" }
+        { $ GDK_KEY_F10 "F10" }
+        { $ GDK_KEY_F11 "F11" }
+        { $ GDK_KEY_F12 "F12" }
+    }
+
+: event-modifiers ( event -- seq )
+    state>> modifiers modifier ;
+
+: event-loc ( event -- loc )
+    [ x>> ] [ y>> ] bi [ >fixnum ] bi@ 2array ;
+
+: event-dim ( event -- dim )
+    [ width>> ] [ height>> ] bi 2array ;
+
+: scroll-direction ( event -- pair )
+    direction>> {
+        { $ GDK_SCROLL_UP { 0 -1 } }
+        { $ GDK_SCROLL_DOWN { 0 1 } }
+        { $ GDK_SCROLL_LEFT { -1 0 } }
+        { $ GDK_SCROLL_RIGHT { 1 0 } }
+    } at ;
+
+: mouse-event>gesture ( event -- modifiers button loc )
+    [ event-modifiers ] [ button>> ] [ event-loc ] tri ;
+
+: on-motion ( win event user-data -- ? )
+    drop swap
+    [ event-loc ] dip window
+    move-hand fire-motion t ;
+
+: on-leave ( win event user-data -- ? )
+    3drop forget-rollover t ;
+
+: on-button-press ( win event user-data -- ? )
+    drop swap [
+        mouse-event>gesture [ <button-down> ] dip
+    ] dip window send-button-down t ;
+
+: on-button-release ( win event user-data -- ? )
+    drop swap [
+        mouse-event>gesture [ <button-up> ] dip
+    ] dip window send-button-up t ;
+
+: on-scroll ( win event user-data -- ? )
+    drop swap [
+        [ scroll-direction ] [ event-loc ] bi
+    ] dip window send-scroll t ;
+
+: key-sym ( event -- sym/f action? )
+    keyval>> dup action-key-codes at [ t ]
+    [ gdk_keyval_to_unicode [ f ] [ 1string ] if-zero f ] ?if ;
+
+: key-event>gesture ( event -- mods sym/f action? )
+    [ event-modifiers ] [ key-sym ] bi ;
+  
+: on-key-press ( win event user-data -- ? )
+    drop swap [ key-event>gesture <key-down> ] [ window ] bi*
+    propagate-key-gesture t ;
+
+: on-key-release ( win event user-data -- ? )
+    drop swap [ key-event>gesture <key-up> ] [ window ] bi*
+    propagate-key-gesture t ;
+
+: on-focus-in ( win event user-data -- ? )
+    2drop window focus-world t ;
+
+: on-focus-out ( win event user-data -- ? )
+    2drop window unfocus-world t ;
+
+:: connect-user-input-signals ( win -- )
+    win events-mask gtk_widget_add_events
+    win "motion-notify-event" [ on-motion yield ]
+    GtkWidget:motion-notify-event connect-signal
+    win "leave-notify-event" [ on-leave yield ]
+    GtkWidget:leave-notify-event connect-signal
+    win "button-press-event" [ on-button-press yield ]
+    GtkWidget:button-press-event connect-signal
+    win "button-release-event" [ on-button-release yield ]
+    GtkWidget:button-release-event connect-signal
+    win "scroll-event" [ on-scroll yield ]
+    GtkWidget:scroll-event connect-signal
+    win "key-press-event" [ on-key-press yield ]
+    GtkWidget:key-press-event connect-signal
+    win "key-release-event" [ on-key-release yield ]
+    GtkWidget:key-release-event connect-signal
+    win "focus-in-event" [ on-focus-in yield ]
+    GtkWidget:focus-in-event connect-signal
+    win "focus-out-event" [ on-focus-out yield ]
+    GtkWidget:focus-out-event connect-signal ;
+
+! Window state events
+
+: on-expose ( win event user-data -- ? )
+    2drop window relayout t ;
+
+: on-configure ( win event user-data -- ? )
+    drop [ window ] [ GdkEventConfigure memory>struct ] bi*
+    [ event-loc >>window-loc ] [ event-dim >>dim ] bi
+    relayout-1 f ;
+
+: on-delete ( win event user-data -- ? )
+    2drop window ungraft t ;
+
+:: connect-win-state-signals ( win -- )
+    win "expose-event" [ on-expose yield ]
+    GtkWidget:expose-event connect-signal
+    win "configure-event" [ on-configure yield ]
+    GtkWidget:configure-event connect-signal
+    win "delete-event" [ on-delete yield ]
+    GtkWidget:delete-event connect-signal ;
+
+! Input methods
+
+GENERIC: support-input-methods? ( gadget -- ? )
+GENERIC: get-cursor-surrounding ( gadget -- text cursor-pos )
+GENERIC: delete-cursor-surrounding ( offset count gadget -- )
+GENERIC: get-cursor-loc&dim ( gadget -- loc dim )
+
+M: gadget support-input-methods? drop f ;
+
+M: editor support-input-methods? drop t ;
+
+M: editor get-cursor-surrounding
+    dup editor-caret first2 [ swap editor-line ] dip ;
+
+M: editor delete-cursor-surrounding
+    3drop ;
+
+M: editor get-cursor-loc&dim
+    [ caret-loc ] [ caret-dim ] bi ;
+
+: on-retrieve-surrounding ( im-context win -- ? )
+    window world-focus dup support-input-methods? [
+        get-cursor-surrounding [ utf8 string>alien -1 ] dip
+        gtk_im_context_set_surrounding t
+    ] [ 2drop f ] if ;
+
+: on-delete-surrounding ( im-context offset n win -- ? )
+    window world-focus dup support-input-methods?
+    [ delete-cursor-surrounding t ] [ 3drop f ] if nip ;
+
+: on-commit ( im-context str win -- )
+    [ drop ] [ utf8 alien>string ] [ window ] tri* user-input ;
+
+: gadget-cursor-location ( gadget -- rectangle )
+    [ screen-loc ] [ get-cursor-loc&dim ] bi [ v+ ] dip
+    [ first2 [ >fixnum ] bi@ ] bi@
+    cairo_rectangle_int_t <struct-boa> ;
+
+: update-cursor-location ( im-context gadget -- )
+    gadget-cursor-location gtk_im_context_set_cursor_location ;
+
+! has to be called before the window signal handler
+:: im-on-key-event ( win event im-context -- ? )
+    win window world-focus :> gadget
+    gadget support-input-methods? [
+        im-context gadget update-cursor-location
+        im-context event gtk_im_context_filter_keypress
+    ] [ im-context gtk_im_context_reset f ] if ;
+
+: im-on-focus-in ( win event im-context -- ? )
+    2nip
+    [ gtk_im_context_focus_in ] [ gtk_im_context_reset ] bi f ;
+
+: im-on-focus-out ( win event im-context -- ? )
+    2nip
+    [ gtk_im_context_focus_out ] [ gtk_im_context_reset ] bi f ;
+
+: im-on-destroy ( win im-context -- )
+    nip [ f gtk_im_context_set_client_window ]
+    ! weird GLib-GObject-WARNING message appears after calling this code
+    ! [ g_object_unref ] bi ;
+    [ drop ] bi ;
+
+:: configure-im ( win im -- )
+    im win gtk_widget_get_window gtk_im_context_set_client_window
+    im f gtk_im_context_set_use_preedit
+    
+    im "commit" [ on-commit yield ]
+    GtkIMContext:commit win connect-signal-with-data
+    im "retrieve-surrounding" [ on-retrieve-surrounding yield ]
+    GtkIMContext:retrieve-surrounding win connect-signal-with-data
+    im "delete-surrounding" [ on-delete-surrounding yield ]
+    GtkIMContext:delete-surrounding win connect-signal-with-data
+
+    win "key-press-event" [ im-on-key-event yield ]
+    GtkWidget:key-press-event im connect-signal-with-data
+    win "key-release-event" [ im-on-key-event yield ]
+    GtkWidget:key-release-event im connect-signal-with-data
+    win "focus-in-event" [ im-on-focus-in yield ]
+    GtkWidget:focus-out-event im connect-signal-with-data
+    win "focus-out-event" [ im-on-focus-out yield ]
+    GtkWidget:focus-out-event im connect-signal-with-data
+    win "destroy" [ im-on-destroy yield ]
+    GtkObject:destroy im connect-signal-with-data ;
+
+! Window controls
+
+CONSTANT: window-controls>decor-flags
+    H{
+        { close-button 0 }
+        { minimize-button $ GDK_DECOR_MINIMIZE }
+        { maximize-button $ GDK_DECOR_MAXIMIZE }
+        { resize-handles $ GDK_DECOR_RESIZEH }
+        { small-title-bar $ GDK_DECOR_TITLE }
+        { normal-title-bar $ GDK_DECOR_TITLE }
+        { textured-background 0 }
+    }
+    
+CONSTANT: window-controls>func-flags
+    H{
+        { close-button $ GDK_FUNC_CLOSE }
+        { minimize-button $ GDK_FUNC_MINIMIZE }
+        { maximize-button $ GDK_FUNC_MAXIMIZE }
+        { resize-handles $ GDK_FUNC_RESIZE }
+        { small-title-bar 0 }
+        { normal-title-bar 0 }
+        { textured-background 0 }
+    }
+
+: configure-window-controls ( win controls -- )
+    [
+        small-title-bar swap member-eq?
+        GDK_WINDOW_TYPE_HINT_UTILITY GDK_WINDOW_TYPE_HINT_NORMAL ?
+        gtk_window_set_type_hint
+    ] [
+        [ gtk_widget_get_window ] dip
+        window-controls>decor-flags symbols>flags
+        GDK_DECOR_BORDER bitor gdk_window_set_decorations
+    ] [
+        [ gtk_widget_get_window ] dip
+        window-controls>func-flags symbols>flags
+        GDK_FUNC_MOVE bitor gdk_window_set_functions
+    ] 2tri ;
+
+! OpenGL and Pixel formats
+
+PIXEL-FORMAT-ATTRIBUTE-TABLE: gl-config-attribs
+    ${ GDK_GL_USE_GL GDK_GL_RGBA }
+    H{
+        { double-buffered ${ GDK_GL_DOUBLEBUFFER } }
+        { stereo ${ GDK_GL_STEREO } }
+        ! { offscreen ${ GDK_GL_DRAWABLE_TYPE 2 } }
+        ! { fullscreen ${ GDK_GL_DRAWABLE_TYPE 1 } }
+        ! { windowed ${ GDK_GL_DRAWABLE_TYPE 1 } }
+        { color-bits ${ GDK_GL_BUFFER_SIZE } }
+        { red-bits ${ GDK_GL_RED_SIZE } }
+        { green-bits ${ GDK_GL_GREEN_SIZE } }
+        { blue-bits ${ GDK_GL_BLUE_SIZE } }
+        { alpha-bits ${ GDK_GL_ALPHA_SIZE } }
+        { accum-red-bits ${ GDK_GL_ACCUM_RED_SIZE } }
+        { accum-green-bits ${ GDK_GL_ACCUM_GREEN_SIZE } }
+        { accum-blue-bits ${ GDK_GL_ACCUM_BLUE_SIZE } }
+        { accum-alpha-bits ${ GDK_GL_ACCUM_ALPHA_SIZE } }
+        { depth-bits ${ GDK_GL_DEPTH_SIZE } }
+        { stencil-bits ${ GDK_GL_STENCIL_SIZE } }
+        { aux-buffers ${ GDK_GL_AUX_BUFFERS } }
+        { sample-buffers ${ GDK_GL_SAMPLE_BUFFERS } }
+        { samples ${ GDK_GL_SAMPLES } }
+    }
+
+M: gtk-ui-backend (make-pixel-format)
+    nip >gl-config-attribs-int-array gdk_gl_config_new ;
+
+M: gtk-ui-backend (free-pixel-format)
+    handle>> g_object_unref ;
+
+M: gtk-ui-backend (pixel-format-attribute)
+    [ handle>> ] [ >gl-config-attribs ] bi*
+    { gint } [ gdk_gl_config_get_attrib drop ]
+    with-out-parameters ;
+
+M: window-handle select-gl-context ( handle -- )
+    window>>
+    [ gtk_widget_get_gl_window ] [ gtk_widget_get_gl_context ] bi
+    gdk_gl_drawable_make_current drop ;
+
+M: window-handle flush-gl-context ( handle -- )
+    window>> gtk_widget_get_gl_window
+    gdk_gl_drawable_swap_buffers ;
+
+! Window
+
+: configure-gl ( world -- )
+    [
+        [ handle>> window>> ] [ handle>> ] bi*
+        f t GDK_GL_RGBA_TYPE gtk_widget_set_gl_capability drop
+    ] with-world-pixel-format ;
+
+: auto-position ( win loc -- )
+    dup { 0 0 } = [
+        drop dup window topmost-window =
+        GTK_WIN_POS_CENTER GTK_WIN_POS_NONE ?
+        gtk_window_set_position
+    ] [ first2 gtk_window_move ] if ;
+
+M:: gtk-ui-backend (open-window) ( world -- )
+    GTK_WINDOW_TOPLEVEL gtk_window_new :> win
+    gtk_im_multicontext_new :> im
+
+    win im <window-handle> world handle<<
+
+    world win register-window
+    
+    win world [ window-loc>> auto-position ]
+    [ dim>> first2 gtk_window_set_default_size ] 2bi
+
+    win "factor" "Factor" [ utf8 string>alien ] bi@
+    gtk_window_set_wmclass
+    
+    world configure-gl
+
+    win gtk_widget_realize
+    win world window-controls>> configure-window-controls
+    
+    win im configure-im
+    win connect-user-input-signals
+    win connect-win-state-signals
+
+    win gtk_widget_show_all ;
+
+M: gtk-ui-backend (close-window) ( handle -- )
+    window>> [ gtk_widget_destroy ] [ unregister-window ] bi
+    event-loop? [ gtk_main_quit ] unless ;
+
+M: gtk-ui-backend set-title
+    swap [ handle>> window>> ] [ utf8 string>alien ] bi*
+    gtk_window_set_title ;
+
+M: gtk-ui-backend (set-fullscreen)
+    [ handle>> ] dip [ >>fullscreen? ] keep
+    [ window>> ] dip
+    [ gtk_window_fullscreen ]
+    [ gtk_window_unfullscreen ] if ;
+
+M: gtk-ui-backend (fullscreen?)
+    handle>> fullscreen?>> ;
+    
+M: gtk-ui-backend raise-window*
+    handle>> window>> gtk_window_present ;
+
+: set-cursor ( win cursor -- )
+    [
+        [ gtk_widget_get_window ] dip
+        gdk_cursor_new &gdk_cursor_unref
+        gdk_window_set_cursor
+    ] with-destructors ;
+
+M: gtk-ui-backend (grab-input)
+    window>>
+    [ gtk_grab_add ] [ GDK_BLANK_CURSOR set-cursor ] bi ;
+
+M: gtk-ui-backend (ungrab-input)
+    window>>
+    [ gtk_grab_remove ] [ GDK_LEFT_PTR set-cursor ] bi ;
+
+! Misc.
+
+M: gtk-ui-backend beep
+    gdk_beep ;
+
+M:: gtk-ui-backend system-alert ( caption text -- )
+    [
+        f GTK_DIALOG_MODAL GTK_MESSAGE_WARNING GTK_BUTTONS_OK
+        caption utf8 string>alien f
+        gtk_message_dialog_new &gtk_widget_destroy
+        [
+            text utf8 string>alien f
+            gtk_message_dialog_format_secondary_text
+        ] [ gtk_dialog_run drop ] bi
+    ] with-destructors ;
+
+M: gtk-ui-backend (with-ui)
+    [
+        0 <int> f <void*> gtk_init
+        0 <int> f <void*> gtk_gl_init
+        init-clipboard
+        start-ui
+        stop-io-thread
+        [
+            init-io-event-source
+            init-timeout
+            gtk_main
+        ] with-destructors
+    ] ui-running ;
+
+
+gtk-ui-backend ui-backend set-global
+
+[ "ui.tools" ] main-vocab-hook set-global
diff --git a/basis/ui/backend/gtk/summary.txt b/basis/ui/backend/gtk/summary.txt
new file mode 100644 (file)
index 0000000..5aa0c63
--- /dev/null
@@ -0,0 +1 @@
+Gtk-based UI backend
index 39a7b30348a428633bc26c1b78d8cdd113c38323..9b404487371b72b561922a4c8c314da7ab1efa22 100644 (file)
 ! Copyright (C) 2009, 2010 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs cache kernel math math.vectors
-namespaces pango.cairo pango.layouts ui.text ui.text.private
-pango sequences ;
+USING: accessors alien.c-types alien.data alien.strings arrays assocs
+cache cairo cairo.ffi classes.struct combinators destructors fonts fry
+gobject.ffi init io.encodings.utf8 kernel math math.rectangles
+math.vectors memoize namespaces pango.cairo.ffi pango.ffi sequences
+ui.text ui.text.private ;
 IN: ui.text.pango
 
+: pango>float ( n -- x ) PANGO_SCALE /f ; inline
+: float>pango ( x -- n ) PANGO_SCALE * >integer ; inline
+
+MEMO: (cache-font-description) ( font -- description )
+    [
+        [ pango_font_description_new |pango_font_description_free ] dip {
+            [ name>> utf8 string>alien pango_font_description_set_family ]
+            [ size>> float>pango pango_font_description_set_size ]
+            [ bold?>> PANGO_WEIGHT_BOLD PANGO_WEIGHT_NORMAL ? pango_font_description_set_weight ]
+            [ italic?>> PANGO_STYLE_ITALIC PANGO_STYLE_NORMAL ? pango_font_description_set_style ]
+            [ drop ]
+        } 2cleave
+    ] with-destructors ;
+
+: cache-font-description ( font -- description )
+    strip-font-colors (cache-font-description) ;
+
+
+TUPLE: layout < disposable font string selection layout metrics ink-rect logical-rect image ;
+
+SYMBOL: dpi
+
+72 dpi set-global
+
+: set-layout-font ( font layout -- )
+    swap cache-font-description pango_layout_set_font_description ;
+
+: set-layout-text ( str layout -- )
+    swap utf8 string>alien -1 pango_layout_set_text ;
+
+: PangoRectangle>rect ( PangoRectangle -- rect )
+    [ [ x>> pango>float ] [ y>> pango>float ] bi 2array ]
+    [ [ width>> pango>float ] [ height>> pango>float ] bi 2array ] bi
+    <rect> ;
+
+: layout-extents ( layout -- ink-rect logical-rect )
+    PangoRectangle <struct>
+    PangoRectangle <struct>
+    [ pango_layout_get_extents ] 2keep
+    [ PangoRectangle>rect ] bi@ ;
+
+: layout-baseline ( layout -- baseline )
+    pango_layout_get_iter &pango_layout_iter_free
+    pango_layout_iter_get_baseline
+    pango>float ;
+
+: set-foreground ( cr font -- )
+    foreground>> set-source-color ;
+
+: fill-background ( cr font dim -- )
+    [ background>> set-source-color ]
+    [ [ { 0 0 } ] dip <rect> fill-rect ] bi-curry* bi ;
+
+: rect-translate-x ( rect x -- rect' )
+    '[ _ 0 2array v- ] change-loc ;
+
+: first-line ( layout -- line )
+    layout>> 0 pango_layout_get_line_readonly ;
+
+: line-offset>x ( layout n -- x )
+    #! n is an index into the UTF8 encoding of the text
+    [ drop first-line ] [ swap string>> >utf8-index ] 2bi
+    f { int } [ pango_layout_line_index_to_x ] with-out-parameters
+    pango>float ;
+
+: x>line-offset ( layout x -- n )
+    #! n is an index into the UTF8 encoding of the text
+    [
+        [ first-line ] dip
+        float>pango
+        { int int }
+        [ pango_layout_line_x_to_index drop ] with-out-parameters
+        swap
+    ] [ drop string>> ] 2bi utf8-index> + ;
+
+: selection-start/end ( selection -- start end )
+    selection>> [ start>> ] [ end>> ] bi ;
+
+: selection-rect ( layout -- rect )
+    [ ink-rect>> dim>> ] [ ] [ selection-start/end ] tri [ line-offset>x ] bi-curry@ bi
+    [ drop nip 0 2array ] [ swap - swap second 2array ] 3bi <rect> ;
+
+: fill-selection-background ( cr layout -- )
+    dup selection>> [
+        [ selection>> color>> set-source-color ]
+        [
+            [ selection-rect ] [ ink-rect>> loc>> first ] bi
+            rect-translate-x
+            fill-rect
+        ] 2bi
+    ] [ 2drop ] if ;
+
+: text-position ( layout -- loc )
+    [ logical-rect>> ] [ ink-rect>> ] bi [ loc>> ] bi@ v- ;
+
+: set-text-position ( cr loc -- )
+    first2 cairo_move_to ;
+
+: draw-layout ( layout -- image )
+    dup ink-rect>> dim>> [ >fixnum ] map [
+        swap {
+            [ layout>> pango_cairo_update_layout ]
+            [ [ font>> ] [ ink-rect>> dim>> ] bi fill-background ]
+            [ fill-selection-background ]
+            [ text-position set-text-position ]
+            [ font>> set-foreground ]
+            [ layout>> pango_cairo_show_layout ]
+        } 2cleave
+    ] make-bitmap-image ;
+
+: escape-nulls ( str -- str' )
+    #! Replace nulls with something else since Pango uses null-terminated
+    #! strings
+    { { 0 CHAR: zero-width-no-break-space } } substitute ;
+
+: unpack-selection ( layout string/selection -- layout )
+    dup selection? [
+        [ string>> escape-nulls >>string ] [ >>selection ] bi
+    ] [ escape-nulls >>string ] if ; inline
+
+: set-layout-resolution ( layout -- )
+    pango_layout_get_context dpi get pango_cairo_context_set_resolution ;
+
+: <PangoLayout> ( text font -- layout )
+    dummy-cairo pango_cairo_create_layout |g_object_unref
+    [ set-layout-resolution ] keep
+    [ set-layout-font ] keep
+    [ set-layout-text ] keep ;
+
+: glyph-height ( font string -- y )
+    swap <PangoLayout> &g_object_unref layout-extents drop dim>> second ;
+
+MEMO: missing-font-metrics ( font -- metrics )
+    #! Pango doesn't provide x-height and cap-height but Core Text does, so we
+    #! simulate them on Pango.
+    [
+        [ metrics new ] dip
+        [ "x" glyph-height >>x-height ]
+        [ "Y" glyph-height >>cap-height ] bi
+    ] with-destructors ;
+
+: layout-metrics ( layout -- metrics )
+    dup font>> missing-font-metrics clone
+        swap
+        [ layout>> layout-baseline >>ascent ]
+        [ logical-rect>> dim>> [ first >>width ] [ second >>height ] bi ] bi
+        dup [ height>> ] [ ascent>> ] bi - >>descent ;
+
+: <layout> ( font string -- line )
+    [
+        layout new-disposable
+            swap unpack-selection
+            swap >>font
+            dup [ string>> ] [ font>> ] bi <PangoLayout> >>layout
+            dup layout>> layout-extents [ >>ink-rect ] [ >>logical-rect ] bi*
+            dup layout-metrics >>metrics
+            dup draw-layout >>image
+    ] with-destructors ;
+
+M: layout dispose* layout>> g_object_unref ;
+
+SYMBOL: cached-layouts
+
+: cached-layout ( font string -- layout )
+    cached-layouts get [ <layout> ] 2cache ;
+
+: cached-line ( font string -- line )
+    cached-layout layout>> first-line ;
+
 SINGLETON: pango-renderer
 
 M: pango-renderer string-dim
@@ -31,4 +202,10 @@ M: pango-renderer line-metrics ( font string -- metrics )
     [ cached-layout metrics>> ]
     if-empty ;
 
-pango-renderer font-renderer set-global
\ No newline at end of file
+[
+    \ (cache-font-description) reset-memoized
+    <cache-assoc> cached-layouts set-global
+] "ui.text.pango" add-startup-hook
+
+pango-renderer font-renderer set-global
+
diff --git a/extra/clutter/Clutter-1.0.gir b/extra/clutter/Clutter-1.0.gir
new file mode 100644 (file)
index 0000000..e8fc46f
--- /dev/null
@@ -0,0 +1,40940 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="Atk" version="1.0"/>
+  <include name="Cogl" version="1.0"/>
+  <include name="GL" version="1.0"/>
+  <include name="GLib" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gio" version="2.0"/>
+  <include name="Json" version="1.0"/>
+  <include name="Pango" version="1.0"/>
+  <include name="PangoCairo" version="1.0"/>
+  <include name="PangoFT2" version="1.0"/>
+  <include name="cairo" version="1.0"/>
+  <include name="fontconfig" version="2.0"/>
+  <include name="freetype2" version="2.0"/>
+  <package name="clutter-1.0"/>
+  <c:include name="clutter/clutter.h"/>
+  <namespace name="Clutter"
+             version="1.0"
+             shared-library="libclutter-glx-1.0.so.0"
+             c:identifier-prefixes="Clutter"
+             c:symbol-prefixes="clutter">
+    <constant name="0" value="48">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="1" value="49">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="2" value="50">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3" value="51">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_AltCursor" value="64784">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Attn" value="64782">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_BackTab" value="64773">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_ChangeScreen" value="64793">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Copy" value="64789">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_CursorBlink" value="64783">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_CursorSelect" value="64796">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_DeleteWord" value="64794">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Duplicate" value="64769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Enter" value="64798">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_EraseEOF" value="64774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_EraseInput" value="64775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_ExSelect" value="64795">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_FieldMark" value="64770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Ident" value="64787">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Jump" value="64786">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_KeyClick" value="64785">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Left2" value="64772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_PA1" value="64778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_PA2" value="64779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_PA3" value="64780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Play" value="64790">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_PrintScreen" value="64797">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Quit" value="64777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Record" value="64792">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Reset" value="64776">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Right2" value="64771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Rule" value="64788">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Setup" value="64791">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Test" value="64781">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="4" value="52">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="5" value="53">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="6" value="54">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="7" value="55">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="8" value="56">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="9" value="57">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="A" value="65">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AE" value="198">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Aacute" value="193">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Abelowdot" value="16785056">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Abreve" value="451">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Abreveacute" value="16785070">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Abrevebelowdot" value="16785078">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Abrevegrave" value="16785072">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Abrevehook" value="16785074">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Abrevetilde" value="16785076">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AccessX_Enable" value="65136">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AccessX_Feedback_Enable" value="65137">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Acircumflex" value="194">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Acircumflexacute" value="16785060">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Acircumflexbelowdot" value="16785068">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Acircumflexgrave" value="16785062">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Acircumflexhook" value="16785064">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Acircumflextilde" value="16785066">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Action"
+           c:symbol-prefix="action"
+           c:type="ClutterAction"
+           version="1.4"
+           parent="ActorMeta"
+           abstract="1"
+           glib:type-name="ClutterAction"
+           glib:get-type="clutter_action_get_type"
+           glib:type-struct="ActionClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterAction&lt;/structname&gt; structure contains only
+private data and should be accessed using the provided API</doc>
+      <field name="parent_instance">
+        <type name="ActorMeta" c:type="ClutterActorMeta"/>
+      </field>
+    </class>
+    <record name="ActionClass"
+            c:type="ClutterActionClass"
+            glib:is-gtype-struct-for="Action"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterActionClass&lt;/structname&gt; structure contains
+only private data</doc>
+      <field name="parent_class">
+        <type name="ActorMetaClass" c:type="ClutterActorMetaClass"/>
+      </field>
+      <field name="_clutter_action1" introspectable="0">
+        <callback name="_clutter_action1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_action2" introspectable="0">
+        <callback name="_clutter_action2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_action3" introspectable="0">
+        <callback name="_clutter_action3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_action4" introspectable="0">
+        <callback name="_clutter_action4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_action5" introspectable="0">
+        <callback name="_clutter_action5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_action6" introspectable="0">
+        <callback name="_clutter_action6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_action7" introspectable="0">
+        <callback name="_clutter_action7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_action8" introspectable="0">
+        <callback name="_clutter_action8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="Actor"
+           c:symbol-prefix="actor"
+           c:type="ClutterActor"
+           parent="GObject.InitiallyUnowned"
+           abstract="1"
+           glib:type-name="ClutterActor"
+           glib:get-type="clutter_actor_get_type"
+           glib:type-struct="ActorClass">
+      <doc xml:whitespace="preserve">Base class for actors.</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Animatable"/>
+      <implements name="Scriptable"/>
+      <virtual-method name="allocate" invoker="allocate" version="0.8">
+        <doc xml:whitespace="preserve">Called by the parent of an actor to assign the actor its size.
+Should never be called by applications (except when implementing
+a container or layout manager).
+Actors can know from their allocation box whether they have moved
+with respect to their parent actor. The @flags parameter describes
+additional information about the allocation, for instance whether
+the parent has moved with respect to the stage, for example because
+a grandparent's origin has moved.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="box" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new allocation of the actor, in parent-relative coordinates</doc>
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags that control the allocation</doc>
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="apply_transform">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="matrix" transfer-ownership="none">
+            <type name="Cogl.Matrix" c:type="CoglMatrix*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_accessible" invoker="get_accessible">
+        <doc xml:whitespace="preserve">Returns the accessible object that describes the actor to an
+assistive technology.
+If no class-specific #AtkObject implementation is available for the
+actor instance in question, it will inherit an #AtkObject
+implementation from the first ancestor class for which such an
+implementation is defined.
+The documentation of the &lt;ulink
+url="http://developer.gnome.org/doc/API/2.0/atk/index.html"&gt;ATK&lt;/ulink&gt;
+library contains more information about accessible objects and
+their uses.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #AtkObject associated with @actor</doc>
+          <type name="Atk.Object" c:type="AtkObject*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_preferred_height"
+                      invoker="get_preferred_height"
+                      version="0.8">
+        <doc xml:whitespace="preserve">Computes the requested minimum and natural heights for an actor,
+or if they are already computed, returns the cached values.
+An actor may not get its request - depending on the layout
+manager that's in effect.
+A request should not incorporate the actor's scale or anchor point;
+those transformations do not affect layout, only rendering.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="for_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">available width to assume in computing desired height, or a negative value to indicate that no width is defined</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for minimum height, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for natural height, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_preferred_width"
+                      invoker="get_preferred_width"
+                      version="0.8">
+        <doc xml:whitespace="preserve">Computes the requested minimum and natural widths for an actor,
+optionally depending on the specified height, or if they are
+already computed, returns the cached values.
+An actor may not get its request - depending on the layout
+manager that's in effect.
+A request should not incorporate the actor's scale or anchor point;
+those transformations do not affect layout, only rendering.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="for_height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">available height when computing the preferred width, or a negative value to indicate that no height is defined</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for minimum width, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the natural width, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="hide_all" invoker="hide_all" version="0.2">
+        <doc xml:whitespace="preserve">Calls clutter_actor_hide() on all child actors (if any).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="map" invoker="map" version="1.0">
+        <doc xml:whitespace="preserve">Sets the %CLUTTER_ACTOR_MAPPED flag on the actor and possibly maps
+and realizes its children if they are visible. Does nothing if the
+actor is not visible.
+#ClutterActor &lt;function&gt;map()&lt;/function&gt; virtual function in an actor
+and you need to map the children of that actor. It is not necessary
+to call this if you implement #ClutterContainer because the default
+implementation will automatically map children of containers.
+When overriding map, it is mandatory to chain up to the parent
+implementation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="show_all" invoker="show_all" version="0.2">
+        <doc xml:whitespace="preserve">Calls clutter_actor_show() on all children of an actor (if any).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="unmap" invoker="unmap" version="1.0">
+        <doc xml:whitespace="preserve">Unsets the %CLUTTER_ACTOR_MAPPED flag on the actor and possibly
+unmaps its children if they were mapped.
+#ClutterActor &lt;function&gt;unmap()&lt;/function&gt; virtual function in an actor
+and you need to unmap the children of that actor. It is not necessary
+to call this if you implement #ClutterContainer because the default
+implementation will automatically unmap children of containers.
+When overriding unmap, it is mandatory to chain up to the parent
+implementation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="add_action"
+              c:identifier="clutter_actor_add_action"
+              version="1.4">
+        <doc xml:whitespace="preserve">Adds @action to the list of actions applied to @self
+A #ClutterAction can only belong to one actor at a time
+The #ClutterActor will hold a reference on @action until either
+clutter_actor_remove_action() or clutter_actor_clear_actions()
+is called</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterAction</doc>
+            <type name="Action" c:type="ClutterAction*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_action_with_name"
+              c:identifier="clutter_actor_add_action_with_name"
+              version="1.4">
+        <doc xml:whitespace="preserve">A convenience function for setting the name of a #ClutterAction
+while adding it to the list of actions applied to @self
+This function is the logical equivalent of:
+|[
+clutter_actor_meta_set_name (CLUTTER_ACTOR_META (action), name);
+clutter_actor_add_action (self, action);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name to set on the action</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="action" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterAction</doc>
+            <type name="Action" c:type="ClutterAction*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_constraint"
+              c:identifier="clutter_actor_add_constraint"
+              version="1.4">
+        <doc xml:whitespace="preserve">Adds @constraint to the list of #ClutterConstraint&lt;!-- --&gt;s applied
+to @self
+The #ClutterActor will hold a reference on the @constraint until
+either clutter_actor_remove_constraint() or
+clutter_actor_clear_constraints() is called.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="constraint" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterConstraint</doc>
+            <type name="Constraint" c:type="ClutterConstraint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_constraint_with_name"
+              c:identifier="clutter_actor_add_constraint_with_name"
+              version="1.4">
+        <doc xml:whitespace="preserve">A convenience function for setting the name of a #ClutterConstraint
+while adding it to the list of constraints applied to @self
+This function is the logical equivalent of:
+|[
+clutter_actor_meta_set_name (CLUTTER_ACTOR_META (constraint), name);
+clutter_actor_add_constraint (self, constraint);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name to set on the constraint</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="constraint" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterConstraint</doc>
+            <type name="Constraint" c:type="ClutterConstraint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_effect"
+              c:identifier="clutter_actor_add_effect"
+              version="1.4">
+        <doc xml:whitespace="preserve">Adds @effect to the list of #ClutterEffect&lt;!-- --&gt;s applied to @self
+The #ClutterActor will hold a reference on the @effect until either
+clutter_actor_remove_effect() or clutter_actor_clear_effects() is
+called.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="effect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterEffect</doc>
+            <type name="Effect" c:type="ClutterEffect*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_effect_with_name"
+              c:identifier="clutter_actor_add_effect_with_name"
+              version="1.4">
+        <doc xml:whitespace="preserve">A convenience function for setting the name of a #ClutterEffect
+while adding it to the list of effectss applied to @self
+This function is the logical equivalent of:
+|[
+clutter_actor_meta_set_name (CLUTTER_ACTOR_META (effect), name);
+clutter_actor_add_effect (self, effect);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name to set on the effect</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="effect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterEffect</doc>
+            <type name="Effect" c:type="ClutterEffect*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="allocate"
+              c:identifier="clutter_actor_allocate"
+              version="0.8">
+        <doc xml:whitespace="preserve">Called by the parent of an actor to assign the actor its size.
+Should never be called by applications (except when implementing
+a container or layout manager).
+Actors can know from their allocation box whether they have moved
+with respect to their parent actor. The @flags parameter describes
+additional information about the allocation, for instance whether
+the parent has moved with respect to the stage, for example because
+a grandparent's origin has moved.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="box" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new allocation of the actor, in parent-relative coordinates</doc>
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags that control the allocation</doc>
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="allocate_align_fill"
+              c:identifier="clutter_actor_allocate_align_fill"
+              version="1.4">
+        <doc xml:whitespace="preserve">Allocates @self by taking into consideration the available allocation
+area; an alignment factor on either axis; and whether the actor should
+fill the allocation on either axis.
+The @box should contain the available allocation width and height;
+if the x1 and y1 members of #ClutterActorBox are not set to 0, the
+allocation will be offset by their value.
+This function takes into consideration the geometry request specified by
+the #ClutterActor:request-mode property, and the text direction.
+This function is useful for fluid layout managers, like #ClutterBinLayout
+or #ClutterTableLayout</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="box" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActorBox, containing the available width and height</doc>
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+          <parameter name="x_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the horizontal alignment, between 0 and 1</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="y_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the vertical alignment, between 0 and 1</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="x_fill" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the actor should fill horizontally</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="y_fill" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the actor should fill vertically</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">allocation flags to be passed to clutter_actor_allocate()</doc>
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="allocate_available_size"
+              c:identifier="clutter_actor_allocate_available_size"
+              version="1.0">
+        <doc xml:whitespace="preserve">Allocates @self taking into account the #ClutterActor&lt;!-- --&gt;'s
+preferred size, but limiting it to the maximum available width
+and height provided.
+This function will do the right thing when dealing with the
+actor's request mode.
+The implementation of this function is equivalent to:
+|[
+if (request_mode == CLUTTER_REQUEST_HEIGHT_FOR_WIDTH)
+{
+clutter_actor_get_preferred_width (self, available_height,
+&amp;amp;min_width,
+&amp;amp;natural_width);
+width = CLAMP (natural_width, min_width, available_width);
+clutter_actor_get_preferred_height (self, width,
+&amp;amp;min_height,
+&amp;amp;natural_height);
+height = CLAMP (natural_height, min_height, available_height);
+}
+else
+{
+clutter_actor_get_preferred_height (self, available_width,
+&amp;amp;min_height,
+&amp;amp;natural_height);
+height = CLAMP (natural_height, min_height, available_height);
+clutter_actor_get_preferred_width (self, height,
+&amp;amp;min_width,
+&amp;amp;natural_width);
+width = CLAMP (natural_width, min_width, available_width);
+}
+box.x1 = x; box.y1 = y;
+box.x2 = box.x1 + available_width;
+box.y2 = box.y1 + available_height;
+clutter_actor_allocate (self, &amp;amp;box, flags);
+]|
+This function can be used by fluid layout managers to allocate
+an actor's preferred size without making it bigger than the area
+available for the container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the actor's X coordinate</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the actor's Y coordinate</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="available_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the maximum available width, or -1 to use the actor's natural width</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="available_height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the maximum available height, or -1 to use the actor's natural height</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags controlling the allocation</doc>
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="allocate_preferred_size"
+              c:identifier="clutter_actor_allocate_preferred_size"
+              version="0.8">
+        <doc xml:whitespace="preserve">Allocates the natural size of @self.
+This function is a utility call for #ClutterActor implementations
+that allocates the actor's preferred natural size. It can be used
+by fixed layout managers (like #ClutterGroup or so called
+'composite actors') inside the ClutterActor::allocate
+implementation to give each child exactly how much space it
+requires.
+This function is not meant to be used by applications. It is also
+not meant to be used outside the implementation of the
+ClutterActor::allocate virtual function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags controlling the allocation</doc>
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="animate"
+              c:identifier="clutter_actor_animate"
+              version="1.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Animates the given list of properties of @actor between the current
+value for each property and a new final value. The animation has a
+definite duration and a speed given by the @mode.
+For example, this:
+|[
+clutter_actor_animate (rectangle, CLUTTER_LINEAR, 250,
+"width", 100.0,
+"height", 100.0,
+NULL);
+]|
+will make width and height properties of the #ClutterActor "rectangle"
+grow linearly between the current value and 100 pixels, in 250 milliseconds.
+The animation @mode is a logical id, either from the #ClutterAnimationMode
+enumeration of from clutter_alpha_register_func().
+All the properties specified will be animated between the current value
+and the final value. If a property should be set at the beginning of
+the animation but not updated during the animation, it should be prefixed
+by the "fixed::" string, for instance:
+|[
+clutter_actor_animate (actor, CLUTTER_EASE_IN_SINE, 100,
+"rotation-angle-z", 360.0,
+"fixed::rotation-center-z", &amp;amp;center,
+NULL);
+]|
+Will animate the "rotation-angle-z" property between the current value
+and 360 degrees, and set the "rotation-center-z" property to the fixed
+value of the #ClutterVertex "center".
+This function will implicitly create a #ClutterAnimation object which
+will be assigned to the @actor and will be returned to the developer
+to control the animation or to know when the animation has been
+completed.
+If a name argument starts with "signal::", "signal-after::",
+"signal-swapped::" or "signal-swapped-after::" the two following arguments
+are used as callback function and data for a signal handler installed on
+the #ClutterAnimation object for the specified signal name, for instance:
+|[
+static void
+on_animation_completed (ClutterAnimation *animation,
+ClutterActor     *actor)
+{
+clutter_actor_hide (actor);
+}
+clutter_actor_animate (actor, CLUTTER_EASE_IN_CUBIC, 100,
+"opacity", 0,
+"signal::completed", on_animation_completed, actor,
+NULL);
+]|
+or, to automatically destroy an actor at the end of the animation:
+|[
+clutter_actor_animate (actor, CLUTTER_EASE_IN_CUBIC, 100,
+"opacity", 0,
+"signal-swapped-after::completed",
+clutter_actor_destroy,
+actor,
+NULL);
+]|
+The "signal::" modifier is the equivalent of using g_signal_connect();
+the "signal-after::" modifier is the equivalent of using
+g_signal_connect_after() or g_signal_connect_data() with the
+%G_CONNECT_AFTER; the "signal-swapped::" modifier is the equivalent
+of using g_signal_connect_swapped() or g_signal_connect_data() with the
+%G_CONNECT_SWAPPED flah; finally, the "signal-swapped-after::" modifier
+is the equivalent of using g_signal_connect_data() with both the
+%G_CONNECT_AFTER and %G_CONNECT_SWAPPED flags. The clutter_actor_animate()
+function will not keep track of multiple connections to the same signal,
+so it is your responsability to avoid them when calling
+clutter_actor_animate() multiple times on the same actor.
+Calling this function on an actor that is already being animated
+will cause the current animation to change with the new final values,
+the new easing mode and the new duration - that is, this code:
+|[
+clutter_actor_animate (actor, CLUTTER_LINEAR, 250,
+"width", 100.0,
+"height", 100.0,
+NULL);
+clutter_actor_animate (actor, CLUTTER_EASE_IN_CUBIC, 500,
+"x", 100.0,
+"y", 100.0,
+"width", 200.0,
+NULL);
+]|
+is the equivalent of:
+|[
+clutter_actor_animate (actor, CLUTTER_EASE_IN_CUBIC, 500,
+"x", 100.0,
+"y", 100.0,
+"width", 200.0,
+"height", 100.0,
+NULL);
+]|
+&lt;note&gt;Unless the animation is looping, the #ClutterAnimation created by
+clutter_actor_animate() will become invalid as soon as it is
+complete.&lt;/note&gt;
+Since the created #ClutterAnimation instance attached to @actor
+is guaranteed to be valid throughout the #ClutterAnimation::completed
+signal emission chain, you will not be able to create a new animation
+using clutter_actor_animate() on the same @actor from within the
+#ClutterAnimation::completed signal handler unless you use
+g_signal_connect_after() to connect the callback function, for instance:
+|[
+static void
+on_animation_completed (ClutterAnimation *animation,
+ClutterActor     *actor)
+{
+clutter_actor_animate (actor, CLUTTER_EASE_OUT_CUBIC, 250,
+"x", 500.0,
+"y", 500.0,
+NULL);
+}
+...
+animation = clutter_actor_animate (actor, CLUTTER_EASE_IN_CUBIC, 250,
+"x", 100.0,
+"y", 100.0,
+NULL);
+g_signal_connect (animation, "completed",
+G_CALLBACK (on_animation_completed),
+actor);
+...
+]|
+owned by the #ClutterActor and should not be unreferenced with
+g_object_unref()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterAnimation object. The object is</doc>
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an animation mode logical id</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <doc xml:whitespace="preserve">duration of the animation, in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="animate_with_alpha"
+              c:identifier="clutter_actor_animate_with_alpha"
+              version="1.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Animates the given list of properties of @actor between the current
+value for each property and a new final value. The animation has a
+definite behaviour given by the passed @alpha.
+See clutter_actor_animate() for further details.
+This function is useful if you want to use an existing #ClutterAlpha
+to animate @actor.
+#ClutterActor and should not be unreferenced with g_object_unref()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterAnimation object. The object is owned by the</doc>
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterAlpha</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="animate_with_alphav"
+              c:identifier="clutter_actor_animate_with_alphav"
+              version="1.0">
+        <doc xml:whitespace="preserve">Animates the given list of properties of @actor between the current
+value for each property and a new final value. The animation has a
+definite behaviour given by the passed @alpha.
+See clutter_actor_animate() for further details.
+This function is useful if you want to use an existing #ClutterAlpha
+to animate @actor.
+This is the vector-based variant of clutter_actor_animate_with_alpha(),
+useful for language bindings.
+&lt;warning&gt;Unlike clutter_actor_animate_with_alpha(), this function will
+not allow you to specify "signal::" names and callbacks.&lt;/warning&gt;
+#ClutterActor and should not be unreferenced with g_object_unref()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterAnimation object. The object is owned by the</doc>
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterAlpha</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="n_properties" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of property names and values</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="properties" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector containing the property names to set</doc>
+            <array length="1" c:type="gchar*">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector containing the property values to set</doc>
+            <array length="1" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="animate_with_timeline"
+              c:identifier="clutter_actor_animate_with_timeline"
+              version="1.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Animates the given list of properties of @actor between the current
+value for each property and a new final value. The animation has a
+definite duration given by @timeline and a speed given by the @mode.
+See clutter_actor_animate() for further details.
+This function is useful if you want to use an existing timeline
+to animate @actor.
+owned by the #ClutterActor and should not be unreferenced with
+g_object_unref()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterAnimation object. The object is</doc>
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an animation mode logical id</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+          <parameter name="timeline" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterTimeline</doc>
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="animate_with_timelinev"
+              c:identifier="clutter_actor_animate_with_timelinev"
+              version="1.0">
+        <doc xml:whitespace="preserve">Animates the given list of properties of @actor between the current
+value for each property and a new final value. The animation has a
+definite duration given by @timeline and a speed given by the @mode.
+See clutter_actor_animate() for further details.
+This function is useful if you want to use an existing timeline
+to animate @actor.
+This is the vector-based variant of clutter_actor_animate_with_timeline(),
+useful for language bindings.
+&lt;warning&gt;Unlike clutter_actor_animate_with_timeline(), this function
+will not allow you to specify "signal::" names and callbacks.&lt;/warning&gt;
+owned by the #ClutterActor and should not be unreferenced with
+g_object_unref()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterAnimation object. The object is</doc>
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an animation mode logical id</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+          <parameter name="timeline" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterTimeline</doc>
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+          <parameter name="n_properties" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of property names and values</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="properties" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector containing the property names to set</doc>
+            <array length="2" c:type="gchar*">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector containing the property values to set</doc>
+            <array length="2" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="animatev"
+              c:identifier="clutter_actor_animatev"
+              version="1.0">
+        <doc xml:whitespace="preserve">Animates the given list of properties of @actor between the current
+value for each property and a new final value. The animation has a
+definite duration and a speed given by the @mode.
+This is the vector-based variant of clutter_actor_animate(), useful
+for language bindings.
+&lt;warning&gt;Unlike clutter_actor_animate(), this function will not
+allow you to specify "signal::" names and callbacks.&lt;/warning&gt;
+owned by the #ClutterActor and should not be unreferenced with
+g_object_unref()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterAnimation object. The object is</doc>
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an animation mode logical id</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <doc xml:whitespace="preserve">duration of the animation, in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="n_properties" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of property names and values</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="properties" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector containing the property names to set</doc>
+            <array length="2" c:type="gchar*">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector containing the property values to set</doc>
+            <array length="2" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="apply_relative_transform_to_point"
+              c:identifier="clutter_actor_apply_relative_transform_to_point"
+              version="0.6">
+        <doc xml:whitespace="preserve">Transforms @point in coordinates relative to the actor into
+ancestor-relative coordinates using the relevant transform
+stack (i.e. scale, rotation, etc).
+If @ancestor is %NULL the ancestor will be the #ClutterStage. In
+this case, the coordinates returned will be the coordinates on
+the stage before the projection is applied. This is different from
+the behaviour of clutter_actor_apply_transform_to_point().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ancestor" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A #ClutterActor ancestor, or %NULL to use the default #ClutterStage</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="point" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A point as #ClutterVertex</doc>
+            <type name="Vertex" c:type="ClutterVertex*"/>
+          </parameter>
+          <parameter name="vertex" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The translated #ClutterVertex</doc>
+            <type name="Vertex" c:type="ClutterVertex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="apply_transform_to_point"
+              c:identifier="clutter_actor_apply_transform_to_point"
+              version="0.4">
+        <doc xml:whitespace="preserve">Transforms @point in coordinates relative to the actor
+into screen-relative coordinates with the current actor
+transformation (i.e. scale, rotation, etc)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="point" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A point as #ClutterVertex</doc>
+            <type name="Vertex" c:type="ClutterVertex*"/>
+          </parameter>
+          <parameter name="vertex" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The translated #ClutterVertex</doc>
+            <type name="Vertex" c:type="ClutterVertex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear_actions"
+              c:identifier="clutter_actor_clear_actions"
+              version="1.4">
+        <doc xml:whitespace="preserve">Clears the list of actions applied to @self</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="clear_constraints"
+              c:identifier="clutter_actor_clear_constraints"
+              version="1.4">
+        <doc xml:whitespace="preserve">Clears the list of constraints applied to @self</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="clear_effects"
+              c:identifier="clutter_actor_clear_effects"
+              version="1.4">
+        <doc xml:whitespace="preserve">Clears the list of effects applied to @self</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="contains"
+              c:identifier="clutter_actor_contains"
+              version="1.4">
+        <doc xml:whitespace="preserve">Determines if @descendant is contained inside @self (either as an
+immediate child, or as a deeper descendant).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @descendent is contained within @self</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="descendant" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #ClutterActor, possibly contained in @self</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_pango_context"
+              c:identifier="clutter_actor_create_pango_context"
+              version="1.0">
+        <doc xml:whitespace="preserve">Creates a #PangoContext for the given actor. The #PangoContext
+is already configured using the appropriate font map, resolution
+and font options.
+See also clutter_actor_get_pango_context().
+Use g_object_unref() on the returned value to deallocate its
+resources</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #PangoContext.</doc>
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </return-value>
+      </method>
+      <method name="create_pango_layout"
+              c:identifier="clutter_actor_create_pango_layout"
+              version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #PangoLayout from the same #PangoContext used
+by the #ClutterActor. The #PangoLayout is already configured
+with the font map, resolution and font options, and the
+given @text.
+If you want to keep around a #PangoLayout created by this
+function you will have to connect to the #ClutterBackend::font-changed
+and #ClutterBackend::resolution-changed signals, and call
+pango_layout_context_changed() in response to them.
+Use g_object_unref() when done</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #PangoLayout.</doc>
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">(allow-none) the text to set on the #PangoLayout, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="destroy" c:identifier="clutter_actor_destroy">
+        <doc xml:whitespace="preserve">Destroys an actor.  When an actor is destroyed, it will break any
+references it holds to other objects.  If the actor is inside a
+container, the actor will be removed.
+When you destroy a container, its children will be destroyed as well.
+clutter_stage_get_default().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="detach_animation"
+              c:identifier="clutter_actor_detach_animation"
+              version="1.4">
+        <doc xml:whitespace="preserve">Detaches the #ClutterAnimation used by @actor, if clutter_actor_animate()
+has been called on @actor.
+Once the animation has been detached, it loses a reference. If it was
+the only reference then the #ClutterAnimation becomes invalid.
+The #ClutterAnimation::completed signal will not be emitted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="event" c:identifier="clutter_actor_event" version="0.6">
+        <doc xml:whitespace="preserve">This function is used to emit an event on the main stage.
+You should rarely need to use this function, except for
+synthetising events.
+if the actor handled the event, or %FALSE if the event was
+not handled</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the return value from the signal emission: %TRUE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterEvent</doc>
+            <type name="Event" c:type="ClutterEvent*"/>
+          </parameter>
+          <parameter name="capture" transfer-ownership="none">
+            <doc xml:whitespace="preserve">TRUE if event in in capture phase, FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_abs_allocation_vertices"
+              c:identifier="clutter_actor_get_abs_allocation_vertices"
+              version="0.4">
+        <doc xml:whitespace="preserve">Calculates the transformed screen coordinates of the four corners of
+the actor; the returned vertices relate to the #ClutterActorBox
+coordinates  as follows:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;v[0] contains (x1, y1)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;v[1] contains (x2, y1)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;v[2] contains (x1, y2)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;v[3] contains (x2, y2)&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="verts"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a location of an array of 4 #ClutterVertex where to store the result.</doc>
+            <array c:type="ClutterVertex" fixed-size="4">
+              <type name="Vertex"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_accessible"
+              c:identifier="clutter_actor_get_accessible">
+        <doc xml:whitespace="preserve">Returns the accessible object that describes the actor to an
+assistive technology.
+If no class-specific #AtkObject implementation is available for the
+actor instance in question, it will inherit an #AtkObject
+implementation from the first ancestor class for which such an
+implementation is defined.
+The documentation of the &lt;ulink
+url="http://developer.gnome.org/doc/API/2.0/atk/index.html"&gt;ATK&lt;/ulink&gt;
+library contains more information about accessible objects and
+their uses.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #AtkObject associated with @actor</doc>
+          <type name="Atk.Object" c:type="AtkObject*"/>
+        </return-value>
+      </method>
+      <method name="get_action"
+              c:identifier="clutter_actor_get_action"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterAction with the given name in the list
+of actions applied to @self
+name, or %NULL. The returned #ClutterAction is owned by the
+actor and it should not be unreferenced directly</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterAction for the given</doc>
+          <type name="Action" c:type="ClutterAction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action to retrieve</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_actions"
+              c:identifier="clutter_actor_get_actions"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the list of actions applied to @self
+of the list of #ClutterAction&lt;!-- --&gt;s. The contents of the list are
+owned by the #ClutterActor. Use g_list_free() to free the resources
+allocated by the returned #GList</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a copy</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Action"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_allocation_box"
+              c:identifier="clutter_actor_get_allocation_box"
+              version="0.8">
+        <doc xml:whitespace="preserve">Gets the layout box an actor has been assigned. The allocation can
+only be assumed valid inside a paint() method; anywhere else, it
+may be out-of-date.
+An allocation does not incorporate the actor's scale or anchor point;
+those transformations do not affect layout, only rendering.
+&lt;note&gt;Do not call any of the clutter_actor_get_allocation_*() family
+of functions inside the implementation of the get_preferred_width()
+or get_preferred_height() virtual functions.&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="box"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">the function fills this in with the actor's allocation</doc>
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_allocation_geometry"
+              c:identifier="clutter_actor_get_allocation_geometry"
+              version="0.8">
+        <doc xml:whitespace="preserve">Gets the layout box an actor has been assigned.  The allocation can
+only be assumed valid inside a paint() method; anywhere else, it
+may be out-of-date.
+An allocation does not incorporate the actor's scale or anchor point;
+those transformations do not affect layout, only rendering.
+The returned rectangle is in pixels.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="geom"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">allocation geometry in pixels</doc>
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_allocation_vertices"
+              c:identifier="clutter_actor_get_allocation_vertices"
+              version="0.6">
+        <doc xml:whitespace="preserve">Calculates the transformed coordinates of the four corners of the
+actor in the plane of @ancestor. The returned vertices relate to
+the #ClutterActorBox coordinates as follows:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;@verts[0] contains (x1, y1)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;@verts[1] contains (x2, y1)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;@verts[2] contains (x1, y2)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;@verts[3] contains (x2, y2)&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+If @ancestor is %NULL the ancestor will be the #ClutterStage. In
+this case, the coordinates returned will be the coordinates on
+the stage before the projection is applied. This is different from
+the behaviour of clutter_actor_get_abs_allocation_vertices().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ancestor" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A #ClutterActor to calculate the vertices against, or %NULL to use the #ClutterStage</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="verts"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for an array of 4 #ClutterVertex in which to store the result</doc>
+            <array c:type="ClutterVertex" fixed-size="4">
+              <type name="Vertex"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_anchor_point"
+              c:identifier="clutter_actor_get_anchor_point"
+              version="0.6">
+        <doc xml:whitespace="preserve">Gets the current anchor point of the @actor in pixels.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="anchor_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the X coordinate of the anchor point</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="anchor_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the Y coordinate of the anchor point</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_anchor_point_gravity"
+              c:identifier="clutter_actor_get_anchor_point_gravity"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the anchor position expressed as a #ClutterGravity. If
+the anchor point was specified using pixels or units this will
+return %CLUTTER_GRAVITY_NONE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterGravity used by the anchor point</doc>
+          <type name="Gravity" c:type="ClutterGravity"/>
+        </return-value>
+      </method>
+      <method name="get_animation"
+              c:identifier="clutter_actor_get_animation"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterAnimation used by @actor, if clutter_actor_animate()
+has been called on @actor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterAnimation, or %NULL</doc>
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+      </method>
+      <method name="get_clip"
+              c:identifier="clutter_actor_get_clip"
+              version="0.6">
+        <doc xml:whitespace="preserve">Gets the clip area for @self, if any is set</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xoff"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the X offset of the clip rectangle, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="yoff"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the Y offset of the clip rectangle, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the width of the clip rectangle, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the height of the clip rectangle, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_clip_to_allocation"
+              c:identifier="clutter_actor_get_clip_to_allocation"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the value set using clutter_actor_set_clip_to_allocation()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterActor is clipped to its allocation</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_constraint"
+              c:identifier="clutter_actor_get_constraint"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterConstraint with the given name in the list
+of constraints applied to @self
+name, or %NULL. The returned #ClutterConstraint is owned by the
+actor and it should not be unreferenced directly</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterConstraint for the given</doc>
+          <type name="Constraint" c:type="ClutterConstraint*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the constraint to retrieve</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_constraints"
+              c:identifier="clutter_actor_get_constraints"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the list of constraints applied to @self
+of the list of #ClutterConstraint&lt;!-- --&gt;s. The contents of the list are
+owned by the #ClutterActor. Use g_list_free() to free the resources
+allocated by the returned #GList</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a copy</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Constraint"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_depth" c:identifier="clutter_actor_get_depth">
+        <doc xml:whitespace="preserve">Retrieves the depth of @self.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the depth of the actor</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_effect"
+              c:identifier="clutter_actor_get_effect"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterEffect with the given name in the list
+of effects applied to @self
+name, or %NULL. The returned #ClutterEffect is owned by the
+actor and it should not be unreferenced directly</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterEffect for the given</doc>
+          <type name="Effect" c:type="ClutterEffect*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the effect to retrieve</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_effects"
+              c:identifier="clutter_actor_get_effects"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterEffect&lt;!-- --&gt;s applied on @self, if any
+of #ClutterEffect&lt;!-- --&gt;s, or %NULL. The elements of the returned
+list are owned by Clutter and they should not be freed. You should
+free the returned list using g_list_free() when done</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a list</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Effect"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_fixed_position_set"
+              c:identifier="clutter_actor_get_fixed_position_set"
+              version="0.8">
+        <doc xml:whitespace="preserve">Checks whether an actor has a fixed position set (and will thus be
+unaffected by any layout manager).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the fixed position is set on the actor</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_flags"
+              c:identifier="clutter_actor_get_flags"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the flags set on @self</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a bitwise or of #ClutterActorFlags or 0</doc>
+          <type name="ActorFlags" c:type="ClutterActorFlags"/>
+        </return-value>
+      </method>
+      <method name="get_geometry" c:identifier="clutter_actor_get_geometry">
+        <doc xml:whitespace="preserve">Gets the size and position of an actor relative to its parent
+actor. This is the same as calling clutter_actor_get_position() and
+clutter_actor_get_size(). It tries to "do what you mean" and get the
+requested size and position if the actor's allocation is invalid.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">A location to store actors #ClutterGeometry</doc>
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_gid"
+              c:identifier="clutter_actor_get_gid"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the unique id for @self.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Globally unique value for this object instance.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="get_height" c:identifier="clutter_actor_get_height">
+        <doc xml:whitespace="preserve">Retrieves the height of a #ClutterActor.
+If the actor has a valid allocation, this function will return the
+height of the allocated area given to the actor.
+If the actor does not have a valid allocation, this function will
+return the actor's natural height, that is the preferred height of
+the actor.
+If you care whether you get the preferred height or the height that
+has been assigned to the actor, you should probably call a different
+function like clutter_actor_get_allocation_box() to retrieve the
+allocated size or clutter_actor_get_preferred_height() to retrieve the
+preferred height.
+If an actor has a fixed height, for instance a height that has been
+assigned using clutter_actor_set_height(), the height returned will
+be the same value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the height of the actor, in pixels</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_name" c:identifier="clutter_actor_get_name">
+        <doc xml:whitespace="preserve">Retrieves the name of @self.
+owned by the actor and should not be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the actor, or %NULL. The returned string is</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_opacity" c:identifier="clutter_actor_get_opacity">
+        <doc xml:whitespace="preserve">Retrieves the opacity value of an actor, as set by
+clutter_actor_set_opacity().
+For retrieving the absolute opacity of the actor inside a paint
+virtual function, see clutter_actor_get_paint_opacity().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the opacity of the actor</doc>
+          <type name="guint8" c:type="guint8"/>
+        </return-value>
+      </method>
+      <method name="get_paint_opacity"
+              c:identifier="clutter_actor_get_paint_opacity"
+              version="0.8">
+        <doc xml:whitespace="preserve">Retrieves the absolute opacity of the actor, as it appears on the stage.
+This function traverses the hierarchy chain and composites the opacity of
+the actor with that of its parents.
+This function is intended for subclasses to use in the paint virtual
+function, to paint themselves with the correct opacity.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The actor opacity value.</doc>
+          <type name="guint8" c:type="guint8"/>
+        </return-value>
+      </method>
+      <method name="get_paint_visibility"
+              c:identifier="clutter_actor_get_paint_visibility"
+              version="0.8.4">
+        <doc xml:whitespace="preserve">Retrieves the 'paint' visibility of an actor recursively checking for non
+visible parents.
+This is by definition the same as CLUTTER_ACTOR_IS_MAPPED().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the actor is visibile and will be painted.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_pango_context"
+              c:identifier="clutter_actor_get_pango_context"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the #PangoContext for @self. The actor's #PangoContext
+is already configured using the appropriate font map, resolution
+and font options.
+Unlike clutter_actor_create_pango_context(), this context is owend
+by the #ClutterActor and it will be updated each time the options
+stored by the #ClutterBackend change.
+You can use the returned #PangoContext to create a #PangoLayout
+and render text using cogl_pango_render_layout() to reuse the
+glyphs cache also used by Clutter.
+The returned #PangoContext is owned by the actor and should not be
+unreferenced by the application code</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #PangoContext for a #ClutterActor.</doc>
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </return-value>
+      </method>
+      <method name="get_parent" c:identifier="clutter_actor_get_parent">
+        <doc xml:whitespace="preserve">Retrieves the parent of @self.
+if no parent is set</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #ClutterActor parent, or %NULL</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="get_position"
+              c:identifier="clutter_actor_get_position"
+              version="0.6">
+        <doc xml:whitespace="preserve">This function tries to "do what you mean" and tell you where the
+actor is, prior to any transformations. Retrieves the fixed
+position of an actor in pixels, if one has been set; otherwise, if
+the allocation is valid, returns the actor's allocated position;
+otherwise, returns 0,0.
+The returned position is in pixels.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the X coordinate, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the Y coordinate, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_preferred_height"
+              c:identifier="clutter_actor_get_preferred_height"
+              version="0.8">
+        <doc xml:whitespace="preserve">Computes the requested minimum and natural heights for an actor,
+or if they are already computed, returns the cached values.
+An actor may not get its request - depending on the layout
+manager that's in effect.
+A request should not incorporate the actor's scale or anchor point;
+those transformations do not affect layout, only rendering.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="for_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">available width to assume in computing desired height, or a negative value to indicate that no width is defined</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for minimum height, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for natural height, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_preferred_size"
+              c:identifier="clutter_actor_get_preferred_size"
+              version="0.8">
+        <doc xml:whitespace="preserve">Computes the preferred minimum and natural size of an actor, taking into
+account the actor's geometry management (either height-for-width
+or width-for-height).
+The width and height used to compute the preferred height and preferred
+width are the actor's natural ones.
+If you need to control the height for the preferred width, or the width for
+the preferred height, you should use clutter_actor_get_preferred_width()
+and clutter_actor_get_preferred_height(), and check the actor's preferred
+geometry management using the #ClutterActor:request-mode property.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the minimum width, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="min_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the minimum height, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the natural width, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the natural height, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_preferred_width"
+              c:identifier="clutter_actor_get_preferred_width"
+              version="0.8">
+        <doc xml:whitespace="preserve">Computes the requested minimum and natural widths for an actor,
+optionally depending on the specified height, or if they are
+already computed, returns the cached values.
+An actor may not get its request - depending on the layout
+manager that's in effect.
+A request should not incorporate the actor's scale or anchor point;
+those transformations do not affect layout, only rendering.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="for_height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">available height when computing the preferred width, or a negative value to indicate that no height is defined</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for minimum width, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the natural width, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_reactive"
+              c:identifier="clutter_actor_get_reactive"
+              version="0.6">
+        <doc xml:whitespace="preserve">Checks whether @actor is marked as reactive.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the actor is reactive</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_request_mode"
+              c:identifier="clutter_actor_get_request_mode"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the geometry request mode of @self</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the request mode for the actor</doc>
+          <type name="RequestMode" c:type="ClutterRequestMode"/>
+        </return-value>
+      </method>
+      <method name="get_rotation"
+              c:identifier="clutter_actor_get_rotation"
+              version="0.8">
+        <doc xml:whitespace="preserve">Retrieves the angle and center of rotation on the given axis,
+set using clutter_actor_set_rotation().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the angle of rotation</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the axis of rotation</doc>
+            <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+          </parameter>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return value for the X coordinate of the center of rotation</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return value for the Y coordinate of the center of rotation</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="z"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return value for the Z coordinate of the center of rotation</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_scale"
+              c:identifier="clutter_actor_get_scale"
+              version="0.2">
+        <doc xml:whitespace="preserve">Retrieves an actors scale factors.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scale_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">Location to store horizonal scale factor, or %NULL.</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="scale_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">Location to store vertical scale factor, or %NULL.</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_scale_center"
+              c:identifier="clutter_actor_get_scale_center"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the scale center coordinate in pixels relative to the top
+left corner of the actor. If the scale center was specified using a
+#ClutterGravity this will calculate the pixel offset using the
+current size of the actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="center_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">Location to store the X position of the scale center, or %NULL.</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="center_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">Location to store the Y position of the scale center, or %NULL.</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_scale_gravity"
+              c:identifier="clutter_actor_get_scale_gravity"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the scale center as a compass direction. If the scale
+center was specified in pixels or units this will return
+%CLUTTER_GRAVITY_NONE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the scale gravity</doc>
+          <type name="Gravity" c:type="ClutterGravity"/>
+        </return-value>
+      </method>
+      <method name="get_shader"
+              c:identifier="clutter_actor_get_shader"
+              version="0.6">
+        <doc xml:whitespace="preserve">Queries the currently set #ClutterShader on @self.
+or %NULL if no shader is set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The currently set #ClutterShader</doc>
+          <type name="Shader" c:type="ClutterShader*"/>
+        </return-value>
+      </method>
+      <method name="get_size"
+              c:identifier="clutter_actor_get_size"
+              version="0.2">
+        <doc xml:whitespace="preserve">This function tries to "do what you mean" and return
+the size an actor will have. If the actor has a valid
+allocation, the allocation will be returned; otherwise,
+the actors natural size request will be returned.
+If you care whether you get the request vs. the allocation, you
+should probably call a different function like
+clutter_actor_get_allocation_box() or
+clutter_actor_get_preferred_width().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the width, or %NULL.</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the height, or %NULL.</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_stage"
+              c:identifier="clutter_actor_get_stage"
+              version="0.8">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterStage where @actor is contained.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the stage containing the actor, or %NULL</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="get_text_direction"
+              c:identifier="clutter_actor_get_text_direction"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the value set using clutter_actor_set_text_direction()
+If no text direction has been previously set, the default text
+direction, as returned by clutter_get_default_text_direction(), will
+be returned instead</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterTextDirection for the actor</doc>
+          <type name="TextDirection" c:type="ClutterTextDirection"/>
+        </return-value>
+      </method>
+      <method name="get_transformation_matrix"
+              c:identifier="clutter_actor_get_transformation_matrix"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the transformations applied to @self relative to its
+parent.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="matrix"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">the return location for a #CoglMatrix</doc>
+            <type name="Cogl.Matrix" c:type="CoglMatrix*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_transformed_position"
+              c:identifier="clutter_actor_get_transformed_position"
+              version="0.8">
+        <doc xml:whitespace="preserve">Gets the absolute position of an actor, in pixels relative to the stage.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the X coordinate, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the Y coordinate, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_transformed_size"
+              c:identifier="clutter_actor_get_transformed_size"
+              version="0.8">
+        <doc xml:whitespace="preserve">Gets the absolute size of an actor in pixels, taking into account the
+scaling factors.
+If the actor has a valid allocation, the allocated size will be used.
+If the actor has not a valid allocation then the preferred size will
+be transformed and returned.
+If you want the transformed allocation, see
+clutter_actor_get_abs_allocation_vertices() instead.
+&lt;note&gt;When the actor (or one of its ancestors) is rotated around the
+X or Y axis, it no longer appears as on the stage as a rectangle, but
+as a generic quadrangle; in that case this function returns the size
+of the smallest rectangle that encapsulates the entire quad. Please
+note that in this case no assumptions can be made about the relative
+position of this envelope to the absolute position of the actor, as
+returned by clutter_actor_get_transformed_position(); if you need this
+information, you need to use clutter_actor_get_abs_allocation_vertices()
+to get the coords of the actual quadrangle.&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the width, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the height, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_width" c:identifier="clutter_actor_get_width">
+        <doc xml:whitespace="preserve">Retrieves the width of a #ClutterActor.
+If the actor has a valid allocation, this function will return the
+width of the allocated area given to the actor.
+If the actor does not have a valid allocation, this function will
+return the actor's natural width, that is the preferred width of
+the actor.
+If you care whether you get the preferred width or the width that
+has been assigned to the actor, you should probably call a different
+function like clutter_actor_get_allocation_box() to retrieve the
+allocated size or clutter_actor_get_preferred_width() to retrieve the
+preferred width.
+If an actor has a fixed width, for instance a width that has been
+assigned using clutter_actor_set_width(), the width returned will
+be the same value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width of the actor, in pixels</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_x" c:identifier="clutter_actor_get_x">
+        <return-value transfer-ownership="none">
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_y" c:identifier="clutter_actor_get_y">
+        <return-value transfer-ownership="none">
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_z_rotation_gravity"
+              c:identifier="clutter_actor_get_z_rotation_gravity"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the center for the rotation around the Z axis as a
+compass direction. If the center was specified in pixels or units
+this will return %CLUTTER_GRAVITY_NONE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the Z rotation center</doc>
+          <type name="Gravity" c:type="ClutterGravity"/>
+        </return-value>
+      </method>
+      <method name="grab_key_focus"
+              c:identifier="clutter_actor_grab_key_focus"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the key focus of the #ClutterStage including @self
+to this #ClutterActor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="has_allocation"
+              c:identifier="clutter_actor_has_allocation"
+              version="1.4">
+        <doc xml:whitespace="preserve">Checks if the actor has an up-to-date allocation assigned to
+visible and has a parent. It also means that there is no
+outstanding relayout request in progress for the actor or its
+children (There might be other outstanding layout requests in
+progress that will cause the actor to get a new allocation
+when the stage is laid out, however).
+If this function returns %FALSE, then the actor will normally
+be allocated before it is next drawn on the screen.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the actor has an up-to-date allocation</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_clip"
+              c:identifier="clutter_actor_has_clip"
+              version="0.1.1">
+        <doc xml:whitespace="preserve">Determines whether the actor has a clip area set or not.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the actor has a clip area set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_key_focus"
+              c:identifier="clutter_actor_has_key_focus"
+              version="1.4">
+        <doc xml:whitespace="preserve">Checks whether @self is the #ClutterActor that has key focus</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the actor has key focus, and %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_pointer"
+              c:identifier="clutter_actor_has_pointer"
+              version="1.2">
+        <doc xml:whitespace="preserve">Checks whether an actor contains the the pointer of a
+#ClutterInputDevice
+%FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the actor contains the pointer, and</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="hide" c:identifier="clutter_actor_hide">
+        <doc xml:whitespace="preserve">Flags an actor to be hidden. A hidden actor will not be
+rendered on the stage.
+Actors are visible by default.
+If this function is called on an actor without a parent, the
+#ClutterActor:show-on-set-parent property will be set to %FALSE
+as a side-effect.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="hide_all"
+              c:identifier="clutter_actor_hide_all"
+              version="0.2">
+        <doc xml:whitespace="preserve">Calls clutter_actor_hide() on all child actors (if any).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="is_in_clone_paint"
+              c:identifier="clutter_actor_is_in_clone_paint"
+              version="1.0">
+        <doc xml:whitespace="preserve">Checks whether @self is being currently painted by a #ClutterClone
+This function is useful only inside the ::paint virtual function
+implementations or within handlers for the #ClutterActor::paint
+signal
+This function should not be used by applications
+by a #ClutterClone, and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterActor is currently being painted</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_rotated"
+              c:identifier="clutter_actor_is_rotated"
+              version="0.6">
+        <doc xml:whitespace="preserve">Checks whether any rotation is applied to the actor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the actor is rotated.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_scaled"
+              c:identifier="clutter_actor_is_scaled"
+              version="0.6">
+        <doc xml:whitespace="preserve">Checks whether the actor is scaled in either dimension.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the actor is scaled.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="lower" c:identifier="clutter_actor_lower">
+        <doc xml:whitespace="preserve">Puts @self below @above.
+Both actors must have the same parent, and the parent must implement
+the #ClutterContainer interface.
+This function is the equivalent of clutter_container_lower_child().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="above" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A #ClutterActor to lower below</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lower_bottom" c:identifier="clutter_actor_lower_bottom">
+        <doc xml:whitespace="preserve">Lowers @self to the bottom.
+This function calls clutter_actor_lower() internally.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="map" c:identifier="clutter_actor_map" version="1.0">
+        <doc xml:whitespace="preserve">Sets the %CLUTTER_ACTOR_MAPPED flag on the actor and possibly maps
+and realizes its children if they are visible. Does nothing if the
+actor is not visible.
+#ClutterActor &lt;function&gt;map()&lt;/function&gt; virtual function in an actor
+and you need to map the children of that actor. It is not necessary
+to call this if you implement #ClutterContainer because the default
+implementation will automatically map children of containers.
+When overriding map, it is mandatory to chain up to the parent
+implementation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="move_anchor_point"
+              c:identifier="clutter_actor_move_anchor_point"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets an anchor point for the actor, and adjusts the actor postion so that
+the relative position of the actor toward its parent remains the same.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="anchor_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of the anchor point</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="anchor_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of the anchor point</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_anchor_point_from_gravity"
+              c:identifier="clutter_actor_move_anchor_point_from_gravity"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets an anchor point on the actor based on the given gravity, adjusting the
+actor postion so that its relative position within its parent remains
+unchanged.
+Since version 1.0 the anchor point will be stored as a gravity so
+that if the actor changes size then the anchor point will move. For
+example, if you set the anchor point to %CLUTTER_GRAVITY_SOUTH_EAST
+and later double the size of the actor, the anchor point will move
+to the bottom right.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gravity" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#ClutterGravity.</doc>
+            <type name="Gravity" c:type="ClutterGravity"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_by"
+              c:identifier="clutter_actor_move_by"
+              version="0.2">
+        <doc xml:whitespace="preserve">Moves an actor by the specified distance relative to its current
+position in pixels.
+This function modifies the fixed position of an actor and thus removes
+it from any layout management. Another way to move an actor is with an
+anchor point, see clutter_actor_set_anchor_point().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dx" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Distance to move Actor on X axis.</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="dy" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Distance to move Actor on Y axis.</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="paint" c:identifier="clutter_actor_paint">
+        <doc xml:whitespace="preserve">Renders the actor to display.
+This function should not be called directly by applications.
+Call clutter_actor_queue_redraw() to queue paints, instead.
+This function is context-aware, and will either cause a
+regular paint or a pick paint.
+This function will emit the #ClutterActor::paint signal or
+the #ClutterActor::pick signal, depending on the context.
+This function does not paint the actor if the actor is set to 0,
+unless it is performing a pick paint.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="pop_internal"
+              c:identifier="clutter_actor_pop_internal"
+              version="1.2">
+        <doc xml:whitespace="preserve">Disables the effects of clutter_actor_pop_internal()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="push_internal"
+              c:identifier="clutter_actor_push_internal"
+              version="1.2">
+        <doc xml:whitespace="preserve">Should be used by actors implementing the #ClutterContainer and with
+internal children added through clutter_actor_set_parent(), for instance:
+|[
+static void
+my_actor_init (MyActor *self)
+{
+self-&gt;priv = SELF_ACTOR_GET_PRIVATE (self);
+clutter_actor_push_internal (CLUTTER_ACTOR (self));
+/&amp;ast; calling clutter_actor_set_parent() now will result in
+&amp;ast; the internal flag being set on a child of MyActor
+&amp;ast;/
+/&amp;ast; internal child - a background texture &amp;ast;/
+self-&gt;priv-&gt;background_tex = clutter_texture_new ();
+clutter_actor_set_parent (self-&gt;priv-&gt;background_tex,
+CLUTTER_ACTOR (self));
+/&amp;ast; internal child - a label &amp;ast;/
+self-&gt;priv-&gt;label = clutter_text_new ();
+clutter_actor_set_parent (self-&gt;priv-&gt;label,
+CLUTTER_ACTOR (self));
+clutter_actor_pop_internal (CLUTTER_ACTOR (self));
+/&amp;ast; calling clutter_actor_set_parent() now will not result in
+&amp;ast; the internal flag being set on a child of MyActor
+&amp;ast;/
+}
+]|
+This function will be used by Clutter to toggle an "internal child"
+flag whenever clutter_actor_set_parent() is called; internal children
+are handled differently by Clutter, specifically when destroying their
+parent.
+Call clutter_actor_pop_internal() when you finished adding internal
+children.
+Nested calls to clutter_actor_push_internal() are allowed, but each
+one must by followed by a clutter_actor_pop_internal() call.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="queue_redraw" c:identifier="clutter_actor_queue_redraw">
+        <doc xml:whitespace="preserve">Queues up a redraw of an actor and any children. The redraw occurs
+once the main loop becomes idle (after the current batch of events
+has been processed, roughly).
+Applications rarely need to call this, as redraws are handled
+automatically by modification functions.
+This function will not do anything if @self is not visible, or
+if the actor is inside an invisible part of the scenegraph.
+Also be aware that painting is a NOP for actors with an opacity of
+0
+When you are implementing a custom actor you must queue a redraw
+whenever some private state changes that will affect painting or
+picking of your actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="queue_relayout"
+              c:identifier="clutter_actor_queue_relayout"
+              version="0.8">
+        <doc xml:whitespace="preserve">Indicates that the actor's size request or other layout-affecting
+properties may have changed. This function is used inside #ClutterActor
+subclass implementations, not by applications directly.
+Queueing a new layout automatically queues a redraw as well.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="raise" c:identifier="clutter_actor_raise">
+        <doc xml:whitespace="preserve">Puts @self above @below.
+Both actors must have the same parent, and the parent must implement
+the #ClutterContainer interface
+This function is the equivalent of clutter_container_raise_child().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="below" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A #ClutterActor to raise above.</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="raise_top" c:identifier="clutter_actor_raise_top">
+        <doc xml:whitespace="preserve">Raises @self to the top.
+This function calls clutter_actor_raise() internally.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="realize" c:identifier="clutter_actor_realize">
+        <doc xml:whitespace="preserve">Realization informs the actor that it is attached to a stage. It
+can use this to allocate resources if it wanted to delay allocation
+until it would be rendered. However it is perfectly acceptable for
+an actor to create resources before being realized because Clutter
+only ever has a single rendering context so that actor is free to
+be moved from one stage to another.
+This function does nothing if the actor is already realized.
+Because a realized actor must have realized parent actors, calling
+clutter_actor_realize() will also realize all parents of the actor.
+This function does not realize child actors, except in the special
+case that realizing the stage, when the stage is visible, will
+suddenly map (and thus realize) the children of the stage.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="remove_action"
+              c:identifier="clutter_actor_remove_action"
+              version="1.4">
+        <doc xml:whitespace="preserve">Removes @action from the list of actions applied to @self
+The reference held by @self on the #ClutterAction will be released</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterAction</doc>
+            <type name="Action" c:type="ClutterAction*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_action_by_name"
+              c:identifier="clutter_actor_remove_action_by_name"
+              version="1.4">
+        <doc xml:whitespace="preserve">Removes the #ClutterAction with the given name from the list
+of actions applied to @self</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action to remove</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_clip" c:identifier="clutter_actor_remove_clip">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="remove_constraint"
+              c:identifier="clutter_actor_remove_constraint"
+              version="1.4">
+        <doc xml:whitespace="preserve">Removes @constraint from the list of constraints applied to @self
+The reference held by @self on the #ClutterConstraint will be released</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="constraint" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterConstraint</doc>
+            <type name="Constraint" c:type="ClutterConstraint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_constraint_by_name"
+              c:identifier="clutter_actor_remove_constraint_by_name"
+              version="1.4">
+        <doc xml:whitespace="preserve">Removes the #ClutterConstraint with the given name from the list
+of constraints applied to @self</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the constraint to remove</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_effect"
+              c:identifier="clutter_actor_remove_effect"
+              version="1.4">
+        <doc xml:whitespace="preserve">Removes @effect from the list of effects applied to @self
+The reference held by @self on the #ClutterEffect will be released</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="effect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterEffect</doc>
+            <type name="Effect" c:type="ClutterEffect*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_effect_by_name"
+              c:identifier="clutter_actor_remove_effect_by_name"
+              version="1.4">
+        <doc xml:whitespace="preserve">Removes the #ClutterEffect with the given name from the list
+of effects applied to @self</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the effect to remove</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reparent"
+              c:identifier="clutter_actor_reparent"
+              version="0.2">
+        <doc xml:whitespace="preserve">This function resets the parent actor of @self.  It is
+logically equivalent to calling clutter_actor_unparent()
+and clutter_actor_set_parent(), but more efficiently
+implemented, ensures the child is not finalized
+when unparented, and emits the parent-set signal only
+one time.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_parent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new #ClutterActor parent</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_anchor_point"
+              c:identifier="clutter_actor_set_anchor_point"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets an anchor point for @self. The anchor point is a point in the
+coordinate space of an actor to which the actor position within its
+parent is relative; the default is (0, 0), i.e. the top-left corner
+of the actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="anchor_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of the anchor point</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="anchor_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of the anchor point</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_anchor_point_from_gravity"
+              c:identifier="clutter_actor_set_anchor_point_from_gravity"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets an anchor point on the actor, based on the given gravity (this is a
+convenience function wrapping clutter_actor_set_anchor_point()).
+Since version 1.0 the anchor point will be stored as a gravity so
+that if the actor changes size then the anchor point will move. For
+example, if you set the anchor point to %CLUTTER_GRAVITY_SOUTH_EAST
+and later double the size of the actor, the anchor point will move
+to the bottom right.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gravity" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#ClutterGravity.</doc>
+            <type name="Gravity" c:type="ClutterGravity"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_clip"
+              c:identifier="clutter_actor_set_clip"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets clip area for @self. The clip area is always computed from the
+upper left corner of the actor, even if the anchor point is set
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xoff" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X offset of the clip rectangle</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="yoff" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y offset of the clip rectangle</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Width of the clip rectangle</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Height of the clip rectangle</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_clip_to_allocation"
+              c:identifier="clutter_actor_set_clip_to_allocation"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets whether @self should be clipped to the same size as its
+allocation</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clip_set" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to apply a clip tracking the allocation</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_depth" c:identifier="clutter_actor_set_depth">
+        <doc xml:whitespace="preserve">Sets the Z coordinate of @self to @depth.
+The unit used by @depth is dependant on the perspective setup. See
+also clutter_stage_set_perspective().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="depth" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Z co-ord</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fixed_position_set"
+              c:identifier="clutter_actor_set_fixed_position_set"
+              version="0.8">
+        <doc xml:whitespace="preserve">Sets whether an actor has a fixed position set (and will thus be
+unaffected by any layout manager).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_set" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to use fixed position</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_flags"
+              c:identifier="clutter_actor_set_flags"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets @flags on @self
+This function will emit notifications for the changed properties</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the flags to set</doc>
+            <type name="ActorFlags" c:type="ClutterActorFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_geometry" c:identifier="clutter_actor_set_geometry">
+        <doc xml:whitespace="preserve">Sets the actor's fixed position and forces its minimum and natural
+size, in pixels. This means the untransformed actor will have the
+given geometry. This is the same as calling clutter_actor_set_position()
+and clutter_actor_set_size().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #ClutterGeometry</doc>
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_height" c:identifier="clutter_actor_set_height">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_name" c:identifier="clutter_actor_set_name">
+        <doc xml:whitespace="preserve">Sets the given name to @self. The name can be used to identify
+a #ClutterActor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Textual tag to apply to actor</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_opacity" c:identifier="clutter_actor_set_opacity">
+        <doc xml:whitespace="preserve">Sets the actor's opacity, with zero being completely transparent and
+255 (0xff) being fully opaque.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="opacity" transfer-ownership="none">
+            <doc xml:whitespace="preserve">New opacity value for the actor.</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_parent" c:identifier="clutter_actor_set_parent">
+        <doc xml:whitespace="preserve">Sets the parent of @self to @parent.  The opposite function is
+clutter_actor_unparent().
+This function should not be used by applications, but by custom
+container actor subclasses.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A new #ClutterActor parent</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_position" c:identifier="clutter_actor_set_position">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_reactive"
+              c:identifier="clutter_actor_set_reactive"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets @actor as reactive. Reactive actors will receive events.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="reactive" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the actor should be reactive to events</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_request_mode"
+              c:identifier="clutter_actor_set_request_mode"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the geometry request mode of @self.
+The @mode determines the order for invoking
+clutter_actor_get_preferred_width() and
+clutter_actor_get_preferred_height()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the request mode</doc>
+            <type name="RequestMode" c:type="ClutterRequestMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_rotation"
+              c:identifier="clutter_actor_set_rotation"
+              version="0.8">
+        <doc xml:whitespace="preserve">Sets the rotation angle of @self around the given axis.
+The rotation center coordinates used depend on the value of @axis:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;%CLUTTER_X_AXIS requires @y and @z&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;%CLUTTER_Y_AXIS requires @x and @z&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;%CLUTTER_Z_AXIS requires @x and @y&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+The rotation coordinates are relative to the anchor point of the
+actor, set using clutter_actor_set_anchor_point(). If no anchor
+point is set, the upper left corner is assumed as the origin.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the axis of rotation</doc>
+            <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+          </parameter>
+          <parameter name="angle" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the angle of rotation</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of the rotation center</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of the rotation center</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="z" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Z coordinate of the rotation center</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_scale"
+              c:identifier="clutter_actor_set_scale"
+              version="0.2">
+        <doc xml:whitespace="preserve">Scales an actor with the given factors. The scaling is relative to
+the scale center and the anchor point. The scale center is
+unchanged by this function and defaults to 0,0.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scale_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">double factor to scale actor by horizontally.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="scale_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">double factor to scale actor by vertically.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_scale_full"
+              c:identifier="clutter_actor_set_scale_full"
+              version="1.0">
+        <doc xml:whitespace="preserve">Scales an actor with the given factors around the given center
+point. The center point is specified in pixels relative to the
+anchor point (usually the top left corner of the actor).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scale_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">double factor to scale actor by horizontally.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="scale_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">double factor to scale actor by vertically.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="center_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of the center of the scale.</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="center_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of the center of the scale</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_scale_with_gravity"
+              c:identifier="clutter_actor_set_scale_with_gravity"
+              version="1.0">
+        <doc xml:whitespace="preserve">Scales an actor with the given factors around the given
+center point. The center point is specified as one of the compass
+directions in #ClutterGravity. For example, setting it to north
+will cause the top of the actor to remain unchanged and the rest of
+the actor to expand left, right and downwards.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scale_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">double factor to scale actor by horizontally.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="scale_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">double factor to scale actor by vertically.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="gravity" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the location of the scale center expressed as a compass direction.</doc>
+            <type name="Gravity" c:type="ClutterGravity"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_shader"
+              c:identifier="clutter_actor_set_shader"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the #ClutterShader to be used when rendering @self.
+If @shader is %NULL it will unset any currently set shader
+for the actor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the shader was successfully applied</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="shader" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterShader or %NULL to unset the shader.</doc>
+            <type name="Shader" c:type="ClutterShader*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_shader_param"
+              c:identifier="clutter_actor_set_shader_param"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the value for a named parameter of the shader applied
+to @actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="param" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the parameter</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the parameter</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_shader_param_float"
+              c:identifier="clutter_actor_set_shader_param_float"
+              version="0.8">
+        <doc xml:whitespace="preserve">Sets the value for a named float parameter of the shader applied
+to @actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="param" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the parameter</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the parameter</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_shader_param_int"
+              c:identifier="clutter_actor_set_shader_param_int"
+              version="0.8">
+        <doc xml:whitespace="preserve">Sets the value for a named int parameter of the shader applied to</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="param" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the parameter</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the parameter</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_size" c:identifier="clutter_actor_set_size">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_text_direction"
+              c:identifier="clutter_actor_set_text_direction"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the #ClutterTextDirection for an actor
+The passed text direction must not be %CLUTTER_TEXT_DIRECTION_DEFAULT
+If @self implements #ClutterContainer then this function will recurse
+inside all the children of @self (including the internal ones).
+Composite actors not implementing #ClutterContainer, or actors requiring
+special handling when the text direction changes, should connect to
+the #GObject::notify signal for the #ClutterActor:text-direction property</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text_dir" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text direction for @self</doc>
+            <type name="TextDirection" c:type="ClutterTextDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_width" c:identifier="clutter_actor_set_width">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_x" c:identifier="clutter_actor_set_x" version="0.6">
+        <doc xml:whitespace="preserve">Sets the actor's X coordinate, relative to its parent, in pixels.
+Overrides any layout manager and forces a fixed position for
+the actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the actor's position on the X axis</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_y" c:identifier="clutter_actor_set_y" version="0.6">
+        <doc xml:whitespace="preserve">Sets the actor's Y coordinate, relative to its parent, in pixels.#
+Overrides any layout manager and forces a fixed position for
+the actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the actor's position on the Y axis</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_z_rotation_from_gravity"
+              c:identifier="clutter_actor_set_z_rotation_from_gravity"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the rotation angle of @self around the Z axis using the center
+point specified as a compass point. For example to rotate such that
+the center of the actor remains static you can use
+%CLUTTER_GRAVITY_CENTER. If the actor changes size the center point
+will move accordingly.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the angle of rotation</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="gravity" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the center point of the rotation</doc>
+            <type name="Gravity" c:type="ClutterGravity"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="should_pick_paint"
+              c:identifier="clutter_actor_should_pick_paint">
+        <doc xml:whitespace="preserve">Should be called inside the implementation of the
+#ClutterActor::pick virtual function in order to check whether
+the actor should paint itself in pick mode or not.
+This function should never be called directly by applications.
+%FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the actor should paint its silhouette,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="show" c:identifier="clutter_actor_show">
+        <doc xml:whitespace="preserve">Flags an actor to be displayed. An actor that isn't shown will not
+be rendered on the stage.
+Actors are visible by default.
+If this function is called on an actor without a parent, the
+#ClutterActor:show-on-set-parent will be set to %TRUE as a side
+effect.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="show_all"
+              c:identifier="clutter_actor_show_all"
+              version="0.2">
+        <doc xml:whitespace="preserve">Calls clutter_actor_show() on all children of an actor (if any).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="transform_stage_point"
+              c:identifier="clutter_actor_transform_stage_point"
+              version="0.6">
+        <doc xml:whitespace="preserve">This function translates screen coordinates (@x, @y) to
+coordinates relative to the actor. For example, it can be used to translate
+screen events from global screen coordinates into actor-local coordinates.
+The conversion can fail, notably if the transform stack results in the
+actor being projected on the screen as a mere line.
+The conversion should not be expected to be pixel-perfect due to the
+nature of the operation. In general the error grows when the skewing
+of the actor rectangle on screen increases.
+&lt;note&gt;&lt;para&gt;This function can be computationally intensive.&lt;/para&gt;&lt;/note&gt;
+&lt;note&gt;&lt;para&gt;This function only works when the allocation is up-to-date,
+i.e. inside of paint().&lt;/para&gt;&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if conversion was successful.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x screen coordinate of the point to unproject</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y screen coordinate of the point to unproject</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="x_out"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the unprojected x coordinance</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y_out"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the unprojected y coordinance</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unmap" c:identifier="clutter_actor_unmap" version="1.0">
+        <doc xml:whitespace="preserve">Unsets the %CLUTTER_ACTOR_MAPPED flag on the actor and possibly
+unmaps its children if they were mapped.
+#ClutterActor &lt;function&gt;unmap()&lt;/function&gt; virtual function in an actor
+and you need to unmap the children of that actor. It is not necessary
+to call this if you implement #ClutterContainer because the default
+implementation will automatically unmap children of containers.
+When overriding unmap, it is mandatory to chain up to the parent
+implementation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unparent"
+              c:identifier="clutter_actor_unparent"
+              version="0.1.1">
+        <doc xml:whitespace="preserve">Removes the parent of @self.
+This function should not be used in applications.  It should be called by
+implementations of container actors, to dissociate a child from the
+container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unrealize" c:identifier="clutter_actor_unrealize">
+        <doc xml:whitespace="preserve">Unrealization informs the actor that it may be being destroyed or
+moved to another stage. The actor may want to destroy any
+underlying graphics resources at this point. However it is
+perfectly acceptable for it to retain the resources until the actor
+is destroyed because Clutter only ever uses a single rendering
+context and all of the graphics resources are valid on any stage.
+Because mapped actors must be realized, actors may not be
+unrealized if they are mapped. This function hides the actor to be
+sure it isn't mapped, an application-visible side effect that you
+may not be expecting.
+This function should not be called by application code.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unset_flags"
+              c:identifier="clutter_actor_unset_flags"
+              version="1.0">
+        <doc xml:whitespace="preserve">Unsets @flags on @self
+This function will emit notifications for the changed properties</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the flags to unset</doc>
+            <type name="ActorFlags" c:type="ClutterActorFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="actions"
+                version="1.4"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Adds a #ClutterAction to the actor</doc>
+        <type name="Action"/>
+      </property>
+      <property name="allocation" version="0.8" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The allocation for the actor, in pixels
+This is property is read-only, but you might monitor it to know when an
+actor moves or resizes</doc>
+        <type name="ActorBox"/>
+      </property>
+      <property name="anchor-gravity"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The anchor point expressed as a #ClutterGravity</doc>
+        <type name="Gravity"/>
+      </property>
+      <property name="anchor-x"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The X coordinate of an actor's anchor point, relative to
+the actor coordinate space, in pixels</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="anchor-y"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The Y coordinate of an actor's anchor point, relative to
+the actor coordinate space, in pixels</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="clip" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The clip region for the actor, in actor-relative coordinates
+Every part of the actor outside the clip region will not be
+painted</doc>
+        <type name="Geometry"/>
+      </property>
+      <property name="clip-to-allocation"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the clip region should track the allocated area
+of the actor.
+This property is ignored if a clip area has been explicitly
+set using clutter_actor_set_clip().</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="constraints"
+                version="1.4"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Adds a #ClutterConstraint to the actor</doc>
+        <type name="Constraint"/>
+      </property>
+      <property name="depth"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The position of the actor on the Z axis</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="effect"
+                version="1.4"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Adds #ClutterEffect to the list of effects be applied on a #ClutterActor</doc>
+        <type name="Effect"/>
+      </property>
+      <property name="fixed-position-set"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">This flag controls whether the #ClutterActor:fixed-x and
+#ClutterActor:fixed-y properties are used</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="fixed-x"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The fixed X position of the actor in pixels.
+Writing this property sets #ClutterActor:fixed-position-set
+property as well, as a side effect</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="fixed-y"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The fixed Y position of the actor in pixels.
+Writing this property sets the #ClutterActor:fixed-position-set
+property as well, as a side effect</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="has-clip" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the actor has the #ClutterActor:clip property set or not</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="has-pointer" version="1.2" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the actor contains the pointer of a #ClutterInputDevice
+or not.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="height" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Height of the actor (in pixels).  If written, forces the minimum and
+natural size request of the actor to the given height. If read, returns
+the allocated height if available, otherwise the height request.</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="mapped" version="1.0" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the actor is mapped (will be painted when the stage
+to which it belongs is mapped)</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="min-height"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A forced minimum height request for the actor, in pixels
+Writing this property sets the #ClutterActor:min-height-set property
+as well, as a side effect. This property overrides the usual height
+request of the actor.</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="min-height-set"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">This flag controls whether the #ClutterActor:min-height property
+is used</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="min-width"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A forced minimum width request for the actor, in pixels
+Writing this property sets the #ClutterActor:min-width-set property
+as well, as a side effect.
+This property overrides the usual width request of the actor.</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="min-width-set"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">This flag controls whether the #ClutterActor:min-width property
+is used</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="name"
+                version="0.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The name of the actor</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="natural-height"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A forced natural height request for the actor, in pixels
+Writing this property sets the #ClutterActor:natural-height-set
+property as well, as a side effect. This property overrides the
+usual height request of the actor</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="natural-height-set"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">This flag controls whether the #ClutterActor:natural-height property
+is used</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="natural-width"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A forced natural width request for the actor, in pixels
+Writing this property sets the #ClutterActor:natural-width-set
+property as well, as a side effect. This property overrides the
+usual width request of the actor</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="natural-width-set"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">This flag controls whether the #ClutterActor:natural-width property
+is used</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="opacity" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Opacity of an actor, between 0 (fully transparent) and
+255 (fully opaque)</doc>
+        <type name="guint"/>
+      </property>
+      <property name="reactive"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the actor is reactive to events or not
+Only reactive actors will emit event-related signals</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="realized" version="1.0" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the actor has been realized</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="request-mode"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Request mode for the #ClutterActor. The request mode determines the
+type of geometry management used by the actor, either height for width
+(the default) or width for height.
+For actors implementing height for width, the parent container should get
+the preferred width first, and then the preferred height for that width.
+For actors implementing width for height, the parent container should get
+the preferred height first, and then the preferred width for that height.
+For instance:
+|[
+ClutterRequestMode mode;
+gfloat natural_width, min_width;
+gfloat natural_height, min_height;
+mode = clutter_actor_get_request_mode (child);
+if (mode == CLUTTER_REQUEST_HEIGHT_FOR_WIDTH)
+{
+clutter_actor_get_preferred_width (child, -1,
+&amp;amp;min_width,
+&amp;amp;natural_width);
+clutter_actor_get_preferred_height (child, natural_width,
+&amp;amp;min_height,
+&amp;amp;natural_height);
+}
+else
+{
+clutter_actor_get_preferred_height (child, -1,
+&amp;amp;min_height,
+&amp;amp;natural_height);
+clutter_actor_get_preferred_width (child, natural_height,
+&amp;amp;min_width,
+&amp;amp;natural_width);
+}
+]|
+will retrieve the minimum and natural width and height depending on the
+preferred request mode of the #ClutterActor "child".
+The clutter_actor_get_preferred_size() function will implement this
+check for you.</doc>
+        <type name="RequestMode"/>
+      </property>
+      <property name="rotation-angle-x"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The rotation angle on the X axis</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="rotation-angle-y"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The rotation angle on the Y axis</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="rotation-angle-z"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The rotation angle on the Z axis</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="rotation-center-x"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The rotation center on the X axis.</doc>
+        <type name="Vertex"/>
+      </property>
+      <property name="rotation-center-y"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The rotation center on the Y axis.</doc>
+        <type name="Vertex"/>
+      </property>
+      <property name="rotation-center-z"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The rotation center on the Z axis.</doc>
+        <type name="Vertex"/>
+      </property>
+      <property name="rotation-center-z-gravity"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The rotation center on the Z axis expressed as a #ClutterGravity.</doc>
+        <type name="Gravity"/>
+      </property>
+      <property name="scale-center-x"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The horizontal center point for scaling</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="scale-center-y"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The vertical center point for scaling</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="scale-gravity"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The center point for scaling expressed as a #ClutterGravity</doc>
+        <type name="Gravity"/>
+      </property>
+      <property name="scale-x"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The horizontal scale of the actor</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="scale-y"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The vertical scale of the actor</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="show-on-set-parent"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If %TRUE, the actor is automatically shown when parented.
+Calling clutter_actor_hide() on an actor which has not been
+parented will set this property to %FALSE as a side effect.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="text-direction" writable="1" transfer-ownership="none">
+        <type name="TextDirection"/>
+      </property>
+      <property name="visible" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the actor is set to be visible or not
+See also #ClutterActor:mapped</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="width" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Width of the actor (in pixels). If written, forces the minimum and
+natural size request of the actor to the given width. If read, returns
+the allocated width if available, otherwise the width request.</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="x" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">X coordinate of the actor in pixels. If written, forces a fixed
+position for the actor. If read, returns the fixed position if any,
+otherwise the allocation if available, otherwise 0.</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="y" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Y coordinate of the actor in pixels. If written, forces a fixed
+position for the actor.  If read, returns the fixed position if
+any, otherwise the allocation if available, otherwise 0.</doc>
+        <type name="gfloat"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+      </field>
+      <field name="flags">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="private_flags">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="priv">
+        <type name="ActorPrivate" c:type="ClutterActorPrivate*"/>
+      </field>
+      <glib:signal name="allocation-changed" version="1.0">
+        <doc xml:whitespace="preserve">The ::allocation-changed signal is emitted when the
+#ClutterActor:allocation property changes. Usually, application
+code should just use the notifications for the :allocation property
+but if you want to track the allocation flags as well, for instance
+to know whether the absolute origin of @actor changed, then you might
+want use this signal instead.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActorBox with the new allocation</doc>
+            <type name="ActorBox"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#ClutterAllocationFlags for the allocation</doc>
+            <type name="AllocationFlags"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="button-press-event" version="0.6">
+        <doc xml:whitespace="preserve">The ::button-press-event signal is emitted each time a mouse button
+is pressed on @actor.
+or %FALSE to continue the emission.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event has been handled by the actor,</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterButtonEvent</doc>
+            <type name="Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="button-release-event" version="0.6">
+        <doc xml:whitespace="preserve">The ::button-release-event signal is emitted each time a mouse button
+is released on @actor.
+or %FALSE to continue the emission.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event has been handled by the actor,</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterButtonEvent</doc>
+            <type name="Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="captured-event" version="0.6">
+        <doc xml:whitespace="preserve">The ::captured-event signal is emitted when an event is captured
+by Clutter. This signal will be emitted starting from the top-level
+container (the #ClutterStage) to the actor which received the event
+going down the hierarchy. This signal can be used to intercept every
+event before the specialized events (like
+ClutterActor::button-press-event or ::key-released-event) are
+emitted.
+or %FALSE to continue the emission.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event has been handled by the actor,</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterEvent</doc>
+            <type name="Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="destroy" version="0.2">
+        <doc xml:whitespace="preserve">The ::destroy signal is emitted when an actor is destroyed,
+either by direct invocation of clutter_actor_destroy() or
+when the #ClutterGroup that contains the actor is destroyed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="enter-event" version="0.6">
+        <doc xml:whitespace="preserve">The ::enter-event signal is emitted when the pointer enters the @actor
+or %FALSE to continue the emission.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event has been handled by the actor,</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterCrossingEvent</doc>
+            <type name="Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="event" version="0.6">
+        <doc xml:whitespace="preserve">The ::event signal is emitted each time an event is received
+by the @actor. This signal will be emitted on every actor,
+following the hierarchy chain, until it reaches the top-level
+container (the #ClutterStage).
+or %FALSE to continue the emission.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event has been handled by the actor,</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterEvent</doc>
+            <type name="Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="hide" version="0.2">
+        <doc xml:whitespace="preserve">The ::hide signal is emitted when an actor is no longer rendered
+on the stage.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="key-focus-in" version="0.6">
+        <doc xml:whitespace="preserve">The ::key-focus-in signal is emitted when @actor receives key focus.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="key-focus-out" version="0.6">
+        <doc xml:whitespace="preserve">The ::key-focus-out signal is emitted when @actor loses key focus.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="key-press-event" version="0.6">
+        <doc xml:whitespace="preserve">The ::key-press-event signal is emitted each time a keyboard button
+is pressed while @actor has key focus (see clutter_stage_set_key_focus()).
+or %FALSE to continue the emission.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event has been handled by the actor,</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterKeyEvent</doc>
+            <type name="Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="key-release-event" version="0.6">
+        <doc xml:whitespace="preserve">The ::key-release-event signal is emitted each time a keyboard button
+is released while @actor has key focus (see
+clutter_stage_set_key_focus()).
+or %FALSE to continue the emission.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event has been handled by the actor,</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterKeyEvent</doc>
+            <type name="Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="leave-event" version="0.6">
+        <doc xml:whitespace="preserve">The ::leave-event signal is emitted when the pointer leaves the @actor.
+or %FALSE to continue the emission.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event has been handled by the actor,</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterCrossingEvent</doc>
+            <type name="Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="motion-event" version="0.6">
+        <doc xml:whitespace="preserve">The ::motion-event signal is emitted each time the mouse pointer is
+moved over @actor.
+or %FALSE to continue the emission.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event has been handled by the actor,</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterMotionEvent</doc>
+            <type name="Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="paint" version="0.8">
+        <doc xml:whitespace="preserve">The ::paint signal is emitted each time an actor is being painted.
+Subclasses of #ClutterActor should override the class signal handler
+and paint themselves in that function.
+It is possible to connect a handler to the ::paint signal in order
+to set up some custom aspect of a paint.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="parent-set" version="0.2">
+        <doc xml:whitespace="preserve">This signal is emitted when the parent of the actor changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the previous parent of the actor, or %NULL</doc>
+            <type name="Actor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="pick" version="1.0">
+        <doc xml:whitespace="preserve">The ::pick signal is emitted each time an actor is being painted
+in "pick mode". The pick mode is used to identify the actor during
+the event handling phase, or by clutter_stage_get_actor_at_pos().
+The actor should paint its shape using the passed @pick_color.
+Subclasses of #ClutterActor should override the class signal handler
+and paint themselves in that function.
+It is possible to connect a handler to the ::pick signal in order
+to set up some custom aspect of a paint in pick mode.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterColor to be used when picking</doc>
+            <type name="Color"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="queue-redraw" version="1.0">
+        <doc xml:whitespace="preserve">The ::queue_redraw signal is emitted when clutter_actor_queue_redraw()
+is called on @origin.
+The default implementation for #ClutterActor chains up to the
+parent actor and queues a redraw on the parent, thus "bubbling"
+the redraw queue up through the actor graph. The default
+implementation for #ClutterStage queues a clutter_redraw() in a
+main loop idle handler.
+Note that the @origin actor may be the stage, or a container; it
+does not have to be a leaf node in the actor graph.
+Toolkits embedding a #ClutterStage which require a redraw and
+relayout cycle can stop the emission of this signal using the
+GSignal API, redraw the UI and then call clutter_redraw()
+themselves, like:
+|[
+static void
+on_redraw_complete (void)
+{
+/&amp;ast; execute the Clutter drawing pipeline &amp;ast;/
+clutter_redraw ();
+}
+static void
+on_stage_queue_redraw (ClutterStage *stage)
+{
+/&amp;ast; this prevents the default handler to run &amp;ast;/
+g_signal_stop_emission_by_name (stage, "queue-redraw");
+/&amp;ast; queue a redraw with the host toolkit and call
+&amp;ast; a function when the redraw has been completed
+&amp;ast;/
+queue_a_redraw (G_CALLBACK (on_redraw_complete));
+}
+]|
+&lt;note&gt;&lt;para&gt;This signal is emitted before the Clutter paint
+pipeline is executed. If you want to know when the pipeline has
+been completed you should connect to the ::paint signal on the
+Stage with g_signal_connect_after().&lt;/para&gt;&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the actor which initiated the redraw request</doc>
+            <type name="Actor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="queue-relayout">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="realize" version="0.8">
+        <doc xml:whitespace="preserve">The ::realize signal is emitted each time an actor is being
+realized.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="scroll-event" version="0.6">
+        <doc xml:whitespace="preserve">The ::scroll-event signal is emitted each time the mouse is
+scrolled on @actor
+or %FALSE to continue the emission.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event has been handled by the actor,</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterScrollEvent</doc>
+            <type name="Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="show" version="0.2">
+        <doc xml:whitespace="preserve">The ::show signal is emitted when an actor is visible and
+rendered on the stage.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unrealize" version="0.8">
+        <doc xml:whitespace="preserve">The ::unrealize signal is emitted each time an actor is being
+unrealized.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ActorBox"
+            c:type="ClutterActorBox"
+            glib:type-name="ClutterActorBox"
+            glib:get-type="clutter_actor_box_get_type"
+            c:symbol-prefix="actor_box">
+      <doc xml:whitespace="preserve">Bounding box of an actor. The coordinates of the top left and right bottom
+corners of an actor. The coordinates of the two points are expressed in
+pixels with sub-pixel precision</doc>
+      <field name="x1" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="y1" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="x2" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="y2" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="clutter_actor_box_new"
+                   version="1.0">
+        <doc xml:whitespace="preserve">Allocates a new #ClutterActorBox using the passed coordinates
+for the top left and bottom right points
+clutter_actor_box_free() to free the resources</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated #ClutterActorBox. Use</doc>
+          <type name="ActorBox" c:type="ClutterActorBox*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of the top left point</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y_1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of the top left point</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="x_2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of the bottom right point</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y_2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of the bottom right point</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="clamp_to_pixel"
+              c:identifier="clutter_actor_box_clamp_to_pixel"
+              version="1.2">
+        <doc xml:whitespace="preserve">Clamps the components of @box to the nearest integer</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="contains"
+              c:identifier="clutter_actor_box_contains"
+              version="1.0">
+        <doc xml:whitespace="preserve">Checks whether a point with @x, @y coordinates is contained
+withing @box</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the point is contained by the #ClutterActorBox</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of the point</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of the point</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="clutter_actor_box_copy" version="1.0">
+        <doc xml:whitespace="preserve">Copies @box
+clutter_actor_box_free() to free the allocated resources</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated copy of #ClutterActorBox. Use</doc>
+          <type name="ActorBox" c:type="ClutterActorBox*"/>
+        </return-value>
+      </method>
+      <method name="equal"
+              c:identifier="clutter_actor_box_equal"
+              version="1.0">
+        <doc xml:whitespace="preserve">Checks @box_a and @box_b for equality</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the passed #ClutterActorBox are equal</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="box_b" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActorBox</doc>
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="clutter_actor_box_free" version="1.0">
+        <doc xml:whitespace="preserve">Frees a #ClutterActorBox allocated using clutter_actor_box_new()
+or clutter_actor_box_copy()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="from_vertices"
+              c:identifier="clutter_actor_box_from_vertices"
+              version="1.0">
+        <doc xml:whitespace="preserve">Calculates the bounding box represented by the four vertices; for details
+of the vertex array see clutter_actor_get_abs_allocation_vertices().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="verts" transfer-ownership="none">
+            <doc xml:whitespace="preserve">array of four #ClutterVertex</doc>
+            <array c:type="ClutterVertex" fixed-size="4">
+              <type name="Vertex"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_area"
+              c:identifier="clutter_actor_box_get_area"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the area of @box</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the area of a #ClutterActorBox, in pixels</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_height"
+              c:identifier="clutter_actor_box_get_height"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the height of the @box</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the height of the box</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_origin"
+              c:identifier="clutter_actor_box_get_origin"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the origin of @box</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the X coordinate, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the Y coordinate, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size"
+              c:identifier="clutter_actor_box_get_size"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the size of @box</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the width, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the height, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_width"
+              c:identifier="clutter_actor_box_get_width"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the width of the @box</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width of the box</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_x"
+              c:identifier="clutter_actor_box_get_x"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the X coordinate of the origin of @box</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the X coordinate of the origin</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_y"
+              c:identifier="clutter_actor_box_get_y"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the Y coordinate of the origin of @box</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the Y coordinate of the origin</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="interpolate"
+              c:identifier="clutter_actor_box_interpolate"
+              version="1.2">
+        <doc xml:whitespace="preserve">Interpolates between @initial and @final #ClutterActorBox&lt;!-- --&gt;es
+using @progress</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="final" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the final #ClutterActorBox</doc>
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the interpolation progress</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the interpolation</doc>
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="ActorClass"
+            c:type="ClutterActorClass"
+            glib:is-gtype-struct-for="Actor">
+      <doc xml:whitespace="preserve">Base class for actors.</doc>
+      <field name="parent_class">
+        <type name="GObject.InitiallyUnownedClass"
+              c:type="GInitiallyUnownedClass"/>
+      </field>
+      <field name="show">
+        <callback name="show">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="show_all">
+        <callback name="show_all">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="hide">
+        <callback name="hide">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="hide_all">
+        <callback name="hide_all">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="realize">
+        <callback name="realize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unrealize">
+        <callback name="unrealize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="map">
+        <callback name="map">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unmap">
+        <callback name="unmap">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="paint">
+        <callback name="paint">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parent_set">
+        <callback name="parent_set">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="old_parent" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="destroy">
+        <callback name="destroy">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pick">
+        <callback name="pick">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="color" transfer-ownership="none">
+              <type name="Color" c:type="ClutterColor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="queue_redraw">
+        <callback name="queue_redraw">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="leaf_that_queued" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_preferred_width">
+        <callback name="get_preferred_width">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="for_height" transfer-ownership="none">
+              <doc xml:whitespace="preserve">available height when computing the preferred width, or a negative value to indicate that no height is defined</doc>
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+            <parameter name="min_width_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">return location for minimum width, or %NULL</doc>
+              <type name="gfloat" c:type="gfloat*"/>
+            </parameter>
+            <parameter name="natural_width_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">return location for the natural width, or %NULL</doc>
+              <type name="gfloat" c:type="gfloat*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_preferred_height">
+        <callback name="get_preferred_height">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="for_width" transfer-ownership="none">
+              <doc xml:whitespace="preserve">available width to assume in computing desired height, or a negative value to indicate that no width is defined</doc>
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+            <parameter name="min_height_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">return location for minimum height, or %NULL</doc>
+              <type name="gfloat" c:type="gfloat*"/>
+            </parameter>
+            <parameter name="natural_height_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">return location for natural height, or %NULL</doc>
+              <type name="gfloat" c:type="gfloat*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="allocate">
+        <callback name="allocate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="box" transfer-ownership="none">
+              <doc xml:whitespace="preserve">new allocation of the actor, in parent-relative coordinates</doc>
+              <type name="ActorBox" c:type="ClutterActorBox*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">flags that control the allocation</doc>
+              <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="apply_transform">
+        <callback name="apply_transform">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="matrix" transfer-ownership="none">
+              <type name="Cogl.Matrix" c:type="CoglMatrix*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="event">
+        <callback name="event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Event" c:type="ClutterEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="button_press_event">
+        <callback name="button_press_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="ButtonEvent" c:type="ClutterButtonEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="button_release_event">
+        <callback name="button_release_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="ButtonEvent" c:type="ClutterButtonEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="scroll_event">
+        <callback name="scroll_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="ScrollEvent" c:type="ClutterScrollEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="key_press_event">
+        <callback name="key_press_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="KeyEvent" c:type="ClutterKeyEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="key_release_event">
+        <callback name="key_release_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="KeyEvent" c:type="ClutterKeyEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="motion_event">
+        <callback name="motion_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="MotionEvent" c:type="ClutterMotionEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="enter_event">
+        <callback name="enter_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="CrossingEvent" c:type="ClutterCrossingEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="leave_event">
+        <callback name="leave_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="CrossingEvent" c:type="ClutterCrossingEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="captured_event">
+        <callback name="captured_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Event" c:type="ClutterEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="key_focus_in">
+        <callback name="key_focus_in">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="key_focus_out">
+        <callback name="key_focus_out">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="queue_relayout">
+        <callback name="queue_relayout">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_accessible">
+        <callback name="get_accessible">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #AtkObject associated with @actor</doc>
+            <type name="Atk.Object" c:type="AtkObject*"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_padding_dummy">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="30">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="ActorFlags"
+              glib:type-name="ClutterActorFlags"
+              glib:get-type="clutter_actor_flags_get_type"
+              c:type="ClutterActorFlags">
+      <doc xml:whitespace="preserve">Flags used to signal the state of an actor.</doc>
+      <member name="mapped"
+              value="2"
+              c:identifier="CLUTTER_ACTOR_MAPPED"
+              glib:nick="mapped"/>
+      <member name="realized"
+              value="4"
+              c:identifier="CLUTTER_ACTOR_REALIZED"
+              glib:nick="realized"/>
+      <member name="reactive"
+              value="8"
+              c:identifier="CLUTTER_ACTOR_REACTIVE"
+              glib:nick="reactive"/>
+      <member name="visible"
+              value="16"
+              c:identifier="CLUTTER_ACTOR_VISIBLE"
+              glib:nick="visible"/>
+      <member name="no_layout"
+              value="32"
+              c:identifier="CLUTTER_ACTOR_NO_LAYOUT"
+              glib:nick="no-layout"/>
+    </bitfield>
+    <class name="ActorMeta"
+           c:symbol-prefix="actor_meta"
+           c:type="ClutterActorMeta"
+           version="1.4"
+           parent="GObject.InitiallyUnowned"
+           abstract="1"
+           glib:type-name="ClutterActorMeta"
+           glib:get-type="clutter_actor_meta_get_type"
+           glib:type-struct="ActorMetaClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterActorMeta&lt;/structname&gt; structure contains only
+private data and should be accessed using the provided API</doc>
+      <virtual-method name="set_actor">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_actor"
+              c:identifier="clutter_actor_meta_get_actor"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves a pointer to the #ClutterActor that owns @meta</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to a #ClutterActor or %NULL</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="get_enabled"
+              c:identifier="clutter_actor_meta_get_enabled"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves whether @meta is enabled</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterActorMeta instance is enabled</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_name"
+              c:identifier="clutter_actor_meta_get_name"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the name set using clutter_actor_meta_set_name()
+instance, or %NULL if none was set. The returned string is owned
+by the #ClutterActorMeta instance and it should not be modified
+or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the #ClutterActorMeta</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_enabled"
+              c:identifier="clutter_actor_meta_set_enabled"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets whether @meta should be enabled or not</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_enabled" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether @meta is enabled</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_name"
+              c:identifier="clutter_actor_meta_set_name"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the name of @meta
+The name can be used to identify the #ClutterActorMeta instance</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of @meta</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="actor" version="1.4" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterActor attached to the #ClutterActorMeta instance</doc>
+        <type name="Actor"/>
+      </property>
+      <property name="enabled"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether or not the #ClutterActorMeta is enabled</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="name"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The unique name to access the #ClutterActorMeta</doc>
+        <type name="utf8"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+      </field>
+      <field name="priv">
+        <type name="ActorMetaPrivate" c:type="ClutterActorMetaPrivate*"/>
+      </field>
+    </class>
+    <record name="ActorMetaClass"
+            c:type="ClutterActorMetaClass"
+            glib:is-gtype-struct-for="ActorMeta"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterActorMetaClass&lt;/structname&gt; structure contains
+only private data</doc>
+      <field name="parent_class">
+        <type name="GObject.InitiallyUnownedClass"
+              c:type="GInitiallyUnownedClass"/>
+      </field>
+      <field name="set_actor">
+        <callback name="set_actor">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="meta" transfer-ownership="none">
+              <type name="ActorMeta" c:type="ClutterActorMeta*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_meta1" introspectable="0">
+        <callback name="_clutter_meta1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_meta2" introspectable="0">
+        <callback name="_clutter_meta2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_meta3" introspectable="0">
+        <callback name="_clutter_meta3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_meta4" introspectable="0">
+        <callback name="_clutter_meta4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_meta5" introspectable="0">
+        <callback name="_clutter_meta5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_meta6" introspectable="0">
+        <callback name="_clutter_meta6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_meta7" introspectable="0">
+        <callback name="_clutter_meta7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ActorMetaPrivate"
+            c:type="ClutterActorMetaPrivate"
+            disguised="1">
+    </record>
+    <record name="ActorPrivate" c:type="ClutterActorPrivate" disguised="1">
+    </record>
+    <constant name="AddFavorite" value="269025081">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Adiaeresis" value="196">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Agrave" value="192">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ahook" value="16785058">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="AlignAxis"
+                 version="1.4"
+                 glib:type-name="ClutterAlignAxis"
+                 glib:get-type="clutter_align_axis_get_type"
+                 c:type="ClutterAlignAxis">
+      <doc xml:whitespace="preserve">Specifies the axis on which #ClutterAlignConstraint should maintain
+the alignment</doc>
+      <member name="x_axis"
+              value="0"
+              c:identifier="CLUTTER_ALIGN_X_AXIS"
+              glib:nick="x-axis"/>
+      <member name="y_axis"
+              value="1"
+              c:identifier="CLUTTER_ALIGN_Y_AXIS"
+              glib:nick="y-axis"/>
+    </enumeration>
+    <class name="AlignConstraint"
+           c:symbol-prefix="align_constraint"
+           c:type="ClutterAlignConstraint"
+           version="1.4"
+           parent="Constraint"
+           glib:type-name="ClutterAlignConstraint"
+           glib:get-type="clutter_align_constraint_get_type">
+      <doc xml:whitespace="preserve">&lt;structname&gt;ClutterAlignConstraint&lt;/structname&gt; is an opaque structure
+whose members cannot be directly accesses</doc>
+      <constructor name="new"
+                   c:identifier="clutter_align_constraint_new"
+                   version="1.4">
+        <doc xml:whitespace="preserve">Creates a new constraint, aligning a #ClutterActor's position with
+regards of the size of the actor to @source, with the given
+alignment @factor</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterAlignConstraint</doc>
+          <type name="Constraint" c:type="ClutterConstraint*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the #ClutterActor to use as the source of the alignment, or %NULL</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="axis" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the axis to be used to compute the alignment</doc>
+            <type name="AlignAxis" c:type="ClutterAlignAxis"/>
+          </parameter>
+          <parameter name="factor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the alignment factor, between 0.0 and 1.0</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_align_axis"
+              c:identifier="clutter_align_constraint_get_align_axis"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the value set using clutter_align_constraint_set_align_axis()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the alignment axis</doc>
+          <type name="AlignAxis" c:type="ClutterAlignAxis"/>
+        </return-value>
+      </method>
+      <method name="get_factor"
+              c:identifier="clutter_align_constraint_get_factor"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the factor set using clutter_align_constraint_set_factor()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the alignment factor</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_source"
+              c:identifier="clutter_align_constraint_get_source"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the source of the alignment
+of the alignment</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterActor used as the source</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="set_align_axis"
+              c:identifier="clutter_align_constraint_set_align_axis"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the axis to which the alignment refers to</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the axis to which the alignment refers to</doc>
+            <type name="AlignAxis" c:type="ClutterAlignAxis"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_factor"
+              c:identifier="clutter_align_constraint_set_factor"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the alignment factor of the constraint
+The factor depends on the #ClutterAlignConstraint:align-axis property
+and it is a value between 0.0 (meaning left, when
+#ClutterAlignConstraint:align-axis is set to %CLUTTER_ALIGN_X_AXIS; or
+meaning top, when #ClutterAlignConstraint:align-axis is set to
+%CLUTTER_ALIGN_Y_AXIS) and 1.0 (meaning right, when
+#ClutterAlignConstraint:align-axis is set to %CLUTTER_ALIGN_X_AXIS; or
+meaning bottom, when #ClutterAlignConstraint:align-axis is set to
+%CLUTTER_ALIGN_Y_AXIS). A value of 0.5 aligns in the middle in either
+cases</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="factor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the alignment factor, between 0.0 and 1.0</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_source"
+              c:identifier="clutter_align_constraint_set_source"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the source of the alignment constraint</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterActor, or %NULL to unset the source</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="align-axis"
+                version="1.4"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The axis to be used to compute the alignment</doc>
+        <type name="AlignAxis"/>
+      </property>
+      <property name="factor"
+                version="1.4"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The alignment factor, as a normalized value between 0.0 and 1.0
+The factor depends on the #ClutterAlignConstraint:align-axis property:
+with an align-axis value of %CLUTTER_ALIGN_X_AXIS, 0.0 means left and
+1.0 means right; with a value of %CLUTTER_ALIGN_Y_AXIS, 0.0 means top
+and 1.0 means bottom.</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="source"
+                version="1.4"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterActor used as the source for the alignment</doc>
+        <type name="Actor"/>
+      </property>
+    </class>
+    <bitfield name="AllocationFlags"
+              version="1.0"
+              glib:type-name="ClutterAllocationFlags"
+              glib:get-type="clutter_allocation_flags_get_type"
+              c:type="ClutterAllocationFlags">
+      <doc xml:whitespace="preserve">Flags passed to the #ClutterActor::allocate() virtual function and
+to the clutter_actor_allocate() function</doc>
+      <member name="allocation_none"
+              value="0"
+              c:identifier="CLUTTER_ALLOCATION_NONE"
+              glib:nick="allocation-none"/>
+      <member name="absolute_origin_changed"
+              value="2"
+              c:identifier="CLUTTER_ABSOLUTE_ORIGIN_CHANGED"
+              glib:nick="absolute-origin-changed"/>
+    </bitfield>
+    <class name="Alpha"
+           c:symbol-prefix="alpha"
+           c:type="ClutterAlpha"
+           version="0.2"
+           parent="GObject.InitiallyUnowned"
+           glib:type-name="ClutterAlpha"
+           glib:get-type="clutter_alpha_get_type"
+           glib:type-struct="AlphaClass">
+      <doc xml:whitespace="preserve">#ClutterAlpha combines a #ClutterTimeline and a function.
+The contents of the #ClutterAlpha structure are private and should
+only be accessed using the provided API.</doc>
+      <implements name="Scriptable"/>
+      <constructor name="new" c:identifier="clutter_alpha_new" version="0.2">
+        <doc xml:whitespace="preserve">Creates a new #ClutterAlpha instance.  You must set a function
+to compute the alpha value using clutter_alpha_set_func() and
+bind a #ClutterTimeline object to the #ClutterAlpha instance
+using clutter_alpha_set_timeline().
+You should use the newly created #ClutterAlpha instance inside
+a #ClutterBehaviour object.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created empty #ClutterAlpha instance.</doc>
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_full"
+                   c:identifier="clutter_alpha_new_full"
+                   version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterAlpha instance and sets the timeline
+and animation mode.
+See also clutter_alpha_set_timeline() and clutter_alpha_set_mode().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterAlpha</doc>
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#ClutterTimeline timeline</doc>
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">animation mode</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_func"
+                   c:identifier="clutter_alpha_new_with_func"
+                   version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterAlpha instances and sets the timeline
+and the alpha function.
+This function will not register @func as a global alpha function.
+See also clutter_alpha_set_timeline() and clutter_alpha_set_func().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterAlpha</doc>
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterTimeline</doc>
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <doc xml:whitespace="preserve">a #ClutterAlphaFunc</doc>
+            <type name="AlphaFunc" c:type="ClutterAlphaFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to the function, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">function to call when removing the alpha function, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="register_closure"
+                c:identifier="clutter_alpha_register_closure"
+                shadows="register_func"
+                version="1.0">
+        <doc xml:whitespace="preserve">#GClosure variant of clutter_alpha_register_func().
+Registers a global alpha function and returns its logical id
+to be used by clutter_alpha_set_mode() or by #ClutterAnimation.
+The logical id is always greater than %CLUTTER_ANIMATION_LAST.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the logical id of the alpha function</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="closure" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GClosure</doc>
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="register_func"
+                c:identifier="clutter_alpha_register_func"
+                shadowed-by="register_closure"
+                version="1.0"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Registers a global alpha function and returns its logical id
+to be used by clutter_alpha_set_mode() or by #ClutterAnimation.
+The logical id is always greater than %CLUTTER_ANIMATION_LAST.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the logical id of the alpha function</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">a #ClutterAlphaFunc</doc>
+            <type name="AlphaFunc" c:type="ClutterAlphaFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @func, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_alpha"
+              c:identifier="clutter_alpha_get_alpha"
+              version="0.2">
+        <doc xml:whitespace="preserve">Query the current alpha value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The current alpha value for the alpha</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_mode"
+              c:identifier="clutter_alpha_get_mode"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterAnimationMode used by @alpha.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the animation mode</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <method name="get_timeline"
+              c:identifier="clutter_alpha_get_timeline"
+              version="0.2">
+        <doc xml:whitespace="preserve">Gets the #ClutterTimeline bound to @alpha.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterTimeline instance</doc>
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+      </method>
+      <method name="set_closure"
+              c:identifier="clutter_alpha_set_closure"
+              version="0.8">
+        <doc xml:whitespace="preserve">Sets the #GClosure used to compute the alpha value at each
+frame of the #ClutterTimeline bound to @alpha.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="closure" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GClosure</doc>
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_func"
+              c:identifier="clutter_alpha_set_func"
+              version="0.2">
+        <doc xml:whitespace="preserve">Sets the #ClutterAlphaFunc function used to compute
+the alpha value at each frame of the #ClutterTimeline
+bound to @alpha.
+This function will not register @func as a global alpha function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">A #ClutterAlphaFunc</doc>
+            <type name="AlphaFunc" c:type="ClutterAlphaFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to be passed to the alpha function, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">notify function used when disposing the alpha function</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_mode"
+              c:identifier="clutter_alpha_set_mode"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the progress function of @alpha using the symbolic value
+of @mode, as taken by the #ClutterAnimationMode enumeration or
+using the value returned by clutter_alpha_register_func().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterAnimationMode</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_timeline"
+              c:identifier="clutter_alpha_set_timeline"
+              version="0.2">
+        <doc xml:whitespace="preserve">Binds @alpha to @timeline.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #ClutterTimeline</doc>
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="alpha" version="0.2" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The alpha value as computed by the alpha function. The linear
+interval is 0.0 to 1.0, but the Alpha allows overshooting by
+one unit in each direction, so the valid interval is -1.0 to 2.0.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="mode"
+                version="1.0"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The progress function logical id - either a value from the
+#ClutterAnimationMode enumeration or a value returned by
+clutter_alpha_register_func().
+If %CLUTTER_CUSTOM_MODE is used then the function set using
+clutter_alpha_set_closure() or clutter_alpha_set_func()
+will be used.</doc>
+        <type name="gulong"/>
+      </property>
+      <property name="timeline"
+                version="0.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A #ClutterTimeline instance used to drive the alpha function.</doc>
+        <type name="Timeline"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+      </field>
+      <field name="priv">
+        <type name="AlphaPrivate" c:type="ClutterAlphaPrivate*"/>
+      </field>
+    </class>
+    <record name="AlphaClass"
+            c:type="ClutterAlphaClass"
+            glib:is-gtype-struct-for="Alpha"
+            version="0.2">
+      <doc xml:whitespace="preserve">Base class for #ClutterAlpha</doc>
+      <field name="parent_class">
+        <type name="GObject.InitiallyUnownedClass"
+              c:type="GInitiallyUnownedClass"/>
+      </field>
+      <field name="_clutter_alpha_1" introspectable="0">
+        <callback name="_clutter_alpha_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_alpha_2" introspectable="0">
+        <callback name="_clutter_alpha_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_alpha_3" introspectable="0">
+        <callback name="_clutter_alpha_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_alpha_4" introspectable="0">
+        <callback name="_clutter_alpha_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_alpha_5" introspectable="0">
+        <callback name="_clutter_alpha_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="AlphaFunc" c:type="ClutterAlphaFunc" version="0.2">
+      <doc xml:whitespace="preserve">A function returning a value depending on the position of
+the #ClutterTimeline bound to @alpha.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a floating point value</doc>
+        <type name="gdouble" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="alpha" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterAlpha</doc>
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <doc xml:whitespace="preserve">user data passed to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="AlphaPrivate" c:type="ClutterAlphaPrivate" disguised="1">
+    </record>
+    <constant name="Alt_L" value="65513">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Alt_R" value="65514">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Amacron" value="960">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <interface name="Animatable"
+               c:symbol-prefix="animatable"
+               c:type="ClutterAnimatable"
+               version="1.0"
+               glib:type-name="ClutterAnimatable"
+               glib:get-type="clutter_animatable_get_type"
+               glib:type-struct="AnimatableIface">
+      <doc xml:whitespace="preserve">#ClutterAnimatable is an opaque structure whose members cannot be directly
+accessed</doc>
+      <virtual-method name="animate_property"
+                      invoker="animate_property"
+                      version="1.0">
+        <doc xml:whitespace="preserve">Calls the animate_property() virtual function for @animatable.
+The @initial_value and @final_value #GValue&lt;!-- --&gt;s must contain
+the same type; @value must have been initialized to the same
+type of @initial_value and @final_value.
+All implementation of the #ClutterAnimatable interface must
+implement this function.
+be applied to the #ClutterAnimatable, and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value has been validated and can</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="animation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterAnimation</doc>
+            <type name="Animation" c:type="ClutterAnimation*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the animated property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="initial_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the initial value of the animation interval</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="final_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the final value of the animation interval</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the progress factor</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the animation value</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="find_property"
+                      invoker="find_property"
+                      version="1.4">
+        <doc xml:whitespace="preserve">Finds the #GParamSpec for @property_name
+or %NULL</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GParamSpec for the given property</doc>
+          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the animatable property to find</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_initial_state"
+                      invoker="get_initial_state"
+                      version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the current state of @property_name and sets @value with it</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the animatable property to retrieve</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue initialized to the type of the property to retrieve</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_final_state"
+                      invoker="set_final_state"
+                      version="1.4">
+        <doc xml:whitespace="preserve">Sets the current state of @property_name to @value</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the animatable property to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the animatable property to set</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="animate_property"
+              c:identifier="clutter_animatable_animate_property"
+              version="1.0">
+        <doc xml:whitespace="preserve">Calls the animate_property() virtual function for @animatable.
+The @initial_value and @final_value #GValue&lt;!-- --&gt;s must contain
+the same type; @value must have been initialized to the same
+type of @initial_value and @final_value.
+All implementation of the #ClutterAnimatable interface must
+implement this function.
+be applied to the #ClutterAnimatable, and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value has been validated and can</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="animation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterAnimation</doc>
+            <type name="Animation" c:type="ClutterAnimation*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the animated property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="initial_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the initial value of the animation interval</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="final_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the final value of the animation interval</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the progress factor</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the animation value</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_property"
+              c:identifier="clutter_animatable_find_property"
+              version="1.4">
+        <doc xml:whitespace="preserve">Finds the #GParamSpec for @property_name
+or %NULL</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GParamSpec for the given property</doc>
+          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the animatable property to find</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_initial_state"
+              c:identifier="clutter_animatable_get_initial_state"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the current state of @property_name and sets @value with it</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the animatable property to retrieve</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue initialized to the type of the property to retrieve</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_final_state"
+              c:identifier="clutter_animatable_set_final_state"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the current state of @property_name to @value</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the animatable property to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the animatable property to set</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="AnimatableIface"
+            c:type="ClutterAnimatableIface"
+            glib:is-gtype-struct-for="Animatable"
+            version="1.0">
+      <doc xml:whitespace="preserve">Base interface for #GObject&lt;!-- --&gt;s that can be animated by a
+a #ClutterAnimation.</doc>
+      <field name="parent_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="animate_property">
+        <callback name="animate_property">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the value has been validated and can</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="animatable" transfer-ownership="none">
+              <type name="Animatable" c:type="ClutterAnimatable*"/>
+            </parameter>
+            <parameter name="animation" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #ClutterAnimation</doc>
+              <type name="Animation" c:type="ClutterAnimation*"/>
+            </parameter>
+            <parameter name="property_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the animated property</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="initial_value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the initial value of the animation interval</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="final_value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the final value of the animation interval</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="progress" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the progress factor</doc>
+              <type name="gdouble" c:type="gdouble"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">return location for the animation value</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="find_property">
+        <callback name="find_property">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GParamSpec for the given property</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </return-value>
+          <parameters>
+            <parameter name="animatable" transfer-ownership="none">
+              <type name="Animatable" c:type="ClutterAnimatable*"/>
+            </parameter>
+            <parameter name="property_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the animatable property to find</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_initial_state">
+        <callback name="get_initial_state">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="animatable" transfer-ownership="none">
+              <type name="Animatable" c:type="ClutterAnimatable*"/>
+            </parameter>
+            <parameter name="property_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the animatable property to retrieve</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GValue initialized to the type of the property to retrieve</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_final_state">
+        <callback name="set_final_state">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="animatable" transfer-ownership="none">
+              <type name="Animatable" c:type="ClutterAnimatable*"/>
+            </parameter>
+            <parameter name="property_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the animatable property to set</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the value of the animatable property to set</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="Animation"
+           c:symbol-prefix="animation"
+           c:type="ClutterAnimation"
+           version="1.0"
+           parent="GObject.Object"
+           glib:type-name="ClutterAnimation"
+           glib:get-type="clutter_animation_get_type"
+           glib:type-struct="AnimationClass">
+      <doc xml:whitespace="preserve">The #ClutterAnimation structure contains only private data and should
+be accessed using the provided functions.</doc>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_animation_new"
+                   version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterAnimation instance. You should set the
+#GObject to be animated using clutter_animation_set_object(),
+set the duration with clutter_animation_set_duration() and the
+easing mode using clutter_animation_set_mode().
+Use clutter_animation_bind() or clutter_animation_bind_interval()
+to define the properties to be animated. The interval and the
+animated properties can be updated at runtime.
+The clutter_actor_animate() and relative family of functions provide
+an easy way to animate a #ClutterActor and automatically manage the
+lifetime of a #ClutterAnimation instance, so you should consider using
+those functions instead of manually creating an animation.
+to release the associated resources</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #ClutterAnimation. Use g_object_unref()</doc>
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+      </constructor>
+      <method name="bind" c:identifier="clutter_animation_bind" version="1.0">
+        <doc xml:whitespace="preserve">Adds a single property with name @property_name to the
+animation @animation.  For more information about animations,
+see clutter_actor_animate().
+This method returns the animation primarily to make chained
+calls convenient in language bindings.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The animation itself.</doc>
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the property to control</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="final" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The final value of the property</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="bind_interval"
+              c:identifier="clutter_animation_bind_interval"
+              version="1.0">
+        <doc xml:whitespace="preserve">Binds @interval to the @property_name of the #GObject
+attached to @animation. The #ClutterAnimation will take
+ownership of the passed #ClutterInterval.  For more information
+about animations, see clutter_actor_animate().
+If you need to update the interval instance use
+clutter_animation_update_property() instead.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The animation itself.</doc>
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the property to control</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="interval" transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #ClutterInterval</doc>
+            <type name="Interval" c:type="ClutterInterval*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="completed"
+              c:identifier="clutter_animation_completed"
+              version="1.0">
+        <doc xml:whitespace="preserve">Emits the ::completed signal on @animation
+When using this function with a #ClutterAnimation created
+by the clutter_actor_animate() family of functions, @animation
+will be unreferenced and it will not be valid anymore,
+unless g_object_ref() was called before calling this function
+or unless a reference was taken inside a handler for the
+#ClutterAnimation::completed signal</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_alpha"
+              c:identifier="clutter_animation_get_alpha"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterAlpha used by @animation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the alpha object used by the animation</doc>
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+      </method>
+      <method name="get_duration"
+              c:identifier="clutter_animation_get_duration"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the duration of @animation, in milliseconds.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the duration of the animation</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_interval"
+              c:identifier="clutter_animation_get_interval"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterInterval associated to @property_name
+inside @animation.
+property with the same name was found. The returned interval is
+owned by the #ClutterAnimation and should not be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterInterval or %NULL if no</doc>
+          <type name="Interval" c:type="ClutterInterval*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_loop"
+              c:identifier="clutter_animation_get_loop"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves whether @animation is looping.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the animation is looping</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_mode"
+              c:identifier="clutter_animation_get_mode"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the animation mode of @animation, as set by
+clutter_animation_set_mode().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the mode for the animation</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <method name="get_object"
+              c:identifier="clutter_animation_get_object"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the #GObject attached to @animation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObject</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+      </method>
+      <method name="get_timeline"
+              c:identifier="clutter_animation_get_timeline"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterTimeline used by @animation</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the timeline used by the animation</doc>
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+      </method>
+      <method name="has_property"
+              c:identifier="clutter_animation_has_property"
+              version="1.0">
+        <doc xml:whitespace="preserve">Checks whether @animation is controlling @property_name.
+#ClutterAnimation, %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the property is animated by the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alpha"
+              c:identifier="clutter_animation_set_alpha"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets @alpha as the #ClutterAlpha used by @animation.
+If @alpha is not %NULL, the #ClutterAnimation will take ownership
+of the #ClutterAlpha instance.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterAlpha, or %NULL to unset the current #ClutterAlpha</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_duration"
+              c:identifier="clutter_animation_set_duration"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the duration of @animation in milliseconds.
+This function will set #ClutterAnimation:alpha and
+#ClutterAnimation:timeline if needed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the duration in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_loop"
+              c:identifier="clutter_animation_set_loop"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether @animation should loop over itself once finished.
+A looping #ClutterAnimation will not emit the #ClutterAnimation::completed
+signal when finished.
+This function will set #ClutterAnimation:alpha and
+#ClutterAnimation:timeline if needed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="loop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the animation should loop</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_mode"
+              c:identifier="clutter_animation_set_mode"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the animation @mode of @animation. The animation @mode is
+a logical id, either coming from the #ClutterAnimationMode enumeration
+or the return value of clutter_alpha_register_func().
+This function will also set #ClutterAnimation:alpha if needed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an animation mode logical id</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_object"
+              c:identifier="clutter_animation_set_object"
+              version="1.0">
+        <doc xml:whitespace="preserve">Attaches @animation to @object. The #ClutterAnimation will take a
+reference on @object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_timeline"
+              c:identifier="clutter_animation_set_timeline"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the #ClutterTimeline used by @animation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterTimeline, or %NULL to unset the current #ClutterTimeline</doc>
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unbind_property"
+              c:identifier="clutter_animation_unbind_property"
+              version="1.0">
+        <doc xml:whitespace="preserve">Removes @property_name from the list of animated properties.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="update"
+              c:identifier="clutter_animation_update"
+              version="1.0">
+        <doc xml:whitespace="preserve">Updates the @final value of the interval for @property_name</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The animation itself.</doc>
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="final" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The final value of the property</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="update_interval"
+              c:identifier="clutter_animation_update_interval"
+              version="1.0">
+        <doc xml:whitespace="preserve">Changes the @interval for @property_name. The #ClutterAnimation
+will take ownership of the passed #ClutterInterval.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="interval" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterInterval</doc>
+            <type name="Interval" c:type="ClutterInterval*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="alpha"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterAlpha used by the animation.</doc>
+        <type name="Alpha"/>
+      </property>
+      <property name="duration"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The duration of the animation, expressed in milliseconds.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="loop"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the animation should loop.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="mode"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The animation mode, either a value from #ClutterAnimationMode
+or a value returned by clutter_alpha_register_func(). The
+default value is %CLUTTER_LINEAR.</doc>
+        <type name="gulong"/>
+      </property>
+      <property name="object"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GObject to which the animation applies.</doc>
+        <type name="GObject.Object"/>
+      </property>
+      <property name="timeline"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterTimeline used by the animation.</doc>
+        <type name="Timeline"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="AnimationPrivate" c:type="ClutterAnimationPrivate*"/>
+      </field>
+      <glib:signal name="completed" version="1.0">
+        <doc xml:whitespace="preserve">The ::completed signal is emitted once the animation has
+been completed.
+The @animation instance is guaranteed to be valid for the entire
+duration of the signal emission chain.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="started" version="1.0">
+        <doc xml:whitespace="preserve">The ::started signal is emitted once the animation has been
+started</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="AnimationClass"
+            c:type="ClutterAnimationClass"
+            glib:is-gtype-struct-for="Animation"
+            version="1.0">
+      <doc xml:whitespace="preserve">The #ClutterAnimationClass structure contains only private data and
+should be accessed using the provided functions.</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="started">
+        <callback name="started">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="animation" transfer-ownership="none">
+              <type name="Animation" c:type="ClutterAnimation*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="completed">
+        <callback name="completed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="animation" transfer-ownership="none">
+              <type name="Animation" c:type="ClutterAnimation*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_reserved1" introspectable="0">
+        <callback name="_clutter_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved2" introspectable="0">
+        <callback name="_clutter_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved3" introspectable="0">
+        <callback name="_clutter_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved4" introspectable="0">
+        <callback name="_clutter_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved5" introspectable="0">
+        <callback name="_clutter_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved6" introspectable="0">
+        <callback name="_clutter_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved7" introspectable="0">
+        <callback name="_clutter_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved8" introspectable="0">
+        <callback name="_clutter_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="AnimationMode"
+                 version="1.0"
+                 glib:type-name="ClutterAnimationMode"
+                 glib:get-type="clutter_animation_mode_get_type"
+                 c:type="ClutterAnimationMode">
+      <doc xml:whitespace="preserve">The animation modes used by #ClutterAlpha and #ClutterAnimation. This
+enumeration can be expanded in later versions of Clutter. See the
+#ClutterAlpha documentation for a graph of all the animation modes.
+Every global alpha function registered using clutter_alpha_register_func()
+or clutter_alpha_register_closure() will have a logical id greater than
+%CLUTTER_ANIMATION_LAST.</doc>
+      <member name="custom_mode"
+              value="0"
+              c:identifier="CLUTTER_CUSTOM_MODE"
+              glib:nick="custom-mode"/>
+      <member name="linear"
+              value="1"
+              c:identifier="CLUTTER_LINEAR"
+              glib:nick="linear"/>
+      <member name="ease_in_quad"
+              value="2"
+              c:identifier="CLUTTER_EASE_IN_QUAD"
+              glib:nick="ease-in-quad"/>
+      <member name="ease_out_quad"
+              value="3"
+              c:identifier="CLUTTER_EASE_OUT_QUAD"
+              glib:nick="ease-out-quad"/>
+      <member name="ease_in_out_quad"
+              value="4"
+              c:identifier="CLUTTER_EASE_IN_OUT_QUAD"
+              glib:nick="ease-in-out-quad"/>
+      <member name="ease_in_cubic"
+              value="5"
+              c:identifier="CLUTTER_EASE_IN_CUBIC"
+              glib:nick="ease-in-cubic"/>
+      <member name="ease_out_cubic"
+              value="6"
+              c:identifier="CLUTTER_EASE_OUT_CUBIC"
+              glib:nick="ease-out-cubic"/>
+      <member name="ease_in_out_cubic"
+              value="7"
+              c:identifier="CLUTTER_EASE_IN_OUT_CUBIC"
+              glib:nick="ease-in-out-cubic"/>
+      <member name="ease_in_quart"
+              value="8"
+              c:identifier="CLUTTER_EASE_IN_QUART"
+              glib:nick="ease-in-quart"/>
+      <member name="ease_out_quart"
+              value="9"
+              c:identifier="CLUTTER_EASE_OUT_QUART"
+              glib:nick="ease-out-quart"/>
+      <member name="ease_in_out_quart"
+              value="10"
+              c:identifier="CLUTTER_EASE_IN_OUT_QUART"
+              glib:nick="ease-in-out-quart"/>
+      <member name="ease_in_quint"
+              value="11"
+              c:identifier="CLUTTER_EASE_IN_QUINT"
+              glib:nick="ease-in-quint"/>
+      <member name="ease_out_quint"
+              value="12"
+              c:identifier="CLUTTER_EASE_OUT_QUINT"
+              glib:nick="ease-out-quint"/>
+      <member name="ease_in_out_quint"
+              value="13"
+              c:identifier="CLUTTER_EASE_IN_OUT_QUINT"
+              glib:nick="ease-in-out-quint"/>
+      <member name="ease_in_sine"
+              value="14"
+              c:identifier="CLUTTER_EASE_IN_SINE"
+              glib:nick="ease-in-sine"/>
+      <member name="ease_out_sine"
+              value="15"
+              c:identifier="CLUTTER_EASE_OUT_SINE"
+              glib:nick="ease-out-sine"/>
+      <member name="ease_in_out_sine"
+              value="16"
+              c:identifier="CLUTTER_EASE_IN_OUT_SINE"
+              glib:nick="ease-in-out-sine"/>
+      <member name="ease_in_expo"
+              value="17"
+              c:identifier="CLUTTER_EASE_IN_EXPO"
+              glib:nick="ease-in-expo"/>
+      <member name="ease_out_expo"
+              value="18"
+              c:identifier="CLUTTER_EASE_OUT_EXPO"
+              glib:nick="ease-out-expo"/>
+      <member name="ease_in_out_expo"
+              value="19"
+              c:identifier="CLUTTER_EASE_IN_OUT_EXPO"
+              glib:nick="ease-in-out-expo"/>
+      <member name="ease_in_circ"
+              value="20"
+              c:identifier="CLUTTER_EASE_IN_CIRC"
+              glib:nick="ease-in-circ"/>
+      <member name="ease_out_circ"
+              value="21"
+              c:identifier="CLUTTER_EASE_OUT_CIRC"
+              glib:nick="ease-out-circ"/>
+      <member name="ease_in_out_circ"
+              value="22"
+              c:identifier="CLUTTER_EASE_IN_OUT_CIRC"
+              glib:nick="ease-in-out-circ"/>
+      <member name="ease_in_elastic"
+              value="23"
+              c:identifier="CLUTTER_EASE_IN_ELASTIC"
+              glib:nick="ease-in-elastic"/>
+      <member name="ease_out_elastic"
+              value="24"
+              c:identifier="CLUTTER_EASE_OUT_ELASTIC"
+              glib:nick="ease-out-elastic"/>
+      <member name="ease_in_out_elastic"
+              value="25"
+              c:identifier="CLUTTER_EASE_IN_OUT_ELASTIC"
+              glib:nick="ease-in-out-elastic"/>
+      <member name="ease_in_back"
+              value="26"
+              c:identifier="CLUTTER_EASE_IN_BACK"
+              glib:nick="ease-in-back"/>
+      <member name="ease_out_back"
+              value="27"
+              c:identifier="CLUTTER_EASE_OUT_BACK"
+              glib:nick="ease-out-back"/>
+      <member name="ease_in_out_back"
+              value="28"
+              c:identifier="CLUTTER_EASE_IN_OUT_BACK"
+              glib:nick="ease-in-out-back"/>
+      <member name="ease_in_bounce"
+              value="29"
+              c:identifier="CLUTTER_EASE_IN_BOUNCE"
+              glib:nick="ease-in-bounce"/>
+      <member name="ease_out_bounce"
+              value="30"
+              c:identifier="CLUTTER_EASE_OUT_BOUNCE"
+              glib:nick="ease-out-bounce"/>
+      <member name="ease_in_out_bounce"
+              value="31"
+              c:identifier="CLUTTER_EASE_IN_OUT_BOUNCE"
+              glib:nick="ease-in-out-bounce"/>
+      <member name="animation_last"
+              value="32"
+              c:identifier="CLUTTER_ANIMATION_LAST"
+              glib:nick="animation-last"/>
+    </enumeration>
+    <record name="AnimationPrivate"
+            c:type="ClutterAnimationPrivate"
+            disguised="1">
+    </record>
+    <class name="Animator"
+           c:symbol-prefix="animator"
+           c:type="ClutterAnimator"
+           version="1.2"
+           parent="GObject.Object"
+           glib:type-name="ClutterAnimator"
+           glib:get-type="clutter_animator_get_type"
+           glib:type-struct="AnimatorClass">
+      <doc xml:whitespace="preserve">The #ClutterAnimator structure contains only private data and
+should be accessed using the provided API</doc>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_animator_new"
+                   version="1.2">
+        <doc xml:whitespace="preserve">Creates a new #ClutterAnimator instance</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #ClutterAnimator.</doc>
+          <type name="Animator" c:type="ClutterAnimator*"/>
+        </return-value>
+      </constructor>
+      <method name="compute_value"
+              c:identifier="clutter_animator_compute_value"
+              version="1.2">
+        <doc xml:whitespace="preserve">Compute the value for a managed property at a given progress.
+If the property is an ease-in property, the current value of the property
+on the object will be used as the starting point for computation.
+an error occurs or the progress is before any of the keys) %FALSE is
+returned and the #GValue is left untouched</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the computation yields has a value, otherwise (when</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property on object to check</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a value between 0.0 and 1.0</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an initialized value to store the computed result</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_duration"
+              c:identifier="clutter_animator_get_duration"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the current duration of an animator</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the duration of the animation, in milliseconds</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_keys"
+              c:identifier="clutter_animator_get_keys"
+              version="1.2">
+        <doc xml:whitespace="preserve">Returns a list of pointers to opaque structures with accessor functions
+that describe the keys added to an animator.
+list of #ClutterAnimatorKey&lt;!-- --&gt;s; the contents of the list are owned
+by the #ClutterAnimator, but you should free the returned list when done,
+using g_list_free()</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="AnimatorKey"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GObject to search for, or %NULL for all objects</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a specific property name to query for, or %NULL for all properties</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a specific progress to search for, or a negative value for all progresses</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_timeline"
+              c:identifier="clutter_animator_get_timeline"
+              version="1.2">
+        <doc xml:whitespace="preserve">Get the timeline hooked up for driving the #ClutterAnimator</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterTimeline that drives the animator</doc>
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+      </method>
+      <method name="property_get_ease_in"
+              c:identifier="clutter_animator_property_get_ease_in"
+              version="1.2">
+        <doc xml:whitespace="preserve">Checks if a property value is to be eased into the animation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the property is eased in</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a property on object</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="property_get_interpolation"
+              c:identifier="clutter_animator_property_get_interpolation"
+              version="1.2">
+        <doc xml:whitespace="preserve">Get the interpolation used by animator for a property on a particular
+object.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a ClutterInterpolation value.</doc>
+          <type name="Interpolation" c:type="ClutterInterpolation"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a property on object</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="property_set_ease_in"
+              c:identifier="clutter_animator_property_set_ease_in"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets whether a property value is to be eased into the animation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a property on object</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="ease_in" transfer-ownership="none">
+            <doc xml:whitespace="preserve">we are going to be easing in this property</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="property_set_interpolation"
+              c:identifier="clutter_animator_property_set_interpolation"
+              version="1.2">
+        <doc xml:whitespace="preserve">Set the interpolation method to use, %CLUTTER_INTERPOLATION_LINEAR causes
+the values to linearly change between the values, and
+%CLUTTER_INTERPOLATION_CUBIC causes the values to smoothly change between
+the values.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a property on object</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="interpolation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterInterpolation to use</doc>
+            <type name="Interpolation" c:type="ClutterInterpolation"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_key"
+              c:identifier="clutter_animator_remove_key"
+              version="1.2">
+        <doc xml:whitespace="preserve">Removes all keys matching the conditions specificed in the arguments.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GObject to search for, or %NULL for all</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a specific property name to query for, or %NULL for all</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a specific progress to search for or a negative value for all</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set"
+              c:identifier="clutter_animator_set"
+              version="1.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds multiple keys to a #ClutterAnimator, specifying the value a given
+property should have at a given progress of the animation. The mode
+specified is the mode used when going to this key from the previous key of
+the @property_name
+If a given (object, property, progress) tuple already exist the mode and
+value will be replaced with the new values.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the property to specify a key for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="first_mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id of the alpha function to use</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="first_progress" transfer-ownership="none">
+            <doc xml:whitespace="preserve">at which stage of the animation this value applies; the range is a normalized floating point value between 0 and 1</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_duration"
+              c:identifier="clutter_animator_set_duration"
+              version="1.2">
+        <doc xml:whitespace="preserve">Runs the timeline of the #ClutterAnimator with a duration in msecs
+as specified.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="duration" transfer-ownership="none">
+            <doc xml:whitespace="preserve">milliseconds a run of the animator should last.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_key"
+              c:identifier="clutter_animator_set_key"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets a single key in the #ClutterAnimator for the @property_name of</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The animator instance</doc>
+          <type name="Animator" c:type="ClutterAnimator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the property to specify a key for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id of the alpha function to use</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the normalized range at which stage of the animation this value applies</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value property_name should have at progress.</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_timeline"
+              c:identifier="clutter_animator_set_timeline"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets an external timeline that will be used for driving the animation</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterTimeline</doc>
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start" c:identifier="clutter_animator_start" version="1.2">
+        <doc xml:whitespace="preserve">Start the ClutterAnimator, this is a thin wrapper that rewinds
+and starts the animators current timeline.
+the animator. The returned timeline is owned by the #ClutterAnimator
+and it should not be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterTimeline that drives</doc>
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+      </method>
+      <property name="duration"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The duration of the #ClutterTimeline used by the #ClutterAnimator
+to drive the animation</doc>
+        <type name="guint"/>
+      </property>
+      <property name="timeline"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterTimeline used by the #ClutterAnimator to drive the
+animation</doc>
+        <type name="Timeline"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="AnimatorPrivate" c:type="ClutterAnimatorPrivate*"/>
+      </field>
+    </class>
+    <record name="AnimatorClass"
+            c:type="ClutterAnimatorClass"
+            glib:is-gtype-struct-for="Animator"
+            version="1.2">
+      <doc xml:whitespace="preserve">The #ClutterAnimatorClass structure contains only private data</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_padding_dummy">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="16">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="AnimatorKey"
+            c:type="ClutterAnimatorKey"
+            version="1.2"
+            glib:type-name="ClutterAnimatorKey"
+            glib:get-type="clutter_animator_key_get_type"
+            c:symbol-prefix="animator_key">
+      <doc xml:whitespace="preserve">A key frame inside a #ClutterAnimator</doc>
+      <method name="get_mode"
+              c:identifier="clutter_animator_key_get_mode"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the mode of a #ClutterAnimator key, for the first key of a
+property for an object this represents the whether the animation is
+open ended and or curved for the remainding keys for the property it
+represents the easing mode.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the mode of a #ClutterAnimatorKey</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <method name="get_object"
+              c:identifier="clutter_animator_key_get_object"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the object a key applies to.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object an animator_key exist for.</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+      </method>
+      <method name="get_progress"
+              c:identifier="clutter_animator_key_get_progress"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the progress of an clutter_animator_key</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the progress defined for a #ClutterAnimator key.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_property_name"
+              c:identifier="clutter_animator_key_get_property_name"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the name of the property a key applies to.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the property an animator_key exist for.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_property_type"
+              c:identifier="clutter_animator_key_get_property_type"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the #GType of the property a key applies to
+You can use this type to initialize the #GValue to pass to
+clutter_animator_key_get_value()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType of the property</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="get_value"
+              c:identifier="clutter_animator_key_get_value"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves a copy of the value for a #ClutterAnimatorKey.
+The passed in #GValue needs to be already initialized for the value
+type of the key or to a type that allow transformation from the value
+type of the key.
+Use g_value_unset() when done.
+%FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the passed #GValue was successfully set, and</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue initialized with the correct type for the animator key</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="AnimatorPrivate"
+            c:type="ClutterAnimatorPrivate"
+            disguised="1">
+    </record>
+    <record name="AnyEvent" c:type="ClutterAnyEvent" version="0.2">
+      <doc xml:whitespace="preserve">Common members for a #ClutterEvent</doc>
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+    </record>
+    <constant name="Aogonek" value="417">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ApplicationLeft" value="269025104">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ApplicationRight" value="269025105">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_0" value="16778848">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_1" value="16778849">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_2" value="16778850">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_3" value="16778851">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_4" value="16778852">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_5" value="16778853">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_6" value="16778854">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_7" value="16778855">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_8" value="16778856">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_9" value="16778857">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_ain" value="1497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_alef" value="1479">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_alefmaksura" value="1513">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_beh" value="1480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_comma" value="1452">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_dad" value="1494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_dal" value="1487">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_damma" value="1519">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_dammatan" value="1516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_ddal" value="16778888">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_farsi_yeh" value="16778956">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_fatha" value="1518">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_fathatan" value="1515">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_feh" value="1505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_fullstop" value="16778964">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_gaf" value="16778927">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_ghain" value="1498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_ha" value="1511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_hah" value="1485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_hamza" value="1473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_hamza_above" value="16778836">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_hamza_below" value="16778837">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_hamzaonalef" value="1475">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_hamzaonwaw" value="1476">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_hamzaonyeh" value="1478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_hamzaunderalef" value="1477">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_heh" value="1511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_heh_doachashmee" value="16778942">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_heh_goal" value="16778945">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_jeem" value="1484">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_jeh" value="16778904">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_kaf" value="1507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_kasra" value="1520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_kasratan" value="1517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_keheh" value="16778921">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_khah" value="1486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_lam" value="1508">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_madda_above" value="16778835">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_maddaonalef" value="1474">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_meem" value="1509">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_noon" value="1510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_noon_ghunna" value="16778938">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_peh" value="16778878">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_percent" value="16778858">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_qaf" value="1506">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_question_mark" value="1471">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_ra" value="1489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_rreh" value="16778897">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_sad" value="1493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_seen" value="1491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_semicolon" value="1467">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_shadda" value="1521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_sheen" value="1492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_sukun" value="1522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_superscript_alef" value="16778864">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_tah" value="1495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_tatweel" value="1504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_tcheh" value="16778886">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_teh" value="1482">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_tehmarbuta" value="1481">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_thal" value="1488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_theh" value="1483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_tteh" value="16778873">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_veh" value="16778916">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_waw" value="1512">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_yeh" value="1514">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_yeh_baree" value="16778962">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_zah" value="1496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_zain" value="1490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Aring" value="197">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_AT" value="16778552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_AYB" value="16778545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_BEN" value="16778546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_CHA" value="16778569">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_DA" value="16778548">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_DZA" value="16778561">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_E" value="16778551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_FE" value="16778582">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_GHAT" value="16778562">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_GIM" value="16778547">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_HI" value="16778565">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_HO" value="16778560">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_INI" value="16778555">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_JE" value="16778571">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_KE" value="16778580">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_KEN" value="16778559">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_KHE" value="16778557">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_LYUN" value="16778556">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_MEN" value="16778564">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_NU" value="16778566">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_O" value="16778581">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_PE" value="16778570">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_PYUR" value="16778579">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_RA" value="16778572">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_RE" value="16778576">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_SE" value="16778573">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_SHA" value="16778567">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_TCHE" value="16778563">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_TO" value="16778553">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_TSA" value="16778558">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_TSO" value="16778577">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_TYUN" value="16778575">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_VEV" value="16778574">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_VO" value="16778568">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_VYUN" value="16778578">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_YECH" value="16778549">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_ZA" value="16778550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_ZHE" value="16778554">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_accent" value="16778587">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_amanak" value="16778588">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_apostrophe" value="16778586">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_at" value="16778600">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_ayb" value="16778593">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_ben" value="16778594">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_but" value="16778589">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_cha" value="16778617">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_da" value="16778596">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_dza" value="16778609">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_e" value="16778599">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_exclam" value="16778588">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_fe" value="16778630">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_full_stop" value="16778633">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_ghat" value="16778610">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_gim" value="16778595">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_hi" value="16778613">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_ho" value="16778608">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_hyphen" value="16778634">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_ini" value="16778603">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_je" value="16778619">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_ke" value="16778628">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_ken" value="16778607">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_khe" value="16778605">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_ligature_ew" value="16778631">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_lyun" value="16778604">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_men" value="16778612">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_nu" value="16778614">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_o" value="16778629">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_paruyk" value="16778590">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_pe" value="16778618">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_pyur" value="16778627">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_question" value="16778590">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_ra" value="16778620">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_re" value="16778624">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_se" value="16778621">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_separation_mark" value="16778589">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_sha" value="16778615">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_shesht" value="16778587">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_tche" value="16778611">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_to" value="16778601">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_tsa" value="16778606">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_tso" value="16778625">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_tyun" value="16778623">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_verjaket" value="16778633">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_vev" value="16778622">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_vo" value="16778616">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_vyun" value="16778626">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_yech" value="16778597">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_yentamna" value="16778634">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_za" value="16778598">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_zhe" value="16778602">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Atilde" value="195">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudibleBell_Enable" value="65146">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioCycleTrack" value="269025179">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioForward" value="269025175">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioLowerVolume" value="269025041">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioMedia" value="269025074">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioMute" value="269025042">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioNext" value="269025047">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioPause" value="269025073">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioPlay" value="269025044">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioPrev" value="269025046">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioRaiseVolume" value="269025043">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioRandomPlay" value="269025177">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioRecord" value="269025052">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioRepeat" value="269025176">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioRewind" value="269025086">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioStop" value="269025045">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Away" value="269025165">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="B" value="66">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Babovedot" value="16784898">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Back" value="269025062">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="BackForward" value="269025087">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="BackSpace" value="65288">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Backend"
+           c:symbol-prefix="backend"
+           c:type="ClutterBackend"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="ClutterBackend"
+           glib:get-type="clutter_backend_get_type"
+           glib:type-struct="BackendClass">
+      <virtual-method name="add_options">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="copy_event_data">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent*"/>
+          </parameter>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="create_context" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="create_stage" introspectable="0" throws="1">
+        <return-value>
+          <type name="StageWindow" c:type="ClutterStageWindow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="wrapper" transfer-ownership="none">
+            <type name="Stage" c:type="ClutterStage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="ensure_context">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stage" transfer-ownership="none">
+            <type name="Stage" c:type="ClutterStage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="free_event_data">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_device_manager" introspectable="0">
+        <return-value>
+          <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_features">
+        <return-value transfer-ownership="none">
+          <type name="FeatureFlags" c:type="ClutterFeatureFlags"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="init_events">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="init_features">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="post_parse" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="pre_parse" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="redraw">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stage" transfer-ownership="none">
+            <type name="Stage" c:type="ClutterStage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_double_click_distance"
+              c:identifier="clutter_backend_get_double_click_distance"
+              version="0.4"
+              deprecated="Use #ClutterSettings:double-click-distance instead"
+              deprecated-version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the distance used to verify a double click event</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a distance, in pixels.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_double_click_time"
+              c:identifier="clutter_backend_get_double_click_time"
+              version="0.4"
+              deprecated="Use #ClutterSettings:double-click-time instead"
+              deprecated-version="1.4">
+        <doc xml:whitespace="preserve">Gets the maximum time between two button press events, as set
+by clutter_backend_set_double_click_time().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a time in milliseconds</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_font_name"
+              c:identifier="clutter_backend_get_font_name"
+              version="1.0"
+              deprecated="Use #ClutterSettings:font-name instead"
+              deprecated-version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the default font name as set by
+clutter_backend_set_font_name().
+owned by the #ClutterBackend and should never be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the font name for the backend. The returned string is</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_font_options"
+              c:identifier="clutter_backend_get_font_options"
+              version="0.8">
+        <doc xml:whitespace="preserve">Retrieves the font options for @backend.
+The returned #cairo_font_options_t is owned by the backend and should
+not be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the font options of the #ClutterBackend.</doc>
+          <type name="cairo.FontOptions" c:type="cairo_font_options_t*"/>
+        </return-value>
+      </method>
+      <method name="get_resolution"
+              c:identifier="clutter_backend_get_resolution"
+              version="0.4">
+        <doc xml:whitespace="preserve">Gets the resolution for font handling on the screen.
+The resolution is a scale factor between points specified in a
+#PangoFontDescription and cairo units. The default value is 96.0,
+meaning that a 10 point font will be 13 units
+high (10 * 96. / 72. = 13.3).
+Clutter will set the resolution using the current backend when
+initializing; the resolution is also stored in the
+#ClutterSettings:font-dpi property.
+has been set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current resolution, or -1 if no resolution</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_double_click_distance"
+              c:identifier="clutter_backend_set_double_click_distance"
+              version="0.4"
+              deprecated="Use #ClutterSettings:double-click-distance instead"
+              deprecated-version="1.4">
+        <doc xml:whitespace="preserve">Sets the maximum distance used to verify a double click event.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="distance" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a distance, in pixels</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_double_click_time"
+              c:identifier="clutter_backend_set_double_click_time"
+              version="0.4"
+              deprecated="Use #ClutterSettings:double-click-time instead"
+              deprecated-version="1.4">
+        <doc xml:whitespace="preserve">Sets the maximum time between two button press events, used to
+verify whether it's a double click event or not.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">milliseconds between two button press events</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_font_name"
+              c:identifier="clutter_backend_set_font_name"
+              version="1.0"
+              deprecated="Use #ClutterSettings:font-name instead"
+              deprecated-version="1.4">
+        <doc xml:whitespace="preserve">Sets the default font to be used by Clutter. The @font_name string
+must either be %NULL, which means that the font name from the
+default #ClutterBackend will be used; or be something that can
+be parsed by the pango_font_description_from_string() function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the font</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_font_options"
+              c:identifier="clutter_backend_set_font_options"
+              version="0.8">
+        <doc xml:whitespace="preserve">Sets the new font options for @backend. The #ClutterBackend will
+copy the #cairo_font_options_t.
+If @options is %NULL, the first following call to
+clutter_backend_get_font_options() will return the default font
+options for @backend.
+This function is intended for actors creating a Pango layout
+using the PangoCairo API.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="options" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Cairo font options for the backend, or %NULL</doc>
+            <type name="cairo.FontOptions" c:type="cairo_font_options_t*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_resolution"
+              c:identifier="clutter_backend_set_resolution"
+              version="0.4"
+              deprecated="Use #ClutterSettings:font-dpi instead">
+        <doc xml:whitespace="preserve">Sets the resolution for font handling on the screen. This is a
+scale factor between points specified in a #PangoFontDescription
+and cairo units. The default value is 96, meaning that a 10 point
+font will be 13 units high. (10 * 96. / 72. = 13.3).
+Applications should never need to call this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dpi" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the resolution in "dots per inch" (Physical inches aren't actually involved; the terminology is conventional).</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="BackendPrivate" c:type="ClutterBackendPrivate*"/>
+      </field>
+      <glib:signal name="font-changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="resolution-changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="settings-changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="BackendClass"
+            c:type="ClutterBackendClass"
+            glib:is-gtype-struct-for="Backend">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="pre_parse">
+        <callback name="pre_parse" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="post_parse">
+        <callback name="post_parse" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_stage" introspectable="0">
+        <callback name="create_stage" introspectable="0" throws="1">
+          <return-value>
+            <type name="StageWindow" c:type="ClutterStageWindow*"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+            <parameter name="wrapper" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="init_events">
+        <callback name="init_events">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="init_features">
+        <callback name="init_features">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_options">
+        <callback name="add_options">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+            <parameter name="group" transfer-ownership="none">
+              <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_features">
+        <callback name="get_features">
+          <return-value transfer-ownership="none">
+            <type name="FeatureFlags" c:type="ClutterFeatureFlags"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="redraw">
+        <callback name="redraw">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_context">
+        <callback name="create_context" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="ensure_context">
+        <callback name="ensure_context">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_device_manager" introspectable="0">
+        <callback name="get_device_manager" introspectable="0">
+          <return-value>
+            <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="copy_event_data">
+        <callback name="copy_event_data">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+            <parameter name="src" transfer-ownership="none">
+              <type name="Event" c:type="ClutterEvent*"/>
+            </parameter>
+            <parameter name="dest" transfer-ownership="none">
+              <type name="Event" c:type="ClutterEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="free_event_data">
+        <callback name="free_event_data">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Event" c:type="ClutterEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="resolution_changed">
+        <callback name="resolution_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="font_changed">
+        <callback name="font_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="settings_changed">
+        <callback name="settings_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="backend" transfer-ownership="none">
+              <type name="Backend" c:type="ClutterBackend*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="BackendPrivate" c:type="ClutterBackendPrivate" disguised="1">
+    </record>
+    <constant name="Battery" value="269025171">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Begin" value="65368">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Behaviour"
+           c:symbol-prefix="behaviour"
+           c:type="ClutterBehaviour"
+           version="0.2"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="ClutterBehaviour"
+           glib:get-type="clutter_behaviour_get_type"
+           glib:type-struct="BehaviourClass">
+      <doc xml:whitespace="preserve">#ClutterBehaviour-struct contains only private data and should
+be accessed with the functions below.</doc>
+      <implements name="Scriptable"/>
+      <virtual-method name="alpha_notify">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha_value" transfer-ownership="none">
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="actors_foreach"
+              c:identifier="clutter_behaviour_actors_foreach"
+              version="0.2">
+        <doc xml:whitespace="preserve">Calls @func for every actor driven by @behave.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">a function called for each actor</doc>
+            <type name="BehaviourForeachFunc"
+                  c:type="ClutterBehaviourForeachFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">optional data to be passed to the function, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="apply"
+              c:identifier="clutter_behaviour_apply"
+              version="0.2">
+        <doc xml:whitespace="preserve">Applies @behave to @actor.  This function adds a reference on
+the actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_actors"
+              c:identifier="clutter_behaviour_get_actors"
+              version="0.2">
+        <doc xml:whitespace="preserve">Retrieves all the actors to which @behave applies. It is not recommended
+for derived classes to use this in there alpha notify method but use 
+#clutter_behaviour_actors_foreach as it avoids alot of needless allocations.
+actors. You should free the returned list with g_slist_free() when
+finished using it.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a list of</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Actor"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_alpha"
+              c:identifier="clutter_behaviour_get_alpha"
+              version="0.2">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterAlpha object bound to @behave.
+object has been bound to this behaviour.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterAlpha object, or %NULL if no alpha</doc>
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+      </method>
+      <method name="get_n_actors"
+              c:identifier="clutter_behaviour_get_n_actors"
+              version="0.2">
+        <doc xml:whitespace="preserve">Gets the number of actors this behaviour is applied too.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of applied actors</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_nth_actor"
+              c:identifier="clutter_behaviour_get_nth_actor"
+              version="0.2">
+        <doc xml:whitespace="preserve">Gets an actor the behaviour was applied to referenced by index num.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A Clutter actor or NULL if @index_ is invalid.</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of an actor this behaviour is applied too.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_applied"
+              c:identifier="clutter_behaviour_is_applied"
+              version="0.4">
+        <doc xml:whitespace="preserve">Check if @behave applied to  @actor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if actor has behaviour. FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="clutter_behaviour_remove"
+              version="0.2">
+        <doc xml:whitespace="preserve">Removes @actor from the list of #ClutterActor&lt;!-- --&gt;s to which</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_all"
+              c:identifier="clutter_behaviour_remove_all"
+              version="0.4">
+        <doc xml:whitespace="preserve">Removes every actor from the list that @behave holds.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_alpha"
+              c:identifier="clutter_behaviour_set_alpha"
+              version="0.2">
+        <doc xml:whitespace="preserve">Binds @alpha to a #ClutterBehaviour. The #ClutterAlpha object
+used by #ClutterAlpha a new value of the alpha parameter is
+computed by the alpha function; the value should be used by
+the #ClutterBehaviour to update one or more properties of the
+actors to which the behaviour applies.
+If @alpha is not %NULL, the #ClutterBehaviour will take ownership
+of the #ClutterAlpha instance.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterAlpha or %NULL to unset a previously set alpha</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="alpha"
+                version="0.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterAlpha object used to drive this behaviour. A #ClutterAlpha
+object binds a #ClutterTimeline and a function which computes a value
+(the "alpha") depending on the time. Each time the alpha value changes
+the alpha-notify virtual function is called.</doc>
+        <type name="Alpha"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="BehaviourPrivate" c:type="ClutterBehaviourPrivate*"/>
+      </field>
+      <glib:signal name="applied" version="0.4">
+        <doc xml:whitespace="preserve">The ::apply signal is emitted each time the behaviour is applied
+to an actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the actor the behaviour was applied to.</doc>
+            <type name="Actor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="removed" version="0.4">
+        <doc xml:whitespace="preserve">The ::removed signal is emitted each time a behaviour is not applied
+to an actor anymore.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the removed actor</doc>
+            <type name="Actor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="BehaviourClass"
+            c:type="ClutterBehaviourClass"
+            glib:is-gtype-struct-for="Behaviour">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="alpha_notify">
+        <callback name="alpha_notify">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="behave" transfer-ownership="none">
+              <type name="Behaviour" c:type="ClutterBehaviour*"/>
+            </parameter>
+            <parameter name="alpha_value" transfer-ownership="none">
+              <type name="gdouble" c:type="gdouble"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="applied">
+        <callback name="applied">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="behave" transfer-ownership="none">
+              <type name="Behaviour" c:type="ClutterBehaviour*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="removed">
+        <callback name="removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="behave" transfer-ownership="none">
+              <type name="Behaviour" c:type="ClutterBehaviour*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_behaviour1" introspectable="0">
+        <callback name="_clutter_behaviour1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_behaviour2" introspectable="0">
+        <callback name="_clutter_behaviour2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_behaviour3" introspectable="0">
+        <callback name="_clutter_behaviour3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_behaviour4" introspectable="0">
+        <callback name="_clutter_behaviour4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_behaviour5" introspectable="0">
+        <callback name="_clutter_behaviour5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_behaviour6" introspectable="0">
+        <callback name="_clutter_behaviour6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="BehaviourDepth"
+           c:symbol-prefix="behaviour_depth"
+           c:type="ClutterBehaviourDepth"
+           version="0.2"
+           parent="Behaviour"
+           glib:type-name="ClutterBehaviourDepth"
+           glib:get-type="clutter_behaviour_depth_get_type"
+           glib:type-struct="BehaviourDepthClass">
+      <doc xml:whitespace="preserve">The #ClutterBehaviourDepth structure contains only private data
+and should be accessed using the provided API</doc>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_behaviour_depth_new"
+                   version="0.4">
+        <doc xml:whitespace="preserve">Creates a new #ClutterBehaviourDepth which can be used to control
+the ClutterActor:depth property of a set of #ClutterActor&lt;!-- --&gt;s.
+If @alpha is not %NULL, the #ClutterBehaviour will take ownership
+of the #ClutterAlpha instance. In the case when @alpha is %NULL,
+it can be set later with clutter_behaviour_set_alpha().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created behaviour</doc>
+          <type name="Behaviour" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterAlpha instance, or %NULL</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="depth_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">initial value of the depth</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="depth_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">final value of the depth</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_bounds"
+              c:identifier="clutter_behaviour_depth_get_bounds"
+              version="0.6">
+        <doc xml:whitespace="preserve">Gets the boundaries of the @behaviour</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="depth_start"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the initial depth value, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="depth_end"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the final depth value, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_bounds"
+              c:identifier="clutter_behaviour_depth_set_bounds"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the boundaries of the @behaviour.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="depth_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">initial value of the depth</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="depth_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">final value of the depth</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="depth-end"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">End depth level to apply to the actors.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="depth-start"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Start depth level to apply to the actors.</doc>
+        <type name="gint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Behaviour" c:type="ClutterBehaviour"/>
+      </field>
+      <field name="priv">
+        <type name="BehaviourDepthPrivate"
+              c:type="ClutterBehaviourDepthPrivate*"/>
+      </field>
+    </class>
+    <record name="BehaviourDepthClass"
+            c:type="ClutterBehaviourDepthClass"
+            glib:is-gtype-struct-for="BehaviourDepth"
+            version="0.2">
+      <doc xml:whitespace="preserve">The #ClutterBehaviourDepthClass structure contains only private data</doc>
+      <field name="parent_class">
+        <type name="BehaviourClass" c:type="ClutterBehaviourClass"/>
+      </field>
+    </record>
+    <record name="BehaviourDepthPrivate"
+            c:type="ClutterBehaviourDepthPrivate"
+            disguised="1">
+    </record>
+    <class name="BehaviourEllipse"
+           c:symbol-prefix="behaviour_ellipse"
+           c:type="ClutterBehaviourEllipse"
+           version="0.4"
+           parent="Behaviour"
+           glib:type-name="ClutterBehaviourEllipse"
+           glib:get-type="clutter_behaviour_ellipse_get_type"
+           glib:type-struct="BehaviourEllipseClass">
+      <doc xml:whitespace="preserve">The #ClutterBehaviourEllipse struct contains only private data
+and should be accessed using the provided API</doc>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_behaviour_ellipse_new"
+                   version="0.4">
+        <doc xml:whitespace="preserve">Creates a behaviour that drives actors along an elliptical path with
+given center, width and height; the movement starts at @start
+degrees (with 0 corresponding to 12 o'clock) and ends at @end
+degrees. Angles greated than 360 degrees get clamped to the canonical
+interval &lt;0, 360); if @start is equal to @end, the behaviour will
+rotate by exacly 360 degrees.
+If @alpha is not %NULL, the #ClutterBehaviour will take ownership
+of the #ClutterAlpha instance. In the case when @alpha is %NULL,
+it can be set later with clutter_behaviour_set_alpha().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #ClutterBehaviourEllipse</doc>
+          <type name="Behaviour" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterAlpha instance, or %NULL</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x coordinace of the center</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y coordiance of the center</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width of the ellipse</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height of the ellipse</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#ClutterRotateDirection of rotation</doc>
+            <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">angle in degrees at which movement starts, between 0 and 360</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">angle in degrees at which movement ends, between 0 and 360</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_angle_end"
+              c:identifier="clutter_behaviour_ellipse_get_angle_end"
+              version="0.4">
+        <doc xml:whitespace="preserve">Gets the at which movements ends.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">angle in degrees</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_angle_start"
+              c:identifier="clutter_behaviour_ellipse_get_angle_start"
+              version="0.6">
+        <doc xml:whitespace="preserve">Gets the angle at which movements starts.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">angle in degrees</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_angle_tilt"
+              c:identifier="clutter_behaviour_ellipse_get_angle_tilt"
+              version="0.4">
+        <doc xml:whitespace="preserve">Gets the tilt of the ellipse around the center in the given axis.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">angle in degrees.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterRotateAxis</doc>
+            <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_center"
+              c:identifier="clutter_behaviour_ellipse_get_center"
+              version="0.4">
+        <doc xml:whitespace="preserve">Gets the center of the elliptical path path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the X coordinate of the center, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the Y coordinate of the center, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_direction"
+              c:identifier="clutter_behaviour_ellipse_get_direction"
+              version="0.4">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterRotateDirection used by the ellipse behaviour.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the rotation direction</doc>
+          <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+        </return-value>
+      </method>
+      <method name="get_height"
+              c:identifier="clutter_behaviour_ellipse_get_height"
+              version="0.4">
+        <doc xml:whitespace="preserve">Gets the height of the elliptical path.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the height of the path</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_tilt"
+              c:identifier="clutter_behaviour_ellipse_get_tilt"
+              version="0.4">
+        <doc xml:whitespace="preserve">Gets the tilt of the ellipse around the center in Y axis.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle_tilt_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for tilt angle on the X axis, or %NULL.</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="angle_tilt_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for tilt angle on the Y axis, or %NULL.</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="angle_tilt_z"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for tilt angle on the Z axis, or %NULL.</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_width"
+              c:identifier="clutter_behaviour_ellipse_get_width"
+              version="0.4">
+        <doc xml:whitespace="preserve">Gets the width of the elliptical path.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width of the path</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_angle_end"
+              c:identifier="clutter_behaviour_ellipse_set_angle_end"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the angle at which movement ends; angles &gt;= 360 degress get clamped
+to the canonical interval &lt;0, 360).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">angle at which movement ends in degrees, between 0 and 360.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_angle_start"
+              c:identifier="clutter_behaviour_ellipse_set_angle_start"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the angle at which movement starts; angles &gt;= 360 degress get clamped
+to the canonical interval &lt;0, 360).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">angle at which movement starts in degrees, between 0 and 360.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_angle_tilt"
+              c:identifier="clutter_behaviour_ellipse_set_angle_tilt"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the angle at which the ellipse should be tilted around it's center.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterRotateAxis</doc>
+            <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+          </parameter>
+          <parameter name="angle_tilt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tilt of the elipse around the center in the given axis in degrees.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_center"
+              c:identifier="clutter_behaviour_ellipse_set_center"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the center of the elliptical path to the point represented by knot.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x coordinace of centre</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y coordinace of centre</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_direction"
+              c:identifier="clutter_behaviour_ellipse_set_direction"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the rotation direction used by the ellipse behaviour.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the rotation direction</doc>
+            <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_height"
+              c:identifier="clutter_behaviour_ellipse_set_height"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the height of the elliptical path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height of the ellipse</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tilt"
+              c:identifier="clutter_behaviour_ellipse_set_tilt"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the angles at which the ellipse should be tilted around it's center.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle_tilt_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tilt of the elipse around the center in X axis in degrees.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="angle_tilt_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tilt of the elipse around the center in Y axis in degrees.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="angle_tilt_z" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tilt of the elipse around the center in Z axis in degrees.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_width"
+              c:identifier="clutter_behaviour_ellipse_set_width"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the width of the elliptical path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width of the ellipse</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="angle-end"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The final angle to where the rotation should end.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="angle-start"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The initial angle from where the rotation should start.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="angle-tilt-x"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The tilt angle for the rotation around center in X axis</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="angle-tilt-y"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The tilt angle for the rotation around center in Y axis</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="angle-tilt-z"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The tilt angle for the rotation on the Z axis</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="center"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The center of the ellipse.</doc>
+        <type name="Knot"/>
+      </property>
+      <property name="direction"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The direction of the rotation.</doc>
+        <type name="RotateDirection"/>
+      </property>
+      <property name="height"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Height of the ellipse, in pixels</doc>
+        <type name="gint"/>
+      </property>
+      <property name="width"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Width of the ellipse, in pixels</doc>
+        <type name="gint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Behaviour" c:type="ClutterBehaviour"/>
+      </field>
+      <field name="priv">
+        <type name="BehaviourEllipsePrivate"
+              c:type="ClutterBehaviourEllipsePrivate*"/>
+      </field>
+    </class>
+    <record name="BehaviourEllipseClass"
+            c:type="ClutterBehaviourEllipseClass"
+            glib:is-gtype-struct-for="BehaviourEllipse"
+            version="0.4">
+      <doc xml:whitespace="preserve">The #ClutterBehaviourEllipseClass struct contains only private data</doc>
+      <field name="parent_class">
+        <type name="BehaviourClass" c:type="ClutterBehaviourClass"/>
+      </field>
+    </record>
+    <record name="BehaviourEllipsePrivate"
+            c:type="ClutterBehaviourEllipsePrivate"
+            disguised="1">
+    </record>
+    <callback name="BehaviourForeachFunc"
+              c:type="ClutterBehaviourForeachFunc"
+              version="0.2">
+      <doc xml:whitespace="preserve">This function is passed to clutter_behaviour_foreach_actor() and
+will be called for each actor driven by @behaviour.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="behaviour" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterBehaviour</doc>
+          <type name="Behaviour" c:type="ClutterBehaviour*"/>
+        </parameter>
+        <parameter name="actor" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an actor driven by @behaviour</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">optional data passed to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="BehaviourOpacity"
+           c:symbol-prefix="behaviour_opacity"
+           c:type="ClutterBehaviourOpacity"
+           version="0.2"
+           parent="Behaviour"
+           glib:type-name="ClutterBehaviourOpacity"
+           glib:get-type="clutter_behaviour_opacity_get_type"
+           glib:type-struct="BehaviourOpacityClass">
+      <doc xml:whitespace="preserve">The #ClutterBehaviourOpacity structure contains only private data and
+should be accessed using the provided API</doc>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_behaviour_opacity_new"
+                   version="0.2">
+        <doc xml:whitespace="preserve">Creates a new #ClutterBehaviourOpacity object, driven by @alpha
+which controls the opacity property of every actor, making it
+change in the interval between @opacity_start and @opacity_end.
+If @alpha is not %NULL, the #ClutterBehaviour will take ownership
+of the #ClutterAlpha instance. In the case when @alpha is %NULL,
+it can be set later with clutter_behaviour_set_alpha().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #ClutterBehaviourOpacity</doc>
+          <type name="Behaviour" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterAlpha instance, or %NULL</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="opacity_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">minimum level of opacity</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="opacity_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">maximum level of opacity</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_bounds"
+              c:identifier="clutter_behaviour_opacity_get_bounds"
+              version="0.6">
+        <doc xml:whitespace="preserve">Gets the initial and final levels of the opacity applied by @behaviour
+on each actor it controls.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="opacity_start"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the minimum level of opacity, or %NULL</doc>
+            <type name="guint8" c:type="guint8*"/>
+          </parameter>
+          <parameter name="opacity_end"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the maximum level of opacity, or %NULL</doc>
+            <type name="guint8" c:type="guint8*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_bounds"
+              c:identifier="clutter_behaviour_opacity_set_bounds"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the initial and final levels of the opacity applied by @behaviour
+on each actor it controls.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="opacity_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">minimum level of opacity</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="opacity_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">maximum level of opacity</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="opacity-end"
+                version="0.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Final opacity level of the behaviour.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="opacity-start"
+                version="0.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Initial opacity level of the behaviour.</doc>
+        <type name="guint"/>
+      </property>
+      <field name="parent">
+        <type name="Behaviour" c:type="ClutterBehaviour"/>
+      </field>
+      <field name="priv">
+        <type name="BehaviourOpacityPrivate"
+              c:type="ClutterBehaviourOpacityPrivate*"/>
+      </field>
+    </class>
+    <record name="BehaviourOpacityClass"
+            c:type="ClutterBehaviourOpacityClass"
+            glib:is-gtype-struct-for="BehaviourOpacity"
+            version="0.2">
+      <doc xml:whitespace="preserve">The #ClutterBehaviourOpacityClass structure contains only private data</doc>
+      <field name="parent_class">
+        <type name="BehaviourClass" c:type="ClutterBehaviourClass"/>
+      </field>
+    </record>
+    <record name="BehaviourOpacityPrivate"
+            c:type="ClutterBehaviourOpacityPrivate"
+            disguised="1">
+    </record>
+    <class name="BehaviourPath"
+           c:symbol-prefix="behaviour_path"
+           c:type="ClutterBehaviourPath"
+           version="0.2"
+           parent="Behaviour"
+           glib:type-name="ClutterBehaviourPath"
+           glib:get-type="clutter_behaviour_path_get_type"
+           glib:type-struct="BehaviourPathClass">
+      <doc xml:whitespace="preserve">The #ClutterBehaviourPath structure contains only private data
+and should be accessed using the provided API</doc>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_behaviour_path_new"
+                   version="0.2">
+        <doc xml:whitespace="preserve">Creates a new path behaviour. You can use this behaviour to drive
+actors along the nodes of a path, described by @path.
+This will claim the floating reference on the #ClutterPath so you
+do not need to unref if it.
+If @alpha is not %NULL, the #ClutterBehaviour will take ownership
+of the #ClutterAlpha instance. In the case when @alpha is %NULL,
+it can be set later with clutter_behaviour_set_alpha().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #ClutterBehaviour</doc>
+          <type name="Behaviour" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterAlpha instance, or %NULL</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterPath or %NULL for an empty path</doc>
+            <type name="Path" c:type="ClutterPath*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_description"
+                   c:identifier="clutter_behaviour_path_new_with_description"
+                   version="1.0">
+        <doc xml:whitespace="preserve">Creates a new path behaviour using the path described by @desc. See
+clutter_path_add_string() for a description of the format.
+If @alpha is not %NULL, the #ClutterBehaviour will take ownership
+of the #ClutterAlpha instance. In the case when @alpha is %NULL,
+it can be set later with clutter_behaviour_set_alpha().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #ClutterBehaviour</doc>
+          <type name="Behaviour" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterAlpha instance, or %NULL</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="desc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string description of the path</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_knots"
+                   c:identifier="clutter_behaviour_path_new_with_knots"
+                   version="1.0">
+        <doc xml:whitespace="preserve">Creates a new path behaviour that will make the actors visit all of
+the given knots in order with straight lines in between.
+A path will be created where the first knot is used in a
+%CLUTTER_PATH_MOVE_TO and the subsequent knots are used in
+%CLUTTER_PATH_LINE_TO&lt;!-- --&gt;s.
+If @alpha is not %NULL, the #ClutterBehaviour will take ownership
+of the #ClutterAlpha instance. In the case when @alpha is %NULL,
+it can be set later with clutter_behaviour_set_alpha().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #ClutterBehaviour</doc>
+          <type name="Behaviour" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterAlpha instance, or %NULL</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="knots" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of #ClutterKnot&lt;!-- --&gt;s</doc>
+            <type name="Knot" c:type="ClutterKnot*"/>
+          </parameter>
+          <parameter name="n_knots" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of entries in @knots</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_path"
+              c:identifier="clutter_behaviour_path_get_path"
+              version="1.0">
+        <doc xml:whitespace="preserve">Get the current path of the behaviour</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the path</doc>
+          <type name="Path" c:type="ClutterPath*"/>
+        </return-value>
+      </method>
+      <method name="set_path"
+              c:identifier="clutter_behaviour_path_set_path"
+              version="1.0">
+        <doc xml:whitespace="preserve">Change the path that the actors will follow. This will take the
+floating reference on the #ClutterPath so you do not need to unref
+it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new path to follow</doc>
+            <type name="Path" c:type="ClutterPath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="path" writable="1" transfer-ownership="none">
+        <type name="Path"/>
+      </property>
+      <field name="parent">
+        <type name="Behaviour" c:type="ClutterBehaviour"/>
+      </field>
+      <field name="priv">
+        <type name="BehaviourPathPrivate"
+              c:type="ClutterBehaviourPathPrivate*"/>
+      </field>
+      <glib:signal name="knot-reached" version="0.2">
+        <doc xml:whitespace="preserve">This signal is emitted each time a node defined inside the path
+is reached.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the #ClutterKnot reached</doc>
+            <type name="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="BehaviourPathClass"
+            c:type="ClutterBehaviourPathClass"
+            glib:is-gtype-struct-for="BehaviourPath">
+      <field name="parent_class">
+        <type name="BehaviourClass" c:type="ClutterBehaviourClass"/>
+      </field>
+      <field name="knot_reached">
+        <callback name="knot_reached">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pathb" transfer-ownership="none">
+              <type name="BehaviourPath" c:type="ClutterBehaviourPath*"/>
+            </parameter>
+            <parameter name="knot_num" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_path_1" introspectable="0">
+        <callback name="_clutter_path_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_path_2" introspectable="0">
+        <callback name="_clutter_path_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_path_3" introspectable="0">
+        <callback name="_clutter_path_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_path_4" introspectable="0">
+        <callback name="_clutter_path_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="BehaviourPathPrivate"
+            c:type="ClutterBehaviourPathPrivate"
+            disguised="1">
+    </record>
+    <record name="BehaviourPrivate"
+            c:type="ClutterBehaviourPrivate"
+            disguised="1">
+    </record>
+    <class name="BehaviourRotate"
+           c:symbol-prefix="behaviour_rotate"
+           c:type="ClutterBehaviourRotate"
+           version="0.4"
+           parent="Behaviour"
+           glib:type-name="ClutterBehaviourRotate"
+           glib:get-type="clutter_behaviour_rotate_get_type"
+           glib:type-struct="BehaviourRotateClass">
+      <doc xml:whitespace="preserve">The #ClutterBehaviourRotate struct contains only private data and
+should be accessed using the provided API</doc>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_behaviour_rotate_new"
+                   version="0.4">
+        <doc xml:whitespace="preserve">Creates a new #ClutterBehaviourRotate. This behaviour will rotate actors
+bound to it on @axis, following @direction, between @angle_start and
+&lt;0, 360), if angle_start == angle_end, the behaviour will carry out a
+single rotation of 360 degrees.
+If @alpha is not %NULL, the #ClutterBehaviour will take ownership
+of the #ClutterAlpha instance. In the case when @alpha is %NULL,
+it can be set later with clutter_behaviour_set_alpha().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #ClutterBehaviourRotate.</doc>
+          <type name="Behaviour" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterAlpha instance, or %NULL</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="axis" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the rotation axis</doc>
+            <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the rotation direction</doc>
+            <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+          </parameter>
+          <parameter name="angle_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the starting angle in degrees, between 0 and 360.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="angle_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the final angle in degrees, between 0 and 360.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_axis"
+              c:identifier="clutter_behaviour_rotate_get_axis"
+              version="0.4">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterRotateAxis used by the rotate behaviour.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the rotation axis</doc>
+          <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+        </return-value>
+      </method>
+      <method name="get_bounds"
+              c:identifier="clutter_behaviour_rotate_get_bounds"
+              version="0.4">
+        <doc xml:whitespace="preserve">Retrieves the rotation boundaries of the rotate behaviour.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return value for the initial angle</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="angle_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return value for the final angle</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_center"
+              c:identifier="clutter_behaviour_rotate_get_center"
+              version="0.4">
+        <doc xml:whitespace="preserve">Retrieves the center of rotation set using
+clutter_behaviour_rotate_set_center().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the X center of rotation</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the Y center of rotation</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="z"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the Z center of rotation</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_direction"
+              c:identifier="clutter_behaviour_rotate_get_direction"
+              version="0.4">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterRotateDirection used by the rotate behaviour.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the rotation direction</doc>
+          <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+        </return-value>
+      </method>
+      <method name="set_axis"
+              c:identifier="clutter_behaviour_rotate_set_axis"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the axis used by the rotate behaviour.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterRotateAxis</doc>
+            <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_bounds"
+              c:identifier="clutter_behaviour_rotate_set_bounds"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the initial and final angles of a rotation behaviour; angles &gt;= 360
+degrees get clamped to the canonical interval &lt;0, 360).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">initial angle in degrees, between 0 and 360.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="angle_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">final angle in degrees, between 0 and 360.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_center"
+              c:identifier="clutter_behaviour_rotate_set_center"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the center of rotation. The coordinates are relative to the plane
+normal to the rotation axis set with clutter_behaviour_rotate_set_axis().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X axis center of rotation</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y axis center of rotation</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="z" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Z axis center of rotation</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_direction"
+              c:identifier="clutter_behaviour_rotate_set_direction"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the rotation direction used by the rotate behaviour.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the rotation direction</doc>
+            <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="angle-end"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The final angle to where the rotation should end.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="angle-start"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The initial angle from whence the rotation should start.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="axis"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The axis of rotation.</doc>
+        <type name="RotateAxis"/>
+      </property>
+      <property name="center-x"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The x center of rotation.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="center-y"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The y center of rotation.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="center-z"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The z center of rotation.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="direction"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The direction of the rotation.</doc>
+        <type name="RotateDirection"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Behaviour" c:type="ClutterBehaviour"/>
+      </field>
+      <field name="priv">
+        <type name="BehaviourRotatePrivate"
+              c:type="ClutterBehaviourRotatePrivate*"/>
+      </field>
+    </class>
+    <record name="BehaviourRotateClass"
+            c:type="ClutterBehaviourRotateClass"
+            glib:is-gtype-struct-for="BehaviourRotate"
+            version="0.4">
+      <doc xml:whitespace="preserve">The #ClutterBehaviourRotateClass struct contains only private data</doc>
+      <field name="parent_class">
+        <type name="BehaviourClass" c:type="ClutterBehaviourClass"/>
+      </field>
+    </record>
+    <record name="BehaviourRotatePrivate"
+            c:type="ClutterBehaviourRotatePrivate"
+            disguised="1">
+    </record>
+    <class name="BehaviourScale"
+           c:symbol-prefix="behaviour_scale"
+           c:type="ClutterBehaviourScale"
+           version="0.2"
+           parent="Behaviour"
+           glib:type-name="ClutterBehaviourScale"
+           glib:get-type="clutter_behaviour_scale_get_type"
+           glib:type-struct="BehaviourScaleClass">
+      <doc xml:whitespace="preserve">The #ClutterBehaviourScale struct contains only private data and
+should be accessed using the provided API</doc>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_behaviour_scale_new"
+                   version="0.2">
+        <doc xml:whitespace="preserve">Creates a new  #ClutterBehaviourScale instance.
+If @alpha is not %NULL, the #ClutterBehaviour will take ownership
+of the #ClutterAlpha instance. In the case when @alpha is %NULL,
+it can be set later with clutter_behaviour_set_alpha().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #ClutterBehaviourScale</doc>
+          <type name="Behaviour" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterAlpha instance, or %NULL</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="x_scale_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">initial scale factor on the X axis</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="y_scale_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">initial scale factor on the Y axis</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="x_scale_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">final scale factor on the X axis</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="y_scale_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">final scale factor on the Y axis</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_bounds"
+              c:identifier="clutter_behaviour_scale_get_bounds"
+              version="0.4">
+        <doc xml:whitespace="preserve">Retrieves the bounds used by scale behaviour.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_scale_start"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the initial scale factor on the X axis, or %NULL</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="y_scale_start"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the initial scale factor on the Y axis, or %NULL</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="x_scale_end"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the final scale factor on the X axis, or %NULL</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="y_scale_end"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the final scale factor on the Y axis, or %NULL</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_bounds"
+              c:identifier="clutter_behaviour_scale_set_bounds"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the bounds used by scale behaviour.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_scale_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">initial scale factor on the X axis</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="y_scale_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">initial scale factor on the Y axis</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="x_scale_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">final scale factor on the X axis</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="y_scale_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">final scale factor on the Y axis</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="x-scale-end"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The final scaling factor on the X axis for the actors.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="x-scale-start"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The initial scaling factor on the X axis for the actors.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="y-scale-end"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The final scaling factor on the Y axis for the actors.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="y-scale-start"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The initial scaling factor on the Y axis for the actors.</doc>
+        <type name="gdouble"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Behaviour" c:type="ClutterBehaviour"/>
+      </field>
+      <field name="priv">
+        <type name="BehaviourScalePrivate"
+              c:type="ClutterBehaviourScalePrivate*"/>
+      </field>
+    </class>
+    <record name="BehaviourScaleClass"
+            c:type="ClutterBehaviourScaleClass"
+            glib:is-gtype-struct-for="BehaviourScale"
+            version="0.2">
+      <doc xml:whitespace="preserve">The #ClutterBehaviourScaleClass struct contains only private data</doc>
+      <field name="parent_class">
+        <type name="BehaviourClass" c:type="ClutterBehaviourClass"/>
+      </field>
+    </record>
+    <record name="BehaviourScalePrivate"
+            c:type="ClutterBehaviourScalePrivate"
+            disguised="1">
+    </record>
+    <enumeration name="BinAlignment"
+                 version="1.2"
+                 glib:type-name="ClutterBinAlignment"
+                 glib:get-type="clutter_bin_alignment_get_type"
+                 c:type="ClutterBinAlignment">
+      <doc xml:whitespace="preserve">The alignment policies available on each axis for #ClutterBinLayout</doc>
+      <member name="fixed"
+              value="0"
+              c:identifier="CLUTTER_BIN_ALIGNMENT_FIXED"
+              glib:nick="fixed"/>
+      <member name="fill"
+              value="1"
+              c:identifier="CLUTTER_BIN_ALIGNMENT_FILL"
+              glib:nick="fill"/>
+      <member name="start"
+              value="2"
+              c:identifier="CLUTTER_BIN_ALIGNMENT_START"
+              glib:nick="start"/>
+      <member name="end"
+              value="3"
+              c:identifier="CLUTTER_BIN_ALIGNMENT_END"
+              glib:nick="end"/>
+      <member name="center"
+              value="4"
+              c:identifier="CLUTTER_BIN_ALIGNMENT_CENTER"
+              glib:nick="center"/>
+    </enumeration>
+    <class name="BinLayout"
+           c:symbol-prefix="bin_layout"
+           c:type="ClutterBinLayout"
+           version="1.2"
+           parent="LayoutManager"
+           glib:type-name="ClutterBinLayout"
+           glib:get-type="clutter_bin_layout_get_type"
+           glib:type-struct="BinLayoutClass">
+      <doc xml:whitespace="preserve">The #ClutterBinLayout structure contains only private data
+and should be accessed using the provided API</doc>
+      <constructor name="new"
+                   c:identifier="clutter_bin_layout_new"
+                   version="1.2">
+        <doc xml:whitespace="preserve">Creates a new #ClutterBinLayout layout manager</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created layout manager</doc>
+          <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the default alignment policy to be used on the horizontal axis</doc>
+            <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+          </parameter>
+          <parameter name="y_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the default alignment policy to be used on the vertical axis</doc>
+            <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add" c:identifier="clutter_bin_layout_add" version="1.2">
+        <doc xml:whitespace="preserve">Adds a #ClutterActor to the container using @self and
+sets the alignment policies for it
+This function is equivalent to clutter_container_add_actor()
+and clutter_layout_manager_child_set_property() but it does not
+require a pointer to the #ClutterContainer associated to the
+#ClutterBinLayout</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">horizontal alignment policy for @child</doc>
+            <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+          </parameter>
+          <parameter name="y_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">vertical alignment policy for @child</doc>
+            <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_alignment"
+              c:identifier="clutter_bin_layout_get_alignment"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the horizontal and vertical alignment policies for
+a child of @self
+If @child is %NULL the default alignment policies will be returned
+instead</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a child of @container</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_align"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the horizontal alignment policy</doc>
+            <type name="BinAlignment" c:type="ClutterBinAlignment*"/>
+          </parameter>
+          <parameter name="y_align"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the vertical alignment policy</doc>
+            <type name="BinAlignment" c:type="ClutterBinAlignment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alignment"
+              c:identifier="clutter_bin_layout_set_alignment"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the horizontal and vertical alignment policies to be applied
+to a @child of @self
+If @child is %NULL then the @x_align and @y_align values will
+be set as the default alignment policies</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a child of @container</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the horizontal alignment policy to be used for the @child inside @container</doc>
+            <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+          </parameter>
+          <parameter name="y_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the vertical aligment policy to be used on the @child inside @container</doc>
+            <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="x-align"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The default horizontal alignment policy for actors managed
+by the #ClutterBinLayout</doc>
+        <type name="BinAlignment"/>
+      </property>
+      <property name="y-align"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The default vertical alignment policy for actors managed
+by the #ClutterBinLayout</doc>
+        <type name="BinAlignment"/>
+      </property>
+      <field name="parent_instance">
+        <type name="LayoutManager" c:type="ClutterLayoutManager"/>
+      </field>
+      <field name="priv">
+        <type name="BinLayoutPrivate" c:type="ClutterBinLayoutPrivate*"/>
+      </field>
+    </class>
+    <record name="BinLayoutClass"
+            c:type="ClutterBinLayoutClass"
+            glib:is-gtype-struct-for="BinLayout"
+            version="1.2">
+      <doc xml:whitespace="preserve">The #ClutterBinLayoutClass structure contains only private
+data and should be accessed using the provided API</doc>
+      <field name="parent_class">
+        <type name="LayoutManagerClass" c:type="ClutterLayoutManagerClass"/>
+      </field>
+    </record>
+    <record name="BinLayoutPrivate"
+            c:type="ClutterBinLayoutPrivate"
+            disguised="1">
+    </record>
+    <class name="BindConstraint"
+           c:symbol-prefix="bind_constraint"
+           c:type="ClutterBindConstraint"
+           version="1.4"
+           parent="Constraint"
+           glib:type-name="ClutterBindConstraint"
+           glib:get-type="clutter_bind_constraint_get_type">
+      <doc xml:whitespace="preserve">&lt;structname&gt;ClutterBindConstraint&lt;/structname&gt; is an opaque structure
+whose members cannot be directly accessed</doc>
+      <constructor name="new"
+                   c:identifier="clutter_bind_constraint_new"
+                   version="1.4">
+        <doc xml:whitespace="preserve">Creates a new constraint, binding a #ClutterActor's position to
+the given @coordinate of the position of @source</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterBindConstraint</doc>
+          <type name="Constraint" c:type="ClutterConstraint*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the #ClutterActor to use as the source of the binding, or %NULL</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="coordinate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the coordinate to bind</doc>
+            <type name="BindCoordinate" c:type="ClutterBindCoordinate"/>
+          </parameter>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset to apply to the binding, in pixels</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_coordinate"
+              c:identifier="clutter_bind_constraint_get_coordinate"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the bound coordinate of the constraint</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the bound coordinate</doc>
+          <type name="BindCoordinate" c:type="ClutterBindCoordinate"/>
+        </return-value>
+      </method>
+      <method name="get_offset"
+              c:identifier="clutter_bind_constraint_get_offset"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the offset set using clutter_bind_constraint_set_offset()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the offset, in pixels</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_source"
+              c:identifier="clutter_bind_constraint_get_source"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterActor set using clutter_bind_constraint_set_source()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the source actor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="set_coordinate"
+              c:identifier="clutter_bind_constraint_set_coordinate"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the coordinate to bind in the constraint</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="coordinate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the coordinate to bind</doc>
+            <type name="BindCoordinate" c:type="ClutterBindCoordinate"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_offset"
+              c:identifier="clutter_bind_constraint_set_offset"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the offset to be applied to the constraint</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset to apply, in pixels</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_source"
+              c:identifier="clutter_bind_constraint_set_source"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the source #ClutterActor for the constraint</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterActor, or %NULL to unset the source</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="coordinate"
+                version="1.4"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The coordinate to be bound</doc>
+        <type name="BindCoordinate"/>
+      </property>
+      <property name="offset"
+                version="1.4"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The offset, in pixels, to be applied to the binding</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="source"
+                version="1.4"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterActor used as the source for the binding</doc>
+        <type name="Actor"/>
+      </property>
+    </class>
+    <enumeration name="BindCoordinate"
+                 version="1.4"
+                 glib:type-name="ClutterBindCoordinate"
+                 glib:get-type="clutter_bind_coordinate_get_type"
+                 c:type="ClutterBindCoordinate">
+      <doc xml:whitespace="preserve">Specifies which property should be used in a binding</doc>
+      <member name="x" value="0" c:identifier="CLUTTER_BIND_X" glib:nick="x"/>
+      <member name="y" value="1" c:identifier="CLUTTER_BIND_Y" glib:nick="y"/>
+      <member name="width"
+              value="2"
+              c:identifier="CLUTTER_BIND_WIDTH"
+              glib:nick="width"/>
+      <member name="height"
+              value="3"
+              c:identifier="CLUTTER_BIND_HEIGHT"
+              glib:nick="height"/>
+    </enumeration>
+    <callback name="BindingActionFunc"
+              c:type="ClutterBindingActionFunc"
+              version="1.0">
+      <doc xml:whitespace="preserve">The prototype for the callback function registered with
+clutter_binding_pool_install_action() and invoked by
+clutter_binding_pool_activate().
+binding has been handled, and return %FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the function should return %TRUE if the key</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="gobject" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObject</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="action_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the action</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="key_val" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the key symbol</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="modifiers" transfer-ownership="none">
+          <doc xml:whitespace="preserve">bitmask of the modifier flags</doc>
+          <type name="ModifierType" c:type="ClutterModifierType"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="BindingPool"
+           c:symbol-prefix="binding_pool"
+           c:type="ClutterBindingPool"
+           version="1.0"
+           parent="GObject.Object"
+           glib:type-name="ClutterBindingPool"
+           glib:get-type="clutter_binding_pool_get_type">
+      <doc xml:whitespace="preserve">Container of key bindings. The #ClutterBindingPool struct is
+private.</doc>
+      <constructor name="new"
+                   c:identifier="clutter_binding_pool_new"
+                   version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterBindingPool that can be used to store
+key bindings for an actor. The @name must be a unique identifier
+for the binding pool, so that clutter_binding_pool_find() will
+be able to return the correct binding pool.
+name. Use g_object_unref() when done.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created binding pool with the given</doc>
+          <type name="BindingPool" c:type="ClutterBindingPool*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the binding pool</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="find"
+                c:identifier="clutter_binding_pool_find"
+                version="1.0">
+        <doc xml:whitespace="preserve">Finds the #ClutterBindingPool with @name.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the #ClutterBindingPool, or %NULL</doc>
+          <type name="BindingPool" c:type="ClutterBindingPool*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the binding pool to find</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_for_class"
+                c:identifier="clutter_binding_pool_get_for_class"
+                version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterBindingPool for the given #GObject class
+and, eventually, creates it. This function is a wrapper around
+clutter_binding_pool_new() and uses the class type name as the
+unique name for the binding pool.
+Calling this function multiple times will return the same
+#ClutterBindingPool.
+A binding pool for a class can also be retrieved using
+clutter_binding_pool_find() with the class type name:
+|[
+pool = clutter_binding_pool_find (G_OBJECT_TYPE_NAME (instance));
+]|
+The returned #ClutterBindingPool is owned by Clutter and should not
+be freed directly</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the binding pool for the given class.</doc>
+          <type name="BindingPool" c:type="ClutterBindingPool*"/>
+        </return-value>
+        <parameters>
+          <parameter name="klass" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObjectClass pointer</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="activate"
+              c:identifier="clutter_binding_pool_activate"
+              version="1.0">
+        <doc xml:whitespace="preserve">Activates the callback associated to the action that is
+bound to the @key_val and @modifiers pair.
+The callback has the following signature:
+|[
+void (* callback) (GObject             *gobject,
+const gchar         *action_name,
+guint                key_val,
+ClutterModifierType  modifiers,
+gpointer             user_data);
+]|
+Where the #GObject instance is @gobject and the user data
+is the one passed when installing the action with
+clutter_binding_pool_install_action().
+If the action bound to the @key_val, @modifiers pair has been
+blocked using clutter_binding_pool_block_action(), the callback
+will not be invoked, and this function will return %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if an action was found and was activated</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the key symbol</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <doc xml:whitespace="preserve">bitmask for the modifiers</doc>
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+          <parameter name="gobject" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="block_action"
+              c:identifier="clutter_binding_pool_block_action"
+              version="1.0">
+        <doc xml:whitespace="preserve">Blocks all the actions with name @action_name inside @pool.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an action name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_action"
+              c:identifier="clutter_binding_pool_find_action"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the name of the action matching the given key symbol
+and modifiers bitmask.
+returned string is owned by the binding pool and should never
+be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the action, if found, or %NULL. The</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a key symbol</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a bitmask for the modifiers</doc>
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="install_action"
+              c:identifier="clutter_binding_pool_install_action"
+              version="1.0">
+        <doc xml:whitespace="preserve">Installs a new action inside a #ClutterBindingPool. The action
+is bound to @key_val and @modifiers.
+The same action name can be used for multiple @key_val, @modifiers
+pairs.
+When an action has been activated using clutter_binding_pool_activate()
+the passed @callback will be invoked (with @data).
+Actions can be blocked with clutter_binding_pool_block_action()
+and then unblocked using clutter_binding_pool_unblock_action().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key_val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">key symbol</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <doc xml:whitespace="preserve">bitmask of modifiers</doc>
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="4"
+                     destroy="5">
+            <doc xml:whitespace="preserve">function to be called when the action is activated</doc>
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to be passed to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">function to be called when the action is removed from the pool</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="install_closure"
+              c:identifier="clutter_binding_pool_install_closure"
+              version="1.0">
+        <doc xml:whitespace="preserve">A #GClosure variant of clutter_binding_pool_install_action().
+Installs a new action inside a #ClutterBindingPool. The action
+is bound to @key_val and @modifiers.
+The same action name can be used for multiple @key_val, @modifiers
+pairs.
+When an action has been activated using clutter_binding_pool_activate()
+the passed @closure will be invoked.
+Actions can be blocked with clutter_binding_pool_block_action()
+and then unblocked using clutter_binding_pool_unblock_action().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key_val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">key symbol</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <doc xml:whitespace="preserve">bitmask of modifiers</doc>
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+          <parameter name="closure" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GClosure</doc>
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="override_action"
+              c:identifier="clutter_binding_pool_override_action"
+              version="1.0">
+        <doc xml:whitespace="preserve">Allows overriding the action for @key_val and @modifiers inside a
+#ClutterBindingPool. See clutter_binding_pool_install_action().
+When an action has been activated using clutter_binding_pool_activate()
+the passed @callback will be invoked (with @data).
+Actions can be blocked with clutter_binding_pool_block_action()
+and then unblocked using clutter_binding_pool_unblock_action().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">key symbol</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <doc xml:whitespace="preserve">bitmask of modifiers</doc>
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="3"
+                     destroy="4">
+            <doc xml:whitespace="preserve">function to be called when the action is activated</doc>
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to be passed to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">function to be called when the action is removed from the pool</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="override_closure"
+              c:identifier="clutter_binding_pool_override_closure"
+              version="1.0">
+        <doc xml:whitespace="preserve">A #GClosure variant of clutter_binding_pool_override_action().
+Allows overriding the action for @key_val and @modifiers inside a
+#ClutterBindingPool. See clutter_binding_pool_install_closure().
+When an action has been activated using clutter_binding_pool_activate()
+the passed @callback will be invoked (with @data).
+Actions can be blocked with clutter_binding_pool_block_action()
+and then unblocked using clutter_binding_pool_unblock_action().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">key symbol</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <doc xml:whitespace="preserve">bitmask of modifiers</doc>
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+          <parameter name="closure" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GClosure</doc>
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_action"
+              c:identifier="clutter_binding_pool_remove_action"
+              version="1.0">
+        <doc xml:whitespace="preserve">Removes the action matching the given @key_val, @modifiers pair,
+if any exists.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a key symbol</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a bitmask for the modifiers</doc>
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unblock_action"
+              c:identifier="clutter_binding_pool_unblock_action"
+              version="1.0">
+        <doc xml:whitespace="preserve">Unblockes all the actions with name @action_name inside @pool.
+Unblocking an action does not cause the callback bound to it to
+be invoked in case clutter_binding_pool_activate() was called on
+an action previously blocked with clutter_binding_pool_block_action().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an action name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="name"
+                version="1.0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The unique name of the #ClutterBindingPool.</doc>
+        <type name="utf8"/>
+      </property>
+    </class>
+    <constant name="Blue" value="269025190">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Bluetooth" value="269025172">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="BlurEffect"
+           c:symbol-prefix="blur_effect"
+           c:type="ClutterBlurEffect"
+           version="1.4"
+           parent="OffscreenEffect"
+           glib:type-name="ClutterBlurEffect"
+           glib:get-type="clutter_blur_effect_get_type">
+      <doc xml:whitespace="preserve">&lt;structname&gt;ClutterBlurEffect&lt;/structname&gt; is an opaque structure
+whose members cannot be accessed directly</doc>
+      <constructor name="new"
+                   c:identifier="clutter_blur_effect_new"
+                   version="1.4">
+        <doc xml:whitespace="preserve">Creates a new #ClutterBlurEffect to be used with
+clutter_actor_add_effect()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterBlurEffect or %NULL</doc>
+          <type name="Effect" c:type="ClutterEffect*"/>
+        </return-value>
+      </constructor>
+    </class>
+    <constant name="Book" value="269025106">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="BounceKeys_Enable" value="65140">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Box"
+           c:symbol-prefix="box"
+           c:type="ClutterBox"
+           version="1.2"
+           parent="Actor"
+           glib:type-name="ClutterBox"
+           glib:get-type="clutter_box_get_type"
+           glib:type-struct="BoxClass">
+      <doc xml:whitespace="preserve">The #ClutterBox structure contains only private data and should
+be accessed using the provided API</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Animatable"/>
+      <implements name="Container"/>
+      <implements name="Scriptable"/>
+      <constructor name="new" c:identifier="clutter_box_new" version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterBox. The children of the box will be layed
+out by the passed @manager</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterBox actor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="manager" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterLayoutManager</doc>
+            <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_color"
+              c:identifier="clutter_box_get_color"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the background color of @box
+If the #ClutterBox:color-set property is set to %FALSE the
+returned #ClutterColor is undefined</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for a #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_layout_manager"
+              c:identifier="clutter_box_get_layout_manager"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterLayoutManager instance used by @box
+#ClutterLayoutManager is owned by the #ClutterBox and it should not
+be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterLayoutManager. The returned</doc>
+          <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+        </return-value>
+      </method>
+      <method name="pack"
+              c:identifier="clutter_box_pack"
+              version="1.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds @actor to @box and sets layout properties at the same time,
+if the #ClutterLayoutManager used by @box has them
+This function is a wrapper around clutter_container_add_actor()
+and clutter_layout_manager_child_set()
+Language bindings should use the vector-based clutter_box_addv()
+variant instead</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first property to set, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pack_after"
+              c:identifier="clutter_box_pack_after"
+              version="1.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds @actor to @box, placing it after @sibling, and sets layout
+properties at the same time, if the #ClutterLayoutManager used by
+If @sibling is %NULL then @actor is placed at the end of the
+list of children, to be allocated and painted after every other child
+This function is a wrapper around clutter_container_add_actor(),
+clutter_container_raise_child() and clutter_layout_manager_child_set()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterActor or %NULL</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first property to set, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pack_at"
+              c:identifier="clutter_box_pack_at"
+              version="1.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds @actor to @box, placing it at @position, and sets layout
+properties at the same time, if the #ClutterLayoutManager used by
+If @position is a negative number, or is larger than the number of
+children of @box, the new child is added at the end of the list of
+children</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position to insert the @actor at</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="first_property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first property to set, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pack_before"
+              c:identifier="clutter_box_pack_before"
+              version="1.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds @actor to @box, placing it before @sibling, and sets layout
+properties at the same time, if the #ClutterLayoutManager used by
+If @sibling is %NULL then @actor is placed at the beginning of the
+list of children, to be allocated and painted below every other child
+This function is a wrapper around clutter_container_add_actor(),
+clutter_container_lower_child() and clutter_layout_manager_child_set()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterActor or %NULL</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first property to set, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="packv" c:identifier="clutter_box_packv" version="1.2">
+        <doc xml:whitespace="preserve">Vector-based variant of clutter_box_pack(), intended for language
+bindings to use</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="n_properties" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of properties to set</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="properties" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector containing the property names to set</doc>
+            <array length="1" c:type="gchar*">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector containing the property values to set</doc>
+            <array length="1" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_color"
+              c:identifier="clutter_box_set_color"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets (or unsets) the background color for @box</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the background color, or %NULL to unset</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layout_manager"
+              c:identifier="clutter_box_set_layout_manager"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the #ClutterLayoutManager for @box
+A #ClutterLayoutManager is a delegate object that controls the
+layout of the children of @box</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="manager" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterLayoutManager</doc>
+            <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="color"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The color to be used to paint the background of the
+#ClutterBox. Setting this property will set the
+#ClutterBox:color-set property as a side effect</doc>
+        <type name="Color"/>
+      </property>
+      <property name="color-set"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterBox:color property has been set</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="layout-manager"
+                version="1.2"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterLayoutManager used by the #ClutterBox</doc>
+        <type name="LayoutManager"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv">
+        <type name="BoxPrivate" c:type="ClutterBoxPrivate*"/>
+      </field>
+    </class>
+    <enumeration name="BoxAlignment"
+                 version="1.2"
+                 glib:type-name="ClutterBoxAlignment"
+                 glib:get-type="clutter_box_alignment_get_type"
+                 c:type="ClutterBoxAlignment">
+      <doc xml:whitespace="preserve">The alignment policies available on each axis of the #ClutterBoxLayout</doc>
+      <member name="start"
+              value="0"
+              c:identifier="CLUTTER_BOX_ALIGNMENT_START"
+              glib:nick="start"/>
+      <member name="end"
+              value="1"
+              c:identifier="CLUTTER_BOX_ALIGNMENT_END"
+              glib:nick="end"/>
+      <member name="center"
+              value="2"
+              c:identifier="CLUTTER_BOX_ALIGNMENT_CENTER"
+              glib:nick="center"/>
+    </enumeration>
+    <record name="BoxClass"
+            c:type="ClutterBoxClass"
+            glib:is-gtype-struct-for="Box"
+            version="1.2">
+      <doc xml:whitespace="preserve">The #ClutterBoxClass structure contains only private data</doc>
+      <field name="parent_class">
+        <type name="ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="clutter_padding_1">
+        <callback name="clutter_padding_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding_2">
+        <callback name="clutter_padding_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding_3">
+        <callback name="clutter_padding_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding_4">
+        <callback name="clutter_padding_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding_5">
+        <callback name="clutter_padding_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding_6">
+        <callback name="clutter_padding_6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="BoxLayout"
+           c:symbol-prefix="box_layout"
+           c:type="ClutterBoxLayout"
+           version="1.2"
+           parent="LayoutManager"
+           glib:type-name="ClutterBoxLayout"
+           glib:get-type="clutter_box_layout_get_type"
+           glib:type-struct="BoxLayoutClass">
+      <doc xml:whitespace="preserve">The #ClutterBoxLayout structure contains only private data
+and should be accessed using the provided API</doc>
+      <constructor name="new"
+                   c:identifier="clutter_box_layout_new"
+                   version="1.2">
+        <doc xml:whitespace="preserve">Creates a new #ClutterBoxLayout layout manager</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterBoxLayout</doc>
+          <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+        </return-value>
+      </constructor>
+      <method name="get_alignment"
+              c:identifier="clutter_box_layout_get_alignment"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the horizontal and vertical alignment policies for @actor
+as set using clutter_box_layout_pack() or clutter_box_layout_set_alignment()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_align"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the horizontal alignment policy</doc>
+            <type name="BoxAlignment" c:type="ClutterBoxAlignment*"/>
+          </parameter>
+          <parameter name="y_align"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the vertical alignment policy</doc>
+            <type name="BoxAlignment" c:type="ClutterBoxAlignment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_easing_duration"
+              c:identifier="clutter_box_layout_get_easing_duration"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the duration set using clutter_box_layout_set_easing_duration()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the duration of the animations, in milliseconds</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_easing_mode"
+              c:identifier="clutter_box_layout_get_easing_mode"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the easing mode set using clutter_box_layout_set_easing_mode()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an easing mode</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <method name="get_expand"
+              c:identifier="clutter_box_layout_get_expand"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves whether @actor should expand inside @layout</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterActor should expand, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fill"
+              c:identifier="clutter_box_layout_get_fill"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the horizontal and vertical fill policies for @actor
+as set using clutter_box_layout_pack() or clutter_box_layout_set_fill()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_fill"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the horizontal fill policy</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="y_fill"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the vertical fill policy</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_homogeneous"
+              c:identifier="clutter_box_layout_get_homogeneous"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves if the children sizes are allocated homogeneously.
+homogeneously, and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterBoxLayout is arranging its children</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_pack_start"
+              c:identifier="clutter_box_layout_get_pack_start"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the value set using clutter_box_layout_set_pack_start()
+at the beginning of the layout, and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterBoxLayout should pack children</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_spacing"
+              c:identifier="clutter_box_layout_get_spacing"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the spacing set using clutter_box_layout_set_spacing()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the spacing between children of the #ClutterBoxLayout</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_use_animations"
+              c:identifier="clutter_box_layout_get_use_animations"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves whether @layout should animate changes in the layout properties
+Since clutter_box_layout_set_use_animations()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the animations should be used, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_vertical"
+              c:identifier="clutter_box_layout_get_vertical"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the orientation of the @layout as set using the
+clutter_box_layout_set_vertical() function
+vertically, and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterBoxLayout is arranging its children</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="pack" c:identifier="clutter_box_layout_pack" version="1.2">
+        <doc xml:whitespace="preserve">Packs @actor inside the #ClutterContainer associated to @layout
+and sets the layout properties</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="expand" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the @actor should expand</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="x_fill" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the @actor should fill horizontally</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="y_fill" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the @actor should fill vertically</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="x_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the horizontal alignment policy for @actor</doc>
+            <type name="BoxAlignment" c:type="ClutterBoxAlignment"/>
+          </parameter>
+          <parameter name="y_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the vertical alignment policy for @actor</doc>
+            <type name="BoxAlignment" c:type="ClutterBoxAlignment"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alignment"
+              c:identifier="clutter_box_layout_set_alignment"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the horizontal and vertical alignment policies for @actor
+inside @layout</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Horizontal alignment policy for @actor</doc>
+            <type name="BoxAlignment" c:type="ClutterBoxAlignment"/>
+          </parameter>
+          <parameter name="y_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Vertical alignment policy for @actor</doc>
+            <type name="BoxAlignment" c:type="ClutterBoxAlignment"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_easing_duration"
+              c:identifier="clutter_box_layout_set_easing_duration"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the duration of the animations used by @layout when animating changes
+in the layout properties
+Use clutter_box_layout_set_use_animations() to enable and disable the
+animations</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the duration of the animations, in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_easing_mode"
+              c:identifier="clutter_box_layout_set_easing_mode"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the easing mode to be used by @layout when animating changes in layout
+properties
+Use clutter_box_layout_set_use_animations() to enable and disable the
+animations</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an easing mode, either from #ClutterAnimationMode or a logical id from clutter_alpha_register_func()</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_expand"
+              c:identifier="clutter_box_layout_set_expand"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets whether @actor should expand inside @layout</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="expand" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether @actor should expand</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fill"
+              c:identifier="clutter_box_layout_set_fill"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the horizontal and vertical fill policies for @actor
+inside @layout</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_fill" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether @actor should fill horizontally the allocated space</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="y_fill" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether @actor should fill vertically the allocated space</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_homogeneous"
+              c:identifier="clutter_box_layout_set_homogeneous"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets whether the size of @layout children should be
+homogeneous</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="homogeneous" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the layout should be homogeneous</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pack_start"
+              c:identifier="clutter_box_layout_set_pack_start"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets whether children of @layout should be layed out by appending
+them or by prepending them</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pack_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @layout should pack children at the beginning of the layout</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_spacing"
+              c:identifier="clutter_box_layout_set_spacing"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the spacing between children of @layout</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the spacing between children of the layout, in pixels</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_animations"
+              c:identifier="clutter_box_layout_set_use_animations"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets whether @layout should animate changes in the layout properties
+The duration of the animations is controlled by
+clutter_box_layout_set_easing_duration(); the easing mode to be used
+by the animations is controlled by clutter_box_layout_set_easing_mode()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="animate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @layout should use animations</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_vertical"
+              c:identifier="clutter_box_layout_set_vertical"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets whether @layout should arrange its children vertically alongside
+the Y axis, instead of horizontally alongside the X axis</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="vertical" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the layout should be vertical</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="easing-duration"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The duration of the animations, in case #ClutterBoxLayout:use-animations
+is set to %TRUE
+The duration is expressed in milliseconds</doc>
+        <type name="guint"/>
+      </property>
+      <property name="easing-mode"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The easing mode for the animations, in case
+#ClutterBoxLayout:use-animations is set to %TRUE
+either be a value from the #ClutterAnimationMode enumeration, like
+%CLUTTER_EASE_OUT_CUBIC, or a logical id as returned by
+clutter_alpha_register_func()
+The default value is %CLUTTER_EASE_OUT_CUBIC</doc>
+        <type name="gulong"/>
+      </property>
+      <property name="homogeneous"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterBoxLayout should arrange its children
+homogeneously, i.e. all childs get the same size</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="pack-start"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterBoxLayout should pack items at the start
+or append them at the end</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="spacing"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The spacing between children of the #ClutterBoxLayout, in pixels</doc>
+        <type name="guint"/>
+      </property>
+      <property name="use-animations"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterBoxLayout should animate changes in the
+layout properties</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="vertical"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterBoxLayout should arrange its children
+alongside the Y axis, instead of alongside the X axis</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="LayoutManager" c:type="ClutterLayoutManager"/>
+      </field>
+      <field name="priv">
+        <type name="BoxLayoutPrivate" c:type="ClutterBoxLayoutPrivate*"/>
+      </field>
+    </class>
+    <record name="BoxLayoutClass"
+            c:type="ClutterBoxLayoutClass"
+            glib:is-gtype-struct-for="BoxLayout"
+            version="1.2">
+      <doc xml:whitespace="preserve">The #ClutterBoxLayoutClass structure contains only private
+data and should be accessed using the provided API</doc>
+      <field name="parent_class">
+        <type name="LayoutManagerClass" c:type="ClutterLayoutManagerClass"/>
+      </field>
+    </record>
+    <record name="BoxLayoutPrivate"
+            c:type="ClutterBoxLayoutPrivate"
+            disguised="1">
+    </record>
+    <record name="BoxPrivate" c:type="ClutterBoxPrivate" disguised="1">
+    </record>
+    <constant name="Break" value="65387">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="BrightnessAdjust" value="269025083">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="ButtonEvent" c:type="ClutterButtonEvent" version="0.2">
+      <doc xml:whitespace="preserve">Button event.
+The event coordinates are relative to the stage that received the
+event, and can be transformed into actor-relative coordinates by
+using clutter_actor_transform_stage_point().</doc>
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="modifier_state" writable="1">
+        <type name="ModifierType" c:type="ClutterModifierType"/>
+      </field>
+      <field name="button" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="click_count" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="axes" writable="1">
+        <type name="gdouble" c:type="gdouble*"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="InputDevice" c:type="ClutterInputDevice*"/>
+      </field>
+    </record>
+    <constant name="Byelorussian_SHORTU" value="1726">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Byelorussian_shortu" value="1710">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="C" value="67">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="CD" value="269025107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="COGL" value="gl">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="CURRENT_TIME" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cabovedot" value="709">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cacute" value="454">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="CairoTexture"
+           c:symbol-prefix="cairo_texture"
+           c:type="ClutterCairoTexture"
+           version="1.0"
+           parent="Texture"
+           glib:type-name="ClutterCairoTexture"
+           glib:get-type="clutter_cairo_texture_get_type"
+           glib:type-struct="CairoTextureClass">
+      <doc xml:whitespace="preserve">The #ClutterCairoTexture struct contains only private data.</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Animatable"/>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_cairo_texture_new"
+                   version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterCairoTexture actor, with a surface of @width by</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterCairoTexture actor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the width of the surface</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the height of the surface</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="clear"
+              c:identifier="clutter_cairo_texture_clear"
+              version="1.0">
+        <doc xml:whitespace="preserve">Clears @self's internal drawing surface, so that the next upload
+will replace the previous contents of the #ClutterCairoTexture
+rather than adding to it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="create"
+              c:identifier="clutter_cairo_texture_create"
+              version="1.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new Cairo context for the @cairo texture. It is
+similar to using clutter_cairo_texture_create_region() with @x_offset
+and @y_offset of 0, @width equal to the @cairo texture surface width
+and @height equal to the @cairo texture surface height.
+&lt;warning&gt;&lt;para&gt;Do not call this function within the paint virtual
+function or from a callback to the #ClutterActor::paint
+signal.&lt;/para&gt;&lt;/warning&gt;
+to upload the contents of the context when done drawing</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a newly created Cairo context. Use cairo_destroy()</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </return-value>
+      </method>
+      <method name="create_region"
+              c:identifier="clutter_cairo_texture_create_region"
+              version="1.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new Cairo context that will updat the region defined
+by @x_offset, @y_offset, @width and @height.
+&lt;warning&gt;&lt;para&gt;Do not call this function within the paint virtual
+function or from a callback to the #ClutterActor::paint
+signal.&lt;/para&gt;&lt;/warning&gt;
+to upload the contents of the context when done drawing</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a newly created Cairo context. Use cairo_destroy()</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">offset of the region on the X axis</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">offset of the region on the Y axis</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width of the region, or -1 for the full surface width</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height of the region, or -1 for the full surface height</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_surface_size"
+              c:identifier="clutter_cairo_texture_get_surface_size"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the surface width and height for @self.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the surface width, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the surface height, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_surface_size"
+              c:identifier="clutter_cairo_texture_set_surface_size"
+              version="1.0">
+        <doc xml:whitespace="preserve">Resizes the Cairo surface used by @self to @width and @height.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new width of the surface</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new height of the surface</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="surface-height"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The height of the Cairo surface used by the #ClutterCairoTexture
+actor, in pixels.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="surface-width"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The width of the Cairo surface used by the #ClutterCairoTexture
+actor, in pixels.</doc>
+        <type name="guint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Texture" c:type="ClutterTexture"/>
+      </field>
+      <field name="priv">
+        <type name="CairoTexturePrivate" c:type="ClutterCairoTexturePrivate*"/>
+      </field>
+    </class>
+    <record name="CairoTextureClass"
+            c:type="ClutterCairoTextureClass"
+            glib:is-gtype-struct-for="CairoTexture"
+            version="1.0">
+      <doc xml:whitespace="preserve">The #ClutterCairoTextureClass struct contains only private data.</doc>
+      <field name="parent_class">
+        <type name="TextureClass" c:type="ClutterTextureClass"/>
+      </field>
+      <field name="_clutter_cairo_1" introspectable="0">
+        <callback name="_clutter_cairo_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_cairo_2" introspectable="0">
+        <callback name="_clutter_cairo_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_cairo_3" introspectable="0">
+        <callback name="_clutter_cairo_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_cairo_4" introspectable="0">
+        <callback name="_clutter_cairo_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="CairoTexturePrivate"
+            c:type="ClutterCairoTexturePrivate"
+            disguised="1">
+    </record>
+    <constant name="Calculator" value="269025053">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Calendar" value="269025056">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <callback name="Callback" c:type="ClutterCallback">
+      <doc xml:whitespace="preserve">Generic callback</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="actor" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterActor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="Cancel" value="65385">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Caps_Lock" value="65509">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ccaron" value="456">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ccedilla" value="199">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ccircumflex" value="710">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="ChildMeta"
+           c:symbol-prefix="child_meta"
+           c:type="ClutterChildMeta"
+           version="0.8"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="ClutterChildMeta"
+           glib:get-type="clutter_child_meta_get_type"
+           glib:type-struct="ChildMetaClass">
+      <doc xml:whitespace="preserve">Base interface for container specific state for child actors. A child
+data is meant to be used when you need to keep track of information
+about each individual child added to a container.
+In order to use it you should create your own subclass of
+#ClutterChildMeta and set the #ClutterContainerIface::child_meta_type
+interface member to your subclass type, like:
+|[
+static void
+my_container_iface_init (ClutterContainerIface *iface)
+{
+/&amp;ast; set the rest of the #ClutterContainer vtable &amp;ast;/
+container_iface-&gt;child_meta_type  = MY_TYPE_CHILD_META;
+}
+]|
+This will automatically create a #ClutterChildMeta of type
+MY_TYPE_CHILD_META for every actor that is added to the container.
+The child data for an actor can be retrieved using the
+clutter_container_get_child_meta() function.
+The properties of the data and your subclass can be manipulated with
+clutter_container_child_set() and clutter_container_child_get() which
+act like g_object_set() and g_object_get().
+You can provide hooks for your own storage as well as control the
+instantiation by overriding #ClutterContainerIface::create_child_meta,
+#ClutterContainerIface::destroy_child_meta and
+#ClutterContainerIface::get_child_meta.</doc>
+      <method name="get_actor"
+              c:identifier="clutter_child_meta_get_actor"
+              version="0.8">
+        <doc xml:whitespace="preserve">Retrieves the actor wrapped by @data</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterActor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="get_container"
+              c:identifier="clutter_child_meta_get_container"
+              version="0.8">
+        <doc xml:whitespace="preserve">Retrieves the container using @data</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterContainer</doc>
+          <type name="Container" c:type="ClutterContainer*"/>
+        </return-value>
+      </method>
+      <property name="actor"
+                version="0.8"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterActor being wrapped by this #ClutterChildMeta</doc>
+        <type name="Actor"/>
+      </property>
+      <property name="container"
+                version="0.8"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterContainer that created this #ClutterChildMeta.</doc>
+        <type name="Container"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="container">
+        <type name="Container" c:type="ClutterContainer*"/>
+      </field>
+      <field name="actor">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+    </class>
+    <record name="ChildMetaClass"
+            c:type="ClutterChildMetaClass"
+            glib:is-gtype-struct-for="ChildMeta"
+            version="0.8">
+      <doc xml:whitespace="preserve">The #ClutterChildMetaClass contains only private data</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <constant name="Clear" value="65291">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ClearGrab" value="269024801">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="ClickAction"
+           c:symbol-prefix="click_action"
+           c:type="ClutterClickAction"
+           version="1.4"
+           parent="Action"
+           glib:type-name="ClutterClickAction"
+           glib:get-type="clutter_click_action_get_type"
+           glib:type-struct="ClickActionClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterClickAction&lt;/structname&gt; structure contains
+only private data and should be accessed using the provided API</doc>
+      <constructor name="new"
+                   c:identifier="clutter_click_action_new"
+                   version="1.4">
+        <doc xml:whitespace="preserve">Creates a new #ClutterClickAction instance</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterClickAction</doc>
+          <type name="Action" c:type="ClutterAction*"/>
+        </return-value>
+      </constructor>
+      <method name="get_button"
+              c:identifier="clutter_click_action_get_button"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the button that was pressed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the button value</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="release"
+              c:identifier="clutter_click_action_release"
+              version="1.4">
+        <doc xml:whitespace="preserve">Emulates a release of the pointer button, which ungrabs the pointer
+and unsets the #ClutterClickAction:pressed state.
+This function is useful to break a grab, for instance after a certain
+amount of time has passed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="held" version="1.4" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the clickable actor has the pointer grabbed</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="pressed" version="1.4" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the clickable actor should be in "pressed" state</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Action" c:type="ClutterAction"/>
+      </field>
+      <field name="priv">
+        <type name="ClickActionPrivate" c:type="ClutterClickActionPrivate*"/>
+      </field>
+      <glib:signal name="clicked" version="1.4">
+        <doc xml:whitespace="preserve">The ::clicked signal is emitted when the #ClutterActor to which
+a #ClutterClickAction has been applied should respond to a
+pointer button press and release events</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterActor attached to the @action</doc>
+            <type name="Actor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ClickActionClass"
+            c:type="ClutterClickActionClass"
+            glib:is-gtype-struct-for="ClickAction"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterClickActionClass&lt;/structname&gt; structure
+contains only private data</doc>
+      <field name="parent_class">
+        <type name="ActionClass" c:type="ClutterActionClass"/>
+      </field>
+      <field name="clicked">
+        <callback name="clicked">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="ClickAction" c:type="ClutterClickAction*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_click_action1" introspectable="0">
+        <callback name="_clutter_click_action1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_click_action2" introspectable="0">
+        <callback name="_clutter_click_action2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_click_action3" introspectable="0">
+        <callback name="_clutter_click_action3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_click_action4" introspectable="0">
+        <callback name="_clutter_click_action4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_click_action5" introspectable="0">
+        <callback name="_clutter_click_action5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_click_action6" introspectable="0">
+        <callback name="_clutter_click_action6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_click_action7" introspectable="0">
+        <callback name="_clutter_click_action7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ClickActionPrivate"
+            c:type="ClutterClickActionPrivate"
+            disguised="1">
+    </record>
+    <class name="Clone"
+           c:symbol-prefix="clone"
+           c:type="ClutterClone"
+           version="1.0"
+           parent="Actor"
+           glib:type-name="ClutterClone"
+           glib:get-type="clutter_clone_get_type"
+           glib:type-struct="CloneClass">
+      <doc xml:whitespace="preserve">The #ClutterClone structure contains only private data
+and should be accessed using the provided API</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Animatable"/>
+      <implements name="Scriptable"/>
+      <constructor name="new" c:identifier="clutter_clone_new" version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterActor which clones @source/</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterClone</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor, or %NULL</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_source"
+              c:identifier="clutter_clone_get_source"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the source #ClutterActor being cloned by @clone</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the actor source for the clone</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="set_source"
+              c:identifier="clutter_clone_set_source"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets @source as the source actor to be cloned by @clone.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor, or %NULL</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="source"
+                version="1.0"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">This property specifies the source actor being cloned.</doc>
+        <type name="Actor"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv">
+        <type name="ClonePrivate" c:type="ClutterClonePrivate*"/>
+      </field>
+    </class>
+    <record name="CloneClass"
+            c:type="ClutterCloneClass"
+            glib:is-gtype-struct-for="Clone"
+            version="1.0">
+      <doc xml:whitespace="preserve">The #ClutterCloneClass structure contains only private data</doc>
+      <field name="parent_class">
+        <type name="ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="_clutter_actor_clone1" introspectable="0">
+        <callback name="_clutter_actor_clone1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_actor_clone2" introspectable="0">
+        <callback name="_clutter_actor_clone2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_actor_clone3" introspectable="0">
+        <callback name="_clutter_actor_clone3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_actor_clone4" introspectable="0">
+        <callback name="_clutter_actor_clone4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ClonePrivate" c:type="ClutterClonePrivate" disguised="1">
+    </record>
+    <constant name="Close" value="269025110">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Codeinput" value="65335">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ColonSign" value="16785569">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="Color"
+            c:type="ClutterColor"
+            glib:type-name="ClutterColor"
+            glib:get-type="clutter_color_get_type"
+            c:symbol-prefix="color">
+      <doc xml:whitespace="preserve">Color representation.</doc>
+      <field name="red" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="green" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="blue" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="alpha" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <constructor name="new" c:identifier="clutter_color_new" version="0.8.4">
+        <doc xml:whitespace="preserve">Creates a new #ClutterColor with the given values.
+Use clutter_color_free() when done</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated color.</doc>
+          <type name="Color" c:type="ClutterColor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <doc xml:whitespace="preserve">red component of the color, between 0 and 255</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="green" transfer-ownership="none">
+            <doc xml:whitespace="preserve">green component of the color, between 0 and 255</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="blue" transfer-ownership="none">
+            <doc xml:whitespace="preserve">blue component of the color, between 0 and 255</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">alpha component of the color, between 0 and 255</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add" c:identifier="clutter_color_add">
+        <doc xml:whitespace="preserve">Adds @a to @b and saves the resulting color inside @result.
+The alpha channel of @result is set as as the maximum value
+between the alpha channels of @a and @b.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="b" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the result</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="clutter_color_copy" version="0.2">
+        <doc xml:whitespace="preserve">Makes a copy of the color structure.  The result must be
+freed using clutter_color_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">an allocated copy of @color.</doc>
+          <type name="Color" c:type="ClutterColor*"/>
+        </return-value>
+      </method>
+      <method name="darken" c:identifier="clutter_color_darken">
+        <doc xml:whitespace="preserve">Darkens @color by a fixed amount, and saves the changed color
+in @result.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the darker color</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="clutter_color_free" version="0.2">
+        <doc xml:whitespace="preserve">Frees a color structure created with clutter_color_copy().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="from_hls" c:identifier="clutter_color_from_hls">
+        <doc xml:whitespace="preserve">Converts a color expressed in HLS (hue, luminance and saturation)
+values into a #ClutterColor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hue" transfer-ownership="none">
+            <doc xml:whitespace="preserve">hue value, in the 0 .. 360 range</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="luminance" transfer-ownership="none">
+            <doc xml:whitespace="preserve">luminance value, in the 0 .. 1 range</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="saturation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">saturation value, in the 0 .. 1 range</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_pixel" c:identifier="clutter_color_from_pixel">
+        <doc xml:whitespace="preserve">Converts @pixel from the packed representation of a four 8 bit channel
+color to a #ClutterColor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixel" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a 32 bit packed integer containing a color</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_string"
+              c:identifier="clutter_color_from_string"
+              version="1.0">
+        <doc xml:whitespace="preserve">Parses a string definition of a color, filling the
+&lt;structfield&gt;red&lt;/structfield&gt;, &lt;structfield&gt;green&lt;/structfield&gt;, 
+&lt;structfield&gt;blue&lt;/structfield&gt; and &lt;structfield&gt;alpha&lt;/structfield&gt; 
+channels of @color. If alpha is not specified it will be set full opaque.
+The @color is not allocated.
+The color may be defined by any of the formats understood by
+pango_color_from_string(); these include literal color names, like
+&lt;literal&gt;Red&lt;/literal&gt; or &lt;literal&gt;DarkSlateGray&lt;/literal&gt;, or
+hexadecimal specifications like &lt;literal&gt;&amp;num;3050b2&lt;/literal&gt; or
+&lt;literal&gt;&amp;num;333&lt;/literal&gt;.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if parsing succeeded.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string specifiying a color (named color or #RRGGBBAA)</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lighten" c:identifier="clutter_color_lighten">
+        <doc xml:whitespace="preserve">Lightens @color by a fixed amount, and saves the changed color
+in @result.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the lighter color</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="shade" c:identifier="clutter_color_shade">
+        <doc xml:whitespace="preserve">Shades @color by @factor and saves the modified color into @result.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="factor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the shade factor to apply</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the shaded color</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="subtract" c:identifier="clutter_color_subtract">
+        <doc xml:whitespace="preserve">Subtracts @b from @a and saves the resulting color inside @result.
+This function assumes that the components of @a are greater than the
+components of @b; the result is, otherwise, undefined.
+The alpha channel of @result is set as the minimum value
+between the alpha channels of @a and @b.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="b" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the result</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_hls" c:identifier="clutter_color_to_hls">
+        <doc xml:whitespace="preserve">Converts @color to the HLS format.
+The @hue value is in the 0 .. 360 range. The @luminance and</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hue"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the hue value or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="luminance"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the luminance value or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="saturation"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the saturation value or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_pixel" c:identifier="clutter_color_to_pixel">
+        <doc xml:whitespace="preserve">Converts @color into a packed 32 bit integer, containing
+all the four 8 bit channels used by #ClutterColor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a packed color</doc>
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="to_string"
+              c:identifier="clutter_color_to_string"
+              version="0.2">
+        <doc xml:whitespace="preserve">Returns a textual specification of @color in the hexadecimal form
+&lt;literal&gt;&amp;num;rrggbbaa&lt;/literal&gt;, where &lt;literal&gt;r&lt;/literal&gt;,
+&lt;literal&gt;g&lt;/literal&gt;, &lt;literal&gt;b&lt;/literal&gt; and &lt;literal&gt;a&lt;/literal&gt; are
+hex digits representing the red, green, blue and alpha components
+respectively.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly-allocated text string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="ColorizeEffect"
+           c:symbol-prefix="colorize_effect"
+           c:type="ClutterColorizeEffect"
+           parent="OffscreenEffect"
+           glib:type-name="ClutterColorizeEffect"
+           glib:get-type="clutter_colorize_effect_get_type">
+      <doc xml:whitespace="preserve">&lt;structname&gt;ClutterColorizeEffect&lt;/structname&gt; is an opaque structure
+whose members cannot be directly accessed
+SinceL 1.4</doc>
+      <constructor name="new"
+                   c:identifier="clutter_colorize_effect_new"
+                   version="1.4">
+        <doc xml:whitespace="preserve">Creates a new #ClutterColorizeEffect to be used with
+clutter_actor_add_effect()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterColorizeEffect or %NULL</doc>
+          <type name="Effect" c:type="ClutterEffect*"/>
+        </return-value>
+        <parameters>
+          <parameter name="tint" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the color to be used</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_tint"
+              c:identifier="clutter_colorize_effect_get_tint"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the tint used by @effect</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tint"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the color used</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tint"
+              c:identifier="clutter_colorize_effect_set_tint"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the tint to be used when colorizing</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tint" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the color to be used</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="tint"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The tint to apply to the actor</doc>
+        <type name="Color"/>
+      </property>
+    </class>
+    <constant name="Community" value="269025085">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Constraint"
+           c:symbol-prefix="constraint"
+           c:type="ClutterConstraint"
+           version="1.4"
+           parent="ActorMeta"
+           abstract="1"
+           glib:type-name="ClutterConstraint"
+           glib:get-type="clutter_constraint_get_type"
+           glib:type-struct="ConstraintClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterConstraint&lt;/structname&gt; structure contains only
+private data and should be accessed using the provided API</doc>
+      <virtual-method name="update_allocation">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="allocation" transfer-ownership="none">
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <field name="parent_instance">
+        <type name="ActorMeta" c:type="ClutterActorMeta"/>
+      </field>
+    </class>
+    <record name="ConstraintClass"
+            c:type="ClutterConstraintClass"
+            glib:is-gtype-struct-for="Constraint"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterConstraintClass&lt;/structname&gt; structure contains
+only private data</doc>
+      <field name="parent_class">
+        <type name="ActorMetaClass" c:type="ClutterActorMetaClass"/>
+      </field>
+      <field name="update_allocation">
+        <callback name="update_allocation">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="constraint" transfer-ownership="none">
+              <type name="Constraint" c:type="ClutterConstraint*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="allocation" transfer-ownership="none">
+              <type name="ActorBox" c:type="ClutterActorBox*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_constraint1" introspectable="0">
+        <callback name="_clutter_constraint1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_constraint2" introspectable="0">
+        <callback name="_clutter_constraint2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_constraint3" introspectable="0">
+        <callback name="_clutter_constraint3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_constraint4" introspectable="0">
+        <callback name="_clutter_constraint4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_constraint5" introspectable="0">
+        <callback name="_clutter_constraint5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_constraint6" introspectable="0">
+        <callback name="_clutter_constraint6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_constraint7" introspectable="0">
+        <callback name="_clutter_constraint7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_constraint8" introspectable="0">
+        <callback name="_clutter_constraint8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <interface name="Container"
+               c:symbol-prefix="container"
+               c:type="ClutterContainer"
+               version="0.4"
+               glib:type-name="ClutterContainer"
+               glib:get-type="clutter_container_get_type"
+               glib:type-struct="ContainerIface">
+      <doc xml:whitespace="preserve">#ClutterContainer is an opaque structure whose members cannot be directly
+accessed</doc>
+      <virtual-method name="add">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="create_child_meta"
+                      invoker="create_child_meta"
+                      version="1.2">
+        <doc xml:whitespace="preserve">Creates the #ClutterChildMeta wrapping @actor inside the
+class member is not set to %G_TYPE_INVALID.
+This function is only useful when adding a #ClutterActor to
+a #ClutterContainer implementation outside of the
+#ClutterContainer::add() virtual function implementation.
+Applications should not call this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="destroy_child_meta"
+                      invoker="destroy_child_meta"
+                      version="1.2">
+        <doc xml:whitespace="preserve">Destroys the #ClutterChildMeta wrapping @actor inside the
+This function is only useful when removing a #ClutterActor to
+a #ClutterContainer implementation outside of the
+#ClutterContainer::add() virtual function implementation.
+Applications should not call this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="foreach" invoker="foreach" version="0.4">
+        <doc xml:whitespace="preserve">Calls @callback for each child of @container that was added
+by the application (with clutter_container_add_actor()). Does
+not iterate over "internal" children that are part of the
+container's own implementation, if any.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">a function to be called for each child</doc>
+            <type name="Callback" c:type="ClutterCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">data to be passed to the function, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="foreach_with_internals"
+                      invoker="foreach_with_internals"
+                      version="1.0">
+        <doc xml:whitespace="preserve">Calls @callback for each child of @container, including "internal"
+children built in to the container itself that were never added
+by the application.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">a function to be called for each child</doc>
+            <type name="Callback" c:type="ClutterCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">data to be passed to the function, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_child_meta"
+                      invoker="get_child_meta"
+                      version="0.8">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterChildMeta which contains the data about the
+of @container or %NULL if the specifiec actor does not exist or the
+container is not configured to provide #ClutterChildMeta&lt;!-- --&gt;s</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterChildMeta for the @actor child</doc>
+          <type name="ChildMeta" c:type="ClutterChildMeta*"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor that is a child of @container.</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="lower">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="raise">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="sort_depth_order"
+                      invoker="sort_depth_order"
+                      version="0.6">
+        <doc xml:whitespace="preserve">Sorts a container's children using their depth. This function should not
+be normally used by applications.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="add"
+              c:identifier="clutter_container_add"
+              version="0.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds a list of #ClutterActor&lt;!-- --&gt;s to @container. Each time and
+actor is added, the "actor-added" signal is emitted. Each actor should
+be parented to @container, which takes a reference on the actor. You
+cannot add a #ClutterActor to more than one #ClutterContainer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the first #ClutterActor to add</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_actor"
+              c:identifier="clutter_container_add_actor"
+              version="0.4">
+        <doc xml:whitespace="preserve">Adds a #ClutterActor to @container. This function will emit the
+"actor-added" signal. The actor should be parented to
+#ClutterContainer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the first #ClutterActor to add</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_valist"
+              c:identifier="clutter_container_add_valist"
+              version="0.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Alternative va_list version of clutter_container_add().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the first #ClutterActor to add</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="var_args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">list of actors to add, followed by %NULL</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_get"
+              c:identifier="clutter_container_child_get"
+              version="0.8"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets @container specific properties of an actor.
+In general, a copy is made of the property contents and the caller is
+responsible for freeing the memory in the appropriate manner for the type, for
+instance by calling g_free() or g_object_unref().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor that is a child of @container.</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_prop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the first property to be set.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_get_property"
+              c:identifier="clutter_container_child_get_property"
+              version="0.8">
+        <doc xml:whitespace="preserve">Gets a container specific property of a child of @container, In general,
+a copy is made of the property contents and the caller is responsible for
+freeing the memory by calling g_value_unset().
+Note that clutter_container_child_set_property() is really intended for
+language bindings, clutter_container_child_set() is much more convenient
+for C programming.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor that is a child of @container.</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property to set.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value.</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_set"
+              c:identifier="clutter_container_child_set"
+              version="0.8"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets container specific properties on the child of a container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor that is a child of @container.</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_prop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the first property to be set.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_set_property"
+              c:identifier="clutter_container_child_set_property"
+              version="0.8">
+        <doc xml:whitespace="preserve">Sets a container-specific property on a child of @container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor that is a child of @container.</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property to set.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value.</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_child_meta"
+              c:identifier="clutter_container_create_child_meta"
+              version="1.2">
+        <doc xml:whitespace="preserve">Creates the #ClutterChildMeta wrapping @actor inside the
+class member is not set to %G_TYPE_INVALID.
+This function is only useful when adding a #ClutterActor to
+a #ClutterContainer implementation outside of the
+#ClutterContainer::add() virtual function implementation.
+Applications should not call this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="destroy_child_meta"
+              c:identifier="clutter_container_destroy_child_meta"
+              version="1.2">
+        <doc xml:whitespace="preserve">Destroys the #ClutterChildMeta wrapping @actor inside the
+This function is only useful when removing a #ClutterActor to
+a #ClutterContainer implementation outside of the
+#ClutterContainer::add() virtual function implementation.
+Applications should not call this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_child_by_name"
+              c:identifier="clutter_container_find_child_by_name"
+              version="0.6">
+        <doc xml:whitespace="preserve">Finds a child actor of a container by its name. Search recurses
+into any child container.
+or %NULL if no actor with that name was found.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The child actor with the requested name,</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the requested child.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach"
+              c:identifier="clutter_container_foreach"
+              version="0.4">
+        <doc xml:whitespace="preserve">Calls @callback for each child of @container that was added
+by the application (with clutter_container_add_actor()). Does
+not iterate over "internal" children that are part of the
+container's own implementation, if any.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">a function to be called for each child</doc>
+            <type name="Callback" c:type="ClutterCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to be passed to the function, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach_with_internals"
+              c:identifier="clutter_container_foreach_with_internals"
+              version="1.0">
+        <doc xml:whitespace="preserve">Calls @callback for each child of @container, including "internal"
+children built in to the container itself that were never added
+by the application.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">a function to be called for each child</doc>
+            <type name="Callback" c:type="ClutterCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to be passed to the function, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child_meta"
+              c:identifier="clutter_container_get_child_meta"
+              version="0.8">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterChildMeta which contains the data about the
+of @container or %NULL if the specifiec actor does not exist or the
+container is not configured to provide #ClutterChildMeta&lt;!-- --&gt;s</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterChildMeta for the @actor child</doc>
+          <type name="ChildMeta" c:type="ClutterChildMeta*"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor that is a child of @container.</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_children"
+              c:identifier="clutter_container_get_children"
+              version="0.4">
+        <doc xml:whitespace="preserve">Retrieves all the children of @container.
+of #ClutterActor&lt;!-- --&gt;s. Use g_list_free() on the returned
+list when done.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a list</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Actor"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="lower_child"
+              c:identifier="clutter_container_lower_child"
+              version="0.6">
+        <doc xml:whitespace="preserve">Lowers @actor to @sibling level, in the depth ordering.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the actor to raise</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the sibling to lower to, or %NULL to lower to the bottom</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="raise_child"
+              c:identifier="clutter_container_raise_child"
+              version="0.6">
+        <doc xml:whitespace="preserve">Raises @actor to @sibling level, in the depth ordering.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the actor to raise</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the sibling to raise to, or %NULL to raise to the top</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="clutter_container_remove"
+              version="0.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Removes a %NULL terminated list of #ClutterActor&lt;!-- --&gt;s from
+around you must hold a reference to it yourself, using g_object_ref().
+Each time an actor is removed, the "actor-removed" signal is
+emitted by @container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">first #ClutterActor to remove</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_actor"
+              c:identifier="clutter_container_remove_actor"
+              version="0.4">
+        <doc xml:whitespace="preserve">Removes @actor from @container. The actor should be unparented, so
+if you want to keep it around you must hold a reference to it
+yourself, using g_object_ref(). When the actor has been removed,
+the "actor-removed" signal is emitted by @container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_valist"
+              c:identifier="clutter_container_remove_valist"
+              version="0.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Alternative va_list version of clutter_container_remove().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the first #ClutterActor to add</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="var_args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">list of actors to remove, followed by %NULL</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sort_depth_order"
+              c:identifier="clutter_container_sort_depth_order"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sorts a container's children using their depth. This function should not
+be normally used by applications.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <glib:signal name="actor-added" version="0.4">
+        <doc xml:whitespace="preserve">The ::actor-added signal is emitted each time an actor
+has been added to @container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new child that has been added to @container</doc>
+            <type name="Actor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="actor-removed" version="0.4">
+        <doc xml:whitespace="preserve">The ::actor-removed signal is emitted each time an actor
+is removed from @container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the child that has been removed from @container</doc>
+            <type name="Actor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="child-notify" version="0.8" introspectable="0">
+        <doc xml:whitespace="preserve">The ::child-notify signal is emitted each time a property is
+being set through the clutter_container_child_set() and
+clutter_container_child_set_property() calls.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the child that has had a property set.</doc>
+            <type name="Actor"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="ContainerIface"
+            c:type="ClutterContainerIface"
+            glib:is-gtype-struct-for="Container"
+            version="0.4">
+      <doc xml:whitespace="preserve">Base interface for container actors. The @add, @remove and @foreach
+virtual functions must be provided by any implementation; the other
+virtual functions are optional.</doc>
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="add">
+        <callback name="add">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove">
+        <callback name="remove">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="foreach">
+        <callback name="foreach">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="call"
+                       closure="2">
+              <doc xml:whitespace="preserve">a function to be called for each child</doc>
+              <type name="Callback" c:type="ClutterCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="2">
+              <doc xml:whitespace="preserve">data to be passed to the function, or %NULL</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="foreach_with_internals">
+        <callback name="foreach_with_internals">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="call"
+                       closure="2">
+              <doc xml:whitespace="preserve">a function to be called for each child</doc>
+              <type name="Callback" c:type="ClutterCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="2">
+              <doc xml:whitespace="preserve">data to be passed to the function, or %NULL</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="raise">
+        <callback name="raise">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="sibling" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lower">
+        <callback name="lower">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="sibling" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="sort_depth_order">
+        <callback name="sort_depth_order">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="child_meta_type">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="create_child_meta">
+        <callback name="create_child_meta">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #ClutterActor</doc>
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="destroy_child_meta">
+        <callback name="destroy_child_meta">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #ClutterActor</doc>
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_child_meta">
+        <callback name="get_child_meta">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterChildMeta for the @actor child</doc>
+            <type name="ChildMeta" c:type="ClutterChildMeta*"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #ClutterActor that is a child of @container.</doc>
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="actor_added">
+        <callback name="actor_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="actor_removed">
+        <callback name="actor_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="child_notify">
+        <callback name="child_notify">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <constant name="ContrastAdjust" value="269025058">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Control_L" value="65507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Control_R" value="65508">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Copy" value="269025111">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="CrossingEvent" c:type="ClutterCrossingEvent" version="0.2">
+      <doc xml:whitespace="preserve">Event for the movement of the pointer across different actors</doc>
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="InputDevice" c:type="ClutterInputDevice*"/>
+      </field>
+      <field name="related" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+    </record>
+    <constant name="CruzeiroSign" value="16785570">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cut" value="269025112">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="CycleAngle" value="269025180">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_A" value="1761">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_BE" value="1762">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_CHE" value="1790">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_CHE_descender" value="16778422">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_CHE_vertstroke" value="16778424">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_DE" value="1764">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_DZHE" value="1727">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_E" value="1788">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_EF" value="1766">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_EL" value="1772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_EM" value="1773">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_EN" value="1774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_EN_descender" value="16778402">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ER" value="1778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ES" value="1779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_GHE" value="1767">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_GHE_bar" value="16778386">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_HA" value="1768">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_HARDSIGN" value="1791">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_HA_descender" value="16778418">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_I" value="1769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_IE" value="1765">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_IO" value="1715">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_I_macron" value="16778466">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_JE" value="1720">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_KA" value="1771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_KA_descender" value="16778394">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_KA_vertstroke" value="16778396">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_LJE" value="1721">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_NJE" value="1722">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_O" value="1775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_O_bar" value="16778472">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_PE" value="1776">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_SCHWA" value="16778456">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_SHA" value="1787">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_SHCHA" value="1789">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_SHHA" value="16778426">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_SHORTI" value="1770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_SOFTSIGN" value="1784">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_TE" value="1780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_TSE" value="1763">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_U" value="1781">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_U_macron" value="16778478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_U_straight" value="16778414">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_U_straight_bar" value="16778416">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_VE" value="1783">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_YA" value="1777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_YERU" value="1785">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_YU" value="1760">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ZE" value="1786">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ZHE" value="1782">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ZHE_descender" value="16778390">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_a" value="1729">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_be" value="1730">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_che" value="1758">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_che_descender" value="16778423">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_che_vertstroke" value="16778425">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_de" value="1732">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_dzhe" value="1711">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_e" value="1756">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ef" value="1734">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_el" value="1740">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_em" value="1741">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_en" value="1742">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_en_descender" value="16778403">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_er" value="1746">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_es" value="1747">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ghe" value="1735">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ghe_bar" value="16778387">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ha" value="1736">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ha_descender" value="16778419">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_hardsign" value="1759">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_i" value="1737">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_i_macron" value="16778467">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ie" value="1733">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_io" value="1699">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_je" value="1704">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ka" value="1739">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ka_descender" value="16778395">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ka_vertstroke" value="16778397">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_lje" value="1705">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_nje" value="1706">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_o" value="1743">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_o_bar" value="16778473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_pe" value="1744">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_schwa" value="16778457">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_sha" value="1755">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_shcha" value="1757">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_shha" value="16778427">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_shorti" value="1738">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_softsign" value="1752">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_te" value="1748">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_tse" value="1731">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_u" value="1749">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_u_macron" value="16778479">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_u_straight" value="16778415">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_u_straight_bar" value="16778417">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ve" value="1751">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ya" value="1745">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_yeru" value="1753">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_yu" value="1728">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ze" value="1754">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_zhe" value="1750">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_zhe_descender" value="16778391">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="D" value="68">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="DOS" value="269025114">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Dabovedot" value="16784906">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Dcaron" value="463">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="DeformEffect"
+           c:symbol-prefix="deform_effect"
+           c:type="ClutterDeformEffect"
+           version="1.4"
+           parent="OffscreenEffect"
+           abstract="1"
+           glib:type-name="ClutterDeformEffect"
+           glib:get-type="clutter_deform_effect_get_type"
+           glib:type-struct="DeformEffectClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterDeformEffect&lt;/structname&gt; structure contains
+only private data and should be accessed using the provided API</doc>
+      <virtual-method name="deform_vertex">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="vertex" transfer-ownership="none">
+            <type name="Cogl.TextureVertex" c:type="CoglTextureVertex*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_back_material"
+              c:identifier="clutter_deform_effect_get_back_material"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the handle to the back face material used by @effect
+The returned material is owned by the #ClutterDeformEffect and it
+should not be freed directly</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a handle for the material, or %NULL.</doc>
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="get_n_tiles"
+              c:identifier="clutter_deform_effect_get_n_tiles"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the number of horizontal and vertical tiles used to sub-divide
+the actor's geometry during the effect</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_tiles"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the number of horizontal tiles, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="y_tiles"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the number of vertical tiles, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="invalidate"
+              c:identifier="clutter_deform_effect_invalidate"
+              version="1.4">
+        <doc xml:whitespace="preserve">Invalidates the @effect&lt;!-- --&gt;'s vertices and, if it is associated
+to an actor, it will queue a redraw</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_back_material"
+              c:identifier="clutter_deform_effect_set_back_material"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the material that should be used when drawing the back face
+of the actor during a deformation
+The #ClutterDeformEffect will take a reference on the material's
+handle</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="material" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a handle to a Cogl material</doc>
+            <type name="Cogl.Handle" c:type="CoglHandle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_n_tiles"
+              c:identifier="clutter_deform_effect_set_n_tiles"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the number of horizontal and vertical tiles to be used
+when applying the effect
+More tiles allow a finer grained deformation at the expenses
+of computation</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_tiles" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of horizontal tiles</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="y_tiles" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of vertical tiles</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="back-material"
+                version="1.4"
+                introspectable="0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A material to be used when painting the back of the actor
+to which this effect has been applied
+By default, no material will be used</doc>
+        <type/>
+      </property>
+      <property name="x-tiles"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The number of horizontal tiles. The bigger the number, the
+smaller the tiles</doc>
+        <type name="guint"/>
+      </property>
+      <property name="y-tiles"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The number of vertical tiles. The bigger the number, the
+smaller the tiles</doc>
+        <type name="guint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="OffscreenEffect" c:type="ClutterOffscreenEffect"/>
+      </field>
+      <field name="priv">
+        <type name="DeformEffectPrivate" c:type="ClutterDeformEffectPrivate*"/>
+      </field>
+    </class>
+    <record name="DeformEffectClass"
+            c:type="ClutterDeformEffectClass"
+            glib:is-gtype-struct-for="DeformEffect"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterDeformEffectClass&lt;/structname&gt; structure contains
+only private data</doc>
+      <field name="parent_class">
+        <type name="OffscreenEffectClass"
+              c:type="ClutterOffscreenEffectClass"/>
+      </field>
+      <field name="deform_vertex">
+        <callback name="deform_vertex">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="effect" transfer-ownership="none">
+              <type name="DeformEffect" c:type="ClutterDeformEffect*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+            <parameter name="vertex" transfer-ownership="none">
+              <type name="Cogl.TextureVertex" c:type="CoglTextureVertex*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_deform1" introspectable="0">
+        <callback name="_clutter_deform1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_deform2" introspectable="0">
+        <callback name="_clutter_deform2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_deform3" introspectable="0">
+        <callback name="_clutter_deform3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_deform4" introspectable="0">
+        <callback name="_clutter_deform4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_deform5" introspectable="0">
+        <callback name="_clutter_deform5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_deform6" introspectable="0">
+        <callback name="_clutter_deform6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_deform7" introspectable="0">
+        <callback name="_clutter_deform7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="DeformEffectPrivate"
+            c:type="ClutterDeformEffectPrivate"
+            disguised="1">
+    </record>
+    <constant name="Delete" value="65535">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="DesaturateEffect"
+           c:symbol-prefix="desaturate_effect"
+           c:type="ClutterDesaturateEffect"
+           version="1.4"
+           parent="OffscreenEffect"
+           glib:type-name="ClutterDesaturateEffect"
+           glib:get-type="clutter_desaturate_effect_get_type">
+      <doc xml:whitespace="preserve">&lt;structname&gt;ClutterDesaturateEffect&lt;/structname&gt; is an opaque structure
+whose members cannot be directly accessed</doc>
+      <constructor name="new"
+                   c:identifier="clutter_desaturate_effect_new"
+                   version="1.4">
+        <doc xml:whitespace="preserve">Creates a new #ClutterDesaturateEffect to be used with
+clutter_actor_add_effect()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterDesaturateEffect or %NULL</doc>
+          <type name="Effect" c:type="ClutterEffect*"/>
+        </return-value>
+        <parameters>
+          <parameter name="factor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the desaturation factor, between 0.0 and 1.0</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_factor"
+              c:identifier="clutter_desaturate_effect_get_factor"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the desaturation factor of @effect</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the desaturation factor</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_factor"
+              c:identifier="clutter_desaturate_effect_set_factor"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the desaturation factor for @effect, with 0.0 being "do not desaturate"
+and 1.0 being "fully desaturate"</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="factor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the desaturation factor, between 0.0 and 1.0</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="factor"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The desaturation factor, between 0.0 (no desaturation) and 1.0 (full
+desaturation).</doc>
+        <type name="gdouble"/>
+      </property>
+    </class>
+    <class name="DeviceManager"
+           c:symbol-prefix="device_manager"
+           c:type="ClutterDeviceManager"
+           version="1.2"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="ClutterDeviceManager"
+           glib:get-type="clutter_device_manager_get_type"
+           glib:type-struct="DeviceManagerClass">
+      <doc xml:whitespace="preserve">The #ClutterDeviceManager structure contains only private data</doc>
+      <function name="get_default"
+                c:identifier="clutter_device_manager_get_default"
+                version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the device manager singleton
+The returned instance is owned by Clutter and it should not be
+modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterDeviceManager singleton.</doc>
+          <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+        </return-value>
+      </function>
+      <virtual-method name="add_device">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <type name="InputDevice" c:type="ClutterInputDevice*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_core_device"
+                      invoker="get_core_device"
+                      version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the core #ClutterInputDevice of type @device_type
+Core devices are devices created automatically by the default
+Clutter backend
+returned device is owned by the #ClutterDeviceManager and should
+not be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterInputDevice or %NULL. The</doc>
+          <type name="InputDevice" c:type="ClutterInputDevice*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="InputDeviceType" c:type="ClutterInputDeviceType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_device" invoker="get_device" version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterInputDevice with the given @device_id
+returned device is owned by the #ClutterDeviceManager and should
+never be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterInputDevice or %NULL. The</doc>
+          <type name="InputDevice" c:type="ClutterInputDevice*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_devices">
+        <return-value transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="remove_device">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <type name="InputDevice" c:type="ClutterInputDevice*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_core_device"
+              c:identifier="clutter_device_manager_get_core_device"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the core #ClutterInputDevice of type @device_type
+Core devices are devices created automatically by the default
+Clutter backend
+returned device is owned by the #ClutterDeviceManager and should
+not be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterInputDevice or %NULL. The</doc>
+          <type name="InputDevice" c:type="ClutterInputDevice*"/>
+        </return-value>
+        <parameters>
+          <parameter name="device_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of the core device</doc>
+            <type name="InputDeviceType" c:type="ClutterInputDeviceType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_device"
+              c:identifier="clutter_device_manager_get_device"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterInputDevice with the given @device_id
+returned device is owned by the #ClutterDeviceManager and should
+never be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterInputDevice or %NULL. The</doc>
+          <type name="InputDevice" c:type="ClutterInputDevice*"/>
+        </return-value>
+        <parameters>
+          <parameter name="device_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the integer id of a device</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_devices"
+              c:identifier="clutter_device_manager_list_devices"
+              version="1.2">
+        <doc xml:whitespace="preserve">Lists all currently registered input devices
+a newly allocated list of #ClutterInputDevice objects. Use
+g_slist_free() to deallocate it when done</doc>
+        <return-value transfer-ownership="container">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="InputDevice"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="peek_devices"
+              c:identifier="clutter_device_manager_peek_devices"
+              version="1.2">
+        <doc xml:whitespace="preserve">Lists all currently registered input devices
+a pointer to the internal list of #ClutterInputDevice objects. The
+returned list is owned by the #ClutterDeviceManager and should never
+be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="InputDevice"/>
+          </type>
+        </return-value>
+      </method>
+      <property name="backend"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="Backend"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="DeviceManagerPrivate"
+              c:type="ClutterDeviceManagerPrivate*"/>
+      </field>
+      <glib:signal name="device-added" version="1.2">
+        <doc xml:whitespace="preserve">The ::device-added signal is emitted each time a device has been
+added to the #ClutterDeviceManager</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the newly added #ClutterInputDevice</doc>
+            <type name="InputDevice"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="device-removed" version="1.2">
+        <doc xml:whitespace="preserve">The ::device-removed signal is emitted each time a device has been
+removed from the #ClutterDeviceManager</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the removed #ClutterInputDevice</doc>
+            <type name="InputDevice"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="DeviceManagerClass"
+            c:type="ClutterDeviceManagerClass"
+            glib:is-gtype-struct-for="DeviceManager"
+            version="1.2">
+      <doc xml:whitespace="preserve">The #ClutterDeviceManagerClass structure contains only private data</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_devices">
+        <callback name="get_devices">
+          <return-value transfer-ownership="none">
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_core_device">
+        <callback name="get_core_device">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterInputDevice or %NULL. The</doc>
+            <type name="InputDevice" c:type="ClutterInputDevice*"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <type name="InputDeviceType" c:type="ClutterInputDeviceType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_device">
+        <callback name="get_device">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterInputDevice or %NULL. The</doc>
+            <type name="InputDevice" c:type="ClutterInputDevice*"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+            </parameter>
+            <parameter name="id" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_device">
+        <callback name="add_device">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+            </parameter>
+            <parameter name="device" transfer-ownership="none">
+              <type name="InputDevice" c:type="ClutterInputDevice*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_device">
+        <callback name="remove_device">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+            </parameter>
+            <parameter name="device" transfer-ownership="none">
+              <type name="InputDevice" c:type="ClutterInputDevice*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_padding">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="8">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="DeviceManagerPrivate"
+            c:type="ClutterDeviceManagerPrivate"
+            disguised="1">
+    </record>
+    <constant name="Display" value="269025113">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Documents" value="269025115">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="DongSign" value="16785579">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Down" value="65364">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="DragAction"
+           c:symbol-prefix="drag_action"
+           c:type="ClutterDragAction"
+           version="1.4"
+           parent="Action"
+           glib:type-name="ClutterDragAction"
+           glib:get-type="clutter_drag_action_get_type"
+           glib:type-struct="DragActionClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterDragAction&lt;/structname&gt; structure contains only
+private data and should be accessed using the provided API</doc>
+      <constructor name="new"
+                   c:identifier="clutter_drag_action_new"
+                   version="1.4">
+        <doc xml:whitespace="preserve">Creates a new #ClutterDragAction instance</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterDragAction</doc>
+          <type name="Action" c:type="ClutterAction*"/>
+        </return-value>
+      </constructor>
+      <method name="get_drag_axis"
+              c:identifier="clutter_drag_action_get_drag_axis"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the axis constraint set by clutter_drag_action_set_drag_axis()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the axis constraint</doc>
+          <type name="DragAxis" c:type="ClutterDragAxis"/>
+        </return-value>
+      </method>
+      <method name="get_drag_handle"
+              c:identifier="clutter_drag_action_get_drag_handle"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the drag handle set by clutter_drag_action_set_drag_handle()
+handle, or %NULL if none was set</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterActor, used as the drag</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="get_drag_threshold"
+              c:identifier="clutter_drag_action_get_drag_threshold"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the values set by clutter_drag_action_set_drag_threshold()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_threshold"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the horizontal drag threshold value, in pixels</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="y_threshold"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the vertical drag threshold value, in pixels</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_motion_coords"
+              c:identifier="clutter_drag_action_get_motion_coords"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the coordinates, in stage space, of the latest motion
+event during the dragging</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="motion_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the latest motion event's X coordinate</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="motion_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the latest motion event's Y coordinate</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_press_coords"
+              c:identifier="clutter_drag_action_get_press_coords"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the coordinates, in stage space, of the press event
+that started the dragging</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="press_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the press event's X coordinate</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="press_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the press event's Y coordinate</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_drag_axis"
+              c:identifier="clutter_drag_action_set_drag_axis"
+              version="1.4">
+        <doc xml:whitespace="preserve">Restricts the dragging action to a specific axis</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the axis to constraint the dragging to</doc>
+            <type name="DragAxis" c:type="ClutterDragAxis"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_drag_handle"
+              c:identifier="clutter_drag_action_set_drag_handle"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the actor to be used as the drag handle</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handle" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_drag_threshold"
+              c:identifier="clutter_drag_action_set_drag_threshold"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the horizontal and vertical drag thresholds that must be
+cleared by the pointer before @action can begin the dragging</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_threshold" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a distance on the horizontal axis, in pixels</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="y_threshold" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a distance on the vertical axis, in pixels</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="drag-axis"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Constraints the dragging action to the specified axis</doc>
+        <type name="DragAxis"/>
+      </property>
+      <property name="drag-handle"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterActor that is effectively being dragged
+A #ClutterDragAction will, be default, use the #ClutterActor that
+has been attached to the action; it is possible to create a
+separate #ClutterActor and use it instead.
+Setting this property has no effect on the #ClutterActor argument
+passed to the #ClutterDragAction signals</doc>
+        <type name="Actor"/>
+      </property>
+      <property name="x-drag-threshold"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The horizontal threshold, in pixels, that begins a drag action
+When set to a non-zero value, #ClutterDragAction will only emit
+#ClutterDragAction::drag-begin if the pointer has moved
+horizontally at least of the given amount of pixels since
+the button press event</doc>
+        <type name="guint"/>
+      </property>
+      <property name="y-drag-threshold"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The vertical threshold, in pixels, that begins a drag action
+When set to a non-zero value, #ClutterDragAction will only emit
+#ClutterDragAction::drag-begin if the pointer has moved
+vertically at least of the given amount of pixels since
+the button press event</doc>
+        <type name="guint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Action" c:type="ClutterAction"/>
+      </field>
+      <field name="priv">
+        <type name="DragActionPrivate" c:type="ClutterDragActionPrivate*"/>
+      </field>
+      <glib:signal name="drag-begin" version="1.4">
+        <doc xml:whitespace="preserve">The ::drag-begin signal is emitted when the #ClutterDragAction
+starts the dragging
+The emission of this signal can be delayed by using the
+#ClutterDragAction:x-drag-threshold and
+#ClutterDragAction:y-drag-threshold properties</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterActor attached to the action</doc>
+            <type name="Actor"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the X coordinate (in stage space) of the press event</doc>
+            <type name="gfloat"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the Y coordinate (in stage space) of the press event</doc>
+            <type name="gfloat"/>
+          </parameter>
+          <parameter name="p2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the modifiers of the press event</doc>
+            <type name="ModifierType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drag-end" version="1.4">
+        <doc xml:whitespace="preserve">The ::drag-end signal is emitted at the end of the dragging,
+when the pointer button's is released
+This signal is emitted if and only if the #ClutterDragAction::drag-begin
+signal has been emitted first</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterActor attached to the action</doc>
+            <type name="Actor"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the X coordinate (in stage space) of the release event</doc>
+            <type name="gfloat"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the Y coordinate (in stage space) of the release event</doc>
+            <type name="gfloat"/>
+          </parameter>
+          <parameter name="p2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the modifiers of the release event</doc>
+            <type name="ModifierType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drag-motion">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Actor"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="gfloat"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <type name="gfloat"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="DragActionClass"
+            c:type="ClutterDragActionClass"
+            glib:is-gtype-struct-for="DragAction"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterDragActionClass&lt;/structname&gt; structure contains
+only private data</doc>
+      <field name="parent_class">
+        <type name="ActionClass" c:type="ClutterActionClass"/>
+      </field>
+      <field name="drag_begin">
+        <callback name="drag_begin">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="DragAction" c:type="ClutterDragAction*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event_x" transfer-ownership="none">
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+            <parameter name="event_y" transfer-ownership="none">
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+            <parameter name="modifiers" transfer-ownership="none">
+              <type name="ModifierType" c:type="ClutterModifierType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drag_motion">
+        <callback name="drag_motion">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="DragAction" c:type="ClutterDragAction*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="delta_x" transfer-ownership="none">
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+            <parameter name="delta_y" transfer-ownership="none">
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drag_end">
+        <callback name="drag_end">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="DragAction" c:type="ClutterDragAction*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event_x" transfer-ownership="none">
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+            <parameter name="event_y" transfer-ownership="none">
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+            <parameter name="modifiers" transfer-ownership="none">
+              <type name="ModifierType" c:type="ClutterModifierType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_drag_action1" introspectable="0">
+        <callback name="_clutter_drag_action1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_drag_action2" introspectable="0">
+        <callback name="_clutter_drag_action2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_drag_action3" introspectable="0">
+        <callback name="_clutter_drag_action3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_drag_action4" introspectable="0">
+        <callback name="_clutter_drag_action4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_drag_action5" introspectable="0">
+        <callback name="_clutter_drag_action5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="DragActionPrivate"
+            c:type="ClutterDragActionPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="DragAxis"
+                 version="1.4"
+                 glib:type-name="ClutterDragAxis"
+                 glib:get-type="clutter_drag_axis_get_type"
+                 c:type="ClutterDragAxis">
+      <doc xml:whitespace="preserve">The axis of the constraint that should be applied on the
+dragging action</doc>
+      <member name="axis_none"
+              value="0"
+              c:identifier="CLUTTER_DRAG_AXIS_NONE"
+              glib:nick="axis-none"/>
+      <member name="x_axis"
+              value="1"
+              c:identifier="CLUTTER_DRAG_X_AXIS"
+              glib:nick="x-axis"/>
+      <member name="y_axis"
+              value="2"
+              c:identifier="CLUTTER_DRAG_Y_AXIS"
+              glib:nick="y-axis"/>
+    </enumeration>
+    <constant name="Dstroke" value="464">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="E" value="69">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ENG" value="957">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ETH" value="208">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Eabovedot" value="972">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Eacute" value="201">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ebelowdot" value="16785080">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ecaron" value="460">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ecircumflex" value="202">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ecircumflexacute" value="16785086">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ecircumflexbelowdot" value="16785094">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ecircumflexgrave" value="16785088">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ecircumflexhook" value="16785090">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ecircumflextilde" value="16785092">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="EcuSign" value="16785568">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ediaeresis" value="203">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Effect"
+           c:symbol-prefix="effect"
+           c:type="ClutterEffect"
+           version="1.4"
+           parent="ActorMeta"
+           abstract="1"
+           glib:type-name="ClutterEffect"
+           glib:get-type="clutter_effect_get_type"
+           glib:type-struct="EffectClass">
+      <doc xml:whitespace="preserve">The #ClutterEffect structure contains only private data and should
+be accessed using the provided API</doc>
+      <virtual-method name="post_paint">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="pre_paint">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <field name="parent_instance">
+        <type name="ActorMeta" c:type="ClutterActorMeta"/>
+      </field>
+    </class>
+    <record name="EffectClass"
+            c:type="ClutterEffectClass"
+            glib:is-gtype-struct-for="Effect"
+            version="1.4">
+      <doc xml:whitespace="preserve">The #ClutterEffectClass structure contains only private data</doc>
+      <field name="parent_class">
+        <type name="ActorMetaClass" c:type="ClutterActorMetaClass"/>
+      </field>
+      <field name="pre_paint">
+        <callback name="pre_paint">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="effect" transfer-ownership="none">
+              <type name="Effect" c:type="ClutterEffect*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="post_paint">
+        <callback name="post_paint">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="effect" transfer-ownership="none">
+              <type name="Effect" c:type="ClutterEffect*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_effect1" introspectable="0">
+        <callback name="_clutter_effect1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_effect2" introspectable="0">
+        <callback name="_clutter_effect2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_effect3" introspectable="0">
+        <callback name="_clutter_effect3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_effect4" introspectable="0">
+        <callback name="_clutter_effect4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_effect5" introspectable="0">
+        <callback name="_clutter_effect5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_effect6" introspectable="0">
+        <callback name="_clutter_effect6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <constant name="Egrave" value="200">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ehook" value="16785082">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Eisu_Shift" value="65327">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Eisu_toggle" value="65328">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Eject" value="269025068">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Emacron" value="938">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="End" value="65367">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Eogonek" value="458">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Escape" value="65307">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Eth" value="208">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Etilde" value="16785084">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="EuroSign" value="8364">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <union name="Event"
+           c:type="ClutterEvent"
+           version="0.2"
+           glib:type-name="ClutterEvent"
+           glib:get-type="clutter_event_get_type"
+           c:symbol-prefix="event">
+      <doc xml:whitespace="preserve">Generic event wrapper.</doc>
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="any" writable="1">
+        <type name="AnyEvent" c:type="ClutterAnyEvent"/>
+      </field>
+      <field name="button" writable="1">
+        <type name="ButtonEvent" c:type="ClutterButtonEvent"/>
+      </field>
+      <field name="key" writable="1">
+        <type name="KeyEvent" c:type="ClutterKeyEvent"/>
+      </field>
+      <field name="motion" writable="1">
+        <type name="MotionEvent" c:type="ClutterMotionEvent"/>
+      </field>
+      <field name="scroll" writable="1">
+        <type name="ScrollEvent" c:type="ClutterScrollEvent"/>
+      </field>
+      <field name="stage_state" writable="1">
+        <type name="StageStateEvent" c:type="ClutterStageStateEvent"/>
+      </field>
+      <field name="crossing" writable="1">
+        <type name="CrossingEvent" c:type="ClutterCrossingEvent"/>
+      </field>
+      <constructor name="new" c:identifier="clutter_event_new">
+        <doc xml:whitespace="preserve">Creates a new #ClutterEvent of the specified type.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly allocated #ClutterEvent.</doc>
+          <type name="Event" c:type="ClutterEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The type of event.</doc>
+            <type name="EventType" c:type="ClutterEventType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy" c:identifier="clutter_event_copy">
+        <doc xml:whitespace="preserve">Copies @event.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly allocated #ClutterEvent</doc>
+          <type name="Event" c:type="ClutterEvent*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="clutter_event_free">
+        <doc xml:whitespace="preserve">Frees all resources used by @event.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_button"
+              c:identifier="clutter_event_get_button"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the button number of @event</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the button number</doc>
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="get_click_count"
+              c:identifier="clutter_event_get_click_count"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the number of clicks of @event</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the click count</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_coords"
+              c:identifier="clutter_event_get_coords"
+              version="0.4">
+        <doc xml:whitespace="preserve">Retrieves the coordinates of @event and puts them into @x and @y.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the X coordinate, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the Y coordinate, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_device"
+              c:identifier="clutter_event_get_device"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterInputDevice for the event.
+The #ClutterInputDevice structure is completely opaque and should
+be cast to the platform-specific implementation.
+returned device is owned by the #ClutterEvent and it should not
+be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterInputDevice or %NULL. The</doc>
+          <type name="InputDevice" c:type="ClutterInputDevice*"/>
+        </return-value>
+      </method>
+      <method name="get_device_id" c:identifier="clutter_event_get_device_id">
+        <doc xml:whitespace="preserve">Retrieves the events device id if set.
+no specific device set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A unique identifier for the device or -1 if the event has</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_device_type"
+              c:identifier="clutter_event_get_device_type"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the type of the device for @event
+any is set</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterInputDeviceType for the device, if</doc>
+          <type name="InputDeviceType" c:type="ClutterInputDeviceType"/>
+        </return-value>
+      </method>
+      <method name="get_flags"
+              c:identifier="clutter_event_get_flags"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterEventFlags of @event</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the event flags</doc>
+          <type name="EventFlags" c:type="ClutterEventFlags"/>
+        </return-value>
+      </method>
+      <method name="get_key_code"
+              c:identifier="clutter_event_get_key_code"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the keycode of the key that caused @event</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The keycode representing the key</doc>
+          <type name="guint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <method name="get_key_symbol"
+              c:identifier="clutter_event_get_key_symbol"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the key symbol of @event</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the key symbol representing the key</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_key_unicode"
+              c:identifier="clutter_event_get_key_unicode">
+        <doc xml:whitespace="preserve">Retrieves the unicode value for the key that caused @keyev.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The unicode value representing the key</doc>
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="get_related"
+              c:identifier="clutter_event_get_related"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the related actor of a crossing event.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the related #ClutterActor, or %NULL</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="get_scroll_direction"
+              c:identifier="clutter_event_get_scroll_direction"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the direction of the scrolling of @event</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the scrolling direction</doc>
+          <type name="ScrollDirection" c:type="ClutterScrollDirection"/>
+        </return-value>
+      </method>
+      <method name="get_source"
+              c:identifier="clutter_event_get_source"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the source #ClutterActor the event originated from, or
+NULL if the event has no source.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterActor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="get_stage"
+              c:identifier="clutter_event_get_stage"
+              version="0.8">
+        <doc xml:whitespace="preserve">Retrieves the source #ClutterStage the event originated for, or
+%NULL if the event has no stage.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterStage</doc>
+          <type name="Stage" c:type="ClutterStage*"/>
+        </return-value>
+      </method>
+      <method name="get_state"
+              c:identifier="clutter_event_get_state"
+              version="0.4">
+        <doc xml:whitespace="preserve">Retrieves the modifier state of the event.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the modifier state parameter, or 0</doc>
+          <type name="ModifierType" c:type="ClutterModifierType"/>
+        </return-value>
+      </method>
+      <method name="get_time"
+              c:identifier="clutter_event_get_time"
+              version="0.4">
+        <doc xml:whitespace="preserve">Retrieves the time of the event.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the time of the event, or %CLUTTER_CURRENT_TIME</doc>
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="put" c:identifier="clutter_event_put" version="0.6">
+        <doc xml:whitespace="preserve">Puts a copy of the event on the back of the event queue. The event will
+have the %CLUTTER_EVENT_FLAG_SYNTHETIC flag set. If the source is set
+event signals will be emitted for this source and capture/bubbling for
+its ancestors. If the source is not set it will be generated by picking
+or use the actor that currently has keyboard focus</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="type" c:identifier="clutter_event_type">
+        <doc xml:whitespace="preserve">Retrieves the type of the event.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterEventType</doc>
+          <type name="EventType" c:type="ClutterEventType"/>
+        </return-value>
+      </method>
+    </union>
+    <bitfield name="EventFlags"
+              version="0.6"
+              glib:type-name="ClutterEventFlags"
+              glib:get-type="clutter_event_flags_get_type"
+              c:type="ClutterEventFlags">
+      <doc xml:whitespace="preserve">Flags for the #ClutterEvent</doc>
+      <member name="none"
+              value="0"
+              c:identifier="CLUTTER_EVENT_NONE"
+              glib:nick="none"/>
+      <member name="flag_synthetic"
+              value="1"
+              c:identifier="CLUTTER_EVENT_FLAG_SYNTHETIC"
+              glib:nick="flag-synthetic"/>
+    </bitfield>
+    <enumeration name="EventType"
+                 version="0.4"
+                 glib:type-name="ClutterEventType"
+                 glib:get-type="clutter_event_type_get_type"
+                 c:type="ClutterEventType">
+      <doc xml:whitespace="preserve">Types of events.</doc>
+      <member name="nothing"
+              value="0"
+              c:identifier="CLUTTER_NOTHING"
+              glib:nick="nothing"/>
+      <member name="key_press"
+              value="1"
+              c:identifier="CLUTTER_KEY_PRESS"
+              glib:nick="key-press"/>
+      <member name="key_release"
+              value="2"
+              c:identifier="CLUTTER_KEY_RELEASE"
+              glib:nick="key-release"/>
+      <member name="motion"
+              value="3"
+              c:identifier="CLUTTER_MOTION"
+              glib:nick="motion"/>
+      <member name="enter"
+              value="4"
+              c:identifier="CLUTTER_ENTER"
+              glib:nick="enter"/>
+      <member name="leave"
+              value="5"
+              c:identifier="CLUTTER_LEAVE"
+              glib:nick="leave"/>
+      <member name="button_press"
+              value="6"
+              c:identifier="CLUTTER_BUTTON_PRESS"
+              glib:nick="button-press"/>
+      <member name="button_release"
+              value="7"
+              c:identifier="CLUTTER_BUTTON_RELEASE"
+              glib:nick="button-release"/>
+      <member name="scroll"
+              value="8"
+              c:identifier="CLUTTER_SCROLL"
+              glib:nick="scroll"/>
+      <member name="stage_state"
+              value="9"
+              c:identifier="CLUTTER_STAGE_STATE"
+              glib:nick="stage-state"/>
+      <member name="destroy_notify"
+              value="10"
+              c:identifier="CLUTTER_DESTROY_NOTIFY"
+              glib:nick="destroy-notify"/>
+      <member name="client_message"
+              value="11"
+              c:identifier="CLUTTER_CLIENT_MESSAGE"
+              glib:nick="client-message"/>
+      <member name="delete"
+              value="12"
+              c:identifier="CLUTTER_DELETE"
+              glib:nick="delete"/>
+    </enumeration>
+    <constant name="Excel" value="269025116">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Execute" value="65378">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Explorer" value="269025117">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F" value="70">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F1" value="65470">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F10" value="65479">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F11" value="65480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F12" value="65481">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F13" value="65482">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F14" value="65483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F15" value="65484">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F16" value="65485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F17" value="65486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F18" value="65487">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F19" value="65488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F2" value="65471">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F20" value="65489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F21" value="65490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F22" value="65491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F23" value="65492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F24" value="65493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F25" value="65494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F26" value="65495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F27" value="65496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F28" value="65497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F29" value="65498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F3" value="65472">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F30" value="65499">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F31" value="65500">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F32" value="65501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F33" value="65502">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F34" value="65503">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F35" value="65504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F4" value="65473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F5" value="65474">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F6" value="65475">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F7" value="65476">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F8" value="65477">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F9" value="65478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FFrancSign" value="16785571">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FLAVOUR" value="glx">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="Fabovedot" value="16784926">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Farsi_0" value="16778992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Farsi_1" value="16778993">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Farsi_2" value="16778994">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Farsi_3" value="16778995">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Farsi_4" value="16778996">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Farsi_5" value="16778997">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Farsi_6" value="16778998">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Farsi_7" value="16778999">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Farsi_8" value="16779000">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Farsi_9" value="16779001">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Farsi_yeh" value="16778956">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Favorites" value="269025072">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <bitfield name="FeatureFlags"
+              version="0.4"
+              glib:type-name="ClutterFeatureFlags"
+              glib:get-type="clutter_feature_flags_get_type"
+              c:type="ClutterFeatureFlags">
+      <doc xml:whitespace="preserve">Runtime flags indicating specific features available via Clutter window
+sysytem and graphics backend.</doc>
+      <member name="texture_npot"
+              value="4"
+              c:identifier="CLUTTER_FEATURE_TEXTURE_NPOT"
+              glib:nick="texture-npot"/>
+      <member name="sync_to_vblank"
+              value="8"
+              c:identifier="CLUTTER_FEATURE_SYNC_TO_VBLANK"
+              glib:nick="sync-to-vblank"/>
+      <member name="texture_yuv"
+              value="16"
+              c:identifier="CLUTTER_FEATURE_TEXTURE_YUV"
+              glib:nick="texture-yuv"/>
+      <member name="texture_read_pixels"
+              value="32"
+              c:identifier="CLUTTER_FEATURE_TEXTURE_READ_PIXELS"
+              glib:nick="texture-read-pixels"/>
+      <member name="stage_static"
+              value="64"
+              c:identifier="CLUTTER_FEATURE_STAGE_STATIC"
+              glib:nick="stage-static"/>
+      <member name="stage_user_resize"
+              value="128"
+              c:identifier="CLUTTER_FEATURE_STAGE_USER_RESIZE"
+              glib:nick="stage-user-resize"/>
+      <member name="stage_cursor"
+              value="256"
+              c:identifier="CLUTTER_FEATURE_STAGE_CURSOR"
+              glib:nick="stage-cursor"/>
+      <member name="shaders_glsl"
+              value="512"
+              c:identifier="CLUTTER_FEATURE_SHADERS_GLSL"
+              glib:nick="shaders-glsl"/>
+      <member name="offscreen"
+              value="1024"
+              c:identifier="CLUTTER_FEATURE_OFFSCREEN"
+              glib:nick="offscreen"/>
+      <member name="stage_multiple"
+              value="2048"
+              c:identifier="CLUTTER_FEATURE_STAGE_MULTIPLE"
+              glib:nick="stage-multiple"/>
+      <member name="swap_events"
+              value="4096"
+              c:identifier="CLUTTER_FEATURE_SWAP_EVENTS"
+              glib:nick="swap-events"/>
+    </bitfield>
+    <constant name="Finance" value="269025084">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Find" value="65384">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="First_Virtual_Screen" value="65232">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="FixedLayout"
+           c:symbol-prefix="fixed_layout"
+           c:type="ClutterFixedLayout"
+           version="1.2"
+           parent="LayoutManager"
+           glib:type-name="ClutterFixedLayout"
+           glib:get-type="clutter_fixed_layout_get_type"
+           glib:type-struct="FixedLayoutClass">
+      <doc xml:whitespace="preserve">The #ClutterFixedLayout structure contains only private data and
+it should be accessed using the provided API</doc>
+      <constructor name="new"
+                   c:identifier="clutter_fixed_layout_new"
+                   version="1.2">
+        <doc xml:whitespace="preserve">Creates a new #ClutterFixedLayout</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterFixedLayout</doc>
+          <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+        </return-value>
+      </constructor>
+      <field name="parent_instance">
+        <type name="LayoutManager" c:type="ClutterLayoutManager"/>
+      </field>
+    </class>
+    <record name="FixedLayoutClass"
+            c:type="ClutterFixedLayoutClass"
+            glib:is-gtype-struct-for="FixedLayout"
+            version="1.2">
+      <doc xml:whitespace="preserve">The #ClutterFixedLayoutClass structure contains only private data
+and it should be accessed using the provided API</doc>
+      <field name="parent_class">
+        <type name="LayoutManagerClass" c:type="ClutterLayoutManagerClass"/>
+      </field>
+    </record>
+    <class name="FlowLayout"
+           c:symbol-prefix="flow_layout"
+           c:type="ClutterFlowLayout"
+           version="1.2"
+           parent="LayoutManager"
+           glib:type-name="ClutterFlowLayout"
+           glib:get-type="clutter_flow_layout_get_type"
+           glib:type-struct="FlowLayoutClass">
+      <doc xml:whitespace="preserve">The #ClutterFlowLayout structure contains only private data
+and should be accessed using the provided API</doc>
+      <constructor name="new"
+                   c:identifier="clutter_flow_layout_new"
+                   version="1.2">
+        <doc xml:whitespace="preserve">Creates a new #ClutterFlowLayout with the given @orientation</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterFlowLayout</doc>
+          <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the orientation of the flow layout</doc>
+            <type name="FlowOrientation" c:type="ClutterFlowOrientation"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_column_spacing"
+              c:identifier="clutter_flow_layout_get_column_spacing"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the spacing between columns
+in pixels</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the spacing between columns of the #ClutterFlowLayout,</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_column_width"
+              c:identifier="clutter_flow_layout_get_column_width"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the minimum and maximum column widths</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the minimum column width, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="max_width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the maximum column width, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_homogeneous"
+              c:identifier="clutter_flow_layout_get_homogeneous"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves whether the @layout is homogeneous</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterFlowLayout is homogeneous</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_orientation"
+              c:identifier="clutter_flow_layout_get_orientation"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the orientation of the @layout</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the orientation of the #ClutterFlowLayout</doc>
+          <type name="FlowOrientation" c:type="ClutterFlowOrientation"/>
+        </return-value>
+      </method>
+      <method name="get_row_height"
+              c:identifier="clutter_flow_layout_get_row_height"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the minimum and maximum row heights</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the minimum row height, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="max_height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the maximum row height, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_row_spacing"
+              c:identifier="clutter_flow_layout_get_row_spacing"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the spacing between rows
+in pixels</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the spacing between rows of the #ClutterFlowLayout,</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="set_column_spacing"
+              c:identifier="clutter_flow_layout_set_column_spacing"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the space between columns, in pixels</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the space between columns</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_column_width"
+              c:identifier="clutter_flow_layout_set_column_width"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the minimum and maximum widths that a column can have</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">minimum width of a column</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="max_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">maximum width of a column</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_homogeneous"
+              c:identifier="clutter_flow_layout_set_homogeneous"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets whether the @layout should allocate the same space for
+each child</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="homogeneous" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the layout should be homogeneous or not</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_orientation"
+              c:identifier="clutter_flow_layout_set_orientation"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the orientation of the flow layout
+The orientation controls the direction used to allocate
+orientation also controls the direction of the overflowing</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the orientation of the layout</doc>
+            <type name="FlowOrientation" c:type="ClutterFlowOrientation"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_row_height"
+              c:identifier="clutter_flow_layout_set_row_height"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the minimum and maximum heights that a row can have</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the minimum height of a row</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="max_height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the maximum height of a row</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_row_spacing"
+              c:identifier="clutter_flow_layout_set_row_spacing"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the spacing between rows, in pixels</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the space between rows</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="column-spacing"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The spacing between columns, in pixels; the value of this
+property is honoured by horizontal non-overflowing layouts
+and by vertical overflowing layouts</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="homogeneous"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether each child inside the #ClutterFlowLayout should receive
+the same allocation</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="max-column-width"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Maximum width for each column in the layout, in pixels. If
+set to -1 the width will be the maximum child width</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="max-row-height"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Maximum height for each row in the layout, in pixels. If
+set to -1 the width will be the maximum child height</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="min-column-width"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Minimum width for each column in the layout, in pixels</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="min-row-height"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Minimum height for each row in the layout, in pixels</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="orientation"
+                version="1.2"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The orientation of the #ClutterFlowLayout. The children
+of the layout will be layed out following the orientation.
+This property also controls the overflowing directions</doc>
+        <type name="FlowOrientation"/>
+      </property>
+      <property name="row-spacing"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The spacing between rows, in pixels; the value of this
+property is honoured by vertical non-overflowing layouts and
+by horizontal overflowing layouts</doc>
+        <type name="gfloat"/>
+      </property>
+      <field name="parent_instance">
+        <type name="LayoutManager" c:type="ClutterLayoutManager"/>
+      </field>
+      <field name="priv">
+        <type name="FlowLayoutPrivate" c:type="ClutterFlowLayoutPrivate*"/>
+      </field>
+    </class>
+    <record name="FlowLayoutClass"
+            c:type="ClutterFlowLayoutClass"
+            glib:is-gtype-struct-for="FlowLayout"
+            version="1.2">
+      <doc xml:whitespace="preserve">The #ClutterFlowLayoutClass structure contains only private data
+and should be accessed using the provided API</doc>
+      <field name="parent_class">
+        <type name="LayoutManagerClass" c:type="ClutterLayoutManagerClass"/>
+      </field>
+    </record>
+    <record name="FlowLayoutPrivate"
+            c:type="ClutterFlowLayoutPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="FlowOrientation"
+                 version="1.2"
+                 glib:type-name="ClutterFlowOrientation"
+                 glib:get-type="clutter_flow_orientation_get_type"
+                 c:type="ClutterFlowOrientation">
+      <doc xml:whitespace="preserve">The direction of the arrangement of the children inside
+a #ClutterFlowLayout</doc>
+      <member name="horizontal"
+              value="0"
+              c:identifier="CLUTTER_FLOW_HORIZONTAL"
+              glib:nick="horizontal"/>
+      <member name="vertical"
+              value="1"
+              c:identifier="CLUTTER_FLOW_VERTICAL"
+              glib:nick="vertical"/>
+    </enumeration>
+    <record name="Fog"
+            c:type="ClutterFog"
+            version="0.6"
+            glib:type-name="ClutterFog"
+            glib:get-type="clutter_fog_get_type"
+            c:symbol-prefix="fog">
+      <doc xml:whitespace="preserve">Fog settings used to create the depth cueing effect.</doc>
+      <field name="z_near" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="z_far" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+    </record>
+    <bitfield name="FontFlags"
+              version="1.0"
+              glib:type-name="ClutterFontFlags"
+              glib:get-type="clutter_font_flags_get_type"
+              c:type="ClutterFontFlags">
+      <doc xml:whitespace="preserve">Runtime flags to change the font quality. To be used with
+clutter_set_font_flags().</doc>
+      <member name="mipmapping"
+              value="1"
+              c:identifier="CLUTTER_FONT_MIPMAPPING"
+              glib:nick="mipmapping"/>
+      <member name="hinting"
+              value="2"
+              c:identifier="CLUTTER_FONT_HINTING"
+              glib:nick="hinting"/>
+    </bitfield>
+    <constant name="Forward" value="269025063">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FrameBack" value="269025181">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FrameForward" value="269025182">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="G" value="71">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Gabovedot" value="725">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Game" value="269025118">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Gbreve" value="683">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Gcaron" value="16777702">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Gcedilla" value="939">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Gcircumflex" value="728">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="Geometry"
+            c:type="ClutterGeometry"
+            glib:type-name="ClutterGeometry"
+            glib:get-type="clutter_geometry_get_type"
+            c:symbol-prefix="geometry">
+      <doc xml:whitespace="preserve">The rectangle containing an actor's bounding box, measured in pixels.</doc>
+      <field name="x" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="width" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="height" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <method name="intersects"
+              c:identifier="clutter_geometry_intersects"
+              version="1.4">
+        <doc xml:whitespace="preserve">Determines if @geometry0 and geometry1 intersect returning %TRUE if
+they do else %FALSE.
+%FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE of @geometry0 and geometry1 intersect else</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The second geometry to test</doc>
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="union" c:identifier="clutter_geometry_union" version="1.4">
+        <doc xml:whitespace="preserve">Find the union of two rectangles represented as #ClutterGeometry.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry_b" transfer-ownership="none">
+            <doc xml:whitespace="preserve">another #ClutterGeometry</doc>
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the result</doc>
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <constant name="Georgian_an" value="16781520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_ban" value="16781521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_can" value="16781546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_char" value="16781549">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_chin" value="16781545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_cil" value="16781548">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_don" value="16781523">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_en" value="16781524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_fi" value="16781558">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_gan" value="16781522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_ghan" value="16781542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_hae" value="16781552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_har" value="16781556">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_he" value="16781553">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_hie" value="16781554">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_hoe" value="16781557">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_in" value="16781528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_jhan" value="16781551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_jil" value="16781547">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_kan" value="16781529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_khar" value="16781541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_las" value="16781530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_man" value="16781531">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_nar" value="16781532">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_on" value="16781533">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_par" value="16781534">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_phar" value="16781540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_qar" value="16781543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_rae" value="16781536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_san" value="16781537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_shin" value="16781544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_tan" value="16781527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_tar" value="16781538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_un" value="16781539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_vin" value="16781525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_we" value="16781555">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_xan" value="16781550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_zen" value="16781526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_zhar" value="16781535">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Go" value="269025119">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="Gravity"
+                 version="0.2"
+                 glib:type-name="ClutterGravity"
+                 glib:get-type="clutter_gravity_get_type"
+                 c:type="ClutterGravity">
+      <doc xml:whitespace="preserve">Gravity of the scaling operations. When a gravity different than
+%CLUTTER_GRAVITY_NONE is used, an actor is scaled keeping the position
+of the specified portion at the same coordinates.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="CLUTTER_GRAVITY_NONE"
+              glib:nick="none"/>
+      <member name="north"
+              value="1"
+              c:identifier="CLUTTER_GRAVITY_NORTH"
+              glib:nick="north"/>
+      <member name="north_east"
+              value="2"
+              c:identifier="CLUTTER_GRAVITY_NORTH_EAST"
+              glib:nick="north-east"/>
+      <member name="east"
+              value="3"
+              c:identifier="CLUTTER_GRAVITY_EAST"
+              glib:nick="east"/>
+      <member name="south_east"
+              value="4"
+              c:identifier="CLUTTER_GRAVITY_SOUTH_EAST"
+              glib:nick="south-east"/>
+      <member name="south"
+              value="5"
+              c:identifier="CLUTTER_GRAVITY_SOUTH"
+              glib:nick="south"/>
+      <member name="south_west"
+              value="6"
+              c:identifier="CLUTTER_GRAVITY_SOUTH_WEST"
+              glib:nick="south-west"/>
+      <member name="west"
+              value="7"
+              c:identifier="CLUTTER_GRAVITY_WEST"
+              glib:nick="west"/>
+      <member name="north_west"
+              value="8"
+              c:identifier="CLUTTER_GRAVITY_NORTH_WEST"
+              glib:nick="north-west"/>
+      <member name="center"
+              value="9"
+              c:identifier="CLUTTER_GRAVITY_CENTER"
+              glib:nick="center"/>
+    </enumeration>
+    <constant name="Greek_ALPHA" value="1985">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_ALPHAaccent" value="1953">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_BETA" value="1986">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_CHI" value="2007">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_DELTA" value="1988">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_EPSILON" value="1989">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_EPSILONaccent" value="1954">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_ETA" value="1991">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_ETAaccent" value="1955">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_GAMMA" value="1987">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_IOTA" value="1993">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_IOTAaccent" value="1956">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_IOTAdiaeresis" value="1957">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_IOTAdieresis" value="1957">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_KAPPA" value="1994">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_LAMBDA" value="1995">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_LAMDA" value="1995">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_MU" value="1996">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_NU" value="1997">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_OMEGA" value="2009">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_OMEGAaccent" value="1963">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_OMICRON" value="1999">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_OMICRONaccent" value="1959">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_PHI" value="2006">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_PI" value="2000">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_PSI" value="2008">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_RHO" value="2001">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_SIGMA" value="2002">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_TAU" value="2004">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_THETA" value="1992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_UPSILON" value="2005">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_UPSILONaccent" value="1960">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_UPSILONdieresis" value="1961">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_XI" value="1998">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_ZETA" value="1990">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_accentdieresis" value="1966">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_alpha" value="2017">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_alphaaccent" value="1969">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_beta" value="2018">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_chi" value="2039">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_delta" value="2020">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_epsilon" value="2021">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_epsilonaccent" value="1970">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_eta" value="2023">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_etaaccent" value="1971">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_finalsmallsigma" value="2035">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_gamma" value="2019">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_horizbar" value="1967">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_iota" value="2025">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_iotaaccent" value="1972">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_iotaaccentdieresis" value="1974">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_iotadieresis" value="1973">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_kappa" value="2026">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_lambda" value="2027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_lamda" value="2027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_mu" value="2028">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_nu" value="2029">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_omega" value="2041">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_omegaaccent" value="1979">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_omicron" value="2031">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_omicronaccent" value="1975">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_phi" value="2038">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_pi" value="2032">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_psi" value="2040">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_rho" value="2033">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_sigma" value="2034">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_tau" value="2036">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_theta" value="2024">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_upsilon" value="2037">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_upsilonaccent" value="1976">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_upsilonaccentdieresis" value="1978">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_upsilondieresis" value="1977">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_xi" value="2030">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_zeta" value="2022">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Green" value="269025188">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Group"
+           c:symbol-prefix="group"
+           c:type="ClutterGroup"
+           version="0.1"
+           parent="Actor"
+           glib:type-name="ClutterGroup"
+           glib:get-type="clutter_group_get_type"
+           glib:type-struct="GroupClass">
+      <doc xml:whitespace="preserve">The #ClutterGroup structure contains only private data
+and should be accessed using the provided API</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Animatable"/>
+      <implements name="Container"/>
+      <implements name="Scriptable"/>
+      <constructor name="new" c:identifier="clutter_group_new">
+        <doc xml:whitespace="preserve">Create a new  #ClutterGroup.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterGroup actor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </constructor>
+      <method name="get_n_children"
+              c:identifier="clutter_group_get_n_children"
+              version="0.2">
+        <doc xml:whitespace="preserve">Gets the number of actors held in the group.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of child actors held in the group.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_nth_child"
+              c:identifier="clutter_group_get_nth_child"
+              version="0.2">
+        <doc xml:whitespace="preserve">Gets a groups child held at @index_ in stack.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A Clutter actor, or %NULL if</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position of the requested actor.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_all" c:identifier="clutter_group_remove_all">
+        <doc xml:whitespace="preserve">Removes all children actors from the #ClutterGroup.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv">
+        <type name="GroupPrivate" c:type="ClutterGroupPrivate*"/>
+      </field>
+    </class>
+    <record name="GroupClass"
+            c:type="ClutterGroupClass"
+            glib:is-gtype-struct-for="Group"
+            version="0.1">
+      <doc xml:whitespace="preserve">The #ClutterGroupClass structure contains only private data</doc>
+      <field name="parent_class">
+        <type name="ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="_clutter_reserved1" introspectable="0">
+        <callback name="_clutter_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved2" introspectable="0">
+        <callback name="_clutter_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved3" introspectable="0">
+        <callback name="_clutter_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved4" introspectable="0">
+        <callback name="_clutter_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved5" introspectable="0">
+        <callback name="_clutter_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved6" introspectable="0">
+        <callback name="_clutter_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="GroupPrivate" c:type="ClutterGroupPrivate" disguised="1">
+    </record>
+    <constant name="H" value="72">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul" value="65329">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_A" value="3775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_AE" value="3776">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_AraeA" value="3830">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_AraeAE" value="3831">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Banja" value="65337">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Cieuc" value="3770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Codeinput" value="65335">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Dikeud" value="3751">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_E" value="3780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_EO" value="3779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_EU" value="3793">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_End" value="65331">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Hanja" value="65332">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Hieuh" value="3774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_I" value="3795">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Ieung" value="3767">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Cieuc" value="3818">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Dikeud" value="3802">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Hieuh" value="3822">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Ieung" value="3816">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Jieuj" value="3817">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Khieuq" value="3819">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Kiyeog" value="3796">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_KiyeogSios" value="3798">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_KkogjiDalrinIeung" value="3833">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Mieum" value="3811">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Nieun" value="3799">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_NieunHieuh" value="3801">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_NieunJieuj" value="3800">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_PanSios" value="3832">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Phieuf" value="3821">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Pieub" value="3812">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_PieubSios" value="3813">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Rieul" value="3803">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_RieulHieuh" value="3810">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_RieulKiyeog" value="3804">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_RieulMieum" value="3805">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_RieulPhieuf" value="3809">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_RieulPieub" value="3806">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_RieulSios" value="3807">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_RieulTieut" value="3808">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Sios" value="3814">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_SsangKiyeog" value="3797">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_SsangSios" value="3815">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Tieut" value="3820">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_YeorinHieuh" value="3834">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Jamo" value="65333">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Jeonja" value="65336">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Jieuj" value="3768">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Khieuq" value="3771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Kiyeog" value="3745">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_KiyeogSios" value="3747">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_KkogjiDalrinIeung" value="3827">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Mieum" value="3761">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_MultipleCandidate" value="65341">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Nieun" value="3748">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_NieunHieuh" value="3750">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_NieunJieuj" value="3749">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_O" value="3783">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_OE" value="3786">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_PanSios" value="3826">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Phieuf" value="3773">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Pieub" value="3762">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_PieubSios" value="3764">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_PostHanja" value="65339">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_PreHanja" value="65338">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_PreviousCandidate" value="65342">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Rieul" value="3753">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_RieulHieuh" value="3760">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_RieulKiyeog" value="3754">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_RieulMieum" value="3755">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_RieulPhieuf" value="3759">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_RieulPieub" value="3756">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_RieulSios" value="3757">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_RieulTieut" value="3758">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_RieulYeorinHieuh" value="3823">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Romaja" value="65334">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_SingleCandidate" value="65340">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Sios" value="3765">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Special" value="65343">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_SsangDikeud" value="3752">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_SsangJieuj" value="3769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_SsangKiyeog" value="3746">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_SsangPieub" value="3763">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_SsangSios" value="3766">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Start" value="65330">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_SunkyeongeumMieum" value="3824">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_SunkyeongeumPhieuf" value="3828">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_SunkyeongeumPieub" value="3825">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Tieut" value="3772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_U" value="3788">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_WA" value="3784">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_WAE" value="3785">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_WE" value="3790">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_WEO" value="3789">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_WI" value="3791">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_YA" value="3777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_YAE" value="3778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_YE" value="3782">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_YEO" value="3781">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_YI" value="3794">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_YO" value="3787">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_YU" value="3792">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_YeorinHieuh" value="3829">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hankaku" value="65321">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hcircumflex" value="678">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hebrew_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Help" value="65386">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Henkan" value="65315">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Henkan_Mode" value="65315">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hibernate" value="269025192">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hiragana" value="65317">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hiragana_Katakana" value="65319">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="History" value="269025079">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Home" value="65360">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="HomePage" value="269025048">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="HotLinks" value="269025082">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hstroke" value="673">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hyper_L" value="65517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hyper_R" value="65518">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="I" value="73">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Center_Object" value="65075">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Continuous_Underline" value="65072">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Discontinuous_Underline" value="65073">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Emphasize" value="65074">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Enter" value="65076">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Fast_Cursor_Down" value="65071">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Fast_Cursor_Left" value="65068">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Fast_Cursor_Right" value="65069">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Fast_Cursor_Up" value="65070">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_First_Group" value="65036">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_First_Group_Lock" value="65037">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Group_Latch" value="65030">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Group_Lock" value="65031">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Group_Shift" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Last_Group" value="65038">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Last_Group_Lock" value="65039">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Left_Tab" value="65056">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Level2_Latch" value="65026">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Level3_Latch" value="65028">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Level3_Lock" value="65029">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Level3_Shift" value="65027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Level5_Latch" value="65042">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Level5_Lock" value="65043">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Level5_Shift" value="65041">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Lock" value="65025">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Move_Line_Down" value="65058">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Move_Line_Up" value="65057">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Next_Group" value="65032">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Next_Group_Lock" value="65033">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Partial_Line_Down" value="65060">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Partial_Line_Up" value="65059">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Partial_Space_Left" value="65061">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Partial_Space_Right" value="65062">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Prev_Group" value="65034">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Prev_Group_Lock" value="65035">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Release_Both_Margins" value="65067">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Release_Margin_Left" value="65065">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Release_Margin_Right" value="65066">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Set_Margin_Left" value="65063">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Set_Margin_Right" value="65064">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Iabovedot" value="681">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Iacute" value="205">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ibelowdot" value="16785098">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ibreve" value="16777516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Icircumflex" value="206">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Idiaeresis" value="207">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Igrave" value="204">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ihook" value="16785096">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Imacron" value="975">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="InitError"
+                 version="0.2"
+                 glib:type-name="ClutterInitError"
+                 glib:get-type="clutter_init_error_get_type"
+                 c:type="ClutterInitError"
+                 glib:error-quark="clutter_init_error_quark">
+      <doc xml:whitespace="preserve">Error conditions returned by clutter_init() and clutter_init_with_args().</doc>
+      <member name="success"
+              value="1"
+              c:identifier="CLUTTER_INIT_SUCCESS"
+              glib:nick="success"/>
+      <member name="error_unknown"
+              value="0"
+              c:identifier="CLUTTER_INIT_ERROR_UNKNOWN"
+              glib:nick="error-unknown"/>
+      <member name="error_threads"
+              value="-1"
+              c:identifier="CLUTTER_INIT_ERROR_THREADS"
+              glib:nick="error-threads"/>
+      <member name="error_backend"
+              value="-2"
+              c:identifier="CLUTTER_INIT_ERROR_BACKEND"
+              glib:nick="error-backend"/>
+      <member name="error_internal"
+              value="-3"
+              c:identifier="CLUTTER_INIT_ERROR_INTERNAL"
+              glib:nick="error-internal"/>
+    </enumeration>
+    <class name="InputDevice"
+           c:symbol-prefix="input_device"
+           c:type="ClutterInputDevice"
+           parent="GObject.Object"
+           glib:type-name="ClutterInputDevice"
+           glib:get-type="clutter_input_device_get_type"
+           glib:type-struct="InputDeviceClass">
+      <doc xml:whitespace="preserve">Generic representation of an input device. The actual contents of this
+structure depend on the backend used.</doc>
+      <method name="get_device_coords"
+              c:identifier="clutter_input_device_get_device_coords"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the latest coordinates of the pointer of @device</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the X coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the Y coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_device_id"
+              c:identifier="clutter_input_device_get_device_id"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the unique identifier of @device</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the identifier of the device</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_device_name"
+              c:identifier="clutter_input_device_get_device_name"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the name of the @device
+is owned by the #ClutterInputDevice and should never be modified
+or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the device, or %NULL. The returned string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_device_type"
+              c:identifier="clutter_input_device_get_device_type"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the type of @device</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of the device</doc>
+          <type name="InputDeviceType" c:type="ClutterInputDeviceType"/>
+        </return-value>
+      </method>
+      <method name="get_pointer_actor"
+              c:identifier="clutter_input_device_get_pointer_actor"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterActor underneath the pointer of @device</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the #ClutterActor or %NULL</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="get_pointer_stage"
+              c:identifier="clutter_input_device_get_pointer_stage"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterStage underneath the pointer of @device</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the #ClutterStage or %NULL</doc>
+          <type name="Stage" c:type="ClutterStage*"/>
+        </return-value>
+      </method>
+      <method name="update_from_event"
+              c:identifier="clutter_input_device_update_from_event"
+              version="1.2">
+        <doc xml:whitespace="preserve">Forcibly updates the state of the @device using a #ClutterEvent
+for integration with embedding toolkits, like clutter-gtk
+Embedding toolkits that disable the event collection inside Clutter
+need to use this function to update the state of input devices depending
+on a #ClutterEvent that they are going to submit to the event handling code
+in Clutter though clutter_do_event(). Since the input devices hold the state
+that is going to be used to fill in fields like the #ClutterButtonEvent
+click count, or to emit synthesized events like %CLUTTER_ENTER and
+%CLUTTER_LEAVE, it is necessary for embedding toolkits to also be
+responsible of updating the input device state.
+For instance, this might be the code to translate an embedding toolkit
+native motion notification into a Clutter #ClutterMotionEvent and ask
+Clutter to process it:
+|[
+ClutterEvent c_event;
+translate_native_event_to_clutter (native_event, &amp;amp;c_event);
+clutter_do_event (&amp;amp;c_event);
+]|
+Before letting clutter_do_event() process the event, it is necessary to call
+clutter_input_device_update_from_event():
+|[
+ClutterEvent c_event;
+ClutterDeviceManager *manager;
+ClutterInputDevice *device;
+translate_native_event_to_clutter (native_event, &amp;amp;c_event);
+/&amp;ast; get the device manager &amp;ast;/
+manager = clutter_device_manager_get_default ();
+/&amp;ast; use the default Core Pointer that Clutter
+&amp;ast; backends register by default
+&amp;ast;/
+device = clutter_device_manager_get_core_device (manager, %CLUTTER_POINTER_DEVICE);
+/&amp;ast; update the state of the input device &amp;ast;/
+clutter_input_device_update_from_event (device, &amp;amp;c_event, FALSE);
+clutter_do_event (&amp;amp;c_event);
+]|
+The @update_stage boolean argument should be used when the input device
+enters and leaves a #ClutterStage; it will use the #ClutterStage field
+of the passed @event to update the stage associated to the input device.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterEvent</doc>
+            <type name="Event" c:type="ClutterEvent*"/>
+          </parameter>
+          <parameter name="update_stage" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to update the #ClutterStage of the @device using the stage of the event</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="device-type"
+                version="1.2"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The type of the device</doc>
+        <type name="InputDeviceType"/>
+      </property>
+      <property name="id"
+                version="1.2"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The unique identifier of the device</doc>
+        <type name="gint"/>
+      </property>
+      <property name="name"
+                version="1.2"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The name of the device</doc>
+        <type name="utf8"/>
+      </property>
+    </class>
+    <record name="InputDeviceClass"
+            c:type="ClutterInputDeviceClass"
+            glib:is-gtype-struct-for="InputDevice"
+            version="1.2">
+      <doc xml:whitespace="preserve">The #ClutterInputDeviceClass structure contains only private
+data and should not be accessed directly</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <enumeration name="InputDeviceType"
+                 version="1.0"
+                 glib:type-name="ClutterInputDeviceType"
+                 glib:get-type="clutter_input_device_type_get_type"
+                 c:type="ClutterInputDeviceType">
+      <doc xml:whitespace="preserve">The types of input devices available.
+The #ClutterInputDeviceType enumeration can be extended at later
+date; not every platform supports every input device type.</doc>
+      <member name="pointer_device"
+              value="0"
+              c:identifier="CLUTTER_POINTER_DEVICE"
+              glib:nick="pointer-device"/>
+      <member name="keyboard_device"
+              value="1"
+              c:identifier="CLUTTER_KEYBOARD_DEVICE"
+              glib:nick="keyboard-device"/>
+      <member name="extension_device"
+              value="2"
+              c:identifier="CLUTTER_EXTENSION_DEVICE"
+              glib:nick="extension-device"/>
+      <member name="n_device_types"
+              value="3"
+              c:identifier="CLUTTER_N_DEVICE_TYPES"
+              glib:nick="n-device-types"/>
+    </enumeration>
+    <constant name="Insert" value="65379">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="Interpolation"
+                 version="1.2"
+                 glib:type-name="ClutterInterpolation"
+                 glib:get-type="clutter_interpolation_get_type"
+                 c:type="ClutterInterpolation">
+      <doc xml:whitespace="preserve">The mode of interpolation between key frames</doc>
+      <member name="linear"
+              value="0"
+              c:identifier="CLUTTER_INTERPOLATION_LINEAR"
+              glib:nick="linear"/>
+      <member name="cubic"
+              value="1"
+              c:identifier="CLUTTER_INTERPOLATION_CUBIC"
+              glib:nick="cubic"/>
+    </enumeration>
+    <class name="Interval"
+           c:symbol-prefix="interval"
+           c:type="ClutterInterval"
+           version="1.0"
+           parent="GObject.InitiallyUnowned"
+           glib:type-name="ClutterInterval"
+           glib:get-type="clutter_interval_get_type"
+           glib:type-struct="IntervalClass">
+      <doc xml:whitespace="preserve">The #ClutterInterval structure contains only private data and should
+be accessed using the provided functions.</doc>
+      <constructor name="new"
+                   c:identifier="clutter_interval_new"
+                   version="1.0"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterInterval holding values of type @gtype.
+This function avoids using a #GValue for the initial and final values
+of the interval:
+|[
+interval = clutter_interval_new (G_TYPE_FLOAT, 0.0, 1.0);
+interval = clutter_interval_new (G_TYPE_BOOLEAN, FALSE, TRUE);
+interval = clutter_interval_new (G_TYPE_INT, 0, 360);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterInterval</doc>
+          <type name="Interval" c:type="ClutterInterval*"/>
+        </return-value>
+        <parameters>
+          <parameter name="gtype" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of the values in the interval</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_values"
+                   c:identifier="clutter_interval_new_with_values"
+                   version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterInterval of type @gtype, between @initial
+and @final.
+This function is useful for language bindings.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterInterval</doc>
+          <type name="Interval" c:type="ClutterInterval*"/>
+        </return-value>
+        <parameters>
+          <parameter name="gtype" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of the values in the interval</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="initial" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue holding the initial value of the interval</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="final" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue holding the final value of the interval</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="register_progress_func"
+                c:identifier="clutter_interval_register_progress_func"
+                version="1.0"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Sets the progress function for a given @value_type, like:
+|[
+clutter_interval_register_progress_func (MY_TYPE_FOO,
+my_foo_progress);
+]|
+Whenever a #ClutterInterval instance using the default
+#ClutterInterval::compute_value implementation is set as an
+interval between two #GValue of type @value_type, it will call
+for instance:
+|[
+static gboolean
+my_int_progress (const GValue *a,
+const GValue *b,
+gdouble       progress,
+GValue       *retval)
+{
+gint ia = g_value_get_int (a);
+gint ib = g_value_get_int (b);
+gint res = factor * (ib - ia) + ia;
+g_value_set_int (retval, res);
+return TRUE;
+}
+clutter_interval_register_progress_func (G_TYPE_INT, my_int_progress);
+]|
+To unset a previously set progress function of a #GType, pass %NULL
+for @func.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GType</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="func" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterProgressFunc, or %NULL to unset a previously set progress function</doc>
+            <type name="ProgressFunc" c:type="ClutterProgressFunc"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="compute_value"
+                      invoker="compute_value"
+                      version="1.0">
+        <doc xml:whitespace="preserve">Computes the value between the @interval boundaries given the
+progress @factor and copies it into @value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation was successful</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="factor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the progress factor, between 0 and 1</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for an initialized #GValue</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="validate" invoker="validate" version="1.0">
+        <doc xml:whitespace="preserve">Validates the initial and final values of @interval against
+a #GParamSpec.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterInterval is valid, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GParamSpec</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="clone" c:identifier="clutter_interval_clone" version="1.0">
+        <doc xml:whitespace="preserve">Creates a copy of @interval.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #ClutterInterval</doc>
+          <type name="Interval" c:type="ClutterInterval*"/>
+        </return-value>
+      </method>
+      <method name="compute"
+              c:identifier="clutter_interval_compute"
+              version="1.4">
+        <doc xml:whitespace="preserve">Computes the value between the @interval boundaries given the
+progress @factor
+Unlike clutter_interval_compute_value(), this function will
+return a const pointer to the computed value
+You should use this function if you immediately pass the computed
+value to another function that makes a copy of it, like
+g_object_set_property()
+or %NULL if the computation was not successfull</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the computed value,</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="factor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the progress factor, between 0 and 1</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="compute_value"
+              c:identifier="clutter_interval_compute_value"
+              version="1.0">
+        <doc xml:whitespace="preserve">Computes the value between the @interval boundaries given the
+progress @factor and copies it into @value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation was successful</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="factor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the progress factor, between 0 and 1</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for an initialized #GValue</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_final_value"
+              c:identifier="clutter_interval_get_final_value"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the final value of @interval and copies
+it into @value.
+The passed #GValue must be initialized to the value held by
+the #ClutterInterval.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_initial_value"
+              c:identifier="clutter_interval_get_initial_value"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the initial value of @interval and copies
+it into @value.
+The passed #GValue must be initialized to the value held by
+the #ClutterInterval.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_interval"
+              c:identifier="clutter_interval_get_interval"
+              version="1.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Variable arguments wrapper for clutter_interval_get_initial_value()
+and clutter_interval_get_final_value() that avoids using the
+#GValue arguments:
+|[
+gint a = 0, b = 0;
+clutter_interval_get_interval (interval, &amp;a, &amp;b);
+]|
+This function is meant for the convenience of the C API; bindings
+should reimplement this function using the #GValue-based API.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_type"
+              c:identifier="clutter_interval_get_value_type"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the #GType of the values inside @interval.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of the value, or G_TYPE_INVALID</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="peek_final_value"
+              c:identifier="clutter_interval_peek_final_value"
+              version="1.0">
+        <doc xml:whitespace="preserve">Gets the pointer to the final value of @interval
+The value is owned by the #ClutterInterval and it should not be
+modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the final value of the interval.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+      </method>
+      <method name="peek_initial_value"
+              c:identifier="clutter_interval_peek_initial_value"
+              version="1.0">
+        <doc xml:whitespace="preserve">Gets the pointer to the initial value of @interval
+The value is owned by the #ClutterInterval and it should not be
+modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the initial value of the interval.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+      </method>
+      <method name="set_final_value"
+              c:identifier="clutter_interval_set_final_value"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the final value of @interval to @value. The value is
+copied inside the #ClutterInterval.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_initial_value"
+              c:identifier="clutter_interval_set_initial_value"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the initial value of @interval to @value. The value is copied
+inside the #ClutterInterval.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_interval"
+              c:identifier="clutter_interval_set_interval"
+              version="1.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Variable arguments wrapper for clutter_interval_set_initial_value()
+and clutter_interval_set_final_value() that avoids using the
+#GValue arguments:
+|[
+clutter_interval_set_interval (interval, 0, 50);
+clutter_interval_set_interval (interval, 1.0, 0.0);
+clutter_interval_set_interval (interval, FALSE, TRUE);
+]|
+This function is meant for the convenience of the C API; bindings
+should reimplement this function using the #GValue-based API.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="validate"
+              c:identifier="clutter_interval_validate"
+              version="1.0">
+        <doc xml:whitespace="preserve">Validates the initial and final values of @interval against
+a #GParamSpec.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterInterval is valid, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GParamSpec</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="value-type"
+                version="1.0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The type of the values in the interval.</doc>
+        <type name="GType"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+      </field>
+      <field name="priv">
+        <type name="IntervalPrivate" c:type="ClutterIntervalPrivate*"/>
+      </field>
+    </class>
+    <record name="IntervalClass"
+            c:type="ClutterIntervalClass"
+            glib:is-gtype-struct-for="Interval"
+            version="1.0">
+      <doc xml:whitespace="preserve">The #ClutterIntervalClass contains only private data.</doc>
+      <field name="parent_class">
+        <type name="GObject.InitiallyUnownedClass"
+              c:type="GInitiallyUnownedClass"/>
+      </field>
+      <field name="validate">
+        <callback name="validate">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the #ClutterInterval is valid, %FALSE otherwise</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="interval" transfer-ownership="none">
+              <type name="Interval" c:type="ClutterInterval*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GParamSpec</doc>
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="compute_value">
+        <callback name="compute_value">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the operation was successful</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="interval" transfer-ownership="none">
+              <type name="Interval" c:type="ClutterInterval*"/>
+            </parameter>
+            <parameter name="factor" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the progress factor, between 0 and 1</doc>
+              <type name="gdouble" c:type="gdouble"/>
+            </parameter>
+            <parameter name="value"
+                       direction="out"
+                       caller-allocates="1"
+                       transfer-ownership="none">
+              <doc xml:whitespace="preserve">return location for an initialized #GValue</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_reserved1" introspectable="0">
+        <callback name="_clutter_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved2" introspectable="0">
+        <callback name="_clutter_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved3" introspectable="0">
+        <callback name="_clutter_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved4" introspectable="0">
+        <callback name="_clutter_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved5" introspectable="0">
+        <callback name="_clutter_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved6" introspectable="0">
+        <callback name="_clutter_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="IntervalPrivate"
+            c:type="ClutterIntervalPrivate"
+            disguised="1">
+    </record>
+    <constant name="Iogonek" value="967">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Itilde" value="933">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="J" value="74">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Jcircumflex" value="684">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="K" value="75">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_0" value="48">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_1" value="49">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_2" value="50">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3" value="51">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_AltCursor" value="64784">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Attn" value="64782">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_BackTab" value="64773">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_ChangeScreen" value="64793">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Copy" value="64789">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_CursorBlink" value="64783">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_CursorSelect" value="64796">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_DeleteWord" value="64794">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Duplicate" value="64769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Enter" value="64798">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_EraseEOF" value="64774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_EraseInput" value="64775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_ExSelect" value="64795">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_FieldMark" value="64770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Ident" value="64787">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Jump" value="64786">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_KeyClick" value="64785">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Left2" value="64772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_PA1" value="64778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_PA2" value="64779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_PA3" value="64780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Play" value="64790">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_PrintScreen" value="64797">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Quit" value="64777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Record" value="64792">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Reset" value="64776">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Right2" value="64771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Rule" value="64788">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Setup" value="64791">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Test" value="64781">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_4" value="52">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_5" value="53">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_6" value="54">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_7" value="55">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_8" value="56">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_9" value="57">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_A" value="65">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AE" value="198">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Aacute" value="193">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Abelowdot" value="16785056">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Abreve" value="451">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Abreveacute" value="16785070">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Abrevebelowdot" value="16785078">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Abrevegrave" value="16785072">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Abrevehook" value="16785074">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Abrevetilde" value="16785076">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AccessX_Enable" value="65136">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AccessX_Feedback_Enable" value="65137">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Acircumflex" value="194">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Acircumflexacute" value="16785060">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Acircumflexbelowdot" value="16785068">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Acircumflexgrave" value="16785062">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Acircumflexhook" value="16785064">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Acircumflextilde" value="16785066">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AddFavorite" value="269025081">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Adiaeresis" value="196">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Agrave" value="192">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ahook" value="16785058">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Alt_L" value="65513">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Alt_R" value="65514">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Amacron" value="960">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Aogonek" value="417">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ApplicationLeft" value="269025104">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ApplicationRight" value="269025105">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_0" value="16778848">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_1" value="16778849">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_2" value="16778850">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_3" value="16778851">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_4" value="16778852">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_5" value="16778853">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_6" value="16778854">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_7" value="16778855">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_8" value="16778856">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_9" value="16778857">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_ain" value="1497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_alef" value="1479">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_alefmaksura" value="1513">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_beh" value="1480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_comma" value="1452">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_dad" value="1494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_dal" value="1487">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_damma" value="1519">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_dammatan" value="1516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_ddal" value="16778888">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_farsi_yeh" value="16778956">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_fatha" value="1518">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_fathatan" value="1515">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_feh" value="1505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_fullstop" value="16778964">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_gaf" value="16778927">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_ghain" value="1498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_ha" value="1511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_hah" value="1485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_hamza" value="1473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_hamza_above" value="16778836">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_hamza_below" value="16778837">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_hamzaonalef" value="1475">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_hamzaonwaw" value="1476">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_hamzaonyeh" value="1478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_hamzaunderalef" value="1477">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_heh" value="1511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_heh_doachashmee" value="16778942">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_heh_goal" value="16778945">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_jeem" value="1484">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_jeh" value="16778904">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_kaf" value="1507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_kasra" value="1520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_kasratan" value="1517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_keheh" value="16778921">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_khah" value="1486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_lam" value="1508">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_madda_above" value="16778835">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_maddaonalef" value="1474">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_meem" value="1509">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_noon" value="1510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_noon_ghunna" value="16778938">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_peh" value="16778878">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_percent" value="16778858">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_qaf" value="1506">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_question_mark" value="1471">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_ra" value="1489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_rreh" value="16778897">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_sad" value="1493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_seen" value="1491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_semicolon" value="1467">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_shadda" value="1521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_sheen" value="1492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_sukun" value="1522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_superscript_alef" value="16778864">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_tah" value="1495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_tatweel" value="1504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_tcheh" value="16778886">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_teh" value="1482">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_tehmarbuta" value="1481">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_thal" value="1488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_theh" value="1483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_tteh" value="16778873">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_veh" value="16778916">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_waw" value="1512">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_yeh" value="1514">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_yeh_baree" value="16778962">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_zah" value="1496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_zain" value="1490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Aring" value="197">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_AT" value="16778552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_AYB" value="16778545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_BEN" value="16778546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_CHA" value="16778569">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_DA" value="16778548">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_DZA" value="16778561">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_E" value="16778551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_FE" value="16778582">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_GHAT" value="16778562">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_GIM" value="16778547">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_HI" value="16778565">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_HO" value="16778560">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_INI" value="16778555">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_JE" value="16778571">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_KE" value="16778580">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_KEN" value="16778559">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_KHE" value="16778557">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_LYUN" value="16778556">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_MEN" value="16778564">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_NU" value="16778566">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_O" value="16778581">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_PE" value="16778570">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_PYUR" value="16778579">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_RA" value="16778572">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_RE" value="16778576">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_SE" value="16778573">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_SHA" value="16778567">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_TCHE" value="16778563">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_TO" value="16778553">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_TSA" value="16778558">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_TSO" value="16778577">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_TYUN" value="16778575">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_VEV" value="16778574">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_VO" value="16778568">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_VYUN" value="16778578">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_YECH" value="16778549">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ZA" value="16778550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ZHE" value="16778554">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_accent" value="16778587">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_amanak" value="16778588">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_apostrophe" value="16778586">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_at" value="16778600">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ayb" value="16778593">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ben" value="16778594">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_but" value="16778589">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_cha" value="16778617">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_da" value="16778596">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_dza" value="16778609">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_e" value="16778599">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_exclam" value="16778588">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_fe" value="16778630">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_full_stop" value="16778633">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ghat" value="16778610">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_gim" value="16778595">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_hi" value="16778613">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ho" value="16778608">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_hyphen" value="16778634">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ini" value="16778603">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_je" value="16778619">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ke" value="16778628">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ken" value="16778607">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_khe" value="16778605">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ligature_ew" value="16778631">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_lyun" value="16778604">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_men" value="16778612">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_nu" value="16778614">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_o" value="16778629">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_paruyk" value="16778590">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_pe" value="16778618">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_pyur" value="16778627">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_question" value="16778590">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ra" value="16778620">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_re" value="16778624">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_se" value="16778621">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_separation_mark" value="16778589">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_sha" value="16778615">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_shesht" value="16778587">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_tche" value="16778611">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_to" value="16778601">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_tsa" value="16778606">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_tso" value="16778625">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_tyun" value="16778623">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_verjaket" value="16778633">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_vev" value="16778622">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_vo" value="16778616">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_vyun" value="16778626">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_yech" value="16778597">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_yentamna" value="16778634">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_za" value="16778598">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_zhe" value="16778602">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Atilde" value="195">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudibleBell_Enable" value="65146">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioCycleTrack" value="269025179">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioForward" value="269025175">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioLowerVolume" value="269025041">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioMedia" value="269025074">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioMute" value="269025042">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioNext" value="269025047">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioPause" value="269025073">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioPlay" value="269025044">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioPrev" value="269025046">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioRaiseVolume" value="269025043">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioRandomPlay" value="269025177">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioRecord" value="269025052">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioRepeat" value="269025176">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioRewind" value="269025086">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioStop" value="269025045">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Away" value="269025165">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_B" value="66">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Babovedot" value="16784898">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Back" value="269025062">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_BackForward" value="269025087">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_BackSpace" value="65288">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Battery" value="269025171">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Begin" value="65368">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Blue" value="269025190">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Bluetooth" value="269025172">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Book" value="269025106">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_BounceKeys_Enable" value="65140">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Break" value="65387">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_BrightnessAdjust" value="269025083">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Byelorussian_SHORTU" value="1726">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Byelorussian_shortu" value="1710">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_C" value="67">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_CD" value="269025107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cabovedot" value="709">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cacute" value="454">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Calculator" value="269025053">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Calendar" value="269025056">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cancel" value="65385">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Caps_Lock" value="65509">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ccaron" value="456">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ccedilla" value="199">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ccircumflex" value="710">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Clear" value="65291">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ClearGrab" value="269024801">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Close" value="269025110">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Codeinput" value="65335">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ColonSign" value="16785569">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Community" value="269025085">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ContrastAdjust" value="269025058">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Control_L" value="65507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Control_R" value="65508">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Copy" value="269025111">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_CruzeiroSign" value="16785570">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cut" value="269025112">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_CycleAngle" value="269025180">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_A" value="1761">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_BE" value="1762">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_CHE" value="1790">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_CHE_descender" value="16778422">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_CHE_vertstroke" value="16778424">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_DE" value="1764">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_DZHE" value="1727">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_E" value="1788">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_EF" value="1766">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_EL" value="1772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_EM" value="1773">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_EN" value="1774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_EN_descender" value="16778402">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ER" value="1778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ES" value="1779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_GHE" value="1767">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_GHE_bar" value="16778386">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_HA" value="1768">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_HARDSIGN" value="1791">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_HA_descender" value="16778418">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_I" value="1769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_IE" value="1765">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_IO" value="1715">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_I_macron" value="16778466">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_JE" value="1720">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_KA" value="1771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_KA_descender" value="16778394">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_KA_vertstroke" value="16778396">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_LJE" value="1721">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_NJE" value="1722">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_O" value="1775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_O_bar" value="16778472">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_PE" value="1776">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_SCHWA" value="16778456">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_SHA" value="1787">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_SHCHA" value="1789">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_SHHA" value="16778426">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_SHORTI" value="1770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_SOFTSIGN" value="1784">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_TE" value="1780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_TSE" value="1763">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_U" value="1781">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_U_macron" value="16778478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_U_straight" value="16778414">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_U_straight_bar" value="16778416">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_VE" value="1783">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_YA" value="1777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_YERU" value="1785">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_YU" value="1760">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ZE" value="1786">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ZHE" value="1782">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ZHE_descender" value="16778390">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_a" value="1729">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_be" value="1730">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_che" value="1758">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_che_descender" value="16778423">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_che_vertstroke" value="16778425">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_de" value="1732">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_dzhe" value="1711">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_e" value="1756">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ef" value="1734">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_el" value="1740">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_em" value="1741">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_en" value="1742">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_en_descender" value="16778403">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_er" value="1746">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_es" value="1747">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ghe" value="1735">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ghe_bar" value="16778387">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ha" value="1736">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ha_descender" value="16778419">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_hardsign" value="1759">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_i" value="1737">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_i_macron" value="16778467">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ie" value="1733">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_io" value="1699">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_je" value="1704">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ka" value="1739">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ka_descender" value="16778395">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ka_vertstroke" value="16778397">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_lje" value="1705">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_nje" value="1706">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_o" value="1743">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_o_bar" value="16778473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_pe" value="1744">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_schwa" value="16778457">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_sha" value="1755">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_shcha" value="1757">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_shha" value="16778427">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_shorti" value="1738">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_softsign" value="1752">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_te" value="1748">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_tse" value="1731">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_u" value="1749">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_u_macron" value="16778479">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_u_straight" value="16778415">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_u_straight_bar" value="16778417">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ve" value="1751">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ya" value="1745">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_yeru" value="1753">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_yu" value="1728">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ze" value="1754">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_zhe" value="1750">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_zhe_descender" value="16778391">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_D" value="68">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_DOS" value="269025114">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Dabovedot" value="16784906">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Dcaron" value="463">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Delete" value="65535">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Display" value="269025113">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Documents" value="269025115">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_DongSign" value="16785579">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Down" value="65364">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Dstroke" value="464">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_E" value="69">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ENG" value="957">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ETH" value="208">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Eabovedot" value="972">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Eacute" value="201">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ebelowdot" value="16785080">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ecaron" value="460">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ecircumflex" value="202">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ecircumflexacute" value="16785086">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ecircumflexbelowdot" value="16785094">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ecircumflexgrave" value="16785088">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ecircumflexhook" value="16785090">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ecircumflextilde" value="16785092">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_EcuSign" value="16785568">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ediaeresis" value="203">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Egrave" value="200">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ehook" value="16785082">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Eisu_Shift" value="65327">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Eisu_toggle" value="65328">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Eject" value="269025068">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Emacron" value="938">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_End" value="65367">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Eogonek" value="458">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Escape" value="65307">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Eth" value="208">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Etilde" value="16785084">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_EuroSign" value="8364">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Excel" value="269025116">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Execute" value="65378">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Explorer" value="269025117">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F" value="70">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F1" value="65470">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F10" value="65479">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F11" value="65480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F12" value="65481">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F13" value="65482">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F14" value="65483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F15" value="65484">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F16" value="65485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F17" value="65486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F18" value="65487">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F19" value="65488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F2" value="65471">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F20" value="65489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F21" value="65490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F22" value="65491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F23" value="65492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F24" value="65493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F25" value="65494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F26" value="65495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F27" value="65496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F28" value="65497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F29" value="65498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F3" value="65472">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F30" value="65499">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F31" value="65500">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F32" value="65501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F33" value="65502">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F34" value="65503">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F35" value="65504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F4" value="65473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F5" value="65474">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F6" value="65475">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F7" value="65476">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F8" value="65477">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F9" value="65478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_FFrancSign" value="16785571">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Fabovedot" value="16784926">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_0" value="16778992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_1" value="16778993">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_2" value="16778994">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_3" value="16778995">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_4" value="16778996">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_5" value="16778997">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_6" value="16778998">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_7" value="16778999">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_8" value="16779000">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_9" value="16779001">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_yeh" value="16778956">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Favorites" value="269025072">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Finance" value="269025084">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Find" value="65384">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_First_Virtual_Screen" value="65232">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Forward" value="269025063">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_FrameBack" value="269025181">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_FrameForward" value="269025182">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_G" value="71">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Gabovedot" value="725">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Game" value="269025118">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Gbreve" value="683">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Gcaron" value="16777702">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Gcedilla" value="939">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Gcircumflex" value="728">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_an" value="16781520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_ban" value="16781521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_can" value="16781546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_char" value="16781549">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_chin" value="16781545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_cil" value="16781548">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_don" value="16781523">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_en" value="16781524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_fi" value="16781558">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_gan" value="16781522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_ghan" value="16781542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_hae" value="16781552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_har" value="16781556">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_he" value="16781553">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_hie" value="16781554">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_hoe" value="16781557">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_in" value="16781528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_jhan" value="16781551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_jil" value="16781547">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_kan" value="16781529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_khar" value="16781541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_las" value="16781530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_man" value="16781531">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_nar" value="16781532">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_on" value="16781533">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_par" value="16781534">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_phar" value="16781540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_qar" value="16781543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_rae" value="16781536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_san" value="16781537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_shin" value="16781544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_tan" value="16781527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_tar" value="16781538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_un" value="16781539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_vin" value="16781525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_we" value="16781555">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_xan" value="16781550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_zen" value="16781526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_zhar" value="16781535">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Go" value="269025119">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_ALPHA" value="1985">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_ALPHAaccent" value="1953">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_BETA" value="1986">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_CHI" value="2007">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_DELTA" value="1988">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_EPSILON" value="1989">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_EPSILONaccent" value="1954">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_ETA" value="1991">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_ETAaccent" value="1955">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_GAMMA" value="1987">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_IOTA" value="1993">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_IOTAaccent" value="1956">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_IOTAdiaeresis" value="1957">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_IOTAdieresis" value="1957">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_KAPPA" value="1994">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_LAMBDA" value="1995">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_LAMDA" value="1995">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_MU" value="1996">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_NU" value="1997">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_OMEGA" value="2009">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_OMEGAaccent" value="1963">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_OMICRON" value="1999">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_OMICRONaccent" value="1959">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_PHI" value="2006">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_PI" value="2000">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_PSI" value="2008">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_RHO" value="2001">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_SIGMA" value="2002">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_TAU" value="2004">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_THETA" value="1992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_UPSILON" value="2005">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_UPSILONaccent" value="1960">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_UPSILONdieresis" value="1961">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_XI" value="1998">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_ZETA" value="1990">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_accentdieresis" value="1966">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_alpha" value="2017">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_alphaaccent" value="1969">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_beta" value="2018">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_chi" value="2039">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_delta" value="2020">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_epsilon" value="2021">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_epsilonaccent" value="1970">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_eta" value="2023">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_etaaccent" value="1971">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_finalsmallsigma" value="2035">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_gamma" value="2019">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_horizbar" value="1967">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_iota" value="2025">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_iotaaccent" value="1972">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_iotaaccentdieresis" value="1974">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_iotadieresis" value="1973">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_kappa" value="2026">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_lambda" value="2027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_lamda" value="2027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_mu" value="2028">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_nu" value="2029">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_omega" value="2041">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_omegaaccent" value="1979">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_omicron" value="2031">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_omicronaccent" value="1975">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_phi" value="2038">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_pi" value="2032">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_psi" value="2040">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_rho" value="2033">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_sigma" value="2034">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_tau" value="2036">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_theta" value="2024">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_upsilon" value="2037">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_upsilonaccent" value="1976">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_upsilonaccentdieresis" value="1978">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_upsilondieresis" value="1977">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_xi" value="2030">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_zeta" value="2022">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Green" value="269025188">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_H" value="72">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul" value="65329">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_A" value="3775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_AE" value="3776">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_AraeA" value="3830">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_AraeAE" value="3831">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Banja" value="65337">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Cieuc" value="3770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Codeinput" value="65335">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Dikeud" value="3751">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_E" value="3780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_EO" value="3779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_EU" value="3793">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_End" value="65331">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Hanja" value="65332">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Hieuh" value="3774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_I" value="3795">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Ieung" value="3767">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Cieuc" value="3818">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Dikeud" value="3802">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Hieuh" value="3822">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Ieung" value="3816">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Jieuj" value="3817">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Khieuq" value="3819">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Kiyeog" value="3796">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_KiyeogSios" value="3798">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_KkogjiDalrinIeung" value="3833">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Mieum" value="3811">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Nieun" value="3799">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_NieunHieuh" value="3801">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_NieunJieuj" value="3800">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_PanSios" value="3832">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Phieuf" value="3821">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Pieub" value="3812">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_PieubSios" value="3813">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Rieul" value="3803">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_RieulHieuh" value="3810">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_RieulKiyeog" value="3804">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_RieulMieum" value="3805">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_RieulPhieuf" value="3809">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_RieulPieub" value="3806">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_RieulSios" value="3807">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_RieulTieut" value="3808">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Sios" value="3814">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_SsangKiyeog" value="3797">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_SsangSios" value="3815">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Tieut" value="3820">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_YeorinHieuh" value="3834">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Jamo" value="65333">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Jeonja" value="65336">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Jieuj" value="3768">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Khieuq" value="3771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Kiyeog" value="3745">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_KiyeogSios" value="3747">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_KkogjiDalrinIeung" value="3827">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Mieum" value="3761">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_MultipleCandidate" value="65341">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Nieun" value="3748">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_NieunHieuh" value="3750">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_NieunJieuj" value="3749">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_O" value="3783">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_OE" value="3786">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_PanSios" value="3826">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Phieuf" value="3773">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Pieub" value="3762">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_PieubSios" value="3764">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_PostHanja" value="65339">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_PreHanja" value="65338">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_PreviousCandidate" value="65342">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Rieul" value="3753">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_RieulHieuh" value="3760">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_RieulKiyeog" value="3754">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_RieulMieum" value="3755">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_RieulPhieuf" value="3759">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_RieulPieub" value="3756">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_RieulSios" value="3757">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_RieulTieut" value="3758">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_RieulYeorinHieuh" value="3823">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Romaja" value="65334">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SingleCandidate" value="65340">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Sios" value="3765">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Special" value="65343">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SsangDikeud" value="3752">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SsangJieuj" value="3769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SsangKiyeog" value="3746">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SsangPieub" value="3763">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SsangSios" value="3766">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Start" value="65330">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SunkyeongeumMieum" value="3824">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SunkyeongeumPhieuf" value="3828">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SunkyeongeumPieub" value="3825">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Tieut" value="3772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_U" value="3788">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_WA" value="3784">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_WAE" value="3785">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_WE" value="3790">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_WEO" value="3789">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_WI" value="3791">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_YA" value="3777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_YAE" value="3778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_YE" value="3782">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_YEO" value="3781">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_YI" value="3794">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_YO" value="3787">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_YU" value="3792">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_YeorinHieuh" value="3829">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hankaku" value="65321">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hcircumflex" value="678">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hebrew_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Help" value="65386">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Henkan" value="65315">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Henkan_Mode" value="65315">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hibernate" value="269025192">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hiragana" value="65317">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hiragana_Katakana" value="65319">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_History" value="269025079">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Home" value="65360">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_HomePage" value="269025048">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_HotLinks" value="269025082">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hstroke" value="673">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hyper_L" value="65517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hyper_R" value="65518">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_I" value="73">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Center_Object" value="65075">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Continuous_Underline" value="65072">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Discontinuous_Underline" value="65073">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Emphasize" value="65074">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Enter" value="65076">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Fast_Cursor_Down" value="65071">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Fast_Cursor_Left" value="65068">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Fast_Cursor_Right" value="65069">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Fast_Cursor_Up" value="65070">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_First_Group" value="65036">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_First_Group_Lock" value="65037">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Group_Latch" value="65030">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Group_Lock" value="65031">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Group_Shift" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Last_Group" value="65038">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Last_Group_Lock" value="65039">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Left_Tab" value="65056">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Level2_Latch" value="65026">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Level3_Latch" value="65028">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Level3_Lock" value="65029">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Level3_Shift" value="65027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Level5_Latch" value="65042">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Level5_Lock" value="65043">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Level5_Shift" value="65041">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Lock" value="65025">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Move_Line_Down" value="65058">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Move_Line_Up" value="65057">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Next_Group" value="65032">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Next_Group_Lock" value="65033">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Partial_Line_Down" value="65060">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Partial_Line_Up" value="65059">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Partial_Space_Left" value="65061">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Partial_Space_Right" value="65062">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Prev_Group" value="65034">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Prev_Group_Lock" value="65035">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Release_Both_Margins" value="65067">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Release_Margin_Left" value="65065">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Release_Margin_Right" value="65066">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Set_Margin_Left" value="65063">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Set_Margin_Right" value="65064">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Iabovedot" value="681">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Iacute" value="205">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ibelowdot" value="16785098">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ibreve" value="16777516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Icircumflex" value="206">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Idiaeresis" value="207">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Igrave" value="204">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ihook" value="16785096">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Imacron" value="975">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Insert" value="65379">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Iogonek" value="967">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Itilde" value="933">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_J" value="74">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Jcircumflex" value="684">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_K" value="75">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_0" value="65456">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_1" value="65457">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_2" value="65458">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_3" value="65459">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_4" value="65460">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_5" value="65461">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_6" value="65462">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_7" value="65463">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_8" value="65464">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_9" value="65465">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Add" value="65451">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Begin" value="65437">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Decimal" value="65454">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Delete" value="65439">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Divide" value="65455">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Down" value="65433">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_End" value="65436">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Enter" value="65421">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Equal" value="65469">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_F1" value="65425">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_F2" value="65426">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_F3" value="65427">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_F4" value="65428">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Home" value="65429">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Insert" value="65438">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Left" value="65430">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Multiply" value="65450">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Next" value="65435">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Page_Down" value="65435">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Page_Up" value="65434">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Prior" value="65434">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Right" value="65432">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Separator" value="65452">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Space" value="65408">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Subtract" value="65453">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Tab" value="65417">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Up" value="65431">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Kana_Lock" value="65325">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Kana_Shift" value="65326">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Kanji" value="65313">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Kanji_Bangou" value="65335">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Katakana" value="65318">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KbdBrightnessDown" value="269025030">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KbdBrightnessUp" value="269025029">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KbdLightOnOff" value="269025028">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Kcedilla" value="979">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Korean_Won" value="3839">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L" value="76">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L1" value="65480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L10" value="65489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L2" value="65481">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L3" value="65482">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L4" value="65483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L5" value="65484">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L6" value="65485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L7" value="65486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L8" value="65487">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L9" value="65488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Lacute" value="453">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Last_Virtual_Screen" value="65236">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch0" value="269025088">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch1" value="269025089">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch2" value="269025090">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch3" value="269025091">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch4" value="269025092">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch5" value="269025093">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch6" value="269025094">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch7" value="269025095">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch8" value="269025096">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch9" value="269025097">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LaunchA" value="269025098">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LaunchB" value="269025099">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LaunchC" value="269025100">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LaunchD" value="269025101">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LaunchE" value="269025102">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LaunchF" value="269025103">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Lbelowdot" value="16784950">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Lcaron" value="421">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Lcedilla" value="934">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Left" value="65361">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LightBulb" value="269025077">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Linefeed" value="65290">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LiraSign" value="16785572">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LogOff" value="269025121">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Lstroke" value="419">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_M" value="77">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Mabovedot" value="16784960">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Macedonia_DSE" value="1717">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Macedonia_GJE" value="1714">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Macedonia_KJE" value="1724">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Macedonia_dse" value="1701">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Macedonia_gje" value="1698">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Macedonia_kje" value="1708">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Mae_Koho" value="65342">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Mail" value="269025049">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MailForward" value="269025168">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Market" value="269025122">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Massyo" value="65324">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Meeting" value="269025123">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Memo" value="269025054">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Menu" value="65383">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MenuKB" value="269025125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MenuPB" value="269025126">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Messenger" value="269025166">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Meta_L" value="65511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Meta_R" value="65512">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MillSign" value="16785573">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ModeLock" value="269025025">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Mode_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MonBrightnessDown" value="269025027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MonBrightnessUp" value="269025026">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MouseKeys_Accel_Enable" value="65143">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MouseKeys_Enable" value="65142">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Muhenkan" value="65314">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Multi_key" value="65312">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MultipleCandidate" value="65341">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Music" value="269025170">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MyComputer" value="269025075">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MySites" value="269025127">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_N" value="78">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Nacute" value="465">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_NairaSign" value="16785574">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ncaron" value="466">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ncedilla" value="977">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_New" value="269025128">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_NewSheqelSign" value="16785578">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_News" value="269025129">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Next" value="65366">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Next_VMode" value="269024802">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Next_Virtual_Screen" value="65234">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ntilde" value="209">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Num_Lock" value="65407">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_O" value="79">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_OE" value="5052">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Oacute" value="211">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Obarred" value="16777631">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Obelowdot" value="16785100">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ocaron" value="16777681">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ocircumflex" value="212">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ocircumflexacute" value="16785104">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ocircumflexbelowdot" value="16785112">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ocircumflexgrave" value="16785106">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ocircumflexhook" value="16785108">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ocircumflextilde" value="16785110">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Odiaeresis" value="214">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Odoubleacute" value="469">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_OfficeHome" value="269025130">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ograve" value="210">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ohook" value="16785102">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ohorn" value="16777632">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ohornacute" value="16785114">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ohornbelowdot" value="16785122">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ohorngrave" value="16785116">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ohornhook" value="16785118">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ohorntilde" value="16785120">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Omacron" value="978">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ooblique" value="216">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Open" value="269025131">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_OpenURL" value="269025080">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Option" value="269025132">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Oslash" value="216">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Otilde" value="213">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Overlay1_Enable" value="65144">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Overlay2_Enable" value="65145">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_P" value="80">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pabovedot" value="16784982">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Page_Down" value="65366">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Page_Up" value="65365">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Paste" value="269025133">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pause" value="65299">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_PesetaSign" value="16785575">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Phone" value="269025134">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pictures" value="269025169">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Accelerate" value="65274">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Button1" value="65257">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Button2" value="65258">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Button3" value="65259">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Button4" value="65260">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Button5" value="65261">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Button_Dflt" value="65256">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DblClick1" value="65263">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DblClick2" value="65264">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DblClick3" value="65265">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DblClick4" value="65266">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DblClick5" value="65267">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DblClick_Dflt" value="65262">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DfltBtnNext" value="65275">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DfltBtnPrev" value="65276">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Down" value="65251">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DownLeft" value="65254">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DownRight" value="65255">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Drag1" value="65269">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Drag2" value="65270">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Drag3" value="65271">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Drag4" value="65272">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Drag5" value="65277">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Drag_Dflt" value="65268">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_EnableKeys" value="65273">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Left" value="65248">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Right" value="65249">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Up" value="65250">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_UpLeft" value="65252">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_UpRight" value="65253">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_PowerDown" value="269025057">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_PowerOff" value="269025066">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Prev_VMode" value="269024803">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Prev_Virtual_Screen" value="65233">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_PreviousCandidate" value="65342">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Print" value="65377">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Prior" value="65365">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Q" value="81">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R" value="82">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R1" value="65490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R10" value="65499">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R11" value="65500">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R12" value="65501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R13" value="65502">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R14" value="65503">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R15" value="65504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R2" value="65491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R3" value="65492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R4" value="65493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R5" value="65494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R6" value="65495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R7" value="65496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R8" value="65497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R9" value="65498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Racute" value="448">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Rcaron" value="472">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Rcedilla" value="931">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Red" value="269025187">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Redo" value="65382">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Refresh" value="269025065">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Reload" value="269025139">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_RepeatKeys_Enable" value="65138">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Reply" value="269025138">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Return" value="65293">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Right" value="65363">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_RockerDown" value="269025060">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_RockerEnter" value="269025061">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_RockerUp" value="269025059">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Romaji" value="65316">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_RotateWindows" value="269025140">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_RotationKB" value="269025142">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_RotationPB" value="269025141">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_RupeeSign" value="16785576">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_S" value="83">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_SCHWA" value="16777615">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Sabovedot" value="16784992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Sacute" value="422">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Save" value="269025143">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Scaron" value="425">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Scedilla" value="426">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Scircumflex" value="734">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ScreenSaver" value="269025069">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ScrollClick" value="269025146">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ScrollDown" value="269025145">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ScrollUp" value="269025144">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Scroll_Lock" value="65300">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Search" value="269025051">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Select" value="65376">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_SelectButton" value="269025184">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Send" value="269025147">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_DJE" value="1713">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_DZE" value="1727">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_JE" value="1720">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_LJE" value="1721">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_NJE" value="1722">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_TSHE" value="1723">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_dje" value="1697">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_dze" value="1711">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_je" value="1704">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_lje" value="1705">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_nje" value="1706">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_tshe" value="1707">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Shift_L" value="65505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Shift_Lock" value="65510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Shift_R" value="65506">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Shop" value="269025078">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_SingleCandidate" value="65340">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Sleep" value="269025071">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_SlowKeys_Enable" value="65139">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Spell" value="269025148">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_SplitScreen" value="269025149">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Standby" value="269025040">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Start" value="269025050">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_StickyKeys_Enable" value="65141">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Stop" value="269025064">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Subtitle" value="269025178">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Super_L" value="65515">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Super_R" value="65516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Support" value="269025150">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Suspend" value="269025191">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_1" value="269024769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_10" value="269024778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_11" value="269024779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_12" value="269024780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_2" value="269024770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_3" value="269024771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_4" value="269024772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_5" value="269024773">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_6" value="269024774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_7" value="269024775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_8" value="269024776">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_9" value="269024777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Sys_Req" value="65301">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_T" value="84">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_THORN" value="222">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Tab" value="65289">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Tabovedot" value="16785002">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_TaskPane" value="269025151">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Tcaron" value="427">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Tcedilla" value="478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Terminal" value="269025152">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Terminate_Server" value="65237">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_baht" value="3551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_bobaimai" value="3514">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_chochan" value="3496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_chochang" value="3498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_choching" value="3497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_chochoe" value="3500">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_dochada" value="3502">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_dodek" value="3508">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_fofa" value="3517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_fofan" value="3519">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_hohip" value="3531">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_honokhuk" value="3534">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_khokhai" value="3490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_khokhon" value="3493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_khokhuat" value="3491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_khokhwai" value="3492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_khorakhang" value="3494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_kokai" value="3489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_lakkhangyao" value="3557">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_lekchet" value="3575">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_lekha" value="3573">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_lekhok" value="3574">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_lekkao" value="3577">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_leknung" value="3569">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_lekpaet" value="3576">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_leksam" value="3571">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_leksi" value="3572">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_leksong" value="3570">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_leksun" value="3568">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_lochula" value="3532">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_loling" value="3525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_lu" value="3526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_maichattawa" value="3563">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_maiek" value="3560">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_maihanakat" value="3537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_maihanakat_maitho" value="3550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_maitaikhu" value="3559">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_maitho" value="3561">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_maitri" value="3562">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_maiyamok" value="3558">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_moma" value="3521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_ngongu" value="3495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_nikhahit" value="3565">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_nonen" value="3507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_nonu" value="3513">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_oang" value="3533">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_paiyannoi" value="3535">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_phinthu" value="3546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_phophan" value="3518">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_phophung" value="3516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_phosamphao" value="3520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_popla" value="3515">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_rorua" value="3523">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_ru" value="3524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_saraa" value="3536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_saraaa" value="3538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_saraae" value="3553">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_saraaimaimalai" value="3556">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_saraaimaimuan" value="3555">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_saraam" value="3539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sarae" value="3552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sarai" value="3540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_saraii" value="3541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sarao" value="3554">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sarau" value="3544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_saraue" value="3542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sarauee" value="3543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sarauu" value="3545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sorusi" value="3529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sosala" value="3528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_soso" value="3499">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sosua" value="3530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_thanthakhat" value="3564">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_thonangmontho" value="3505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_thophuthao" value="3506">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_thothahan" value="3511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_thothan" value="3504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_thothong" value="3512">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_thothung" value="3510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_topatak" value="3503">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_totao" value="3509">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_wowaen" value="3527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_yoyak" value="3522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_yoying" value="3501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thorn" value="222">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Time" value="269025183">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ToDoList" value="269025055">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Tools" value="269025153">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_TopMenu" value="269025186">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_TouchpadToggle" value="269025193">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Touroku" value="65323">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Travel" value="269025154">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Tslash" value="940">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_U" value="85">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_UWB" value="269025174">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uacute" value="218">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ubelowdot" value="16785124">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ubreve" value="733">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ucircumflex" value="219">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Udiaeresis" value="220">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Udoubleacute" value="475">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ugrave" value="217">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uhook" value="16785126">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uhorn" value="16777647">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uhornacute" value="16785128">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uhornbelowdot" value="16785136">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uhorngrave" value="16785130">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uhornhook" value="16785132">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uhorntilde" value="16785134">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukrainian_GHE_WITH_UPTURN" value="1725">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukrainian_I" value="1718">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukrainian_IE" value="1716">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukrainian_YI" value="1719">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukrainian_ghe_with_upturn" value="1709">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukrainian_i" value="1702">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukrainian_ie" value="1700">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukrainian_yi" value="1703">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukranian_I" value="1718">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukranian_JE" value="1716">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukranian_YI" value="1719">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukranian_i" value="1702">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukranian_je" value="1700">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukranian_yi" value="1703">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Umacron" value="990">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Undo" value="65381">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ungrab" value="269024800">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uogonek" value="985">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Up" value="65362">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uring" value="473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_User1KB" value="269025157">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_User2KB" value="269025158">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_UserPB" value="269025156">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Utilde" value="989">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_V" value="86">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_VendorHome" value="269025076">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Video" value="269025159">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_View" value="269025185">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_VoidSymbol" value="16777215">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_W" value="87">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_WLAN" value="269025173">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_WWW" value="269025070">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Wacute" value="16785026">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_WakeUp" value="269025067">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Wcircumflex" value="16777588">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Wdiaeresis" value="16785028">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_WebCam" value="269025167">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Wgrave" value="16785024">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_WheelButton" value="269025160">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_WindowClear" value="269025109">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_WonSign" value="16785577">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Word" value="269025161">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_X" value="88">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Xabovedot" value="16785034">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Xfer" value="269025162">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Y" value="89">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Yacute" value="221">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ybelowdot" value="16785140">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ycircumflex" value="16777590">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ydiaeresis" value="5054">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Yellow" value="269025189">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ygrave" value="16785138">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Yhook" value="16785142">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ytilde" value="16785144">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Z" value="90">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Zabovedot" value="431">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Zacute" value="428">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Zcaron" value="430">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Zen_Koho" value="65341">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Zenkaku" value="65320">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Zenkaku_Hankaku" value="65322">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ZoomIn" value="269025163">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ZoomOut" value="269025164">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Zstroke" value="16777653">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_a" value="97">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_aacute" value="225">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_abelowdot" value="16785057">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_abovedot" value="511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_abreve" value="483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_abreveacute" value="16785071">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_abrevebelowdot" value="16785079">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_abrevegrave" value="16785073">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_abrevehook" value="16785075">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_abrevetilde" value="16785077">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_acircumflex" value="226">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_acircumflexacute" value="16785061">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_acircumflexbelowdot" value="16785069">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_acircumflexgrave" value="16785063">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_acircumflexhook" value="16785065">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_acircumflextilde" value="16785067">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_acute" value="180">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_adiaeresis" value="228">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ae" value="230">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_agrave" value="224">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ahook" value="16785059">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_amacron" value="992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ampersand" value="38">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_aogonek" value="433">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_apostrophe" value="39">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_approxeq" value="16785992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_approximate" value="2248">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_aring" value="229">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_asciicircum" value="94">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_asciitilde" value="126">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_asterisk" value="42">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_at" value="64">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_atilde" value="227">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_b" value="98">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_babovedot" value="16784899">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_backslash" value="92">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ballotcross" value="2804">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_bar" value="124">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_because" value="16785973">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_blank" value="2527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_botintegral" value="2213">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_botleftparens" value="2220">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_botleftsqbracket" value="2216">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_botleftsummation" value="2226">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_botrightparens" value="2222">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_botrightsqbracket" value="2218">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_botrightsummation" value="2230">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_bott" value="2550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_botvertsummationconnector" value="2228">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braceleft" value="123">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braceright" value="125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_bracketleft" value="91">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_bracketright" value="93">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_blank" value="16787456">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_1" value="65521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_10" value="65530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_2" value="65522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_3" value="65523">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_4" value="65524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_5" value="65525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_6" value="65526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_7" value="65527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_8" value="65528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_9" value="65529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1" value="16787457">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12" value="16787459">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123" value="16787463">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1234" value="16787471">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12345" value="16787487">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123456" value="16787519">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1234567" value="16787583">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12345678" value="16787711">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1234568" value="16787647">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123457" value="16787551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1234578" value="16787679">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123458" value="16787615">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12346" value="16787503">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123467" value="16787567">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1234678" value="16787695">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123468" value="16787631">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12347" value="16787535">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123478" value="16787663">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12348" value="16787599">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1235" value="16787479">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12356" value="16787511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123567" value="16787575">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1235678" value="16787703">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123568" value="16787639">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12357" value="16787543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123578" value="16787671">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12358" value="16787607">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1236" value="16787495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12367" value="16787559">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123678" value="16787687">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12368" value="16787623">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1237" value="16787527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12378" value="16787655">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1238" value="16787591">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_124" value="16787467">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1245" value="16787483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12456" value="16787515">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_124567" value="16787579">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1245678" value="16787707">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_124568" value="16787643">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12457" value="16787547">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_124578" value="16787675">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12458" value="16787611">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1246" value="16787499">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12467" value="16787563">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_124678" value="16787691">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12468" value="16787627">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1247" value="16787531">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12478" value="16787659">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1248" value="16787595">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_125" value="16787475">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1256" value="16787507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12567" value="16787571">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_125678" value="16787699">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12568" value="16787635">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1257" value="16787539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12578" value="16787667">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1258" value="16787603">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_126" value="16787491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1267" value="16787555">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12678" value="16787683">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1268" value="16787619">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_127" value="16787523">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1278" value="16787651">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_128" value="16787587">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13" value="16787461">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_134" value="16787469">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1345" value="16787485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13456" value="16787517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_134567" value="16787581">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1345678" value="16787709">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_134568" value="16787645">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13457" value="16787549">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_134578" value="16787677">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13458" value="16787613">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1346" value="16787501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13467" value="16787565">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_134678" value="16787693">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13468" value="16787629">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1347" value="16787533">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13478" value="16787661">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1348" value="16787597">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_135" value="16787477">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1356" value="16787509">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13567" value="16787573">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_135678" value="16787701">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13568" value="16787637">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1357" value="16787541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13578" value="16787669">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1358" value="16787605">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_136" value="16787493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1367" value="16787557">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13678" value="16787685">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1368" value="16787621">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_137" value="16787525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1378" value="16787653">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_138" value="16787589">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_14" value="16787465">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_145" value="16787481">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1456" value="16787513">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_14567" value="16787577">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_145678" value="16787705">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_14568" value="16787641">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1457" value="16787545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_14578" value="16787673">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1458" value="16787609">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_146" value="16787497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1467" value="16787561">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_14678" value="16787689">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1468" value="16787625">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_147" value="16787529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1478" value="16787657">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_148" value="16787593">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_15" value="16787473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_156" value="16787505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1567" value="16787569">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_15678" value="16787697">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1568" value="16787633">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_157" value="16787537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1578" value="16787665">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_158" value="16787601">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_16" value="16787489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_167" value="16787553">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1678" value="16787681">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_168" value="16787617">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_17" value="16787521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_178" value="16787649">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_18" value="16787585">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2" value="16787458">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23" value="16787462">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_234" value="16787470">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2345" value="16787486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23456" value="16787518">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_234567" value="16787582">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2345678" value="16787710">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_234568" value="16787646">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23457" value="16787550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_234578" value="16787678">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23458" value="16787614">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2346" value="16787502">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23467" value="16787566">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_234678" value="16787694">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23468" value="16787630">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2347" value="16787534">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23478" value="16787662">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2348" value="16787598">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_235" value="16787478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2356" value="16787510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23567" value="16787574">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_235678" value="16787702">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23568" value="16787638">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2357" value="16787542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23578" value="16787670">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2358" value="16787606">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_236" value="16787494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2367" value="16787558">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23678" value="16787686">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2368" value="16787622">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_237" value="16787526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2378" value="16787654">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_238" value="16787590">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_24" value="16787466">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_245" value="16787482">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2456" value="16787514">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_24567" value="16787578">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_245678" value="16787706">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_24568" value="16787642">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2457" value="16787546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_24578" value="16787674">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2458" value="16787610">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_246" value="16787498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2467" value="16787562">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_24678" value="16787690">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2468" value="16787626">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_247" value="16787530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2478" value="16787658">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_248" value="16787594">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_25" value="16787474">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_256" value="16787506">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2567" value="16787570">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_25678" value="16787698">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2568" value="16787634">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_257" value="16787538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2578" value="16787666">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_258" value="16787602">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_26" value="16787490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_267" value="16787554">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2678" value="16787682">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_268" value="16787618">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_27" value="16787522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_278" value="16787650">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_28" value="16787586">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3" value="16787460">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_34" value="16787468">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_345" value="16787484">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3456" value="16787516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_34567" value="16787580">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_345678" value="16787708">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_34568" value="16787644">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3457" value="16787548">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_34578" value="16787676">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3458" value="16787612">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_346" value="16787500">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3467" value="16787564">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_34678" value="16787692">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3468" value="16787628">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_347" value="16787532">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3478" value="16787660">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_348" value="16787596">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_35" value="16787476">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_356" value="16787508">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3567" value="16787572">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_35678" value="16787700">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3568" value="16787636">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_357" value="16787540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3578" value="16787668">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_358" value="16787604">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_36" value="16787492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_367" value="16787556">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3678" value="16787684">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_368" value="16787620">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_37" value="16787524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_378" value="16787652">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_38" value="16787588">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_4" value="16787464">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_45" value="16787480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_456" value="16787512">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_4567" value="16787576">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_45678" value="16787704">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_4568" value="16787640">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_457" value="16787544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_4578" value="16787672">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_458" value="16787608">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_46" value="16787496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_467" value="16787560">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_4678" value="16787688">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_468" value="16787624">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_47" value="16787528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_478" value="16787656">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_48" value="16787592">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_5" value="16787472">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_56" value="16787504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_567" value="16787568">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_5678" value="16787696">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_568" value="16787632">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_57" value="16787536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_578" value="16787664">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_58" value="16787600">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_6" value="16787488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_67" value="16787552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_678" value="16787680">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_68" value="16787616">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_7" value="16787520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_78" value="16787648">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_8" value="16787584">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_breve" value="418">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_brokenbar" value="166">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_c" value="99">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_cabovedot" value="741">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_cacute" value="486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_careof" value="2744">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_caret" value="2812">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_caron" value="439">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ccaron" value="488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ccedilla" value="231">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ccircumflex" value="742">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_cedilla" value="184">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_cent" value="162">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_checkerboard" value="2529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_checkmark" value="2803">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_circle" value="3023">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_club" value="2796">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_colon" value="58">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_comma" value="44">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_containsas" value="16785931">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_copyright" value="169">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_cr" value="2532">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_crossinglines" value="2542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_cuberoot" value="16785947">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_currency" value="164">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_cursor" value="2815">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_d" value="100">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dabovedot" value="16784907">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dagger" value="2801">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dcaron" value="495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_A" value="65153">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_E" value="65155">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_I" value="65157">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_O" value="65159">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_U" value="65161">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_a" value="65152">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_abovecomma" value="65124">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_abovedot" value="65110">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_abovereversedcomma" value="65125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_abovering" value="65112">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_acute" value="65105">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_belowbreve" value="65131">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_belowcircumflex" value="65129">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_belowcomma" value="65134">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_belowdiaeresis" value="65132">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_belowdot" value="65120">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_belowmacron" value="65128">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_belowring" value="65127">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_belowtilde" value="65130">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_breve" value="65109">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_capital_schwa" value="65163">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_caron" value="65114">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_cedilla" value="65115">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_circumflex" value="65106">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_currency" value="65135">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_dasia" value="65125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_diaeresis" value="65111">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_doubleacute" value="65113">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_doublegrave" value="65126">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_e" value="65154">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_grave" value="65104">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_hook" value="65121">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_horn" value="65122">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_i" value="65156">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_invertedbreve" value="65133">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_iota" value="65117">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_macron" value="65108">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_o" value="65158">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_ogonek" value="65116">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_perispomeni" value="65107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_psili" value="65124">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_semivoiced_sound" value="65119">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_small_schwa" value="65162">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_stroke" value="65123">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_tilde" value="65107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_u" value="65160">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_voiced_sound" value="65118">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_decimalpoint" value="2749">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_degree" value="176">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_diaeresis" value="168">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_diamond" value="2797">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_digitspace" value="2725">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dintegral" value="16785964">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_division" value="247">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dollar" value="36">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_doubbaselinedot" value="2735">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_doubleacute" value="445">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_doubledagger" value="2802">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_doublelowquotemark" value="2814">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_downarrow" value="2302">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_downcaret" value="2984">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_downshoe" value="3030">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_downstile" value="3012">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_downtack" value="3010">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dstroke" value="496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_e" value="101">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_eabovedot" value="1004">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_eacute" value="233">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ebelowdot" value="16785081">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ecaron" value="492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ecircumflex" value="234">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ecircumflexacute" value="16785087">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ecircumflexbelowdot" value="16785095">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ecircumflexgrave" value="16785089">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ecircumflexhook" value="16785091">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ecircumflextilde" value="16785093">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ediaeresis" value="235">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_egrave" value="232">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ehook" value="16785083">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_eightsubscript" value="16785544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_eightsuperior" value="16785528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_elementof" value="16785928">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ellipsis" value="2734">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_em3space" value="2723">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_em4space" value="2724">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_emacron" value="954">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_emdash" value="2729">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_emfilledcircle" value="2782">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_emfilledrect" value="2783">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_emopencircle" value="2766">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_emopenrectangle" value="2767">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_emptyset" value="16785925">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_emspace" value="2721">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_endash" value="2730">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_enfilledcircbullet" value="2790">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_enfilledsqbullet" value="2791">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_eng" value="959">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_enopencircbullet" value="2784">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_enopensquarebullet" value="2785">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_enspace" value="2722">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_eogonek" value="490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_equal" value="61">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_eth" value="240">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_etilde" value="16785085">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_exclam" value="33">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_exclamdown" value="161">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_f" value="102">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_fabovedot" value="16784927">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_femalesymbol" value="2808">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ff" value="2531">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_figdash" value="2747">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_filledlefttribullet" value="2780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_filledrectbullet" value="2779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_filledrighttribullet" value="2781">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_filledtribulletdown" value="2793">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_filledtribulletup" value="2792">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_fiveeighths" value="2757">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_fivesixths" value="2743">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_fivesubscript" value="16785541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_fivesuperior" value="16785525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_fourfifths" value="2741">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_foursubscript" value="16785540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_foursuperior" value="16785524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_fourthroot" value="16785948">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_function" value="2294">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_g" value="103">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_gabovedot" value="757">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_gbreve" value="699">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_gcaron" value="16777703">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_gcedilla" value="955">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_gcircumflex" value="760">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_grave" value="96">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_greater" value="62">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_greaterthanequal" value="2238">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_guillemotleft" value="171">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_guillemotright" value="187">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_h" value="104">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hairspace" value="2728">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hcircumflex" value="694">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_heart" value="2798">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_aleph" value="3296">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_ayin" value="3314">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_bet" value="3297">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_beth" value="3297">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_chet" value="3303">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_dalet" value="3299">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_daleth" value="3299">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_doublelowline" value="3295">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_finalkaph" value="3306">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_finalmem" value="3309">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_finalnun" value="3311">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_finalpe" value="3315">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_finalzade" value="3317">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_finalzadi" value="3317">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_gimel" value="3298">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_gimmel" value="3298">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_he" value="3300">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_het" value="3303">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_kaph" value="3307">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_kuf" value="3319">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_lamed" value="3308">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_mem" value="3310">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_nun" value="3312">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_pe" value="3316">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_qoph" value="3319">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_resh" value="3320">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_samech" value="3313">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_samekh" value="3313">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_shin" value="3321">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_taf" value="3322">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_taw" value="3322">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_tet" value="3304">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_teth" value="3304">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_waw" value="3301">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_yod" value="3305">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_zade" value="3318">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_zadi" value="3318">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_zain" value="3302">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_zayin" value="3302">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hexagram" value="2778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_horizconnector" value="2211">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_horizlinescan1" value="2543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_horizlinescan3" value="2544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_horizlinescan5" value="2545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_horizlinescan7" value="2546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_horizlinescan9" value="2547">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hstroke" value="689">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ht" value="2530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hyphen" value="173">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_i" value="105">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_iTouch" value="269025120">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_iacute" value="237">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ibelowdot" value="16785099">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ibreve" value="16777517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_icircumflex" value="238">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_identical" value="2255">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_idiaeresis" value="239">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_idotless" value="697">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ifonlyif" value="2253">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_igrave" value="236">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ihook" value="16785097">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_imacron" value="1007">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_implies" value="2254">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_includedin" value="2266">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_includes" value="2267">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_infinity" value="2242">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_integral" value="2239">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_intersection" value="2268">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_iogonek" value="999">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_itilde" value="949">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_j" value="106">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_jcircumflex" value="700">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_jot" value="3018">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_k" value="107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_A" value="1201">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_CHI" value="1217">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_E" value="1204">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_FU" value="1228">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_HA" value="1226">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_HE" value="1229">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_HI" value="1227">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_HO" value="1230">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_HU" value="1228">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_I" value="1202">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_KA" value="1206">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_KE" value="1209">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_KI" value="1207">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_KO" value="1210">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_KU" value="1208">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_MA" value="1231">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_ME" value="1234">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_MI" value="1232">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_MO" value="1235">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_MU" value="1233">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_N" value="1245">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_NA" value="1221">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_NE" value="1224">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_NI" value="1222">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_NO" value="1225">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_NU" value="1223">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_O" value="1205">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_RA" value="1239">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_RE" value="1242">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_RI" value="1240">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_RO" value="1243">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_RU" value="1241">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_SA" value="1211">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_SE" value="1214">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_SHI" value="1212">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_SO" value="1215">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_SU" value="1213">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_TA" value="1216">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_TE" value="1219">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_TI" value="1217">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_TO" value="1220">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_TSU" value="1218">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_TU" value="1218">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_U" value="1203">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_WA" value="1244">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_WO" value="1190">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_YA" value="1236">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_YO" value="1238">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_YU" value="1237">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_a" value="1191">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_closingbracket" value="1187">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_comma" value="1188">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_conjunctive" value="1189">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_e" value="1194">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_fullstop" value="1185">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_i" value="1192">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_middledot" value="1189">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_o" value="1195">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_openingbracket" value="1186">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_tsu" value="1199">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_tu" value="1199">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_u" value="1193">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_ya" value="1196">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_yo" value="1198">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_yu" value="1197">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kappa" value="930">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kcedilla" value="1011">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kra" value="930">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_l" value="108">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lacute" value="485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_latincross" value="2777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lbelowdot" value="16784951">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lcaron" value="437">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lcedilla" value="950">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftanglebracket" value="2748">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftarrow" value="2299">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftcaret" value="2979">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftdoublequotemark" value="2770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftmiddlecurlybrace" value="2223">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftopentriangle" value="2764">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftpointer" value="2794">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftradical" value="2209">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftshoe" value="3034">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftsinglequotemark" value="2768">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftt" value="2548">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lefttack" value="3036">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_less" value="60">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lessthanequal" value="2236">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lf" value="2533">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_logicaland" value="2270">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_logicalor" value="2271">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lowleftcorner" value="2541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lowrightcorner" value="2538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lstroke" value="435">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_m" value="109">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_mabovedot" value="16784961">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_macron" value="175">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_malesymbol" value="2807">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_maltesecross" value="2800">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_marker" value="2751">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_masculine" value="186">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_minus" value="45">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_minutes" value="2774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_mu" value="181">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_multiply" value="215">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_musicalflat" value="2806">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_musicalsharp" value="2805">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_n" value="110">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_nabla" value="2245">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_nacute" value="497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ncaron" value="498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ncedilla" value="1009">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ninesubscript" value="16785545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ninesuperior" value="16785529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_nl" value="2536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_nobreakspace" value="160">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_notapproxeq" value="16785991">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_notelementof" value="16785929">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_notequal" value="2237">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_notidentical" value="16786018">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_notsign" value="172">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ntilde" value="241">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_numbersign" value="35">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_numerosign" value="1712">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_o" value="111">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_oacute" value="243">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_obarred" value="16777845">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_obelowdot" value="16785101">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ocaron" value="16777682">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ocircumflex" value="244">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ocircumflexacute" value="16785105">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ocircumflexbelowdot" value="16785113">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ocircumflexgrave" value="16785107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ocircumflexhook" value="16785109">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ocircumflextilde" value="16785111">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_odiaeresis" value="246">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_odoubleacute" value="501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_oe" value="5053">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ogonek" value="434">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ograve" value="242">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ohook" value="16785103">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ohorn" value="16777633">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ohornacute" value="16785115">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ohornbelowdot" value="16785123">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ohorngrave" value="16785117">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ohornhook" value="16785119">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ohorntilde" value="16785121">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_omacron" value="1010">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_oneeighth" value="2755">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_onefifth" value="2738">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_onehalf" value="189">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_onequarter" value="188">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_onesixth" value="2742">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_onesubscript" value="16785537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_onesuperior" value="185">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_onethird" value="2736">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ooblique" value="248">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_openrectbullet" value="2786">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_openstar" value="2789">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_opentribulletdown" value="2788">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_opentribulletup" value="2787">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ordfeminine" value="170">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_oslash" value="248">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_otilde" value="245">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_overbar" value="3008">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_overline" value="1150">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_p" value="112">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_pabovedot" value="16784983">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_paragraph" value="182">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_parenleft" value="40">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_parenright" value="41">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_partdifferential" value="16785922">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_partialderivative" value="2287">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_percent" value="37">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_period" value="46">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_periodcentered" value="183">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_phonographcopyright" value="2811">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_plus" value="43">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_plusminus" value="177">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_prescription" value="2772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_prolongedsound" value="1200">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_punctspace" value="2726">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_q" value="113">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_quad" value="3020">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_question" value="63">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_questiondown" value="191">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_quotedbl" value="34">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_quoteleft" value="96">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_quoteright" value="39">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_r" value="114">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_racute" value="480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_radical" value="2262">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rcaron" value="504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rcedilla" value="947">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_registered" value="174">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightanglebracket" value="2750">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightarrow" value="2301">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightcaret" value="2982">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightdoublequotemark" value="2771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightmiddlecurlybrace" value="2224">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightmiddlesummation" value="2231">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightopentriangle" value="2765">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightpointer" value="2795">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightshoe" value="3032">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightsinglequotemark" value="2769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightt" value="2549">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_righttack" value="3068">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_s" value="115">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_sabovedot" value="16784993">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_sacute" value="438">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_scaron" value="441">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_scedilla" value="442">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_schwa" value="16777817">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_scircumflex" value="766">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_script_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_seconds" value="2775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_section" value="167">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_semicolon" value="59">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_semivoicedsound" value="1247">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_seveneighths" value="2758">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_sevensubscript" value="16785543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_sevensuperior" value="16785527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_signaturemark" value="2762">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_signifblank" value="2732">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_similarequal" value="2249">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_singlelowquotemark" value="2813">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_sixsubscript" value="16785542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_sixsuperior" value="16785526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_slash" value="47">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_soliddiamond" value="2528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_space" value="32">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_squareroot" value="16785946">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ssharp" value="223">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_sterling" value="163">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_stricteq" value="16786019">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_t" value="116">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_tabovedot" value="16785003">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_tcaron" value="443">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_tcedilla" value="510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_telephone" value="2809">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_telephonerecorder" value="2810">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_therefore" value="2240">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_thinspace" value="2727">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_thorn" value="254">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_threeeighths" value="2756">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_threefifths" value="2740">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_threequarters" value="190">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_threesubscript" value="16785539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_threesuperior" value="179">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_tintegral" value="16785965">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_topintegral" value="2212">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_topleftparens" value="2219">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_topleftradical" value="2210">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_topleftsqbracket" value="2215">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_topleftsummation" value="2225">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_toprightparens" value="2221">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_toprightsqbracket" value="2217">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_toprightsummation" value="2229">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_topt" value="2551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_topvertsummationconnector" value="2227">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_trademark" value="2761">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_trademarkincircle" value="2763">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_tslash" value="956">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_twofifths" value="2739">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_twosubscript" value="16785538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_twosuperior" value="178">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_twothirds" value="2737">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_u" value="117">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uacute" value="250">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ubelowdot" value="16785125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ubreve" value="765">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ucircumflex" value="251">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_udiaeresis" value="252">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_udoubleacute" value="507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ugrave" value="249">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uhook" value="16785127">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uhorn" value="16777648">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uhornacute" value="16785129">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uhornbelowdot" value="16785137">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uhorngrave" value="16785131">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uhornhook" value="16785133">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uhorntilde" value="16785135">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_umacron" value="1022">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_underbar" value="3014">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_underscore" value="95">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_union" value="2269">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uogonek" value="1017">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uparrow" value="2300">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_upcaret" value="2985">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_upleftcorner" value="2540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uprightcorner" value="2539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_upshoe" value="3011">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_upstile" value="3027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uptack" value="3022">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uring" value="505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_utilde" value="1021">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_v" value="118">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_variation" value="2241">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_vertbar" value="2552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_vertconnector" value="2214">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_voicedsound" value="1246">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_vt" value="2537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_w" value="119">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_wacute" value="16785027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_wcircumflex" value="16777589">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_wdiaeresis" value="16785029">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_wgrave" value="16785025">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_x" value="120">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_xabovedot" value="16785035">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_y" value="121">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_yacute" value="253">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ybelowdot" value="16785141">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ycircumflex" value="16777591">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ydiaeresis" value="255">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_yen" value="165">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ygrave" value="16785139">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_yhook" value="16785143">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ytilde" value="16785145">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_z" value="122">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_zabovedot" value="447">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_zacute" value="444">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_zcaron" value="446">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_zerosubscript" value="16785536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_zerosuperior" value="16785520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_zstroke" value="16777654">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_0" value="65456">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_1" value="65457">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_2" value="65458">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_3" value="65459">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_4" value="65460">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_5" value="65461">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_6" value="65462">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_7" value="65463">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_8" value="65464">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_9" value="65465">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Add" value="65451">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Begin" value="65437">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Decimal" value="65454">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Delete" value="65439">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Divide" value="65455">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Down" value="65433">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_End" value="65436">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Enter" value="65421">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Equal" value="65469">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_F1" value="65425">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_F2" value="65426">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_F3" value="65427">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_F4" value="65428">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Home" value="65429">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Insert" value="65438">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Left" value="65430">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Multiply" value="65450">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Next" value="65435">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Page_Down" value="65435">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Page_Up" value="65434">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Prior" value="65434">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Right" value="65432">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Separator" value="65452">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Space" value="65408">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Subtract" value="65453">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Tab" value="65417">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Up" value="65431">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Kana_Lock" value="65325">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Kana_Shift" value="65326">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Kanji" value="65313">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Kanji_Bangou" value="65335">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Katakana" value="65318">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KbdBrightnessDown" value="269025030">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KbdBrightnessUp" value="269025029">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KbdLightOnOff" value="269025028">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Kcedilla" value="979">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="KeyEvent" c:type="ClutterKeyEvent" version="0.2">
+      <doc xml:whitespace="preserve">Key event</doc>
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+      <field name="modifier_state" writable="1">
+        <type name="ModifierType" c:type="ClutterModifierType"/>
+      </field>
+      <field name="keyval" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="hardware_keycode" writable="1">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="unicode_value" introspectable="0" writable="1">
+        <type name="gunichar" c:type="gunichar"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="InputDevice" c:type="ClutterInputDevice*"/>
+      </field>
+    </record>
+    <record name="Knot"
+            c:type="ClutterKnot"
+            version="0.2"
+            glib:type-name="ClutterKnot"
+            glib:get-type="clutter_knot_get_type"
+            c:symbol-prefix="knot">
+      <doc xml:whitespace="preserve">Point in a path behaviour.</doc>
+      <field name="x" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <method name="copy" c:identifier="clutter_knot_copy" version="0.2">
+        <doc xml:whitespace="preserve">Makes an allocated copy of a knot.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the copied knot.</doc>
+          <type name="Knot" c:type="ClutterKnot*"/>
+        </return-value>
+      </method>
+      <method name="equal" c:identifier="clutter_knot_equal" version="0.2">
+        <doc xml:whitespace="preserve">Compares to knot and checks if the point to the same location.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the knots point to the same location.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="knot_b" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Second knot</doc>
+            <type name="Knot" c:type="ClutterKnot*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="clutter_knot_free" version="0.2">
+        <doc xml:whitespace="preserve">Frees the memory of an allocated knot.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <constant name="Korean_Won" value="3839">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="L" value="76">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="L1" value="65480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="L10" value="65489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="L2" value="65481">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="L3" value="65482">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="L4" value="65483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="L5" value="65484">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="L6" value="65485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="L7" value="65486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="L8" value="65487">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="L9" value="65488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Lacute" value="453">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Last_Virtual_Screen" value="65236">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Launch0" value="269025088">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Launch1" value="269025089">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Launch2" value="269025090">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Launch3" value="269025091">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Launch4" value="269025092">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Launch5" value="269025093">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Launch6" value="269025094">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Launch7" value="269025095">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Launch8" value="269025096">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Launch9" value="269025097">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="LaunchA" value="269025098">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="LaunchB" value="269025099">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="LaunchC" value="269025100">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="LaunchD" value="269025101">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="LaunchE" value="269025102">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="LaunchF" value="269025103">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="LayoutManager"
+           c:symbol-prefix="layout_manager"
+           c:type="ClutterLayoutManager"
+           version="1.2"
+           parent="GObject.InitiallyUnowned"
+           abstract="1"
+           glib:type-name="ClutterLayoutManager"
+           glib:get-type="clutter_layout_manager_get_type"
+           glib:type-struct="LayoutManagerClass">
+      <doc xml:whitespace="preserve">The #ClutterLayoutManager structure contains only private data
+and should be accessed using the provided API</doc>
+      <virtual-method name="allocate" invoker="allocate" version="1.2">
+        <doc xml:whitespace="preserve">Allocates the children of @container given an area
+See also clutter_actor_allocate()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="allocation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterActorBox containing the allocated area of @container</doc>
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the allocation flags</doc>
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="begin_animation"
+                      invoker="begin_animation"
+                      version="1.2">
+        <doc xml:whitespace="preserve">Begins an animation of @duration milliseconds, using the provided
+easing @mode
+The easing mode can be specified either as a #ClutterAnimationMode
+or as a logical id returned by clutter_alpha_register_func()
+The result of this function depends on the @manager implementation
+layout manager; the returned instance is owned by the layout
+manager and should not be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #ClutterAlpha created by the</doc>
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+        <parameters>
+          <parameter name="duration" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the duration of the animation, in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the easing mode of the animation</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="create_child_meta" introspectable="0">
+        <return-value>
+          <type name="LayoutMeta" c:type="ClutterLayoutMeta*"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="end_animation"
+                      invoker="end_animation"
+                      version="1.2">
+        <doc xml:whitespace="preserve">Ends an animation started by clutter_layout_manager_begin_animation()
+The result of this call depends on the @manager implementation</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_animation_progress"
+                      invoker="get_animation_progress"
+                      version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the progress of the animation, if one has been started by
+clutter_layout_manager_begin_animation()
+The returned value has the same semantics of the #ClutterAlpha:alpha
+value</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the progress of the animation</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_child_meta_type">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_preferred_height"
+                      invoker="get_preferred_height"
+                      version="1.2">
+        <doc xml:whitespace="preserve">Computes the minimum and natural heights of the @container according
+to @manager.
+See also clutter_actor_get_preferred_height()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="for_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the width for which the height should be computed, or -1</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="minimum_height_p" transfer-ownership="none">
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_height_p" transfer-ownership="none">
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_preferred_width"
+                      invoker="get_preferred_width"
+                      version="1.2">
+        <doc xml:whitespace="preserve">Computes the minimum and natural widths of the @container according
+to @manager.
+See also clutter_actor_get_preferred_width()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="for_height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the height for which the width should be computed, or -1</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="minimum_width_p" transfer-ownership="none">
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_width_p" transfer-ownership="none">
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_container"
+                      invoker="set_container"
+                      version="1.2">
+        <doc xml:whitespace="preserve">If the #ClutterLayoutManager sub-class allows it, allow
+adding a weak reference of the @container using @manager
+from within the layout manager
+The layout manager should not increase the reference
+count of the @container</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="allocate"
+              c:identifier="clutter_layout_manager_allocate"
+              version="1.2">
+        <doc xml:whitespace="preserve">Allocates the children of @container given an area
+See also clutter_actor_allocate()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="allocation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterActorBox containing the allocated area of @container</doc>
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the allocation flags</doc>
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="begin_animation"
+              c:identifier="clutter_layout_manager_begin_animation"
+              version="1.2">
+        <doc xml:whitespace="preserve">Begins an animation of @duration milliseconds, using the provided
+easing @mode
+The easing mode can be specified either as a #ClutterAnimationMode
+or as a logical id returned by clutter_alpha_register_func()
+The result of this function depends on the @manager implementation
+layout manager; the returned instance is owned by the layout
+manager and should not be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #ClutterAlpha created by the</doc>
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+        <parameters>
+          <parameter name="duration" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the duration of the animation, in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the easing mode of the animation</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_get"
+              c:identifier="clutter_layout_manager_child_get"
+              version="1.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Retrieves the values for a list of properties out of the
+#ClutterLayoutMeta created by @manager and attached to the
+child of a @container</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @container</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_get_property"
+              c:identifier="clutter_layout_manager_child_get_property"
+              version="1.2">
+        <doc xml:whitespace="preserve">Gets a property on the #ClutterLayoutMeta created by @manager and
+attached to a child of @container
+The #GValue must already be initialized to the type of the property
+and has to be unset with g_value_unset() after extracting the real
+value out of it</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @container</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property to get</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue with the value of the property to get</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_set"
+              c:identifier="clutter_layout_manager_child_set"
+              version="1.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets a list of properties and their values on the #ClutterLayoutMeta
+associated by @manager to a child of @container
+Languages bindings should use clutter_layout_manager_child_set_property()
+instead</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @container</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the first property name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_set_property"
+              c:identifier="clutter_layout_manager_child_set_property"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets a property on the #ClutterLayoutMeta created by @manager and
+attached to a child of @container</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @container</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue with the value of the property to set</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="end_animation"
+              c:identifier="clutter_layout_manager_end_animation"
+              version="1.2">
+        <doc xml:whitespace="preserve">Ends an animation started by clutter_layout_manager_begin_animation()
+The result of this call depends on the @manager implementation</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="find_child_property"
+              c:identifier="clutter_layout_manager_find_child_property"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the #GParamSpec for the layout property @name inside
+the #ClutterLayoutMeta sub-class used by @manager
+or %NULL if no property with that name exists. The returned
+#GParamSpec is owned by the layout manager and should not be
+modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GParamSpec describing the property,</doc>
+          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_animation_progress"
+              c:identifier="clutter_layout_manager_get_animation_progress"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the progress of the animation, if one has been started by
+clutter_layout_manager_begin_animation()
+The returned value has the same semantics of the #ClutterAlpha:alpha
+value</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the progress of the animation</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_child_meta"
+              c:identifier="clutter_layout_manager_get_child_meta"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterLayoutMeta that the layout @manager associated
+to the @actor child of @container, eventually by creating one if the
+#ClutterLayoutManager supports layout properties
+#ClutterLayoutManager does not have layout properties. The returned
+layout meta instance is owned by the #ClutterLayoutManager and it
+should not be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterLayoutMeta, or %NULL if the</doc>
+          <type name="LayoutMeta" c:type="ClutterLayoutMeta*"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @container</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_preferred_height"
+              c:identifier="clutter_layout_manager_get_preferred_height"
+              version="1.2">
+        <doc xml:whitespace="preserve">Computes the minimum and natural heights of the @container according
+to @manager.
+See also clutter_actor_get_preferred_height()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="for_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the width for which the height should be computed, or -1</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the minimum height of the layout, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="nat_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the natural height of the layout, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_preferred_width"
+              c:identifier="clutter_layout_manager_get_preferred_width"
+              version="1.2">
+        <doc xml:whitespace="preserve">Computes the minimum and natural widths of the @container according
+to @manager.
+See also clutter_actor_get_preferred_width()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="for_height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the height for which the width should be computed, or -1</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the minimum width of the layout, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="nat_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the natural width of the layout, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="layout_changed"
+              c:identifier="clutter_layout_manager_layout_changed"
+              version="1.2">
+        <doc xml:whitespace="preserve">Emits the #ClutterLayoutManager::layout-changed signal on @manager
+This function should only be called by implementations of the
+#ClutterLayoutManager class</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="list_child_properties"
+              c:identifier="clutter_layout_manager_list_child_properties"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves all the #GParamSpec&lt;!-- --&gt;s for the layout properties
+stored inside the #ClutterLayoutMeta sub-class used by @manager
+%NULL-terminated array of #GParamSpec&lt;!-- --&gt;s. Use g_free() to free the
+resources allocated for the array</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly-allocated,</doc>
+          <array length="0" c:type="GParamSpec**">
+            <type name="GObject.ParamSpec"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="n_pspecs"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the number of returned #GParamSpec&lt;!-- --&gt;s</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_container"
+              c:identifier="clutter_layout_manager_set_container"
+              version="1.2">
+        <doc xml:whitespace="preserve">If the #ClutterLayoutManager sub-class allows it, allow
+adding a weak reference of the @container using @manager
+from within the layout manager
+The layout manager should not increase the reference
+count of the @container</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+      </field>
+      <field name="dummy">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <glib:signal name="layout-changed" version="1.2">
+        <doc xml:whitespace="preserve">The ::layout-changed signal is emitted each time a layout manager
+has been changed. Every #ClutterActor using the @manager instance
+as a layout manager should connect a handler to the ::layout-changed
+signal and queue a relayout on themselves:
+|[
+static void layout_changed (ClutterLayoutManager *manager,
+ClutterActor         *self)
+{
+clutter_actor_queue_relayout (self);
+}
+...
+self-&gt;manager = g_object_ref_sink (manager);
+g_signal_connect (self-&gt;manager, "layout-changed",
+G_CALLBACK (layout_changed),
+self);
+]|
+Sub-classes of #ClutterLayoutManager that implement a layout that
+can be controlled or changed using parameters should emit the
+::layout-changed signal whenever one of the parameters changes,
+by using clutter_layout_manager_layout_changed().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="LayoutManagerClass"
+            c:type="ClutterLayoutManagerClass"
+            glib:is-gtype-struct-for="LayoutManager"
+            version="1.2">
+      <doc xml:whitespace="preserve">The #ClutterLayoutManagerClass structure contains only private
+data and should be accessed using the provided API</doc>
+      <field name="parent_class">
+        <type name="GObject.InitiallyUnownedClass"
+              c:type="GInitiallyUnownedClass"/>
+      </field>
+      <field name="get_preferred_width">
+        <callback name="get_preferred_width">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+            <parameter name="container" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the #ClutterContainer using @manager</doc>
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="for_height" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the height for which the width should be computed, or -1</doc>
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+            <parameter name="minimum_width_p" transfer-ownership="none">
+              <type name="gfloat" c:type="gfloat*"/>
+            </parameter>
+            <parameter name="natural_width_p" transfer-ownership="none">
+              <type name="gfloat" c:type="gfloat*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_preferred_height">
+        <callback name="get_preferred_height">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+            <parameter name="container" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the #ClutterContainer using @manager</doc>
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="for_width" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the width for which the height should be computed, or -1</doc>
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+            <parameter name="minimum_height_p" transfer-ownership="none">
+              <type name="gfloat" c:type="gfloat*"/>
+            </parameter>
+            <parameter name="natural_height_p" transfer-ownership="none">
+              <type name="gfloat" c:type="gfloat*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="allocate">
+        <callback name="allocate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+            <parameter name="container" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the #ClutterContainer using @manager</doc>
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="allocation" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the #ClutterActorBox containing the allocated area of @container</doc>
+              <type name="ActorBox" c:type="ClutterActorBox*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the allocation flags</doc>
+              <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_container">
+        <callback name="set_container">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+            <parameter name="container"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">a #ClutterContainer using @manager</doc>
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_child_meta_type">
+        <callback name="get_child_meta_type">
+          <return-value transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_child_meta" introspectable="0">
+        <callback name="create_child_meta" introspectable="0">
+          <return-value>
+            <type name="LayoutMeta" c:type="ClutterLayoutMeta*"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="begin_animation">
+        <callback name="begin_animation">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #ClutterAlpha created by the</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+            <parameter name="duration" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the duration of the animation, in milliseconds</doc>
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="mode" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the easing mode of the animation</doc>
+              <type name="gulong" c:type="gulong"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_animation_progress">
+        <callback name="get_animation_progress">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the progress of the animation</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="end_animation">
+        <callback name="end_animation">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="layout_changed">
+        <callback name="layout_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_padding_1" introspectable="0">
+        <callback name="_clutter_padding_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_padding_2" introspectable="0">
+        <callback name="_clutter_padding_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_padding_3" introspectable="0">
+        <callback name="_clutter_padding_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_padding_4" introspectable="0">
+        <callback name="_clutter_padding_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_padding_5" introspectable="0">
+        <callback name="_clutter_padding_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_padding_6" introspectable="0">
+        <callback name="_clutter_padding_6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_padding_7" introspectable="0">
+        <callback name="_clutter_padding_7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_padding_8" introspectable="0">
+        <callback name="_clutter_padding_8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="LayoutMeta"
+           c:symbol-prefix="layout_meta"
+           c:type="ClutterLayoutMeta"
+           parent="ChildMeta"
+           abstract="1"
+           glib:type-name="ClutterLayoutMeta"
+           glib:get-type="clutter_layout_meta_get_type"
+           glib:type-struct="LayoutMetaClass">
+      <method name="get_manager"
+              c:identifier="clutter_layout_meta_get_manager"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the actor wrapped by @data</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterLayoutManager</doc>
+          <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+        </return-value>
+      </method>
+      <property name="manager"
+                version="1.2"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterLayoutManager that created this #ClutterLayoutMeta.</doc>
+        <type name="LayoutManager"/>
+      </property>
+      <field name="parent_instance">
+        <type name="ChildMeta" c:type="ClutterChildMeta"/>
+      </field>
+      <field name="manager">
+        <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+      </field>
+      <field name="dummy0">
+        <type name="gint32" c:type="gint32"/>
+      </field>
+      <field name="dummy1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </class>
+    <record name="LayoutMetaClass"
+            c:type="ClutterLayoutMetaClass"
+            glib:is-gtype-struct-for="LayoutMeta"
+            version="1.2">
+      <doc xml:whitespace="preserve">The #ClutterLayoutMetaClass contains only private data and
+should never be accessed directly</doc>
+      <field name="parent_class">
+        <type name="ChildMetaClass" c:type="ClutterChildMetaClass"/>
+      </field>
+      <field name="_clutter_padding1" introspectable="0">
+        <callback name="_clutter_padding1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_padding2" introspectable="0">
+        <callback name="_clutter_padding2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_padding3" introspectable="0">
+        <callback name="_clutter_padding3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_padding4" introspectable="0">
+        <callback name="_clutter_padding4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <constant name="Lbelowdot" value="16784950">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Lcaron" value="421">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Lcedilla" value="934">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Left" value="65361">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="LightBulb" value="269025077">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Linefeed" value="65290">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="LiraSign" value="16785572">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="ListModel"
+           c:symbol-prefix="list_model"
+           c:type="ClutterListModel"
+           version="0.6"
+           parent="Model"
+           glib:type-name="ClutterListModel"
+           glib:get-type="clutter_list_model_get_type"
+           glib:type-struct="ListModelClass">
+      <doc xml:whitespace="preserve">The #ClutterListModel struct contains only private data.</doc>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_list_model_new"
+                   version="0.6"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new default model with @n_columns columns with the types 
+and names passed in.
+For example:
+&lt;informalexample&gt;&lt;programlisting&gt;
+model = clutter_list_model_new (3,
+G_TYPE_INT,      "Score",
+G_TYPE_STRING,   "Team",
+GDK_TYPE_PIXBUF, "Logo");
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+will create a new #ClutterModel with three columns of type int,
+string and #GdkPixbuf respectively.
+Note that the name of the column can be set to %NULL, in which case
+the canonical name of the type held by the column will be used as
+the title.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #ClutterListModel</doc>
+          <type name="Model" c:type="ClutterModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of columns in the model</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="newv"
+                c:identifier="clutter_list_model_newv"
+                version="0.6">
+        <doc xml:whitespace="preserve">Non-vararg version of clutter_list_model_new(). This function is
+useful for language bindings.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new default #ClutterModel</doc>
+          <type name="Model" c:type="ClutterModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of columns in the model</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="types" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of #GType types for the columns, from first to last</doc>
+            <type name="GType" c:type="GType*"/>
+          </parameter>
+          <parameter name="names" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of names for the columns, from first to last</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <field name="parent_instance">
+        <type name="Model" c:type="ClutterModel"/>
+      </field>
+      <field name="priv">
+        <type name="ListModelPrivate" c:type="ClutterListModelPrivate*"/>
+      </field>
+    </class>
+    <record name="ListModelClass"
+            c:type="ClutterListModelClass"
+            glib:is-gtype-struct-for="ListModel"
+            version="0.6">
+      <doc xml:whitespace="preserve">The #ClutterListModelClass struct contains only private data.</doc>
+      <field name="parent_class">
+        <type name="ModelClass" c:type="ClutterModelClass"/>
+      </field>
+    </record>
+    <record name="ListModelPrivate"
+            c:type="ClutterListModelPrivate"
+            disguised="1">
+    </record>
+    <constant name="LogOff" value="269025121">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Lstroke" value="419">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="M" value="77">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MAJOR_VERSION" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MICRO_VERSION" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MINOR_VERSION" value="4">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Mabovedot" value="16784960">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Macedonia_DSE" value="1717">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Macedonia_GJE" value="1714">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Macedonia_KJE" value="1724">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Macedonia_dse" value="1701">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Macedonia_gje" value="1698">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Macedonia_kje" value="1708">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Mae_Koho" value="65342">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Mail" value="269025049">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MailForward" value="269025168">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Market" value="269025122">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Massyo" value="65324">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <interface name="Media"
+               c:symbol-prefix="media"
+               c:type="ClutterMedia"
+               version="0.2"
+               glib:type-name="ClutterMedia"
+               glib:get-type="clutter_media_get_type"
+               glib:type-struct="MediaIface">
+      <doc xml:whitespace="preserve">#ClutterMedia is an opaque structure whose members cannot be directly
+accessed</doc>
+      <method name="get_audio_volume"
+              c:identifier="clutter_media_get_audio_volume"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the playback volume of @media.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The playback volume between 0.0 and 1.0</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_buffer_fill"
+              c:identifier="clutter_media_get_buffer_fill"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the amount of the stream that is buffered.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the fill level, between 0.0 and 1.0</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_can_seek"
+              c:identifier="clutter_media_get_can_seek"
+              version="0.2">
+        <doc xml:whitespace="preserve">Retrieves whether @media is seekable or not.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @media can seek, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_duration"
+              c:identifier="clutter_media_get_duration"
+              version="0.2">
+        <doc xml:whitespace="preserve">Retrieves the duration of the media stream that @media represents.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the duration of the media stream, in seconds</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_playing"
+              c:identifier="clutter_media_get_playing"
+              version="0.2">
+        <doc xml:whitespace="preserve">Retrieves the playing status of @media.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if playing, %FALSE if stopped.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_progress"
+              c:identifier="clutter_media_get_progress"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the playback progress of @media.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the playback progress, between 0.0 and 1.0</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_subtitle_font_name"
+              c:identifier="clutter_media_get_subtitle_font_name"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the font name currently used.
+to free the returned string</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a string containing the font name. Use g_free()</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_subtitle_uri"
+              c:identifier="clutter_media_get_subtitle_uri"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the URI of the subtitle file in use.
+to free the returned string</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the URI of the subtitle file. Use g_free()</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_uri"
+              c:identifier="clutter_media_get_uri"
+              version="0.2">
+        <doc xml:whitespace="preserve">Retrieves the URI from @media.
+to free the returned string</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the URI of the media stream. Use g_free()</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_audio_volume"
+              c:identifier="clutter_media_set_audio_volume"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the playback volume of @media to @volume.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="volume" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the volume as a double between 0.0 and 1.0</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_filename"
+              c:identifier="clutter_media_set_filename"
+              version="0.2">
+        <doc xml:whitespace="preserve">Sets the source of @media using a file path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A filename</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_playing"
+              c:identifier="clutter_media_set_playing"
+              version="0.2">
+        <doc xml:whitespace="preserve">Starts or stops playing of @media.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="playing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to start playing</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_progress"
+              c:identifier="clutter_media_set_progress"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the playback progress of @media. The @progress is
+a normalized value between 0.0 (begin) and 1.0 (end).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="progress" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the progress of the playback, between 0.0 and 1.0</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_subtitle_font_name"
+              c:identifier="clutter_media_set_subtitle_font_name"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the font used by the subtitle renderer. The @font_name string must be
+either %NULL, which means that the default font name of the underlying
+implementation will be used; or must follow the grammar recognized by
+pango_font_description_from_string() like:
+|[
+clutter_media_set_subtitle_font_name (media, "Sans 24pt");
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a font name, or %NULL to set the default font name</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_subtitle_uri"
+              c:identifier="clutter_media_set_subtitle_uri"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the location of a subtitle file to display while playing @media.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the URI of a subtitle file</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_uri"
+              c:identifier="clutter_media_set_uri"
+              version="0.2">
+        <doc xml:whitespace="preserve">Sets the URI of @media to @uri.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the URI of the media stream</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="audio-volume"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The volume of the audio, as a normalized value between
+0.0 and 1.0.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="buffer-fill" version="1.0" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The fill level of the buffer for the current stream,
+as a value between 0.0 and 1.0.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="can-seek" version="0.2" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the current stream is seekable.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="duration" version="0.2" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The duration of the current stream, in seconds</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="playing"
+                version="0.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterMedia actor is playing.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="progress"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The current progress of the playback, as a normalized
+value between 0.0 and 1.0.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="subtitle-font-name"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The font used to display subtitles. The font description has to
+follow the same grammar as the one recognized by
+pango_font_description_from_string().</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="subtitle-uri"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The location of a subtitle file, expressed as a valid URI.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="uri"
+                version="0.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The location of a media file, expressed as a valid URI.</doc>
+        <type name="utf8"/>
+      </property>
+      <glib:signal name="eos" version="0.2">
+        <doc xml:whitespace="preserve">The ::eos signal is emitted each time the media stream ends.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="error" version="0.2">
+        <doc xml:whitespace="preserve">The ::error signal is emitted each time an error occurred.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GError</doc>
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="MediaIface"
+            c:type="ClutterMediaIface"
+            glib:is-gtype-struct-for="Media"
+            version="0.2">
+      <doc xml:whitespace="preserve">Interface vtable for #ClutterMedia implementations</doc>
+      <field name="base_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="eos">
+        <callback name="eos">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="media" transfer-ownership="none">
+              <type name="Media" c:type="ClutterMedia*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="error">
+        <callback name="error">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="media" transfer-ownership="none">
+              <type name="Media" c:type="ClutterMedia*"/>
+            </parameter>
+            <parameter name="error" transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <constant name="Meeting" value="269025123">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Memo" value="269025054">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Menu" value="65383">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MenuKB" value="269025125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MenuPB" value="269025126">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Messenger" value="269025166">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Meta_L" value="65511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Meta_R" value="65512">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MillSign" value="16785573">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ModeLock" value="269025025">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Mode_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Model"
+           c:symbol-prefix="model"
+           c:type="ClutterModel"
+           version="0.6"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="ClutterModel"
+           glib:get-type="clutter_model_get_type"
+           glib:type-struct="ModelClass">
+      <doc xml:whitespace="preserve">Base class for list models. The #ClutterModel structure contains
+only private data and should be manipulated using the provided
+API.</doc>
+      <implements name="Scriptable"/>
+      <virtual-method name="get_column_name"
+                      invoker="get_column_name"
+                      version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the name of the @column
+string, and it should not be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the column. The model holds the returned</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the column number</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_column_type"
+                      invoker="get_column_type"
+                      version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the type of the @column.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of the column.</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the column number</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_iter_at_row"
+                      invoker="get_iter_at_row"
+                      version="0.6">
+        <doc xml:whitespace="preserve">Retrieves a #ClutterModelIter representing the row at the given index.
+If a filter function has been set using clutter_model_set_filter()
+then the @model implementation will return the first non filtered
+row.
+out of bounds. When done using the iterator object, call g_object_unref()
+to deallocate its resources</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A new #ClutterModelIter, or %NULL if @row was</doc>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position of the row to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_n_columns"
+                      invoker="get_n_columns"
+                      version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the number of columns inside @model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of columns</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_n_rows" invoker="get_n_rows" version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the number of rows inside @model, eventually taking
+into account any filtering function set using clutter_model_set_filter().
+the length of the filtered @model is returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The length of the @model. If there is a filter set, then</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="insert_row" introspectable="0">
+        <return-value>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove_row">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="resort" introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" closure="1">
+            <type name="ModelSortFunc" c:type="ClutterModelSortFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="append"
+              c:identifier="clutter_model_append"
+              version="0.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Creates and appends a new row to the #ClutterModel, setting the
+row values upon creation. For example, to append a new row where
+column 0 is type %G_TYPE_INT and column 1 is of type %G_TYPE_STRING:
+&lt;informalexample&gt;&lt;programlisting&gt;
+ClutterModel *model;
+model = clutter_model_default_new (2,
+G_TYPE_INT,    "Score",
+G_TYPE_STRING, "Team");
+clutter_model_append (model, 0, 42, 1, "Team #1", -1);
+&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="appendv"
+              c:identifier="clutter_model_appendv"
+              version="0.6">
+        <doc xml:whitespace="preserve">Creates and appends a new row to the #ClutterModel, setting the row
+values for the given @columns upon creation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of columns and values</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector with the columns to set</doc>
+            <array length="0" c:type="guint*">
+              <type name="guint"/>
+            </array>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector with the values</doc>
+            <array length="0" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="filter_iter"
+              c:identifier="clutter_model_filter_iter"
+              version="0.6">
+        <doc xml:whitespace="preserve">Checks whether the row pointer by @iter should be filtered or not using
+the filtering function set on @model.
+This function should be used only by subclasses of #ClutterModel.
+%FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the row should be displayed,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the row to filter</doc>
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="filter_row"
+              c:identifier="clutter_model_filter_row"
+              version="0.6">
+        <doc xml:whitespace="preserve">Checks whether @row should be filtered or not using the
+filtering function set on @model.
+This function should be used only by subclasses of #ClutterModel.
+%FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the row should be displayed,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the row to filter</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach"
+              c:identifier="clutter_model_foreach"
+              version="0.6">
+        <doc xml:whitespace="preserve">Calls @func for each row in the model.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">a #ClutterModelForeachFunc</doc>
+            <type name="ModelForeachFunc" c:type="ClutterModelForeachFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_name"
+              c:identifier="clutter_model_get_column_name"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the name of the @column
+string, and it should not be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the column. The model holds the returned</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the column number</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_type"
+              c:identifier="clutter_model_get_column_type"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the type of the @column.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of the column.</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the column number</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_filter_set"
+              c:identifier="clutter_model_get_filter_set"
+              version="1.0">
+        <doc xml:whitespace="preserve">Returns whether the @model has a filter in place, set
+using clutter_model_set_filter()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a filter is set</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_first_iter"
+              c:identifier="clutter_model_get_first_iter"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves a #ClutterModelIter representing the first non-filtered
+row in @model.
+Call g_object_unref() when done using it</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A new #ClutterModelIter.</doc>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </method>
+      <method name="get_iter_at_row"
+              c:identifier="clutter_model_get_iter_at_row"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves a #ClutterModelIter representing the row at the given index.
+If a filter function has been set using clutter_model_set_filter()
+then the @model implementation will return the first non filtered
+row.
+out of bounds. When done using the iterator object, call g_object_unref()
+to deallocate its resources</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A new #ClutterModelIter, or %NULL if @row was</doc>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position of the row to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_last_iter"
+              c:identifier="clutter_model_get_last_iter"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves a #ClutterModelIter representing the last non-filtered
+row in @model.
+Call g_object_unref() when done using it</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A new #ClutterModelIter.</doc>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </method>
+      <method name="get_n_columns"
+              c:identifier="clutter_model_get_n_columns"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the number of columns inside @model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of columns</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_n_rows"
+              c:identifier="clutter_model_get_n_rows"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the number of rows inside @model, eventually taking
+into account any filtering function set using clutter_model_set_filter().
+the length of the filtered @model is returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The length of the @model. If there is a filter set, then</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_sorting_column"
+              c:identifier="clutter_model_get_sorting_column"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the number of column used for sorting the @model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a column number, or -1 if the model is not sorted</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="insert"
+              c:identifier="clutter_model_insert"
+              version="0.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Inserts a new row to the #ClutterModel at @row, setting the row
+values upon creation. For example, to insert a new row at index 100,
+where column 0 is type %G_TYPE_INT and column 1 is of type
+%G_TYPE_STRING:
+&lt;informalexample&gt;&lt;programlisting&gt;
+ClutterModel *model;
+model = clutter_model_default_new (2,
+G_TYPE_INT,    "Score",
+G_TYPE_STRING, "Team");
+clutter_model_insert (model, 3, 0, 42, 1, "Team #1", -1);
+&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position to insert the new row</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_value"
+              c:identifier="clutter_model_insert_value"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the data in the cell specified by @iter and @column. The type of 
+not exist then it is created.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position of the row to modify</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">column to modify</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new value for the cell</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insertv"
+              c:identifier="clutter_model_insertv"
+              version="0.6">
+        <doc xml:whitespace="preserve">Inserts data at @row into the #ClutterModel, setting the row
+values for the given @columns upon creation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">row index</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="n_columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of columns and values to set</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector containing the columns to set</doc>
+            <array length="1" c:type="guint*">
+              <type name="guint"/>
+            </array>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector containing the values for the cells</doc>
+            <array length="1" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend"
+              c:identifier="clutter_model_prepend"
+              version="0.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Creates and prepends a new row to the #ClutterModel, setting the row
+values upon creation. For example, to prepend a new row where column 0
+is type %G_TYPE_INT and column 1 is of type %G_TYPE_STRING:
+&lt;informalexample&gt;&lt;programlisting&gt;
+ClutterModel *model;
+model = clutter_model_default_new (2,
+G_TYPE_INT,    "Score",
+G_TYPE_STRING, "Team");
+clutter_model_prepend (model, 0, 42, 1, "Team #1", -1);
+&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prependv"
+              c:identifier="clutter_model_prependv"
+              version="0.6">
+        <doc xml:whitespace="preserve">Creates and prepends a new row to the #ClutterModel, setting the row
+values for the given @columns upon creation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of columns and values to set</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector containing the columns to set</doc>
+            <array length="0" c:type="guint*">
+              <type name="guint"/>
+            </array>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector containing the values for the cells</doc>
+            <array length="0" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove" c:identifier="clutter_model_remove" version="0.6">
+        <doc xml:whitespace="preserve">Removes the row at the given position from the model.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position of row to remove</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="resort" c:identifier="clutter_model_resort" version="0.6">
+        <doc xml:whitespace="preserve">Force a resort on the @model. This function should only be
+used by subclasses of #ClutterModel.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_filter"
+              c:identifier="clutter_model_set_filter"
+              version="0.6">
+        <doc xml:whitespace="preserve">Filters the @model using the given filtering function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">a #ClutterModelFilterFunc, or #NULL</doc>
+            <type name="ModelFilterFunc" c:type="ClutterModelFilterFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @func, or #NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">destroy notifier of @user_data, or #NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_names"
+              c:identifier="clutter_model_set_names"
+              version="0.6">
+        <doc xml:whitespace="preserve">Assigns a name to the columns of a #ClutterModel.
+This function is meant primarily for #GObjects that inherit from
+#ClutterModel, and should only be used when contructing a #ClutterModel.
+It will not work after the initial creation of the #ClutterModel.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of column names</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="names" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of strings</doc>
+            <array length="0" c:type="gchar*">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sort"
+              c:identifier="clutter_model_set_sort"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sorts @model using the given sorting function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the column to sort on</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <doc xml:whitespace="preserve">a #ClutterModelSortFunc, or #NULL</doc>
+            <type name="ModelSortFunc" c:type="ClutterModelSortFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @func, or #NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">destroy notifier of @user_data, or #NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sorting_column"
+              c:identifier="clutter_model_set_sorting_column"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the model to sort by @column. If @column is a negative value
+the sorting column will be unset.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the column of the @model to sort, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_types"
+              c:identifier="clutter_model_set_types"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the types of the columns inside a #ClutterModel.
+This function is meant primarily for #GObjects that inherit from
+#ClutterModel, and should only be used when contructing a #ClutterModel.
+It will not work after the initial creation of the #ClutterModel.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of columns for the model</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="types" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of #GType types</doc>
+            <array length="0" c:type="GType*">
+              <type name="GType"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="filter-set" version="1.0" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterModel has a filter set
+This property is set to %TRUE if a filter function has been
+set using clutter_model_set_filter()</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ModelPrivate" c:type="ClutterModelPrivate*"/>
+      </field>
+      <glib:signal name="filter-changed" version="0.6">
+        <doc xml:whitespace="preserve">The ::filter-changed signal is emitted when a new filter has been applied</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="row-added" version="0.6">
+        <doc xml:whitespace="preserve">The ::row-added signal is emitted when a new row has been added.
+The data on the row has already been set when the ::row-added signal
+has been emitted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterModelIter pointing to the new row</doc>
+            <type name="ModelIter"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="row-changed" version="0.6">
+        <doc xml:whitespace="preserve">The ::row-removed signal is emitted when a row has been changed.
+The data on the row has already been updated when the ::row-changed
+signal has been emitted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterModelIter pointing to the changed row</doc>
+            <type name="ModelIter"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="row-removed" version="0.6">
+        <doc xml:whitespace="preserve">The ::row-removed signal is emitted when a row has been removed.
+The data on the row pointed by the passed iterator is still valid
+when the ::row-removed signal has been emitted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterModelIter pointing to the removed row</doc>
+            <type name="ModelIter"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="sort-changed" version="0.6">
+        <doc xml:whitespace="preserve">The ::sort-changed signal is emitted after the model has been sorted</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ModelClass"
+            c:type="ClutterModelClass"
+            glib:is-gtype-struct-for="Model"
+            version="0.6">
+      <doc xml:whitespace="preserve">Class for #ClutterModel instances.</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_n_rows">
+        <callback name="get_n_rows">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">The length of the @model. If there is a filter set, then</doc>
+            <type name="guint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_n_columns">
+        <callback name="get_n_columns">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of columns</doc>
+            <type name="guint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_column_name">
+        <callback name="get_column_name">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the column. The model holds the returned</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the column number</doc>
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_column_type">
+        <callback name="get_column_type">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of the column.</doc>
+            <type name="GType" c:type="GType"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the column number</doc>
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="insert_row" introspectable="0">
+        <callback name="insert_row" introspectable="0">
+          <return-value>
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="index_" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_row">
+        <callback name="remove_row">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_iter_at_row">
+        <callback name="get_iter_at_row">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">A new #ClutterModelIter, or %NULL if @row was</doc>
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <doc xml:whitespace="preserve">position of the row to retrieve</doc>
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="resort" introspectable="0">
+        <callback name="resort" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="func" transfer-ownership="none" closure="2">
+              <type name="ModelSortFunc" c:type="ClutterModelSortFunc"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_added">
+        <callback name="row_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_removed">
+        <callback name="row_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_changed">
+        <callback name="row_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="sort_changed">
+        <callback name="sort_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="filter_changed">
+        <callback name="filter_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_model_1" introspectable="0">
+        <callback name="_clutter_model_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_2" introspectable="0">
+        <callback name="_clutter_model_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_3" introspectable="0">
+        <callback name="_clutter_model_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_4" introspectable="0">
+        <callback name="_clutter_model_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_5" introspectable="0">
+        <callback name="_clutter_model_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_6" introspectable="0">
+        <callback name="_clutter_model_6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_7" introspectable="0">
+        <callback name="_clutter_model_7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_8" introspectable="0">
+        <callback name="_clutter_model_8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="ModelFilterFunc"
+              c:type="ClutterModelFilterFunc"
+              version="0.6">
+      <doc xml:whitespace="preserve">Filters the content of a row in the model.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">If the row should be displayed, return %TRUE</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="model" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterModel</doc>
+          <type name="Model" c:type="ClutterModel*"/>
+        </parameter>
+        <parameter name="iter" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the iterator for the row</doc>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">data passed to clutter_model_set_filter()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ModelForeachFunc"
+              c:type="ClutterModelForeachFunc"
+              version="0.6">
+      <doc xml:whitespace="preserve">Iterates on the content of a row in the model</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the iteration should continue, %FALSE otherwise</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="model" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterModel</doc>
+          <type name="Model" c:type="ClutterModel*"/>
+        </parameter>
+        <parameter name="iter" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the iterator for the row</doc>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">data passed to clutter_model_foreach()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="ModelIter"
+           c:symbol-prefix="model_iter"
+           c:type="ClutterModelIter"
+           version="0.6"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="ClutterModelIter"
+           glib:get-type="clutter_model_iter_get_type"
+           glib:type-struct="ModelIterClass">
+      <doc xml:whitespace="preserve">Base class for list models iters. The #ClutterModelIter structure
+contains only private data and should be manipulated using the
+provided API.</doc>
+      <virtual-method name="copy" invoker="copy" version="0.8">
+        <doc xml:whitespace="preserve">Copies the passed iterator.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a copy of the iterator, or %NULL</doc>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_model" invoker="get_model" version="0.6">
+        <doc xml:whitespace="preserve">Retrieves a pointer to the #ClutterModel that this iter is part of.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to a #ClutterModel.</doc>
+          <type name="Model" c:type="ClutterModel*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_row" invoker="get_row" version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the position of the row that the @iter points to.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the position of the @iter in the model</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_value" invoker="get_value" version="0.6">
+        <doc xml:whitespace="preserve">Sets an initializes @value to that at @column. When done with @value, 
+g_value_unset() needs to be called to free any allocated memory.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">column number to retrieve the value from</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an empty #GValue to set</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="is_first" invoker="is_first" version="0.6">
+        <doc xml:whitespace="preserve">Gets whether the current iterator is at the beginning of the model
+to which it belongs.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#TRUE if @iter is the first iter in the filtered model</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="is_last" invoker="is_last" version="0.6">
+        <doc xml:whitespace="preserve">Gets whether the iterator is at the end of the model to which it
+belongs.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#TRUE if @iter is the last iter in the filtered model.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="next" invoker="next" version="0.6">
+        <doc xml:whitespace="preserve">Updates the @iter to point at the next position in the model.
+The model implementation should take into account the presence of
+a filter function.
+row in the model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The passed iterator, updated to point at the next</doc>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="prev" invoker="prev" version="0.6">
+        <doc xml:whitespace="preserve">Sets the @iter to point at the previous position in the model.
+The model implementation should take into account the presence of
+a filter function.
+row in the model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The passed iterator, updated to point at the previous</doc>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_value" invoker="set_value" version="0.6">
+        <doc xml:whitespace="preserve">Sets the data in the cell specified by @iter and @column. The type of</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">column number to retrieve the value from</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new value for the cell</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="copy" c:identifier="clutter_model_iter_copy" version="0.8">
+        <doc xml:whitespace="preserve">Copies the passed iterator.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a copy of the iterator, or %NULL</doc>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </method>
+      <method name="get"
+              c:identifier="clutter_model_iter_get"
+              version="0.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the value of one or more cells in the row referenced by @iter. The
+variable argument list should contain integer column numbers, each column
+column number followed by a place to store the value being retrieved. The
+list is terminated by a -1.
+For example, to get a value from column 0 with type %G_TYPE_STRING use:
+&lt;informalexample&gt;&lt;programlisting&gt;
+clutter_model_iter_get (iter, 0, &amp;place_string_here, -1);
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+where place_string_here is a gchar* to be filled with the string. If
+appropriate, the returned values have to be freed or unreferenced.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_model"
+              c:identifier="clutter_model_iter_get_model"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves a pointer to the #ClutterModel that this iter is part of.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to a #ClutterModel.</doc>
+          <type name="Model" c:type="ClutterModel*"/>
+        </return-value>
+      </method>
+      <method name="get_row"
+              c:identifier="clutter_model_iter_get_row"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the position of the row that the @iter points to.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the position of the @iter in the model</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_valist"
+              c:identifier="clutter_model_iter_get_valist"
+              version="0.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">See clutter_model_iter_get(). This version takes a va_list for language
+bindings.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a list of column/return location pairs, terminated by -1</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value"
+              c:identifier="clutter_model_iter_get_value"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets an initializes @value to that at @column. When done with @value, 
+g_value_unset() needs to be called to free any allocated memory.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">column number to retrieve the value from</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an empty #GValue to set</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_first"
+              c:identifier="clutter_model_iter_is_first"
+              version="0.6">
+        <doc xml:whitespace="preserve">Gets whether the current iterator is at the beginning of the model
+to which it belongs.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#TRUE if @iter is the first iter in the filtered model</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_last"
+              c:identifier="clutter_model_iter_is_last"
+              version="0.6">
+        <doc xml:whitespace="preserve">Gets whether the iterator is at the end of the model to which it
+belongs.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#TRUE if @iter is the last iter in the filtered model.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="next" c:identifier="clutter_model_iter_next" version="0.6">
+        <doc xml:whitespace="preserve">Updates the @iter to point at the next position in the model.
+The model implementation should take into account the presence of
+a filter function.
+row in the model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The passed iterator, updated to point at the next</doc>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </method>
+      <method name="prev" c:identifier="clutter_model_iter_prev" version="0.6">
+        <doc xml:whitespace="preserve">Sets the @iter to point at the previous position in the model.
+The model implementation should take into account the presence of
+a filter function.
+row in the model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The passed iterator, updated to point at the previous</doc>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </method>
+      <method name="set"
+              c:identifier="clutter_model_iter_set"
+              version="0.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the value of one or more cells in the row referenced by @iter. The
+variable argument list should contain integer column numbers, each column
+column number followed by the value to be set. The  list is terminated by a
+-1.
+For example, to set column 0 with type %G_TYPE_STRING, use:
+&lt;informalexample&gt;&lt;programlisting&gt;
+clutter_model_iter_set (iter, 0, "foo", -1);
+&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_valist"
+              c:identifier="clutter_model_iter_set_valist"
+              version="0.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">See clutter_model_iter_set(); this version takes a va_list for language
+bindings.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">va_list of column/value pairs, terminiated by -1</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value"
+              c:identifier="clutter_model_iter_set_value"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the data in the cell specified by @iter and @column. The type of</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">column number to retrieve the value from</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new value for the cell</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="model"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A reference to the #ClutterModel that this iter belongs to.</doc>
+        <type name="Model"/>
+      </property>
+      <property name="row"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The row number to which this iter points to.</doc>
+        <type name="guint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ModelIterPrivate" c:type="ClutterModelIterPrivate*"/>
+      </field>
+    </class>
+    <record name="ModelIterClass"
+            c:type="ClutterModelIterClass"
+            glib:is-gtype-struct-for="ModelIter"
+            version="0.6">
+      <doc xml:whitespace="preserve">Class for #ClutterModelIter instances.</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_value">
+        <callback name="get_value">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <doc xml:whitespace="preserve">column number to retrieve the value from</doc>
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">an empty #GValue to set</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_value">
+        <callback name="set_value">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <doc xml:whitespace="preserve">column number to retrieve the value from</doc>
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">new value for the cell</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_first">
+        <callback name="is_first">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">#TRUE if @iter is the first iter in the filtered model</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_last">
+        <callback name="is_last">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">#TRUE if @iter is the last iter in the filtered model.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="next">
+        <callback name="next">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">The passed iterator, updated to point at the next</doc>
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="prev">
+        <callback name="prev">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">The passed iterator, updated to point at the previous</doc>
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_model">
+        <callback name="get_model">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to a #ClutterModel.</doc>
+            <type name="Model" c:type="ClutterModel*"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_row">
+        <callback name="get_row">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position of the @iter in the model</doc>
+            <type name="guint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="copy">
+        <callback name="copy">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a copy of the iterator, or %NULL</doc>
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_model_iter_1" introspectable="0">
+        <callback name="_clutter_model_iter_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_iter_2" introspectable="0">
+        <callback name="_clutter_model_iter_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_iter_3" introspectable="0">
+        <callback name="_clutter_model_iter_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_iter_4" introspectable="0">
+        <callback name="_clutter_model_iter_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_iter_5" introspectable="0">
+        <callback name="_clutter_model_iter_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_iter_6" introspectable="0">
+        <callback name="_clutter_model_iter_6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_iter_7" introspectable="0">
+        <callback name="_clutter_model_iter_7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_iter_8" introspectable="0">
+        <callback name="_clutter_model_iter_8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ModelIterPrivate"
+            c:type="ClutterModelIterPrivate"
+            disguised="1">
+    </record>
+    <record name="ModelPrivate" c:type="ClutterModelPrivate" disguised="1">
+    </record>
+    <callback name="ModelSortFunc" c:type="ClutterModelSortFunc" version="0.6">
+      <doc xml:whitespace="preserve">Compares the content of two rows in the model.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a positive integer if @a is after @b, a negative integer if</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="model" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterModel</doc>
+          <type name="Model" c:type="ClutterModel*"/>
+        </parameter>
+        <parameter name="a" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue representing the contents of the row</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue representing the contents of the second row</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <doc xml:whitespace="preserve">data passed to clutter_model_set_sort()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="ModifierType"
+              version="0.4"
+              glib:type-name="ClutterModifierType"
+              glib:get-type="clutter_modifier_type_get_type"
+              c:type="ClutterModifierType">
+      <doc xml:whitespace="preserve">Masks applied to a #ClutterEvent by modifiers.</doc>
+      <member name="shift_mask"
+              value="1"
+              c:identifier="CLUTTER_SHIFT_MASK"
+              glib:nick="shift-mask"/>
+      <member name="lock_mask"
+              value="2"
+              c:identifier="CLUTTER_LOCK_MASK"
+              glib:nick="lock-mask"/>
+      <member name="control_mask"
+              value="4"
+              c:identifier="CLUTTER_CONTROL_MASK"
+              glib:nick="control-mask"/>
+      <member name="mod1_mask"
+              value="8"
+              c:identifier="CLUTTER_MOD1_MASK"
+              glib:nick="mod1-mask"/>
+      <member name="mod2_mask"
+              value="16"
+              c:identifier="CLUTTER_MOD2_MASK"
+              glib:nick="mod2-mask"/>
+      <member name="mod3_mask"
+              value="32"
+              c:identifier="CLUTTER_MOD3_MASK"
+              glib:nick="mod3-mask"/>
+      <member name="mod4_mask"
+              value="64"
+              c:identifier="CLUTTER_MOD4_MASK"
+              glib:nick="mod4-mask"/>
+      <member name="mod5_mask"
+              value="128"
+              c:identifier="CLUTTER_MOD5_MASK"
+              glib:nick="mod5-mask"/>
+      <member name="button1_mask"
+              value="256"
+              c:identifier="CLUTTER_BUTTON1_MASK"
+              glib:nick="button1-mask"/>
+      <member name="button2_mask"
+              value="512"
+              c:identifier="CLUTTER_BUTTON2_MASK"
+              glib:nick="button2-mask"/>
+      <member name="button3_mask"
+              value="1024"
+              c:identifier="CLUTTER_BUTTON3_MASK"
+              glib:nick="button3-mask"/>
+      <member name="button4_mask"
+              value="2048"
+              c:identifier="CLUTTER_BUTTON4_MASK"
+              glib:nick="button4-mask"/>
+      <member name="button5_mask"
+              value="4096"
+              c:identifier="CLUTTER_BUTTON5_MASK"
+              glib:nick="button5-mask"/>
+      <member name="super_mask"
+              value="67108864"
+              c:identifier="CLUTTER_SUPER_MASK"
+              glib:nick="super-mask"/>
+      <member name="hyper_mask"
+              value="134217728"
+              c:identifier="CLUTTER_HYPER_MASK"
+              glib:nick="hyper-mask"/>
+      <member name="meta_mask"
+              value="268435456"
+              c:identifier="CLUTTER_META_MASK"
+              glib:nick="meta-mask"/>
+      <member name="release_mask"
+              value="1073741824"
+              c:identifier="CLUTTER_RELEASE_MASK"
+              glib:nick="release-mask"/>
+      <member name="modifier_mask"
+              value="1543512063"
+              c:identifier="CLUTTER_MODIFIER_MASK"
+              glib:nick="modifier-mask"/>
+    </bitfield>
+    <constant name="MonBrightnessDown" value="269025027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MonBrightnessUp" value="269025026">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="MotionEvent" c:type="ClutterMotionEvent" version="0.2">
+      <doc xml:whitespace="preserve">Event for the pointer motion</doc>
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="modifier_state" writable="1">
+        <type name="ModifierType" c:type="ClutterModifierType"/>
+      </field>
+      <field name="axes" writable="1">
+        <type name="gdouble" c:type="gdouble*"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="InputDevice" c:type="ClutterInputDevice*"/>
+      </field>
+    </record>
+    <constant name="MouseKeys_Accel_Enable" value="65143">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MouseKeys_Enable" value="65142">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Muhenkan" value="65314">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Multi_key" value="65312">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MultipleCandidate" value="65341">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Music" value="269025170">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MyComputer" value="269025075">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MySites" value="269025127">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="N" value="78">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Nacute" value="465">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="NairaSign" value="16785574">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ncaron" value="466">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ncedilla" value="977">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="New" value="269025128">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="NewSheqelSign" value="16785578">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="News" value="269025129">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Next" value="65366">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Next_VMode" value="269024802">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Next_Virtual_Screen" value="65234">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ntilde" value="209">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Num_Lock" value="65407">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="O" value="79">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="OE" value="5052">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Oacute" value="211">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Obarred" value="16777631">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Obelowdot" value="16785100">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ocaron" value="16777681">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ocircumflex" value="212">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ocircumflexacute" value="16785104">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ocircumflexbelowdot" value="16785112">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ocircumflexgrave" value="16785106">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ocircumflexhook" value="16785108">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ocircumflextilde" value="16785110">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Odiaeresis" value="214">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Odoubleacute" value="469">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="OfficeHome" value="269025130">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="OffscreenEffect"
+           c:symbol-prefix="offscreen_effect"
+           c:type="ClutterOffscreenEffect"
+           version="1.4"
+           parent="Effect"
+           abstract="1"
+           glib:type-name="ClutterOffscreenEffect"
+           glib:get-type="clutter_offscreen_effect_get_type"
+           glib:type-struct="OffscreenEffectClass">
+      <doc xml:whitespace="preserve">The #ClutterOffscreenEffect structure contains only private data
+and should be accessed using the provided API</doc>
+      <virtual-method name="create_texture"
+                      invoker="create_texture"
+                      version="1.4">
+        <doc xml:whitespace="preserve">Calls the create_texture() virtual function of the @effect
+%COGL_INVALID_HANDLE. The returned handle has its reference
+count increased.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a handle to a Cogl texture, or</doc>
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_width" transfer-ownership="none">
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_height" transfer-ownership="none">
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="paint_target" invoker="paint_target" version="1.4">
+        <doc xml:whitespace="preserve">Calls the paint_target() virtual function of the @effect</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="create_texture"
+              c:identifier="clutter_offscreen_effect_create_texture"
+              version="1.4">
+        <doc xml:whitespace="preserve">Calls the create_texture() virtual function of the @effect
+%COGL_INVALID_HANDLE. The returned handle has its reference
+count increased.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a handle to a Cogl texture, or</doc>
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the minimum width of the target texture</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the minimum height of the target texture</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_target"
+              c:identifier="clutter_offscreen_effect_get_target"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the material used as a render target for the offscreen
+buffer created by @effect
+You should only use the returned #CoglMaterial when painting. The
+returned material might change between different frames.
+returned material is owned by Clutter and it should not be
+modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglMaterial or %NULL. The</doc>
+          <type name="Cogl.Material" c:type="CoglMaterial*"/>
+        </return-value>
+      </method>
+      <method name="paint_target"
+              c:identifier="clutter_offscreen_effect_paint_target"
+              version="1.4">
+        <doc xml:whitespace="preserve">Calls the paint_target() virtual function of the @effect</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="Effect" c:type="ClutterEffect"/>
+      </field>
+      <field name="priv">
+        <type name="OffscreenEffectPrivate"
+              c:type="ClutterOffscreenEffectPrivate*"/>
+      </field>
+    </class>
+    <record name="OffscreenEffectClass"
+            c:type="ClutterOffscreenEffectClass"
+            glib:is-gtype-struct-for="OffscreenEffect"
+            version="1.4">
+      <doc xml:whitespace="preserve">The #ClutterOffscreenEffectClass structure contains only private data</doc>
+      <field name="parent_class">
+        <type name="EffectClass" c:type="ClutterEffectClass"/>
+      </field>
+      <field name="create_texture">
+        <callback name="create_texture">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a handle to a Cogl texture, or</doc>
+            <type name="Cogl.Handle" c:type="CoglHandle"/>
+          </return-value>
+          <parameters>
+            <parameter name="effect" transfer-ownership="none">
+              <type name="OffscreenEffect" c:type="ClutterOffscreenEffect*"/>
+            </parameter>
+            <parameter name="min_width" transfer-ownership="none">
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+            <parameter name="min_height" transfer-ownership="none">
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="paint_target">
+        <callback name="paint_target">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="effect" transfer-ownership="none">
+              <type name="OffscreenEffect" c:type="ClutterOffscreenEffect*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_offscreen1" introspectable="0">
+        <callback name="_clutter_offscreen1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_offscreen2" introspectable="0">
+        <callback name="_clutter_offscreen2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_offscreen3" introspectable="0">
+        <callback name="_clutter_offscreen3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_offscreen4" introspectable="0">
+        <callback name="_clutter_offscreen4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_offscreen5" introspectable="0">
+        <callback name="_clutter_offscreen5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_offscreen6" introspectable="0">
+        <callback name="_clutter_offscreen6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_offscreen7" introspectable="0">
+        <callback name="_clutter_offscreen7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="OffscreenEffectPrivate"
+            c:type="ClutterOffscreenEffectPrivate"
+            disguised="1">
+    </record>
+    <constant name="Ograve" value="210">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ohook" value="16785102">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ohorn" value="16777632">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ohornacute" value="16785114">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ohornbelowdot" value="16785122">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ohorngrave" value="16785116">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ohornhook" value="16785118">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ohorntilde" value="16785120">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Omacron" value="978">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ooblique" value="216">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Open" value="269025131">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="OpenURL" value="269025080">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Option" value="269025132">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Oslash" value="216">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Otilde" value="213">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Overlay1_Enable" value="65144">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Overlay2_Enable" value="65145">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="P" value="80">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PATH_RELATIVE" value="32">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PRIORITY_REDRAW" value="50">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pabovedot" value="16784982">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="PageTurnEffect"
+           c:symbol-prefix="page_turn_effect"
+           c:type="ClutterPageTurnEffect"
+           version="1.4"
+           parent="DeformEffect"
+           glib:type-name="ClutterPageTurnEffect"
+           glib:get-type="clutter_page_turn_effect_get_type">
+      <doc xml:whitespace="preserve">&lt;structname&gt;ClutterPageTurnEffect&lt;/structname&gt; is an opaque structure
+whose members can only be accessed using the provided API</doc>
+      <constructor name="new"
+                   c:identifier="clutter_page_turn_effect_new"
+                   version="1.4">
+        <doc xml:whitespace="preserve">Creates a new #ClutterPageTurnEffect instance with the given parameters</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterPageTurnEffect</doc>
+          <type name="Effect" c:type="ClutterEffect*"/>
+        </return-value>
+        <parameters>
+          <parameter name="period" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the period of the page curl, between 0.0 and 1.0</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="angle" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the angle of the page curl, between 0.0 and 360.0</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="radius" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the radius of the page curl, in pixels</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_angle"
+              c:identifier="clutter_page_turn_effect_get_angle"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the value set using clutter_page_turn_effect_get_angle()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the angle of the page curling</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_period"
+              c:identifier="clutter_page_turn_effect_get_period"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the value set using clutter_page_turn_effect_get_period()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the period of the page curling</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_radius"
+              c:identifier="clutter_page_turn_effect_get_radius"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the value set using clutter_page_turn_effect_set_radius()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the radius of the page curling</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="set_angle"
+              c:identifier="clutter_page_turn_effect_set_angle"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the angle of the page curling, in degrees</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the angle of the page curl, in degrees</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_period"
+              c:identifier="clutter_page_turn_effect_set_period"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the period of the page curling, between 0.0 (no curling)
+and 1.0 (fully curled)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="period" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the period of the page curl, between 0.0 and 1.0</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_radius"
+              c:identifier="clutter_page_turn_effect_set_radius"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the radius of the page curling</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="radius" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the radius of the page curling, in pixels</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="angle"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The angle of the page rotation, in degrees, between 0.0 and 360.0</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="period"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The period of the page turn, between 0.0 (no curling) and
+1.0 (fully curled)</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="radius"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The radius of the page curl, in pixels</doc>
+        <type name="gfloat"/>
+      </property>
+    </class>
+    <constant name="Page_Down" value="65366">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Page_Up" value="65365">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="ParamSpecColor"
+           c:symbol-prefix="param_color"
+           c:type="ClutterParamSpecColor"
+           version="1.0"
+           glib:type-name="ClutterParamSpecColor"
+           glib:get-type="clutter_param_color_get_type"
+           glib:fundamental="1">
+      <doc xml:whitespace="preserve">A #GParamSpec subclass for defining properties holding
+a #ClutterColor.</doc>
+      <field name="parent_instance">
+        <type name="GObject.ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="default_value">
+        <type name="Color" c:type="ClutterColor*"/>
+      </field>
+    </class>
+    <class name="ParamSpecFixed"
+           c:symbol-prefix="param_fixed"
+           c:type="ClutterParamSpecFixed"
+           glib:type-name="ClutterParamSpecFixed"
+           glib:get-type="clutter_param_fixed_get_type"
+           glib:fundamental="1">
+      <field name="parent_instance">
+        <type name="GObject.ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum">
+        <type name="Cogl.Fixed" c:type="CoglFixed"/>
+      </field>
+      <field name="maximum">
+        <type name="Cogl.Fixed" c:type="CoglFixed"/>
+      </field>
+      <field name="default_value">
+        <type name="Cogl.Fixed" c:type="CoglFixed"/>
+      </field>
+    </class>
+    <class name="ParamSpecUnit"
+           c:symbol-prefix="param_units"
+           glib:type-name="ClutterParamSpecUnit"
+           glib:get-type="clutter_param_units_get_type"
+           glib:fundamental="1">
+    </class>
+    <record name="ParamSpecUnits" c:type="ClutterParamSpecUnits" version="1.0">
+      <doc xml:whitespace="preserve">#GParamSpec subclass for unit based properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="GObject.ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="default_type" writable="1">
+        <type name="UnitType" c:type="ClutterUnitType"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+    </record>
+    <constant name="Paste" value="269025133">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Path"
+           c:symbol-prefix="path"
+           c:type="ClutterPath"
+           version="1.0"
+           parent="GObject.InitiallyUnowned"
+           glib:type-name="ClutterPath"
+           glib:get-type="clutter_path_get_type"
+           glib:type-struct="PathClass">
+      <doc xml:whitespace="preserve">The #ClutterPath struct contains only private data and should
+be accessed with the functions below.</doc>
+      <constructor name="new" c:identifier="clutter_path_new" version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterPath instance with no nodes.
+The object has a floating reference so if you add it to a
+#ClutterBehaviourPath then you do not need to unref it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterPath</doc>
+          <type name="Path" c:type="ClutterPath*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_description"
+                   c:identifier="clutter_path_new_with_description"
+                   version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterPath instance with the nodes described in
+the string.
+The object has a floating reference so if you add it to a
+#ClutterBehaviourPath then you do not need to unref it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterPath</doc>
+          <type name="Path" c:type="ClutterPath*"/>
+        </return-value>
+        <parameters>
+          <parameter name="desc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string describing the path</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add_cairo_path"
+              c:identifier="clutter_path_add_cairo_path"
+              version="1.0">
+        <doc xml:whitespace="preserve">Add the nodes of the Cairo path to the end of @path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cpath" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a Cairo path</doc>
+            <type name="cairo.Path" c:type="cairo_path_t*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_close"
+              c:identifier="clutter_path_add_close"
+              version="1.0">
+        <doc xml:whitespace="preserve">Adds a %CLUTTER_PATH_CLOSE type node to the path. This creates a
+straight line from the last node to the last %CLUTTER_PATH_MOVE_TO
+type node.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add_curve_to"
+              c:identifier="clutter_path_add_curve_to"
+              version="1.0">
+        <doc xml:whitespace="preserve">Adds a %CLUTTER_PATH_CURVE_TO type node to the path. This causes
+the actor to follow a bezier from the last node to (@x_3, @y_3) using
+(@x_1, @y_1) and (@x_2,@y_2) as control points.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate of the first control point</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y_1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate of the first control point</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="x_2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate of the second control point</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y_2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate of the second control point</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="x_3" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate of the third control point</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y_3" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate of the third control point</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_line_to"
+              c:identifier="clutter_path_add_line_to"
+              version="1.0">
+        <doc xml:whitespace="preserve">Adds a %CLUTTER_PATH_LINE_TO type node to the path. This causes the
+actor to move to the new coordinates in a straight line.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_move_to"
+              c:identifier="clutter_path_add_move_to"
+              version="1.0">
+        <doc xml:whitespace="preserve">Adds a %CLUTTER_PATH_MOVE_TO type node to the path. This is usually
+used as the first node in a path. It can also be used in the middle
+of the path to cause the actor to jump to the new coordinate.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_node"
+              c:identifier="clutter_path_add_node"
+              version="1.0">
+        <doc xml:whitespace="preserve">Adds @node to the end of the path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterPathNode</doc>
+            <type name="PathNode" c:type="ClutterPathNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_rel_curve_to"
+              c:identifier="clutter_path_add_rel_curve_to"
+              version="1.0">
+        <doc xml:whitespace="preserve">Same as clutter_path_add_curve_to() except the coordinates are
+relative to the previous node.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate of the first control point</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y_1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate of the first control point</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="x_2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate of the second control point</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y_2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate of the second control point</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="x_3" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate of the third control point</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y_3" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate of the third control point</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_rel_line_to"
+              c:identifier="clutter_path_add_rel_line_to"
+              version="1.0">
+        <doc xml:whitespace="preserve">Same as clutter_path_add_line_to() except the coordinates are
+relative to the previous node.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_rel_move_to"
+              c:identifier="clutter_path_add_rel_move_to"
+              version="1.0">
+        <doc xml:whitespace="preserve">Same as clutter_path_add_move_to() except the coordinates are
+relative to the previous node.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_string"
+              c:identifier="clutter_path_add_string"
+              version="1.0">
+        <doc xml:whitespace="preserve">Adds new nodes to the end of the path as described in @str. The
+format is a subset of the SVG path format. Each node is represented
+by a letter and is followed by zero, one or three pairs of
+coordinates. The coordinates can be separated by spaces or a
+comma. The types are:
+&lt;variablelist&gt;
+&lt;varlistentry&gt;&lt;term&gt;M&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;
+Adds a %CLUTTER_PATH_MOVE_TO node. Takes one pair of coordinates.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;varlistentry&gt;&lt;term&gt;L&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;
+Adds a %CLUTTER_PATH_LINE_TO node. Takes one pair of coordinates.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;varlistentry&gt;&lt;term&gt;C&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;
+Adds a %CLUTTER_PATH_CURVE_TO node. Takes three pairs of coordinates.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;varlistentry&gt;&lt;term&gt;z&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;
+Adds a %CLUTTER_PATH_CLOSE node. No coordinates are needed.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;/variablelist&gt;
+The M, L and C commands can also be specified in lower case which
+means the coordinates are relative to the previous node.
+For example, to move an actor in a 100 by 100 pixel square centered
+on the point 300,300 you could use the following path:
+&lt;informalexample&gt;
+&lt;programlisting&gt;
+M 250,350 l 0 -100 L 350,250 l 0 100 z
+&lt;/programlisting&gt;
+&lt;/informalexample&gt;
+If the path description isn't valid %FALSE will be returned and no
+nodes will be added.
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE is the path description was valid or %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string describing the new nodes</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear" c:identifier="clutter_path_clear" version="1.0">
+        <doc xml:whitespace="preserve">Removes all nodes from the path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="foreach" c:identifier="clutter_path_foreach" version="1.0">
+        <doc xml:whitespace="preserve">Calls a function for each node of the path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">the function to call with each node</doc>
+            <type name="PathCallback" c:type="ClutterPathCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to the function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_description"
+              c:identifier="clutter_path_get_description"
+              version="1.0">
+        <doc xml:whitespace="preserve">Returns a newly allocated string describing the path in the same
+format as used by clutter_path_add_string().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a string description of the path. Free with g_free().</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_length"
+              c:identifier="clutter_path_get_length"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves an approximation of the total length of the path.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the length of the path.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_n_nodes"
+              c:identifier="clutter_path_get_n_nodes"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the number of nodes in the path.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of nodes.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_node"
+              c:identifier="clutter_path_get_node"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the node of the path indexed by @index.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the node number to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a location to store a copy of the node</doc>
+            <type name="PathNode" c:type="ClutterPathNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_nodes"
+              c:identifier="clutter_path_get_nodes"
+              version="1.0">
+        <doc xml:whitespace="preserve">Returns a #GSList of #ClutterPathNode&lt;!-- --&gt;s. The list should be
+freed with g_slist_free(). The nodes are owned by the path and
+should not be freed. Altering the path may cause the nodes in the
+list to become invalid so you should copy them if you want to keep
+the list.
+list of nodes in the path.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="PathNode"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_position"
+              c:identifier="clutter_path_get_position"
+              version="1.0">
+        <doc xml:whitespace="preserve">The value in @progress represents a position along the path where
+0.0 is the beginning and 1.0 is the end of the path. An
+interpolated position is then stored in @position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">index of the node used to calculate the position.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="progress" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a position along the path as a fraction of its length</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the position</doc>
+            <type name="Knot" c:type="ClutterKnot*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_node"
+              c:identifier="clutter_path_insert_node"
+              version="1.0">
+        <doc xml:whitespace="preserve">Inserts @node into the path before the node at the given offset. If</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">offset of where to insert the node</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the node to insert</doc>
+            <type name="PathNode" c:type="ClutterPathNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_node"
+              c:identifier="clutter_path_remove_node"
+              version="1.0">
+        <doc xml:whitespace="preserve">Removes the node at the given offset from the path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">index of the node to remove</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace_node"
+              c:identifier="clutter_path_replace_node"
+              version="1.0">
+        <doc xml:whitespace="preserve">Replaces the node at offset @index_ with @node.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">index to the existing node</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the replacement node</doc>
+            <type name="PathNode" c:type="ClutterPathNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_description"
+              c:identifier="clutter_path_set_description"
+              version="1.0">
+        <doc xml:whitespace="preserve">Replaces all of the nodes in the path with nodes described by
+If the string is invalid then %FALSE is returned and the path is
+unaltered.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE is the path was valid, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string describing the path</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_cairo_path"
+              c:identifier="clutter_path_to_cairo_path"
+              version="1.0">
+        <doc xml:whitespace="preserve">Add the nodes of the ClutterPath to the path in the Cairo context.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cr" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a Cairo context</doc>
+            <type name="cairo.Context" c:type="cairo_t*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="description" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="length" transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+      </field>
+      <field name="priv">
+        <type name="PathPrivate" c:type="ClutterPathPrivate*"/>
+      </field>
+    </class>
+    <callback name="PathCallback" c:type="ClutterPathCallback" version="1.0">
+      <doc xml:whitespace="preserve">This function is passed to clutter_path_foreach() and will be
+called for each node contained in the path.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="node" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the node</doc>
+          <type name="PathNode" c:type="ClutterPathNode*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">optional data passed to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="PathClass"
+            c:type="ClutterPathClass"
+            glib:is-gtype-struct-for="Path"
+            version="1.0">
+      <doc xml:whitespace="preserve">The #ClutterPathClass struct contains only private data.</doc>
+      <field name="parent_class">
+        <type name="GObject.InitiallyUnownedClass"
+              c:type="GInitiallyUnownedClass"/>
+      </field>
+    </record>
+    <record name="PathNode"
+            c:type="ClutterPathNode"
+            version="1.0"
+            glib:type-name="ClutterPathNode"
+            glib:get-type="clutter_path_node_get_type"
+            c:symbol-prefix="path_node">
+      <doc xml:whitespace="preserve">Represents a single node of a #ClutterPath.
+Some of the coordinates in @points may be unused for some node
+types. %CLUTTER_PATH_MOVE_TO and %CLUTTER_PATH_LINE_TO use only one
+pair of coordinates, %CLUTTER_PATH_CURVE_TO uses all three and
+%CLUTTER_PATH_CLOSE uses none.</doc>
+      <field name="type" writable="1">
+        <type name="PathNodeType" c:type="ClutterPathNodeType"/>
+      </field>
+      <field name="points" writable="1">
+        <array zero-terminated="0" c:type="ClutterKnot" fixed-size="3">
+          <type name="Knot" c:type="ClutterKnot"/>
+        </array>
+      </field>
+      <method name="copy" c:identifier="clutter_path_node_copy" version="1.0">
+        <doc xml:whitespace="preserve">Makes an allocated copy of a node.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the copied node.</doc>
+          <type name="PathNode" c:type="ClutterPathNode*"/>
+        </return-value>
+      </method>
+      <method name="equal"
+              c:identifier="clutter_path_node_equal"
+              version="1.0">
+        <doc xml:whitespace="preserve">Compares two nodes and checks if they are the same type with the
+same coordinates.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the nodes are the same.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="node_b" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Second node</doc>
+            <type name="PathNode" c:type="ClutterPathNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="clutter_path_node_free" version="1.0">
+        <doc xml:whitespace="preserve">Frees the memory of an allocated node.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="PathNodeType"
+                 version="1.0"
+                 glib:type-name="ClutterPathNodeType"
+                 glib:get-type="clutter_path_node_type_get_type"
+                 c:type="ClutterPathNodeType">
+      <doc xml:whitespace="preserve">Types of nodes in a #ClutterPath.</doc>
+      <member name="move_to"
+              value="0"
+              c:identifier="CLUTTER_PATH_MOVE_TO"
+              glib:nick="move-to"/>
+      <member name="line_to"
+              value="1"
+              c:identifier="CLUTTER_PATH_LINE_TO"
+              glib:nick="line-to"/>
+      <member name="curve_to"
+              value="2"
+              c:identifier="CLUTTER_PATH_CURVE_TO"
+              glib:nick="curve-to"/>
+      <member name="close"
+              value="3"
+              c:identifier="CLUTTER_PATH_CLOSE"
+              glib:nick="close"/>
+      <member name="rel_move_to"
+              value="32"
+              c:identifier="CLUTTER_PATH_REL_MOVE_TO"
+              glib:nick="rel-move-to"/>
+      <member name="rel_line_to"
+              value="33"
+              c:identifier="CLUTTER_PATH_REL_LINE_TO"
+              glib:nick="rel-line-to"/>
+      <member name="rel_curve_to"
+              value="34"
+              c:identifier="CLUTTER_PATH_REL_CURVE_TO"
+              glib:nick="rel-curve-to"/>
+    </enumeration>
+    <record name="PathPrivate" c:type="ClutterPathPrivate" disguised="1">
+    </record>
+    <constant name="Pause" value="65299">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="Perspective"
+            c:type="ClutterPerspective"
+            version="0.4"
+            glib:type-name="ClutterPerspective"
+            glib:get-type="clutter_perspective_get_type"
+            c:symbol-prefix="perspective">
+      <doc xml:whitespace="preserve">Stage perspective definition. #ClutterPerspective is only used by
+the fixed point version of clutter_stage_set_perspective().</doc>
+      <field name="fovy" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="aspect" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="z_near" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="z_far" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+    </record>
+    <constant name="PesetaSign" value="16785575">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Phone" value="269025134">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="PickMode"
+                 version="1.0"
+                 glib:type-name="ClutterPickMode"
+                 glib:get-type="clutter_pick_mode_get_type"
+                 c:type="ClutterPickMode">
+      <doc xml:whitespace="preserve">Controls the paint cycle of the scene graph when in pick mode</doc>
+      <member name="none"
+              value="0"
+              c:identifier="CLUTTER_PICK_NONE"
+              glib:nick="none"/>
+      <member name="reactive"
+              value="1"
+              c:identifier="CLUTTER_PICK_REACTIVE"
+              glib:nick="reactive"/>
+      <member name="all"
+              value="2"
+              c:identifier="CLUTTER_PICK_ALL"
+              glib:nick="all"/>
+    </enumeration>
+    <constant name="Pictures" value="269025169">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Accelerate" value="65274">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Button1" value="65257">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Button2" value="65258">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Button3" value="65259">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Button4" value="65260">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Button5" value="65261">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Button_Dflt" value="65256">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_DblClick1" value="65263">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_DblClick2" value="65264">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_DblClick3" value="65265">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_DblClick4" value="65266">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_DblClick5" value="65267">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_DblClick_Dflt" value="65262">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_DfltBtnNext" value="65275">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_DfltBtnPrev" value="65276">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Down" value="65251">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_DownLeft" value="65254">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_DownRight" value="65255">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Drag1" value="65269">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Drag2" value="65270">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Drag3" value="65271">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Drag4" value="65272">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Drag5" value="65277">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Drag_Dflt" value="65268">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_EnableKeys" value="65273">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Left" value="65248">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Right" value="65249">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Up" value="65250">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_UpLeft" value="65252">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_UpRight" value="65253">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PowerDown" value="269025057">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PowerOff" value="269025066">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Prev_VMode" value="269024803">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Prev_Virtual_Screen" value="65233">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PreviousCandidate" value="65342">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Print" value="65377">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Prior" value="65365">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <callback name="ProgressFunc" c:type="ClutterProgressFunc" version="1.0">
+      <doc xml:whitespace="preserve">Prototype of the progress function used to compute the value
+between the two ends @a and @b of an interval depending on
+the value of @progress.
+The #GValue in @retval is already initialized with the same
+type as @a and @b.
+This function will be called by #ClutterInterval if the
+type of the values of the interval was registered using
+clutter_interval_register_progress_func().
+the value and stored it inside @retval</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the function successfully computed</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the initial value of an interval</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the final value of an interval</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="progress" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the progress factor, between 0 and 1</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </parameter>
+        <parameter name="retval" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value used to store the progress</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="Q" value="81">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R" value="82">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R1" value="65490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R10" value="65499">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R11" value="65500">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R12" value="65501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R13" value="65502">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R14" value="65503">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R15" value="65504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R2" value="65491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R3" value="65492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R4" value="65493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R5" value="65494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R6" value="65495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R7" value="65496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R8" value="65497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R9" value="65498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Racute" value="448">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Rcaron" value="472">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Rcedilla" value="931">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Rectangle"
+           c:symbol-prefix="rectangle"
+           c:type="ClutterRectangle"
+           version="0.1"
+           parent="Actor"
+           glib:type-name="ClutterRectangle"
+           glib:get-type="clutter_rectangle_get_type"
+           glib:type-struct="RectangleClass">
+      <doc xml:whitespace="preserve">The #ClutterRectangle structure contains only private data
+and should be accessed using the provided API</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Animatable"/>
+      <implements name="Scriptable"/>
+      <constructor name="new" c:identifier="clutter_rectangle_new">
+        <doc xml:whitespace="preserve">Creates a new #ClutterActor with a rectangular shape.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #ClutterActor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_color"
+                   c:identifier="clutter_rectangle_new_with_color">
+        <doc xml:whitespace="preserve">Creates a new #ClutterActor with a rectangular shape
+and of the given @color.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #ClutterActor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_border_color"
+              c:identifier="clutter_rectangle_get_border_color"
+              version="0.2">
+        <doc xml:whitespace="preserve">Gets the color of the border used by @rectangle and places
+it into @color.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for a #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_border_width"
+              c:identifier="clutter_rectangle_get_border_width"
+              version="0.2">
+        <doc xml:whitespace="preserve">Gets the width (in pixels) of the border used by @rectangle</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the border's width</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_color" c:identifier="clutter_rectangle_get_color">
+        <doc xml:whitespace="preserve">Retrieves the color of @rectangle.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for a #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_border_color"
+              c:identifier="clutter_rectangle_set_border_color">
+        <doc xml:whitespace="preserve">Sets the color of the border used by @rectangle using @color</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the color of the border</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_border_width"
+              c:identifier="clutter_rectangle_set_border_width"
+              version="0.2">
+        <doc xml:whitespace="preserve">Sets the width (in pixel) of the border used by @rectangle.
+A @width of 0 will unset the border.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the width of the border</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_color" c:identifier="clutter_rectangle_set_color">
+        <doc xml:whitespace="preserve">Sets the color of @rectangle.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="border-color"
+                version="0.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The color of the border of the rectangle.</doc>
+        <type name="Color"/>
+      </property>
+      <property name="border-width"
+                version="0.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The width of the border of the rectangle, in pixels.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="color" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The color of the rectangle.</doc>
+        <type name="Color"/>
+      </property>
+      <property name="has-border"
+                version="0.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterRectangle should be displayed with a border.</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent">
+        <type name="Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv">
+        <type name="RectanglePrivate" c:type="ClutterRectanglePrivate*"/>
+      </field>
+    </class>
+    <record name="RectangleClass"
+            c:type="ClutterRectangleClass"
+            glib:is-gtype-struct-for="Rectangle"
+            version="0.1">
+      <doc xml:whitespace="preserve">The #ClutterRectangleClass structure contains only private data</doc>
+      <field name="parent_class">
+        <type name="ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="_clutter_rectangle1" introspectable="0">
+        <callback name="_clutter_rectangle1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_rectangle2" introspectable="0">
+        <callback name="_clutter_rectangle2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_rectangle3" introspectable="0">
+        <callback name="_clutter_rectangle3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_rectangle4" introspectable="0">
+        <callback name="_clutter_rectangle4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="RectanglePrivate"
+            c:type="ClutterRectanglePrivate"
+            disguised="1">
+    </record>
+    <constant name="Red" value="269025187">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Redo" value="65382">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <bitfield name="RedrawFlags"
+              version="1.2"
+              glib:type-name="ClutterRedrawFlags"
+              glib:get-type="clutter_redraw_flags_get_type"
+              c:type="ClutterRedrawFlags">
+      <doc xml:whitespace="preserve">Flags passed to the clutter_actor_queue_redraw_with_clip ()
+function</doc>
+      <member name="box"
+              value="0"
+              c:identifier="CLUTTER_REDRAW_CLIPPED_TO_BOX"
+              glib:nick="box"/>
+      <member name="allocation"
+              value="2"
+              c:identifier="CLUTTER_REDRAW_CLIPPED_TO_ALLOCATION"
+              glib:nick="allocation"/>
+    </bitfield>
+    <constant name="Refresh" value="269025065">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Reload" value="269025139">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="RepeatKeys_Enable" value="65138">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Reply" value="269025138">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="RequestMode"
+                 version="0.8"
+                 glib:type-name="ClutterRequestMode"
+                 glib:get-type="clutter_request_mode_get_type"
+                 c:type="ClutterRequestMode">
+      <doc xml:whitespace="preserve">Specifies the type of requests for a #ClutterActor.</doc>
+      <member name="height_for_width"
+              value="0"
+              c:identifier="CLUTTER_REQUEST_HEIGHT_FOR_WIDTH"
+              glib:nick="height-for-width"/>
+      <member name="width_for_height"
+              value="1"
+              c:identifier="CLUTTER_REQUEST_WIDTH_FOR_HEIGHT"
+              glib:nick="width-for-height"/>
+    </enumeration>
+    <constant name="Return" value="65293">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Right" value="65363">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="RockerDown" value="269025060">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="RockerEnter" value="269025061">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="RockerUp" value="269025059">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Romaji" value="65316">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="RotateAxis"
+                 version="0.4"
+                 glib:type-name="ClutterRotateAxis"
+                 glib:get-type="clutter_rotate_axis_get_type"
+                 c:type="ClutterRotateAxis">
+      <doc xml:whitespace="preserve">Axis of a rotation.</doc>
+      <member name="x_axis"
+              value="0"
+              c:identifier="CLUTTER_X_AXIS"
+              glib:nick="x-axis"/>
+      <member name="y_axis"
+              value="1"
+              c:identifier="CLUTTER_Y_AXIS"
+              glib:nick="y-axis"/>
+      <member name="z_axis"
+              value="2"
+              c:identifier="CLUTTER_Z_AXIS"
+              glib:nick="z-axis"/>
+    </enumeration>
+    <enumeration name="RotateDirection"
+                 version="0.4"
+                 glib:type-name="ClutterRotateDirection"
+                 glib:get-type="clutter_rotate_direction_get_type"
+                 c:type="ClutterRotateDirection">
+      <doc xml:whitespace="preserve">Direction of a rotation.</doc>
+      <member name="cw"
+              value="0"
+              c:identifier="CLUTTER_ROTATE_CW"
+              glib:nick="cw"/>
+      <member name="ccw"
+              value="1"
+              c:identifier="CLUTTER_ROTATE_CCW"
+              glib:nick="ccw"/>
+    </enumeration>
+    <constant name="RotateWindows" value="269025140">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="RotationKB" value="269025142">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="RotationPB" value="269025141">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="RupeeSign" value="16785576">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="S" value="83">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="SCHWA" value="16777615">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Sabovedot" value="16784992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Sacute" value="422">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Save" value="269025143">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Scaron" value="425">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Scedilla" value="426">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Scircumflex" value="734">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Score"
+           c:symbol-prefix="score"
+           c:type="ClutterScore"
+           version="0.6"
+           parent="GObject.Object"
+           glib:type-name="ClutterScore"
+           glib:get-type="clutter_score_get_type"
+           glib:type-struct="ScoreClass">
+      <doc xml:whitespace="preserve">The #ClutterScore structure contains only private data
+and should be accessed using the provided API</doc>
+      <constructor name="new" c:identifier="clutter_score_new" version="0.6">
+        <doc xml:whitespace="preserve">Creates a new #ClutterScore. A #ClutterScore is an object that can
+hold multiple #ClutterTimeline&lt;!-- --&gt;s in a sequential order.
+when done.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #ClutterScore. Use g_object_unref()</doc>
+          <type name="Score" c:type="ClutterScore*"/>
+        </return-value>
+      </constructor>
+      <method name="append" c:identifier="clutter_score_append" version="0.6">
+        <doc xml:whitespace="preserve">Appends a timeline to another one existing in the score; the newly
+appended timeline will be started when @parent is complete.
+If @parent is %NULL, the new #ClutterTimeline will be started when
+clutter_score_start() is called.
+#ClutterScore will take a reference on @timeline.
+0 on failure. The returned id can be used with clutter_score_remove()
+or clutter_score_get_timeline().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the id of the #ClutterTimeline inside the score, or</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterTimeline in the score, or %NULL</doc>
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+          <parameter name="timeline" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterTimeline</doc>
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_at_marker"
+              c:identifier="clutter_score_append_at_marker"
+              version="0.8">
+        <doc xml:whitespace="preserve">Appends @timeline at the given @marker_name on the @parent
+#ClutterTimeline.
+If you want to append @timeline at the end of @parent, use
+clutter_score_append().
+The #ClutterScore will take a reference on @timeline.
+0 on failure. The returned id can be used with clutter_score_remove()
+or clutter_score_get_timeline().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the id of the #ClutterTimeline inside the score, or</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the parent #ClutterTimeline</doc>
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+          <parameter name="marker_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the marker to use</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="timeline" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterTimeline to append</doc>
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_loop"
+              c:identifier="clutter_score_get_loop"
+              version="0.6">
+        <doc xml:whitespace="preserve">Gets whether @score is looping</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the score is looping</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_timeline"
+              c:identifier="clutter_score_get_timeline"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterTimeline for @id inside @score.
+function does not increase the reference count on the returned
+#ClutterTimeline</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the requested timeline, or %NULL. This</doc>
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id of the timeline</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_playing"
+              c:identifier="clutter_score_is_playing"
+              version="0.6">
+        <doc xml:whitespace="preserve">Query state of a #ClutterScore instance.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if score is currently playing</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="list_timelines"
+              c:identifier="clutter_score_list_timelines"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves a list of all the #ClutterTimelines managed by @score.
+#GSList containing all the timelines in the score. This function does
+not increase the reference count of the returned timelines. Use
+g_slist_free() on the returned list to deallocate its resources.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Timeline"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="pause" c:identifier="clutter_score_pause" version="0.6">
+        <doc xml:whitespace="preserve">Pauses a playing score @score.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="remove" c:identifier="clutter_score_remove" version="0.6">
+        <doc xml:whitespace="preserve">Removes the #ClutterTimeline with the given id inside @score. If
+the timeline has other timelines attached to it, those are removed
+as well.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id of the timeline to remove</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_all"
+              c:identifier="clutter_score_remove_all"
+              version="0.6">
+        <doc xml:whitespace="preserve">Removes all the timelines inside @score.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="rewind" c:identifier="clutter_score_rewind" version="0.6">
+        <doc xml:whitespace="preserve">Rewinds a #ClutterScore to its initial state.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_loop"
+              c:identifier="clutter_score_set_loop"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets whether @score should loop. A looping #ClutterScore will start
+from its initial state after the ::complete signal has been fired.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="loop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE for enable looping</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start" c:identifier="clutter_score_start" version="0.6">
+        <doc xml:whitespace="preserve">Starts the score.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="stop" c:identifier="clutter_score_stop" version="0.6">
+        <doc xml:whitespace="preserve">Stops and rewinds a playing #ClutterScore instance.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="loop"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterScore should restart once finished.</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ScorePrivate" c:type="ClutterScorePrivate*"/>
+      </field>
+      <glib:signal name="completed" version="0.6">
+        <doc xml:whitespace="preserve">The ::completed signal is emitted each time a #ClutterScore terminates.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="paused" version="0.6">
+        <doc xml:whitespace="preserve">The ::paused signal is emitted each time a #ClutterScore
+is paused.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="started" version="0.6">
+        <doc xml:whitespace="preserve">The ::started signal is emitted each time a #ClutterScore starts playing.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="timeline-completed" version="0.6">
+        <doc xml:whitespace="preserve">The ::timeline-completed signal is emitted each time a timeline
+inside a #ClutterScore terminates.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the completed timeline</doc>
+            <type name="Timeline"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="timeline-started" version="0.6">
+        <doc xml:whitespace="preserve">The ::timeline-started signal is emitted each time a new timeline
+inside a #ClutterScore starts playing.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the current timeline</doc>
+            <type name="Timeline"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ScoreClass"
+            c:type="ClutterScoreClass"
+            glib:is-gtype-struct-for="Score"
+            version="0.6">
+      <doc xml:whitespace="preserve">The #ClutterScoreClass structure contains only private data</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="timeline_started">
+        <callback name="timeline_started">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="score" transfer-ownership="none">
+              <type name="Score" c:type="ClutterScore*"/>
+            </parameter>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="timeline_completed">
+        <callback name="timeline_completed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="score" transfer-ownership="none">
+              <type name="Score" c:type="ClutterScore*"/>
+            </parameter>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="started">
+        <callback name="started">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="score" transfer-ownership="none">
+              <type name="Score" c:type="ClutterScore*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="completed">
+        <callback name="completed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="score" transfer-ownership="none">
+              <type name="Score" c:type="ClutterScore*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="paused">
+        <callback name="paused">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="score" transfer-ownership="none">
+              <type name="Score" c:type="ClutterScore*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_score_1" introspectable="0">
+        <callback name="_clutter_score_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_score_2" introspectable="0">
+        <callback name="_clutter_score_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_score_3" introspectable="0">
+        <callback name="_clutter_score_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_score_4" introspectable="0">
+        <callback name="_clutter_score_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_score_5" introspectable="0">
+        <callback name="_clutter_score_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ScorePrivate" c:type="ClutterScorePrivate" disguised="1">
+    </record>
+    <constant name="ScreenSaver" value="269025069">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Script"
+           c:symbol-prefix="script"
+           c:type="ClutterScript"
+           version="0.6"
+           parent="GObject.Object"
+           glib:type-name="ClutterScript"
+           glib:get-type="clutter_script_get_type"
+           glib:type-struct="ScriptClass">
+      <doc xml:whitespace="preserve">The #ClutterScript structure contains only private data
+and should be accessed using the provided API</doc>
+      <constructor name="new" c:identifier="clutter_script_new" version="0.6">
+        <doc xml:whitespace="preserve">Creates a new #ClutterScript instance. #ClutterScript can be used
+to load objects definitions for scenegraph elements, like actors,
+or behavioural elements, like behaviours and timelines. The
+definitions must be encoded using the JavaScript Object Notation (JSON)
+language.
+g_object_unref() when done.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #ClutterScript instance. Use</doc>
+          <type name="Script" c:type="ClutterScript*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="get_type_from_name"
+                      invoker="get_type_from_name"
+                      version="0.6">
+        <doc xml:whitespace="preserve">Looks up a type by name, using the virtual function that 
+#ClutterScript has for that purpose. This function should
+rarely be used.
+%G_TYPE_INVALID if not corresponding type was found.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type for the requested type name, or</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="type_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the type to look up</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_search_paths"
+              c:identifier="clutter_script_add_search_paths"
+              version="0.8">
+        <doc xml:whitespace="preserve">Adds @paths to the list of search paths held by @script.
+The search paths are used by clutter_script_lookup_filename(), which
+can be used to define search paths for the textures source file name
+or other custom, file-based properties.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="paths" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of strings containing different search paths</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="n_paths" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of the passed array</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_signals"
+              c:identifier="clutter_script_connect_signals"
+              version="0.6">
+        <doc xml:whitespace="preserve">Connects all the signals defined into a UI definition file to their
+handlers.
+This method invokes clutter_script_connect_signals_full() internally
+and uses  #GModule's introspective features (by opening the current
+module's scope) to look at the application's symbol table.
+Note that this function will not work if #GModule is not supported by
+the platform Clutter is running on.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to be passed to the signal handlers, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_signals_full"
+              c:identifier="clutter_script_connect_signals_full"
+              version="0.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Connects all the signals defined into a UI definition file to their
+handlers.
+This function allows to control how the signal handlers are
+going to be connected to their respective signals. It is meant
+primarily for language bindings to allow resolving the function
+names using the native API, but it can also be used on platforms
+that do not support GModule.
+Applications should use clutter_script_connect_signals().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">signal connection function</doc>
+            <type name="ScriptConnectFunc" c:type="ClutterScriptConnectFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to be passed to the signal handlers, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ensure_objects"
+              c:identifier="clutter_script_ensure_objects"
+              version="0.6">
+        <doc xml:whitespace="preserve">Ensure that every object defined inside @script is correctly
+constructed. You should rarely need to use this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_object"
+              c:identifier="clutter_script_get_object"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the object bound to @name. This function does not increment
+the reference count of the returned object.
+with the given name was available</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the named object, or %NULL if no object</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the object to retrieve</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_objects"
+              c:identifier="clutter_script_get_objects"
+              version="0.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Retrieves a list of objects for the given names. After @script, object
+names/return location pairs should be listed, with a %NULL pointer
+ending the list, like:
+&lt;informalexample&gt;&lt;programlisting&gt;
+GObject *my_label, *a_button, *main_timeline;
+clutter_script_get_objects (script,
+"my-label", &amp;amp;my_label,
+"a-button", &amp;amp;a_button,
+"main-timeline", &amp;amp;main_timeline,
+NULL);
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+returned objects.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of objects returned.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first object to retrieve</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_type_from_name"
+              c:identifier="clutter_script_get_type_from_name"
+              version="0.6">
+        <doc xml:whitespace="preserve">Looks up a type by name, using the virtual function that 
+#ClutterScript has for that purpose. This function should
+rarely be used.
+%G_TYPE_INVALID if not corresponding type was found.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type for the requested type name, or</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="type_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the type to look up</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_objects"
+              c:identifier="clutter_script_list_objects"
+              version="0.8.2">
+        <doc xml:whitespace="preserve">Retrieves all the objects created by @script.
+objects it returns.
+of #GObject&lt;!-- --&gt;s, or %NULL. The objects are owned by the
+#ClutterScript instance. Use g_list_free() on the returned list when
+done.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a list</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="GObject.Object"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="load_from_data"
+              c:identifier="clutter_script_load_from_data"
+              version="0.6"
+              throws="1">
+        <doc xml:whitespace="preserve">Loads the definitions from @data into @script and merges with
+the currently loaded ones, if any.
+accordingly. On success, the merge id for the UI definitions is
+returned. You can use the merge id with clutter_script_unmerge().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">on error, zero is returned and @error is set</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a buffer containing the definitions</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of the buffer, or -1 if @data is a NUL-terminated buffer</doc>
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_from_file"
+              c:identifier="clutter_script_load_from_file"
+              version="0.6"
+              throws="1">
+        <doc xml:whitespace="preserve">Loads the definitions from @filename into @script and merges with
+the currently loaded ones, if any.
+accordingly. On success, the merge id for the UI definitions is
+returned. You can use the merge id with clutter_script_unmerge_objects().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">on error, zero is returned and @error is set</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the full path to the definition file</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_filename"
+              c:identifier="clutter_script_lookup_filename"
+              version="0.8">
+        <doc xml:whitespace="preserve">Looks up @filename inside the search paths of @script. If @filename
+is found, its full path will be returned .
+found.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the full path of @filename or %NULL if no path was</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the file to lookup</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unmerge_objects"
+              c:identifier="clutter_script_unmerge_objects"
+              version="0.6">
+        <doc xml:whitespace="preserve">Unmerges the objects identified by @merge_id.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="merge_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">merge id returned when loading a UI definition</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="filename" version="0.6" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The path of the currently parsed file. If #ClutterScript:filename-set
+is %FALSE then the value of this property is undefined.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="filename-set" version="0.6" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterScript:filename property is set. If this property
+is %TRUE then the currently parsed data comes from a file, and the
+file name is stored inside the #ClutterScript:filename property.</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ScriptPrivate" c:type="ClutterScriptPrivate*"/>
+      </field>
+    </class>
+    <record name="ScriptClass"
+            c:type="ClutterScriptClass"
+            glib:is-gtype-struct-for="Script"
+            version="0.6">
+      <doc xml:whitespace="preserve">The #ClutterScriptClass structure contains only private data</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_type_from_name">
+        <callback name="get_type_from_name">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type for the requested type name, or</doc>
+            <type name="GType" c:type="GType"/>
+          </return-value>
+          <parameters>
+            <parameter name="script" transfer-ownership="none">
+              <type name="Script" c:type="ClutterScript*"/>
+            </parameter>
+            <parameter name="type_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">name of the type to look up</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_reserved1" introspectable="0">
+        <callback name="_clutter_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved2" introspectable="0">
+        <callback name="_clutter_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved3" introspectable="0">
+        <callback name="_clutter_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved4" introspectable="0">
+        <callback name="_clutter_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved5" introspectable="0">
+        <callback name="_clutter_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved6" introspectable="0">
+        <callback name="_clutter_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved7" introspectable="0">
+        <callback name="_clutter_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved8" introspectable="0">
+        <callback name="_clutter_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="ScriptConnectFunc"
+              c:type="ClutterScriptConnectFunc"
+              version="0.6">
+      <doc xml:whitespace="preserve">This is the signature of a function used to connect signals.  It is used
+by the clutter_script_connect_signals_full() function.  It is mainly
+intended for interpreted language bindings, but could be useful where the
+programmer wants more control over the signal connection process.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="script" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterScript</doc>
+          <type name="Script" c:type="ClutterScript*"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object to connect</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="signal_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the signal</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="handler_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the signal handler</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="connect_object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object to connect the signal to, or %NULL</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">signal connection flags</doc>
+          <type name="GObject.ConnectFlags" c:type="GConnectFlags"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="6">
+          <doc xml:whitespace="preserve">user data to pass to the signal handler</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="ScriptError"
+                 version="0.6"
+                 glib:type-name="ClutterScriptError"
+                 glib:get-type="clutter_script_error_get_type"
+                 c:type="ClutterScriptError"
+                 glib:error-quark="clutter_script_error_quark">
+      <doc xml:whitespace="preserve">#ClutterScript error enumeration.</doc>
+      <member name="type_function"
+              value="0"
+              c:identifier="CLUTTER_SCRIPT_ERROR_INVALID_TYPE_FUNCTION"
+              glib:nick="type-function"/>
+      <member name="property"
+              value="1"
+              c:identifier="CLUTTER_SCRIPT_ERROR_INVALID_PROPERTY"
+              glib:nick="property"/>
+      <member name="value"
+              value="2"
+              c:identifier="CLUTTER_SCRIPT_ERROR_INVALID_VALUE"
+              glib:nick="value"/>
+    </enumeration>
+    <record name="ScriptPrivate" c:type="ClutterScriptPrivate" disguised="1">
+    </record>
+    <interface name="Scriptable"
+               c:symbol-prefix="scriptable"
+               c:type="ClutterScriptable"
+               version="0.6"
+               glib:type-name="ClutterScriptable"
+               glib:get-type="clutter_scriptable_get_type"
+               glib:type-struct="ScriptableIface">
+      <doc xml:whitespace="preserve">#ClutterScriptable is an opaque structure whose members cannot be directly
+accessed</doc>
+      <virtual-method name="get_id" invoker="get_id" version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the id of @scriptable set using clutter_scriptable_set_id().
+the scriptable object and should never be modified of freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the id of the object. The returned string is owned by</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="parse_custom_node"
+                      invoker="parse_custom_node"
+                      version="0.6">
+        <doc xml:whitespace="preserve">Parses the passed JSON node. The implementation must set the type
+of the passed #GValue pointer using g_value_init().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the node was successfully parsed, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="script" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterScript creating the scriptable instance</doc>
+            <type name="Script" c:type="ClutterScript*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the generic value to be set</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the node</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the JSON node to be parsed</doc>
+            <type name="Json.Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_custom_property"
+                      invoker="set_custom_property"
+                      version="0.6">
+        <doc xml:whitespace="preserve">Overrides the common properties setting. The underlying virtual
+function should be used when implementing custom properties.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="script" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterScript creating the scriptable instance</doc>
+            <type name="Script" c:type="ClutterScript*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the property</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_id" invoker="set_id" version="0.6">
+        <doc xml:whitespace="preserve">Sets @id as the unique Clutter script it for this instance of
+#ClutterScriptableIface.
+This name can be used by user interface designer applications to
+define a unique name for an object constructable using the UI
+definition language parsed by #ClutterScript.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_id"
+              c:identifier="clutter_scriptable_get_id"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the id of @scriptable set using clutter_scriptable_set_id().
+the scriptable object and should never be modified of freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the id of the object. The returned string is owned by</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="parse_custom_node"
+              c:identifier="clutter_scriptable_parse_custom_node"
+              version="0.6">
+        <doc xml:whitespace="preserve">Parses the passed JSON node. The implementation must set the type
+of the passed #GValue pointer using g_value_init().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the node was successfully parsed, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="script" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterScript creating the scriptable instance</doc>
+            <type name="Script" c:type="ClutterScript*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the generic value to be set</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the node</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the JSON node to be parsed</doc>
+            <type name="Json.Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_custom_property"
+              c:identifier="clutter_scriptable_set_custom_property"
+              version="0.6">
+        <doc xml:whitespace="preserve">Overrides the common properties setting. The underlying virtual
+function should be used when implementing custom properties.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="script" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterScript creating the scriptable instance</doc>
+            <type name="Script" c:type="ClutterScript*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the property</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_id"
+              c:identifier="clutter_scriptable_set_id"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets @id as the unique Clutter script it for this instance of
+#ClutterScriptableIface.
+This name can be used by user interface designer applications to
+define a unique name for an object constructable using the UI
+definition language parsed by #ClutterScript.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterScript id of the object</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="ScriptableIface"
+            c:type="ClutterScriptableIface"
+            glib:is-gtype-struct-for="Scriptable"
+            version="0.6">
+      <doc xml:whitespace="preserve">Interface for implementing "scriptable" objects. An object implementing
+this interface can override the parsing and properties setting sequence
+when loading a UI definition data with #ClutterScript</doc>
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="set_id">
+        <callback name="set_id">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="scriptable" transfer-ownership="none">
+              <type name="Scriptable" c:type="ClutterScriptable*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_id">
+        <callback name="get_id">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id of the object. The returned string is owned by</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="scriptable" transfer-ownership="none">
+              <type name="Scriptable" c:type="ClutterScriptable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parse_custom_node">
+        <callback name="parse_custom_node">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the node was successfully parsed, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="scriptable" transfer-ownership="none">
+              <type name="Scriptable" c:type="ClutterScriptable*"/>
+            </parameter>
+            <parameter name="script" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the #ClutterScript creating the scriptable instance</doc>
+              <type name="Script" c:type="ClutterScript*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the generic value to be set</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the node</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="node" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the JSON node to be parsed</doc>
+              <type name="Json.Node" c:type="JsonNode*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_custom_property">
+        <callback name="set_custom_property">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="scriptable" transfer-ownership="none">
+              <type name="Scriptable" c:type="ClutterScriptable*"/>
+            </parameter>
+            <parameter name="script" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the #ClutterScript creating the scriptable instance</doc>
+              <type name="Script" c:type="ClutterScript*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the property</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the value of the property</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <constant name="ScrollClick" value="269025146">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="ScrollDirection"
+                 version="0.4"
+                 glib:type-name="ClutterScrollDirection"
+                 glib:get-type="clutter_scroll_direction_get_type"
+                 c:type="ClutterScrollDirection">
+      <doc xml:whitespace="preserve">Direction of a pointer scroll event.</doc>
+      <member name="up"
+              value="0"
+              c:identifier="CLUTTER_SCROLL_UP"
+              glib:nick="up"/>
+      <member name="down"
+              value="1"
+              c:identifier="CLUTTER_SCROLL_DOWN"
+              glib:nick="down"/>
+      <member name="left"
+              value="2"
+              c:identifier="CLUTTER_SCROLL_LEFT"
+              glib:nick="left"/>
+      <member name="right"
+              value="3"
+              c:identifier="CLUTTER_SCROLL_RIGHT"
+              glib:nick="right"/>
+    </enumeration>
+    <constant name="ScrollDown" value="269025145">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="ScrollEvent" c:type="ClutterScrollEvent" version="0.2">
+      <doc xml:whitespace="preserve">Scroll wheel (or similar device) event</doc>
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="direction" writable="1">
+        <type name="ScrollDirection" c:type="ClutterScrollDirection"/>
+      </field>
+      <field name="modifier_state" writable="1">
+        <type name="ModifierType" c:type="ClutterModifierType"/>
+      </field>
+      <field name="axes" writable="1">
+        <type name="gdouble" c:type="gdouble*"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="InputDevice" c:type="ClutterInputDevice*"/>
+      </field>
+    </record>
+    <constant name="ScrollUp" value="269025144">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Scroll_Lock" value="65300">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Search" value="269025051">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Select" value="65376">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="SelectButton" value="269025184">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Send" value="269025147">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Serbian_DJE" value="1713">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Serbian_DZE" value="1727">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Serbian_JE" value="1720">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Serbian_LJE" value="1721">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Serbian_NJE" value="1722">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Serbian_TSHE" value="1723">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Serbian_dje" value="1697">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Serbian_dze" value="1711">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Serbian_je" value="1704">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Serbian_lje" value="1705">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Serbian_nje" value="1706">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Serbian_tshe" value="1707">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Settings"
+           c:symbol-prefix="settings"
+           c:type="ClutterSettings"
+           version="1.4"
+           parent="GObject.Object"
+           glib:type-name="ClutterSettings"
+           glib:get-type="clutter_settings_get_type">
+      <doc xml:whitespace="preserve">&lt;structname&gt;ClutterSettings&lt;/structname&gt; is an opaque structure whose
+members cannot be directly accessed.</doc>
+      <function name="get_default"
+                c:identifier="clutter_settings_get_default"
+                version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the singleton instance of #ClutterSettings
+returned object is owned by Clutter and it should not be unreferenced
+directly</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the instance of #ClutterSettings. The</doc>
+          <type name="Settings" c:type="ClutterSettings*"/>
+        </return-value>
+      </function>
+      <property name="backend"
+                version="1.4"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A back pointer to the #ClutterBackend</doc>
+        <type name="Backend"/>
+      </property>
+      <property name="double-click-distance"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The maximum distance, in pixels, between button-press events that
+determines whether or not to increase the click count by 1.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="double-click-time"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The time, in milliseconds, that should elapse between button-press
+events in order to increase the click count by 1.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="font-antialias"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether or not to use antialiasing when rendering text; a value
+of 1 enables it unconditionally; a value of 0 disables it
+unconditionally; and -1 will use the system's default.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="font-dpi"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The DPI used when rendering text, as a value of 1024 * dots/inch.
+If set to -1, the system's default will be used instead</doc>
+        <type name="gint"/>
+      </property>
+      <property name="font-hint-style"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The style of the hinting used when rendering text. Valid values
+are:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;simpara&gt;hintnone&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;simpara&gt;hintslight&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;simpara&gt;hintmedium&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;simpara&gt;hintfull&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="font-hinting"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether or not to use hinting when rendering text; a value of 1
+unconditionally enables it; a value of 0 unconditionally disables
+it; and a value of -1 will use the system's default.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="font-name"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The default font name that should be used by text actors, as
+a string that can be passed to pango_font_description_from_string().</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="font-subpixel-order"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The type of sub-pixel antialiasing used when rendering text. Valid
+values are:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;simpara&gt;none&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;simpara&gt;rgb&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;simpara&gt;bgr&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;simpara&gt;vrgb&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;simpara&gt;vbgr&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+        <type name="utf8"/>
+      </property>
+    </class>
+    <class name="Shader"
+           c:symbol-prefix="shader"
+           c:type="ClutterShader"
+           version="0.6"
+           parent="GObject.Object"
+           glib:type-name="ClutterShader"
+           glib:get-type="clutter_shader_get_type"
+           glib:type-struct="ShaderClass">
+      <doc xml:whitespace="preserve">The #ClutterShader structure contains only private data
+and should be accessed using the provided API</doc>
+      <constructor name="new" c:identifier="clutter_shader_new" version="0.6">
+        <doc xml:whitespace="preserve">Create a new #ClutterShader instance.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #ClutterShader.</doc>
+          <type name="Shader" c:type="ClutterShader*"/>
+        </return-value>
+      </constructor>
+      <method name="compile"
+              c:identifier="clutter_shader_compile"
+              version="0.8"
+              throws="1">
+        <doc xml:whitespace="preserve">Compiles and links GLSL sources set for vertex and fragment shaders for
+a #ClutterShader. If the compilation fails and a #GError return location is
+provided the error will contain the errors from the compiler, if any.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">returns TRUE if the shader was succesfully compiled.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_cogl_fragment_shader"
+              c:identifier="clutter_shader_get_cogl_fragment_shader"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the underlying #CoglHandle for the fragment shader.
+shader, or %NULL. The handle is owned by the #ClutterShader
+and it should not be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle for the fragment</doc>
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="get_cogl_program"
+              c:identifier="clutter_shader_get_cogl_program"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the underlying #CoglHandle for the shader program.
+or %NULL. The handle is owned by the #ClutterShader and it should
+not be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle for the shader program,</doc>
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="get_cogl_vertex_shader"
+              c:identifier="clutter_shader_get_cogl_vertex_shader"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the underlying #CoglHandle for the vertex shader.
+shader, or %NULL. The handle is owned by the #ClutterShader
+and it should not be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle for the vertex</doc>
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="get_fragment_source"
+              c:identifier="clutter_shader_get_fragment_source"
+              version="0.6">
+        <doc xml:whitespace="preserve">Query the current GLSL fragment source set on @shader.
+ClutterShader object or %NULL. The returned string is owned by the
+shader object and should never be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the source of the fragment shader for this</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_is_enabled"
+              c:identifier="clutter_shader_get_is_enabled"
+              version="0.6">
+        <doc xml:whitespace="preserve">Checks whether @shader is enabled.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the shader is enabled.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_vertex_source"
+              c:identifier="clutter_shader_get_vertex_source"
+              version="0.6">
+        <doc xml:whitespace="preserve">Query the current GLSL vertex source set on @shader.
+ClutterShader object or %NULL. The returned string is owned by the
+shader object and should never be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the source of the vertex shader for this</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="is_compiled"
+              c:identifier="clutter_shader_is_compiled"
+              version="0.8">
+        <doc xml:whitespace="preserve">Checks whether @shader is is currently compiled, linked and bound
+to the GL context.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the shader is compiled, linked and ready for use.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="release"
+              c:identifier="clutter_shader_release"
+              version="0.6">
+        <doc xml:whitespace="preserve">Frees up any GL context resources held by the shader.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_fragment_source"
+              c:identifier="clutter_shader_set_fragment_source"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the GLSL source code to be used by a #ClutterShader for the fragment
+program.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">GLSL source code.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">length of source buffer (currently ignored)</doc>
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_is_enabled"
+              c:identifier="clutter_shader_set_is_enabled"
+              version="0.6">
+        <doc xml:whitespace="preserve">Enables a shader. This function will attempt to compile and link
+the shader, if it isn't already.
+When @enabled is %FALSE the default state of the GL pipeline will be
+used instead.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enabled" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The new state of the shader.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_uniform"
+              c:identifier="clutter_shader_set_uniform"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets a user configurable variable in the GLSL shader programs attached to
+a #ClutterShader.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of uniform in GLSL shader program to set.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterShaderFloat, #ClutterShaderInt or #ClutterShaderMatrix #GValue.</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_vertex_source"
+              c:identifier="clutter_shader_set_vertex_source"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the GLSL source code to be used by a #ClutterShader for the vertex
+program.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">GLSL source code.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">length of source buffer (currently ignored)</doc>
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="compiled" version="0.8" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the shader is compiled and linked, ready for use
+in the GL context.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="enabled"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the shader is currently used in the GL rendering pipeline.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="fragment-source"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">GLSL source code for the fragment shader part of the shader program.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="vertex-source"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">GLSL source code for the vertex shader part of the shader
+program, if any</doc>
+        <type name="utf8"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ShaderPrivate" c:type="ClutterShaderPrivate*"/>
+      </field>
+    </class>
+    <record name="ShaderClass"
+            c:type="ClutterShaderClass"
+            glib:is-gtype-struct-for="Shader"
+            version="0.6">
+      <doc xml:whitespace="preserve">The #ClutterShaderClass structure contains only private data</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <class name="ShaderEffect"
+           c:symbol-prefix="shader_effect"
+           c:type="ClutterShaderEffect"
+           version="1.4"
+           parent="OffscreenEffect"
+           abstract="1"
+           glib:type-name="ClutterShaderEffect"
+           glib:get-type="clutter_shader_effect_get_type"
+           glib:type-struct="ShaderEffectClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterShaderEffect&lt;/structname&gt; structure contains
+only private data and should be accessed using the provided API</doc>
+      <method name="get_program"
+              c:identifier="clutter_shader_effect_get_program"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves a pointer to the program's handle
+or %COGL_INVALID_HANDLE</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the program's handle,</doc>
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="get_shader"
+              c:identifier="clutter_shader_effect_get_shader"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves a pointer to the shader's handle
+or %COGL_INVALID_HANDLE</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the shader's handle,</doc>
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="set_shader_source"
+              c:identifier="clutter_shader_effect_set_shader_source"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the source of the GLSL shader used by @effect
+This function should only be called by implementations of
+the #ClutterShaderEffect class, and not by application code.
+This function can only be called once; subsequent calls will
+yield no result.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the source was set</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the source of a GLSL shader</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_uniform"
+              c:identifier="clutter_shader_effect_set_uniform"
+              version="1.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets a list of values as the payload for the uniform @name inside
+the shader effect
+%G_TYPE_FLOAT, for 1 or more floating point values;
+%CLUTTER_TYPE_SHADER_INT, for a pointer to an array of integer values;
+%CLUTTER_TYPE_SHADER_FLOAT, for a pointer to an array of floating point
+values; and %CLUTTER_TYPE_SHADER_MATRIX, for a pointer to an array of
+floating point values mapping a matrix
+The number of values interepreted is defined by the @n_value
+argument, and by the @gtype argument. For instance, a uniform named
+"sampler0" and containing a single integer value is set using:
+|[
+clutter_shader_effect_set_uniform (effect, "sampler0",
+G_TYPE_INT, 1,
+0);
+]|
+While a uniform named "components" and containing a 3-elements vector
+of floating point values (a "vec3") can be set using:
+|[
+gfloat component_r, component_g, component_b;
+clutter_shader_effect_set_uniform (effect, "components",
+G_TYPE_FLOAT, 3,
+component_r,
+component_g,
+component_b);
+]|
+or can be set using:
+|[
+gfloat component_vec[3];
+clutter_shader_effect_set_uniform (effect, "components",
+CLUTTER_TYPE_SHADER_FLOAT, 3,
+component_vec);
+]|
+Finally, a uniform named "map" and containing a matrix can be set using:
+|[
+clutter_shader_effect_set_uniform (effect, "map",
+CLUTTER_TYPE_SHADER_MATRIX, 1,
+cogl_matrix_get_array (&amp;matrix));
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the uniform to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="gtype" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of the uniform to set</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="n_values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of values</doc>
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_uniform_value"
+              c:identifier="clutter_shader_effect_set_uniform_value"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets @value as the payload for the uniform @name inside the shader
+effect
+integer value; %G_TYPE_FLOAT, for a single floating point value;
+%CLUTTER_TYPE_SHADER_INT, for an array of integer values;
+%CLUTTER_TYPE_SHADER_FLOAT, for an array of floating point values;
+and %CLUTTER_TYPE_SHADER_MATRIX, for a matrix of floating point
+values</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the uniform to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue with the value of the uniform to set</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="shader-type"
+                version="1.4"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The type of shader that is used by the effect. This property
+should be set by the constructor of #ClutterShaderEffect
+sub-classes.</doc>
+        <type name="ShaderType"/>
+      </property>
+      <field name="parent_instance">
+        <type name="OffscreenEffect" c:type="ClutterOffscreenEffect"/>
+      </field>
+      <field name="priv">
+        <type name="ShaderEffectPrivate" c:type="ClutterShaderEffectPrivate*"/>
+      </field>
+    </class>
+    <record name="ShaderEffectClass"
+            c:type="ClutterShaderEffectClass"
+            glib:is-gtype-struct-for="ShaderEffect"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterShaderEffectClass&lt;/structname&gt; structure contains
+only private data</doc>
+      <field name="parent_class">
+        <type name="OffscreenEffectClass"
+              c:type="ClutterOffscreenEffectClass"/>
+      </field>
+      <field name="_clutter_shader1" introspectable="0">
+        <callback name="_clutter_shader1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_shader2" introspectable="0">
+        <callback name="_clutter_shader2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_shader3" introspectable="0">
+        <callback name="_clutter_shader3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_shader4" introspectable="0">
+        <callback name="_clutter_shader4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_shader5" introspectable="0">
+        <callback name="_clutter_shader5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_shader6" introspectable="0">
+        <callback name="_clutter_shader6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ShaderEffectPrivate"
+            c:type="ClutterShaderEffectPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="ShaderError"
+                 version="0.6"
+                 glib:type-name="ClutterShaderError"
+                 glib:get-type="clutter_shader_error_get_type"
+                 c:type="ClutterShaderError"
+                 glib:error-quark="clutter_shader_error_quark">
+      <doc xml:whitespace="preserve">#ClutterShader error enumeration</doc>
+      <member name="no_asm"
+              value="0"
+              c:identifier="CLUTTER_SHADER_ERROR_NO_ASM"
+              glib:nick="no-asm"/>
+      <member name="no_glsl"
+              value="1"
+              c:identifier="CLUTTER_SHADER_ERROR_NO_GLSL"
+              glib:nick="no-glsl"/>
+      <member name="compile"
+              value="2"
+              c:identifier="CLUTTER_SHADER_ERROR_COMPILE"
+              glib:nick="compile"/>
+    </enumeration>
+    <record name="ShaderFloat" c:type="ClutterShaderFloat" disguised="1">
+    </record>
+    <record name="ShaderInt" c:type="ClutterShaderInt" disguised="1">
+    </record>
+    <record name="ShaderMatrix" c:type="ClutterShaderMatrix" disguised="1">
+    </record>
+    <record name="ShaderPrivate" c:type="ClutterShaderPrivate" disguised="1">
+    </record>
+    <enumeration name="ShaderType"
+                 version="1.4"
+                 glib:type-name="ClutterShaderType"
+                 glib:get-type="clutter_shader_type_get_type"
+                 c:type="ClutterShaderType">
+      <doc xml:whitespace="preserve">The type of GLSL shader program</doc>
+      <member name="vertex_shader"
+              value="0"
+              c:identifier="CLUTTER_VERTEX_SHADER"
+              glib:nick="vertex-shader"/>
+      <member name="fragment_shader"
+              value="1"
+              c:identifier="CLUTTER_FRAGMENT_SHADER"
+              glib:nick="fragment-shader"/>
+    </enumeration>
+    <constant name="Shift_L" value="65505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Shift_Lock" value="65510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Shift_R" value="65506">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Shop" value="269025078">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="SingleCandidate" value="65340">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Sleep" value="269025071">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="SlowKeys_Enable" value="65139">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Spell" value="269025148">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="SplitScreen" value="269025149">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Stage"
+           c:symbol-prefix="stage"
+           c:type="ClutterStage"
+           version="0.1"
+           parent="Group"
+           glib:type-name="ClutterStage"
+           glib:get-type="clutter_stage_get_type"
+           glib:type-struct="StageClass">
+      <doc xml:whitespace="preserve">The #ClutterStage structure contains only private data
+and should be accessed using the provided API</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Animatable"/>
+      <implements name="Container"/>
+      <implements name="Scriptable"/>
+      <constructor name="new" c:identifier="clutter_stage_new" version="0.8">
+        <doc xml:whitespace="preserve">Creates a new, non-default stage. A non-default stage is a new
+top-level actor which can be used as another container. It works
+exactly like the default stage, but while clutter_stage_get_default()
+will always return the same instance, you will have to keep a pointer
+to any #ClutterStage returned by clutter_stage_create().
+The ability to support multiple stages depends on the current
+backend. Use clutter_feature_available() and
+%CLUTTER_FEATURE_STAGE_MULTIPLE to check at runtime whether a
+backend supports multiple stages.
+not support multiple stages. Use clutter_actor_destroy() to
+programmatically close the returned stage.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new stage, or %NULL if the default backend does</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </constructor>
+      <function name="get_default" c:identifier="clutter_stage_get_default">
+        <doc xml:whitespace="preserve">Returns the main stage. The default #ClutterStage is a singleton,
+so the stage will be created the first time this function is
+called (typically, inside clutter_init()); all the subsequent
+calls to clutter_stage_get_default() will return the same instance.
+Clutter guarantess the existence of the default stage.
+destroy or unref the returned actor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the main #ClutterStage.  You should never</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </function>
+      <method name="ensure_current"
+              c:identifier="clutter_stage_ensure_current"
+              version="0.8">
+        <doc xml:whitespace="preserve">This function essentially makes sure the right GL context is
+current for the passed stage. It is not intended to
+be used by applications.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="ensure_redraw"
+              c:identifier="clutter_stage_ensure_redraw"
+              version="1.0">
+        <doc xml:whitespace="preserve">Ensures that @stage is redrawn
+used when embedding a #ClutterStage into a toolkit with
+another windowing system, like GTK+.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="ensure_viewport"
+              c:identifier="clutter_stage_ensure_viewport"
+              version="1.0">
+        <doc xml:whitespace="preserve">Ensures that the GL viewport is updated with the current
+stage window size.
+This function will queue a redraw of @stage.
+This function should not be called by applications; it is used
+when embedding a #ClutterStage into a toolkit with another
+windowing system, like GTK+.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="event" c:identifier="clutter_stage_event" version="0.4">
+        <doc xml:whitespace="preserve">This function is used to emit an event on the main stage.
+You should rarely need to use this function, except for
+synthetised events.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the return value from the signal emission</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterEvent</doc>
+            <type name="Event" c:type="ClutterEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_actor_at_pos"
+              c:identifier="clutter_stage_get_actor_at_pos">
+        <doc xml:whitespace="preserve">Checks the scene at the coordinates @x and @y and returns a pointer
+to the #ClutterActor at those coordinates.
+By using @pick_mode it is possible to control which actors will be
+painted and thus available.
+if any</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the actor at the specified coordinates,</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pick_mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">how the scene graph should be painted</doc>
+            <type name="PickMode" c:type="ClutterPickMode"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate to check</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate to check</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_color" c:identifier="clutter_stage_get_color">
+        <doc xml:whitespace="preserve">Retrieves the stage color.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for a #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fog"
+              c:identifier="clutter_stage_get_fog"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the current depth cueing settings from the stage.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fog" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for a #ClutterFog structure</doc>
+            <type name="Fog" c:type="ClutterFog*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fullscreen"
+              c:identifier="clutter_stage_get_fullscreen"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves whether the stage is full screen or not</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the stage is full screen</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_key_focus"
+              c:identifier="clutter_stage_get_key_focus"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the actor that is currently under key focus.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the actor with key focus, or the stage</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="get_minimum_size"
+              c:identifier="clutter_stage_get_minimum_size"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the minimum size for a stage window as set using
+clutter_stage_set_minimum_size().
+The returned size may not correspond to the actual minimum size and
+it is specific to the #ClutterStage implementation inside the
+Clutter backend</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the minimum width, in pixels, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the minimum height, in pixels, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_no_clear_hint"
+              c:identifier="clutter_stage_get_no_clear_hint"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the hint set with clutter_stage_set_no_clear_hint()
+cycle, and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the stage should not clear itself on every paint</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_perspective"
+              c:identifier="clutter_stage_get_perspective">
+        <doc xml:whitespace="preserve">Retrieves the stage perspective.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="perspective"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for a #ClutterPerspective</doc>
+            <type name="Perspective" c:type="ClutterPerspective*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_throttle_motion_events"
+              c:identifier="clutter_stage_get_throttle_motion_events"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the value set with clutter_stage_set_throttle_motion_events()
+and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the motion events are being throttled,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_title" c:identifier="clutter_stage_get_title">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_use_alpha"
+              c:identifier="clutter_stage_get_use_alpha"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the value set using clutter_stage_set_use_alpha()
+alpha channel of the stage color</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the stage should honour the opacity and the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_use_fog"
+              c:identifier="clutter_stage_get_use_fog"
+              version="0.6">
+        <doc xml:whitespace="preserve">Gets whether the depth cueing effect is enabled on @stage.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the the depth cueing effect is enabled</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_user_resizable"
+              c:identifier="clutter_stage_get_user_resizable"
+              version="0.4">
+        <doc xml:whitespace="preserve">Retrieves the value set with clutter_stage_set_user_resizable().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the stage is resizable by the user.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="hide_cursor"
+              c:identifier="clutter_stage_hide_cursor"
+              version="0.4">
+        <doc xml:whitespace="preserve">Makes the cursor invisible on the stage window</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="is_default"
+              c:identifier="clutter_stage_is_default"
+              version="0.8">
+        <doc xml:whitespace="preserve">Checks if @stage is the default stage, or an instance created using
+clutter_stage_new() but internally using the same implementation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the passed stage is the default one</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="queue_redraw"
+              c:identifier="clutter_stage_queue_redraw"
+              version="0.8">
+        <doc xml:whitespace="preserve">Queues a redraw for the passed stage.
+&lt;note&gt;Applications should call clutter_actor_queue_redraw() and not
+this function.&lt;/note&gt;
+&lt;note&gt;This function is just a wrapper for clutter_actor_queue_redraw()
+and should probably go away.&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="read_pixels" c:identifier="clutter_stage_read_pixels">
+        <doc xml:whitespace="preserve">Makes a screenshot of the stage in RGBA 8bit data, returns a
+linear buffer with @width * 4 as rowstride.
+The alpha data contained in the returned buffer is driver-dependent,
+and not guaranteed to hold any sensible value.
+or %NULL if the read failed. Use g_free() on the returned data
+to release the resources it has allocated.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to newly allocated memory with the buffer</doc>
+          <type name="guint8" c:type="guchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x coordinate of the first pixel that is read from stage</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y coordinate of the first pixel that is read from stage</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Width dimention of pixels to be read, or -1 for the entire stage width</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Height dimention of pixels to be read, or -1 for the entire stage height</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_color" c:identifier="clutter_stage_set_color">
+        <doc xml:whitespace="preserve">Sets the stage color.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fog"
+              c:identifier="clutter_stage_set_fog"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the fog (also known as "depth cueing") settings for the @stage.
+A #ClutterStage will only use a linear fog progression, which
+depends solely on the distance from the viewer. The cogl_set_fog()
+function in COGL exposes more of the underlying implementation,
+and allows changing the for progression function. It can be directly
+used by disabling the #ClutterStage:use-fog property and connecting
+a signal handler to the #ClutterActor::paint signal on the @stage,
+like:
+|[
+clutter_stage_set_use_fog (stage, FALSE);
+g_signal_connect (stage, "paint", G_CALLBACK (on_stage_paint), NULL);
+]|
+The paint signal handler will call cogl_set_fog() with the
+desired settings:
+|[
+static void
+on_stage_paint (ClutterActor *actor)
+{
+ClutterColor stage_color = { 0, };
+CoglColor fog_color = { 0, };
+/&amp;ast; set the fog color to the stage background color &amp;ast;/
+clutter_stage_get_color (CLUTTER_STAGE (actor), &amp;amp;stage_color);
+cogl_color_init_from_4ub (&amp;amp;fog_color,
+stage_color.red,
+stage_color.green,
+stage_color.blue,
+stage_color.alpha);
+/&amp;ast; enable fog &amp;ast;/
+cogl_set_fog (&amp;amp;fog_color,
+COGL_FOG_MODE_EXPONENTIAL, /&amp;ast; mode &amp;ast;/
+0.5,                       /&amp;ast; density &amp;ast;/
+5.0, 30.0);                /&amp;ast; z_near and z_far &amp;ast;/
+}
+]|
+&lt;note&gt;The fogging functions only work correctly when the visible actors use
+unmultiplied alpha colors. By default Cogl will premultiply textures and
+cogl_set_source_color() will premultiply colors, so unless you explicitly
+load your textures requesting an unmultiplied internal format and use
+cogl_material_set_color() you can only use fogging with fully opaque actors.
+Support for premultiplied colors will improve in the future when we can
+depend on fragment shaders.&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fog" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterFog structure</doc>
+            <type name="Fog" c:type="ClutterFog*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fullscreen"
+              c:identifier="clutter_stage_set_fullscreen"
+              version="1.0">
+        <doc xml:whitespace="preserve">Asks to place the stage window in the fullscreen or unfullscreen
+states.
+afterward, because other entities (e.g. the user or window manager)
+could unfullscreen it again, and not all window managers honor
+requests to fullscreen windows.
+If you want to receive notification of the fullscreen state you
+should either use the #ClutterStage::fullscreen and
+#ClutterStage::unfullscreen signals, or use the notify signal
+for the #ClutterStage:fullscreen-set property</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fullscreen" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to to set the stage fullscreen</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_key_focus"
+              c:identifier="clutter_stage_set_key_focus"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the key focus on @actor. An actor with key focus will receive
+all the key events. If @actor is %NULL, the stage will receive
+focus.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the actor to set key focus to, or %NULL</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_minimum_size"
+              c:identifier="clutter_stage_set_minimum_size"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the minimum size for a stage window, if the default backend
+uses #ClutterStage inside a window
+This is a convenience function, and it is equivalent to setting the
+#ClutterActor:min-width and #ClutterActor:min-height on @stage
+If the current size of @stage is smaller than the minimum size, the
+This function has no effect if @stage is fullscreen</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width, in pixels</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height, in pixels</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_no_clear_hint"
+              c:identifier="clutter_stage_set_no_clear_hint"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets whether the @stage should clear itself at the beginning
+of each paint cycle or not.
+Clearing the #ClutterStage can be a costly operation, especially
+if the stage is always covered - for instance, in a full-screen
+video player or in a game with a background texture.
+&lt;note&gt;&lt;para&gt;This setting is a hint; Clutter might discard this
+hint depending on its internal state.&lt;/para&gt;&lt;/note&gt;
+&lt;warning&gt;&lt;para&gt;If parts of the stage are visible and you disable
+clearing you might end up with visual artifacts while painting the
+contents of the stage.&lt;/para&gt;&lt;/warning&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="no_clear" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @stage should not clear itself on every repaint cycle</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_perspective"
+              c:identifier="clutter_stage_set_perspective">
+        <doc xml:whitespace="preserve">Sets the stage perspective.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="perspective" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #ClutterPerspective</doc>
+            <type name="Perspective" c:type="ClutterPerspective*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_throttle_motion_events"
+              c:identifier="clutter_stage_set_throttle_motion_events"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether motion events received between redraws should
+be throttled or not. If motion events are throttled, those
+events received by the windowing system between redraws will
+be compressed so that only the last event will be propagated
+to the @stage and its actors.
+This function should only be used if you want to have all
+the motion events delivered to your application code.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="throttle" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to throttle motion events</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_title" c:identifier="clutter_stage_set_title">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_alpha"
+              c:identifier="clutter_stage_set_use_alpha"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets whether the @stage should honour the #ClutterActor:opacity and
+the alpha channel of the #ClutterStage:color</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the stage should honour the opacity or the alpha channel of the stage color</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_fog"
+              c:identifier="clutter_stage_set_use_fog"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets whether the depth cueing effect on the stage should be enabled
+or not.
+Depth cueing is a 3D effect that makes actors farther away from the
+viewing point less opaque, by fading them with the stage color.
+The parameters of the GL fog used can be changed using the
+clutter_stage_set_fog() function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fog" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE for enabling the depth cueing effect</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_user_resizable"
+              c:identifier="clutter_stage_set_user_resizable"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets if the stage is resizable by user interaction (e.g. via
+window manager controls)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="resizable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the stage should be user resizable.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="show_cursor" c:identifier="clutter_stage_show_cursor">
+        <doc xml:whitespace="preserve">Shows the cursor on the stage window</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="color" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The color of the main stage.</doc>
+        <type name="Color"/>
+      </property>
+      <property name="cursor-visible" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the mouse pointer should be visible</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="fog"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The settings for the GL "fog", used only if #ClutterStage:use-fog
+is set to %TRUE</doc>
+        <type name="Fog"/>
+      </property>
+      <property name="fullscreen-set" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="key-focus"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterActor that will receive key events from the underlying
+windowing system.
+If %NULL, the #ClutterStage will receive the events.</doc>
+        <type name="Actor"/>
+      </property>
+      <property name="no-clear-hint"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether or not the #ClutterStage should clear its contents
+before each paint cycle.
+See clutter_stage_set_no_clear_hint() for further information.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="offscreen" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the stage should be rendered in an offscreen buffer.
+&lt;warning&gt;&lt;para&gt;Not every backend supports redirecting the
+stage to an offscreen buffer. This property might not work
+and it might be deprecated at any later date.&lt;/para&gt;&lt;/warning&gt;</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="perspective"
+                version="0.8.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The parameters used for the perspective projection from 3D
+coordinates to 2D</doc>
+        <type name="Perspective"/>
+      </property>
+      <property name="title"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The stage's title - usually displayed in stage windows title decorations.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="use-alpha"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterStage should honour the alpha component of the
+#ClutterStage:color property when painting. If Clutter is run under
+a compositing manager this will result in the stage being blended
+with the underlying window(s)</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="use-fog"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the stage should use a linear GL "fog" in creating the
+depth-cueing effect, to enhance the perception of depth by fading
+actors farther from the viewpoint.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="user-resizable"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the stage is resizable via user interaction.</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Group" c:type="ClutterGroup"/>
+      </field>
+      <field name="priv">
+        <type name="StagePrivate" c:type="ClutterStagePrivate*"/>
+      </field>
+      <glib:signal name="activate">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="deactivate">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="delete-event" version="1.2">
+        <doc xml:whitespace="preserve">The ::delete-event signal is emitted when the user closes a
+#ClutterStage window using the window controls.
+Clutter by default will call clutter_main_quit() if @stage is
+the default stage, and clutter_actor_destroy() for any other
+stage.
+It is possible to override the default behaviour by connecting
+a new handler and returning %TRUE there.
+&lt;note&gt;This signal is emitted only on Clutter backends that
+embed #ClutterStage in native windows. It is not emitted for
+backends that use a static frame buffer.&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterEvent of type %CLUTTER_DELETE</doc>
+            <type name="Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="fullscreen">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unfullscreen">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="StageClass"
+            c:type="ClutterStageClass"
+            glib:is-gtype-struct-for="Stage"
+            version="0.1">
+      <doc xml:whitespace="preserve">The #ClutterStageClass structure contains only private data</doc>
+      <field name="parent_class">
+        <type name="GroupClass" c:type="ClutterGroupClass"/>
+      </field>
+      <field name="fullscreen">
+        <callback name="fullscreen">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unfullscreen">
+        <callback name="unfullscreen">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate">
+        <callback name="activate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="deactivate">
+        <callback name="deactivate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delete_event">
+        <callback name="delete_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Event" c:type="ClutterEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_padding_dummy">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="31">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <class name="StageManager"
+           c:symbol-prefix="stage_manager"
+           c:type="ClutterStageManager"
+           version="1.0"
+           parent="GObject.Object"
+           glib:type-name="ClutterStageManager"
+           glib:get-type="clutter_stage_manager_get_type"
+           glib:type-struct="StageManagerClass">
+      <doc xml:whitespace="preserve">The #ClutterStageManager structure is private.</doc>
+      <function name="get_default"
+                c:identifier="clutter_stage_manager_get_default"
+                version="0.8">
+        <doc xml:whitespace="preserve">Returns the default #ClutterStageManager.
+object is owned by Clutter and you should not reference or unreference it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the default stage manager instance. The returned</doc>
+          <type name="StageManager" c:type="ClutterStageManager*"/>
+        </return-value>
+      </function>
+      <method name="get_default_stage"
+              c:identifier="clutter_stage_manager_get_default_stage"
+              version="0.8">
+        <doc xml:whitespace="preserve">Returns the default #ClutterStage.
+is owned by Clutter and you should never reference or unreference it</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the default stage. The returned object</doc>
+          <type name="Stage" c:type="ClutterStage*"/>
+        </return-value>
+      </method>
+      <method name="list_stages"
+              c:identifier="clutter_stage_manager_list_stages"
+              version="0.8">
+        <doc xml:whitespace="preserve">Lists all currently used stages.
+allocated list of #ClutterStage objects. Use g_slist_free() to
+deallocate it when done.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a newly</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Stage"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="peek_stages"
+              c:identifier="clutter_stage_manager_peek_stages"
+              version="1.0">
+        <doc xml:whitespace="preserve">Lists all currently used stages.
+to the internal list of #ClutterStage objects. The returned list
+is owned by the #ClutterStageManager and should never be modified
+or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Stage"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="set_default_stage"
+              c:identifier="clutter_stage_manager_set_default_stage"
+              version="0.8"
+              deprecated="Calling this function has no effect"
+              deprecated-version="1.2">
+        <doc xml:whitespace="preserve">Sets @stage as the default stage.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stage" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterStage</doc>
+            <type name="Stage" c:type="ClutterStage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="default-stage" version="0.8" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The default stage used by Clutter.</doc>
+        <type name="Stage"/>
+      </property>
+      <glib:signal name="stage-added" version="0.8">
+        <doc xml:whitespace="preserve">The ::stage-added signal is emitted each time a new #ClutterStage
+has been added to the stage manager.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the added stage</doc>
+            <type name="Stage"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="stage-removed" version="0.8">
+        <doc xml:whitespace="preserve">The ::stage-removed signal is emitted each time a #ClutterStage
+has been removed from the stage manager.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the removed stage</doc>
+            <type name="Stage"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="StageManagerClass"
+            c:type="ClutterStageManagerClass"
+            glib:is-gtype-struct-for="StageManager"
+            version="1.0">
+      <doc xml:whitespace="preserve">The #ClutterStageManagerClass structure contains only private data
+and should be accessed using the provided API</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="stage_added">
+        <callback name="stage_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_manager" transfer-ownership="none">
+              <type name="StageManager" c:type="ClutterStageManager*"/>
+            </parameter>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stage_removed">
+        <callback name="stage_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_manager" transfer-ownership="none">
+              <type name="StageManager" c:type="ClutterStageManager*"/>
+            </parameter>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="StagePrivate" c:type="ClutterStagePrivate" disguised="1">
+    </record>
+    <bitfield name="StageState"
+              version="0.4"
+              glib:type-name="ClutterStageState"
+              glib:get-type="clutter_stage_state_get_type"
+              c:type="ClutterStageState">
+      <doc xml:whitespace="preserve">Stage state masks</doc>
+      <member name="fullscreen"
+              value="2"
+              c:identifier="CLUTTER_STAGE_STATE_FULLSCREEN"
+              glib:nick="fullscreen"/>
+      <member name="offscreen"
+              value="4"
+              c:identifier="CLUTTER_STAGE_STATE_OFFSCREEN"
+              glib:nick="offscreen"/>
+      <member name="activated"
+              value="8"
+              c:identifier="CLUTTER_STAGE_STATE_ACTIVATED"
+              glib:nick="activated"/>
+    </bitfield>
+    <record name="StageStateEvent"
+            c:type="ClutterStageStateEvent"
+            version="0.2">
+      <doc xml:whitespace="preserve">Event signalling a change in the #ClutterStage state.</doc>
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+      <field name="changed_mask" writable="1">
+        <type name="StageState" c:type="ClutterStageState"/>
+      </field>
+      <field name="new_state" writable="1">
+        <type name="StageState" c:type="ClutterStageState"/>
+      </field>
+    </record>
+    <interface name="StageWindow"
+               c:symbol-prefix="stage_window"
+               c:type="ClutterStageWindow"
+               version="0.8"
+               glib:type-name="ClutterStageWindow"
+               glib:get-type="clutter_stage_window_get_type"
+               glib:type-struct="StageWindowIface">
+      <doc xml:whitespace="preserve">&lt;structname&gt;ClutterStageWindow&lt;/structname&gt; is an opaque structure
+whose members should not be accessed directly</doc>
+      <virtual-method name="add_redraw_clip">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stage_rectangle" transfer-ownership="none">
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_geometry">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry" transfer-ownership="none">
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_pending_swaps">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_wrapper" introspectable="0">
+        <return-value>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="has_redraw_clips">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="hide">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="ignoring_redraw_clips">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="realize">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="resize">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_cursor_visible">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cursor_visible" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_fullscreen">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_fullscreen" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_title">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_user_resizable">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_resizable" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="show">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="do_raise" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unrealize">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+    </interface>
+    <record name="StageWindowIface"
+            c:type="ClutterStageWindowIface"
+            glib:is-gtype-struct-for="StageWindow"
+            version="0.8">
+      <doc xml:whitespace="preserve">The interface implemented by backends for stage windows</doc>
+      <field name="parent_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_wrapper" introspectable="0">
+        <callback name="get_wrapper" introspectable="0">
+          <return-value>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_title">
+        <callback name="set_title">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="title" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_fullscreen">
+        <callback name="set_fullscreen">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="is_fullscreen" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_cursor_visible">
+        <callback name="set_cursor_visible">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="cursor_visible" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_user_resizable">
+        <callback name="set_user_resizable">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="is_resizable" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="realize">
+        <callback name="realize">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unrealize">
+        <callback name="unrealize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="show">
+        <callback name="show">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="do_raise" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="hide">
+        <callback name="hide">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="resize">
+        <callback name="resize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_geometry">
+        <callback name="get_geometry">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="geometry" transfer-ownership="none">
+              <type name="Geometry" c:type="ClutterGeometry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_pending_swaps">
+        <callback name="get_pending_swaps">
+          <return-value transfer-ownership="none">
+            <type name="gint" c:type="int"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_redraw_clip">
+        <callback name="add_redraw_clip">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="stage_rectangle" transfer-ownership="none">
+              <type name="Geometry" c:type="ClutterGeometry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="has_redraw_clips">
+        <callback name="has_redraw_clips">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="ignoring_redraw_clips">
+        <callback name="ignoring_redraw_clips">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <constant name="Standby" value="269025040">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Start" value="269025050">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="State"
+           c:symbol-prefix="state"
+           c:type="ClutterState"
+           version="1.4"
+           parent="GObject.Object"
+           glib:type-name="ClutterState"
+           glib:get-type="clutter_state_get_type"
+           glib:type-struct="StateClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterState&lt;/structname&gt; structure contains only
+private data and should be accessed using the provided API</doc>
+      <implements name="Scriptable"/>
+      <constructor name="new" c:identifier="clutter_state_new">
+        <doc xml:whitespace="preserve">Creates a new #ClutterState</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly create #ClutterState instance</doc>
+          <type name="State" c:type="ClutterState*"/>
+        </return-value>
+      </constructor>
+      <method name="get_animator"
+              c:identifier="clutter_state_get_animator"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterAnimator that is being used for transitioning
+between the two states, if any has been set</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterAnimator instance, or %NULL</doc>
+          <type name="Animator" c:type="ClutterAnimator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_state_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a source state</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target_state_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a target state</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_duration"
+              c:identifier="clutter_state_get_duration"
+              version="1.4">
+        <doc xml:whitespace="preserve">Queries the duration used for transitions between a source and
+target state pair
+The semantics for the query are the same as the semantics used for
+setting the duration with clutter_state_set_duration()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the duration, in milliseconds</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_state_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the name of the source state to get the duration of, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target_state_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the name of the source state to get the duration of, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_keys"
+              c:identifier="clutter_state_get_keys"
+              version="1.4">
+        <doc xml:whitespace="preserve">Returns a list of pointers to opaque structures with accessor functions
+that describe the keys added to an animator.
+newly allocated #GList of #ClutterStateKey&lt;!-- --&gt;s. The contents of
+the returned list are owned by the #ClutterState and should not be
+modified or freed. Use g_list_free() to free the resources allocated
+by the returned list when done using it</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="StateKey"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="source_state_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the source transition name to query, or %NULL for all source states</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target_state_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the target transition name to query, or %NULL for all target states</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="object" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the specific object instance to list keys for, or %NULL for all managed objects</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the property name to search for, or %NULL for all properties.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_state"
+              c:identifier="clutter_state_get_state"
+              version="1.4">
+        <doc xml:whitespace="preserve">Queries the currently set target state.
+During a transition this function will return the target of the transition.
+This function is useful when called from handlers of the
+#ClutterState::completed signal.
+is owned by the #ClutterState and should not be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the target state. The returned string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_states"
+              c:identifier="clutter_state_get_states"
+              version="1.4">
+        <doc xml:whitespace="preserve">Gets a list of all the state names managed by this #ClutterState.
+#GList of state names. The contents of the returned #GList are owned
+by the #ClutterState and should not be modified or freed. Use
+g_list_free() to free the resources allocated by the returned list when
+done using it</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a newly allocated</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_timeline"
+              c:identifier="clutter_state_get_timeline"
+              version="1.4">
+        <doc xml:whitespace="preserve">Gets the timeline driving the #ClutterState
+the state change animations. The returned timeline is owned
+by the #ClutterState and it should not be unreferenced directly</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterTimeline that drives</doc>
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+      </method>
+      <method name="remove_key"
+              c:identifier="clutter_state_remove_key"
+              version="1.4">
+        <doc xml:whitespace="preserve">Removes all keys matching the search criteria passed in arguments.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_state_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the source state name to query, or %NULL for all source states</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target_state_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the target state name to query, or %NULL for all target states</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="object" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the specific object instance to list keys for, or %NULL for all managed objects</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the property name to search for, or %NULL for all properties.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set"
+              c:identifier="clutter_state_set"
+              version="1.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds multiple keys to a named state of a #ClutterState instance, specifying
+the easing mode and value a given property of an object should have at a
+given progress of the animation.
+The mode specified is the easing mode used when going to from the previous
+key to the specified key.
+For instance, the code below:
+|[
+clutter_state_set (state, NULL, "hover",
+button, "opacity", 255, CLUTTER_LINEAR,
+button, "scale-x", 1.2, CLUTTER_EASE_OUT_CUBIC,
+button, "scale-y", 1.2, CLUTTER_EASE_OUT_CUBIC,
+NULL);
+]|
+will create a transition from any state (a @source_state_name of NULL is
+treated as a wildcard) and a state named "hover"; the
+&lt;emphasis&gt;button&lt;/emphasis&gt; object will have the #ClutterActor:opacity
+property animated to a value of 255 using %CLUTTER_LINEAR as the animation
+mode, and the #ClutterActor:scale-x and #ClutterActor:scale-y properties
+animated to a value of 1.2 using %CLUTTER_EASE_OUT_CUBIC as the animation
+mode. To change the state (and start the transition) you can use the
+clutter_state_change() function:
+|[
+clutter_state_change (state, "hover", TRUE);
+]|
+If a given object, state_name, property tuple already exist in the
+#ClutterState instance, then the mode and value will be replaced with
+the new specified values.
+If a property name is prefixed with "delayed::" two additional
+to pause before transitioning and a similar value to pause after
+transitioning, e.g.:
+|[
+clutter_state_set (state, "hover", "toggled",
+button, "delayed::scale-x", 1.0, 0.2, 0.2,
+button, "delayed::scale-y", 1.0, 0.2, 0.2,
+NULL);
+]|
+will pause for 20% of the duration of the transition before animating,
+and 20% of the duration after animating.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_state_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the source state keys are being added for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target_state_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the target state keys are being added for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="first_object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a property of @first_object to specify a key for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="first_mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id of the alpha function to use</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_animator"
+              c:identifier="clutter_state_set_animator"
+              version="1.4">
+        <doc xml:whitespace="preserve">Specifies a #ClutterAnimator to be used when transitioning between
+the two named states.
+The @animator allows specifying a transition between the state that is
+more elaborate than the basic transitions allowed by the tweening of
+properties defined in the #ClutterState keys.
+If @animator is %NULL it will unset an existing animator.
+#ClutterState will take a reference on the passed @animator, if any</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_state_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a source state</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target_state_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a target state</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="animator" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterAnimator instance, or %NULL to unset an existing #ClutterAnimator</doc>
+            <type name="Animator" c:type="ClutterAnimator*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_duration"
+              c:identifier="clutter_state_set_duration"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the duration of a transition.
+If both state names are %NULL the default duration for @state is set.
+If only @target_state_name is specified, the passed @duration becomes
+the default duration for transitions to the target state.
+If both states names are specified, the passed @duration only applies
+to the specified transition.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_state_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the name of the source state, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target_state_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the name of the target state, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the duration of the transition, in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_key"
+              c:identifier="clutter_state_set_key"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets one specific end key for a state_name, object, property_name
+combination.
+chaining of multiple calls</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterState instance, allowing</doc>
+          <type name="State" c:type="ClutterState*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_state_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the source transition to specify transition for or NULL to specify the default fallback when a more specific source_state doesn't exist.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target_state_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the transition to set a key value for.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GObject to set a key for</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the property to set a key for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id of the alpha function to use</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value for property_name of object in state_name</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="pre_delay" transfer-ownership="none">
+            <doc xml:whitespace="preserve">relative time of the transition to be idle in the beginning of the transition</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="post_delay" transfer-ownership="none">
+            <doc xml:whitespace="preserve">relative time of the transition to be idle in the end of the transition</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_state"
+              c:identifier="clutter_state_set_state"
+              version="1.4">
+        <doc xml:whitespace="preserve">Change the current state of #ClutterState to @target_state_name
+The state will animate during its transition, see
+#clutter_state_warp_to_state for animation-free state switching.
+state transition. The returned timeline is owned by the #ClutterState
+and it should not be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterTimeline that drives the</doc>
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+        <parameters>
+          <parameter name="target_state_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the state to transition to</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="warp_to_state"
+              c:identifier="clutter_state_warp_to_state"
+              version="1.4">
+        <doc xml:whitespace="preserve">Change the current state of #ClutterState to @target_state_name
+Change to the specified target state immediately with no animation.
+state transition. The returned timeline is owned by the #ClutterState
+and it should not be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterTimeline that drives the</doc>
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+        <parameters>
+          <parameter name="target_state_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the state to transition to</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="duration" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Default duration used if an duration has not been specified for a specific
+source/target state pair. The values is in milliseconds.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="state" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The currently set target state, setting it causes the
+state machine to transition to the new state, use
+clutter_state_change() with a final FALSE argument to
+change state without a transition.</doc>
+        <type name="utf8"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="StatePrivate" c:type="ClutterStatePrivate*"/>
+      </field>
+      <glib:signal name="completed" version="1.4">
+        <doc xml:whitespace="preserve">The ::completed signal is emitted when a #ClutterState reaches
+the target state specified by clutter_state_change()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="StateClass"
+            c:type="ClutterStateClass"
+            glib:is-gtype-struct-for="State"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterStateClass&lt;/structname&gt; structure contains
+only private data</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="completed">
+        <callback name="completed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="state" transfer-ownership="none">
+              <type name="State" c:type="ClutterState*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_padding_dummy">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="8">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="StateKey"
+            c:type="ClutterStateKey"
+            version="1.4"
+            glib:type-name="ClutterStateKey"
+            glib:get-type="clutter_state_key_get_type"
+            c:symbol-prefix="state_key">
+      <doc xml:whitespace="preserve">&lt;structname&gt;ClutterStateKey&lt;/structname&gt; is an opaque structure whose
+members cannot be accessed directly</doc>
+      <method name="get_mode"
+              c:identifier="clutter_state_key_get_mode"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the easing mode used for @state_key.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the mode of a #ClutterStateKey</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <method name="get_object"
+              c:identifier="clutter_state_key_get_object"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the object instance this #ClutterStateKey applies to.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object this state key applies to.</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+      </method>
+      <method name="get_post_delay"
+              c:identifier="clutter_state_key_get_post_delay"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the duration of the pause after transitioning is complete
+as a fraction of the total transition time.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the post delay, used after doing the transition.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_pre_delay"
+              c:identifier="clutter_state_key_get_pre_delay"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the pause before transitioning starts as a fraction of
+the total transition time.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the pre delay used before starting the transition.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_property_name"
+              c:identifier="clutter_state_key_get_property_name"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the name of the property this #ClutterStateKey applies to
+by the #ClutterStateKey and should never be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the property. The returned string is owned</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_property_type"
+              c:identifier="clutter_state_key_get_property_type"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the #GType of the property a key applies to
+You can use this type to initialize the #GValue to pass to
+clutter_state_key_get_value()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType of the property</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="get_source_state_name"
+              c:identifier="clutter_state_key_get_source_state_name"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the name of the source state of the @state_key
+if this is the generic state key for the given property when
+transitioning to the target state. The returned string is owned
+by the #ClutterStateKey and should never be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the source state for this key, or %NULL</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_target_state_name"
+              c:identifier="clutter_state_key_get_target_state_name"
+              version="1.4">
+        <doc xml:whitespace="preserve">Get the name of the source state this #ClutterStateKey contains,
+or NULL if this is the generic state key for the given property
+when transitioning to the target state.
+the key is generic</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the source state for this key, or NULL if</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_value"
+              c:identifier="clutter_state_key_get_value"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves a copy of the value for a #ClutterStateKey.
+The #GValue needs to be already initialized for the value type
+of the property or to a type that allow transformation from the value
+type of the key.
+Use g_value_unset() when done.
+and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value was successfully retrieved,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue initialized with the correct type for the @state_key</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="StatePrivate" c:type="ClutterStatePrivate" disguised="1">
+    </record>
+    <constant name="StickyKeys_Enable" value="65141">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Stop" value="269025064">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Subtitle" value="269025178">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Super_L" value="65515">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Super_R" value="65516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Support" value="269025150">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Suspend" value="269025191">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Switch_VT_1" value="269024769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Switch_VT_10" value="269024778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Switch_VT_11" value="269024779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Switch_VT_12" value="269024780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Switch_VT_2" value="269024770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Switch_VT_3" value="269024771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Switch_VT_4" value="269024772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Switch_VT_5" value="269024773">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Switch_VT_6" value="269024774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Switch_VT_7" value="269024775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Switch_VT_8" value="269024776">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Switch_VT_9" value="269024777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Sys_Req" value="65301">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="T" value="84">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="THORN" value="222">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Tab" value="65289">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="TableAlignment"
+                 version="1.4"
+                 glib:type-name="ClutterTableAlignment"
+                 glib:get-type="clutter_table_alignment_get_type"
+                 c:type="ClutterTableAlignment">
+      <doc xml:whitespace="preserve">The alignment policies available on each axis of the #ClutterTableLayout</doc>
+      <member name="start"
+              value="0"
+              c:identifier="CLUTTER_TABLE_ALIGNMENT_START"
+              glib:nick="start"/>
+      <member name="center"
+              value="1"
+              c:identifier="CLUTTER_TABLE_ALIGNMENT_CENTER"
+              glib:nick="center"/>
+      <member name="end"
+              value="2"
+              c:identifier="CLUTTER_TABLE_ALIGNMENT_END"
+              glib:nick="end"/>
+    </enumeration>
+    <class name="TableLayout"
+           c:symbol-prefix="table_layout"
+           c:type="ClutterTableLayout"
+           version="1.4"
+           parent="LayoutManager"
+           glib:type-name="ClutterTableLayout"
+           glib:get-type="clutter_table_layout_get_type"
+           glib:type-struct="TableLayoutClass">
+      <doc xml:whitespace="preserve">The #ClutterTableLayout structure contains only private data
+and should be accessed using the provided API</doc>
+      <constructor name="new"
+                   c:identifier="clutter_table_layout_new"
+                   version="1.4">
+        <doc xml:whitespace="preserve">Creates a new #ClutterTableLayout layout manager</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterTableLayout</doc>
+          <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+        </return-value>
+      </constructor>
+      <method name="get_alignment"
+              c:identifier="clutter_table_layout_get_alignment"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the horizontal and vertical alignment policies for @actor
+as set using clutter_table_layout_pack() or
+clutter_table_layout_set_alignment().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_align"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the horizontal alignment policy</doc>
+            <type name="TableAlignment" c:type="ClutterTableAlignment*"/>
+          </parameter>
+          <parameter name="y_align"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the vertical alignment policy</doc>
+            <type name="TableAlignment" c:type="ClutterTableAlignment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_count"
+              c:identifier="clutter_table_layout_get_column_count"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieve the current number of columns in @layout</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of columns</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_column_spacing"
+              c:identifier="clutter_table_layout_get_column_spacing"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the spacing set using clutter_table_layout_set_column_spacing()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the spacing between columns of the #ClutterTableLayout</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_easing_duration"
+              c:identifier="clutter_table_layout_get_easing_duration"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the duration set using clutter_table_layout_set_easing_duration()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the duration of the animations, in milliseconds</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_easing_mode"
+              c:identifier="clutter_table_layout_get_easing_mode"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the easing mode set using clutter_table_layout_set_easing_mode()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an easing mode</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <method name="get_expand"
+              c:identifier="clutter_table_layout_get_expand"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the horizontal and vertical expand policies for @actor
+as set using clutter_table_layout_pack() or clutter_table_layout_set_expand()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_expand"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the horizontal expand policy</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="y_expand"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the vertical expand policy</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fill"
+              c:identifier="clutter_table_layout_get_fill"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the horizontal and vertical fill policies for @actor
+as set using clutter_table_layout_pack() or clutter_table_layout_set_fill()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_fill"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the horizontal fill policy</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="y_fill"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the vertical fill policy</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_row_count"
+              c:identifier="clutter_table_layout_get_row_count"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieve the current number rows in the @layout</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of rows</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_row_spacing"
+              c:identifier="clutter_table_layout_get_row_spacing"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the spacing set using clutter_table_layout_set_row_spacing()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the spacing between rows of the #ClutterTableLayout</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_span"
+              c:identifier="clutter_table_layout_get_span"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the row and column span for @actor as set using
+clutter_table_layout_pack() or clutter_table_layout_set_span()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="column_span"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the col span</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="row_span"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the row span</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_animations"
+              c:identifier="clutter_table_layout_get_use_animations"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves whether @layout should animate changes in the layout properties
+Since clutter_table_layout_set_use_animations()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the animations should be used, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="pack"
+              c:identifier="clutter_table_layout_pack"
+              version="1.4">
+        <doc xml:whitespace="preserve">Packs @actor inside the #ClutterContainer associated to @layout
+at the given row and column.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the column the @actor should be put, or -1 to append</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the row the @actor should be put, or -1 to append</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alignment"
+              c:identifier="clutter_table_layout_set_alignment"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the horizontal and vertical alignment policies for @actor
+inside @layout</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Horizontal alignment policy for @actor</doc>
+            <type name="TableAlignment" c:type="ClutterTableAlignment"/>
+          </parameter>
+          <parameter name="y_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Vertical alignment policy for @actor</doc>
+            <type name="TableAlignment" c:type="ClutterTableAlignment"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_column_spacing"
+              c:identifier="clutter_table_layout_set_column_spacing"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the spacing between columns of @layout</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the spacing between columns of the layout, in pixels</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_easing_duration"
+              c:identifier="clutter_table_layout_set_easing_duration"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the duration of the animations used by @layout when animating changes
+in the layout properties
+Use clutter_table_layout_set_use_animations() to enable and disable the
+animations</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the duration of the animations, in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_easing_mode"
+              c:identifier="clutter_table_layout_set_easing_mode"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the easing mode to be used by @layout when animating changes in layout
+properties
+Use clutter_table_layout_set_use_animations() to enable and disable the
+animations</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an easing mode, either from #ClutterAnimationMode or a logical id from clutter_alpha_register_func()</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_expand"
+              c:identifier="clutter_table_layout_set_expand"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the horizontal and vertical expand policies for @actor
+inside @layout</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_expand" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether @actor should allocate extra space horizontally</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="y_expand" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether @actor should allocate extra space vertically</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fill"
+              c:identifier="clutter_table_layout_set_fill"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the horizontal and vertical fill policies for @actor
+inside @layout</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_fill" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether @actor should fill horizontally the allocated space</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="y_fill" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether @actor should fill vertically the allocated space</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_row_spacing"
+              c:identifier="clutter_table_layout_set_row_spacing"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the spacing between rows of @layout</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the spacing between rows of the layout, in pixels</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_span"
+              c:identifier="clutter_table_layout_set_span"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the row and column span for @actor
+inside @layout</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="column_span" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Column span for @actor</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="row_span" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Row span for @actor</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_animations"
+              c:identifier="clutter_table_layout_set_use_animations"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets whether @layout should animate changes in the layout properties
+The duration of the animations is controlled by
+clutter_table_layout_set_easing_duration(); the easing mode to be used
+by the animations is controlled by clutter_table_layout_set_easing_mode()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="animate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @layout should use animations</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="column-spacing"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The spacing between columns of the #ClutterTableLayout, in pixels</doc>
+        <type name="guint"/>
+      </property>
+      <property name="easing-duration"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The duration of the animations, in case #ClutterTableLayout:use-animations
+is set to %TRUE
+The duration is expressed in milliseconds</doc>
+        <type name="guint"/>
+      </property>
+      <property name="easing-mode"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The easing mode for the animations, in case
+#ClutterTableLayout:use-animations is set to %TRUE
+either be a value from the #ClutterAnimationMode enumeration, like
+%CLUTTER_EASE_OUT_CUBIC, or a logical id as returned by
+clutter_alpha_register_func()
+The default value is %CLUTTER_EASE_OUT_CUBIC</doc>
+        <type name="gulong"/>
+      </property>
+      <property name="row-spacing"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The spacing between rows of the #ClutterTableLayout, in pixels</doc>
+        <type name="guint"/>
+      </property>
+      <property name="use-animations"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterTableLayout should animate changes in the
+layout properties</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="LayoutManager" c:type="ClutterLayoutManager"/>
+      </field>
+      <field name="priv">
+        <type name="TableLayoutPrivate" c:type="ClutterTableLayoutPrivate*"/>
+      </field>
+    </class>
+    <record name="TableLayoutClass"
+            c:type="ClutterTableLayoutClass"
+            glib:is-gtype-struct-for="TableLayout"
+            version="1.4">
+      <doc xml:whitespace="preserve">The #ClutterTableLayoutClass structure contains only private
+data and should be accessed using the provided API</doc>
+      <field name="parent_class">
+        <type name="LayoutManagerClass" c:type="ClutterLayoutManagerClass"/>
+      </field>
+    </record>
+    <record name="TableLayoutPrivate"
+            c:type="ClutterTableLayoutPrivate"
+            disguised="1">
+    </record>
+    <constant name="Tabovedot" value="16785002">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="TaskPane" value="269025151">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Tcaron" value="427">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Tcedilla" value="478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Terminal" value="269025152">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Terminate_Server" value="65237">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Text"
+           c:symbol-prefix="text"
+           c:type="ClutterText"
+           version="1.0"
+           parent="Actor"
+           glib:type-name="ClutterText"
+           glib:get-type="clutter_text_get_type"
+           glib:type-struct="TextClass">
+      <doc xml:whitespace="preserve">The #ClutterText struct contains only private data.</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Animatable"/>
+      <implements name="Scriptable"/>
+      <constructor name="new" c:identifier="clutter_text_new" version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterText actor. This actor can be used to
+display and edit text.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterText actor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_full"
+                   c:identifier="clutter_text_new_full"
+                   version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterText actor, using @font_name as the font
+description; @text will be used to set the contents of the actor;
+and @color will be used as the color to render @text.
+This function is equivalent to calling clutter_text_new(),
+clutter_text_set_font_name(), clutter_text_set_text() and
+clutter_text_set_color().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterText actor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string with a font description</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the contents of the actor</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the color to be used to render @text</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_text"
+                   c:identifier="clutter_text_new_with_text"
+                   version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterText actor, using @font_name as the font
+description; @text will be used to set the contents of the actor.
+This function is equivalent to calling clutter_text_new(),
+clutter_text_set_font_name(), and clutter_text_set_text().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterText actor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string with a font description</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the contents of the actor</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="activate"
+              c:identifier="clutter_text_activate"
+              version="1.0">
+        <doc xml:whitespace="preserve">Emits the #ClutterText::activate signal, if @self has been set
+as activatable using clutter_text_set_activatable().
+This function can be used to emit the ::activate signal inside
+a #ClutterActor::captured-event or #ClutterActor::key-press-event
+signal handlers before the default signal handler for the
+#ClutterText is invoked.
+and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the ::activate signal has been emitted,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="delete_chars"
+              c:identifier="clutter_text_delete_chars"
+              version="1.0">
+        <doc xml:whitespace="preserve">Deletes @n_chars inside a #ClutterText actor, starting from the
+current cursor position.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of characters to delete</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_selection"
+              c:identifier="clutter_text_delete_selection"
+              version="1.0">
+        <doc xml:whitespace="preserve">Deletes the currently selected text
+This function is only useful in subclasses of #ClutterText
+is empty, and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if text was deleted or if the text actor</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="delete_text"
+              c:identifier="clutter_text_delete_text"
+              version="1.0">
+        <doc xml:whitespace="preserve">Deletes the text inside a #ClutterText actor between @start_pos
+and @end_pos.
+The starting and ending positions are expressed in characters,
+not in bytes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">starting position</doc>
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">ending position</doc>
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_activatable"
+              c:identifier="clutter_text_get_activatable"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves whether a #ClutterText is activatable or not.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the actor is activatable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_attributes"
+              c:identifier="clutter_text_get_attributes"
+              version="1.0">
+        <doc xml:whitespace="preserve">Gets the attribute list that was set on the #ClutterText actor
+clutter_text_set_attributes(), if any.
+returned value is owned by the #ClutterText and should not be unreferenced.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the attribute list, or %NULL if none was set. The</doc>
+          <type name="Pango.AttrList" c:type="PangoAttrList*"/>
+        </return-value>
+      </method>
+      <method name="get_chars"
+              c:identifier="clutter_text_get_chars"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the contents of the #ClutterText actor between
+The positions are specified in characters, not in bytes.
+the text actor between the specified positions. Use g_free()
+to free the resources when done</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated string with the contents of</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start of text, in characters</doc>
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">end of text, in characters</doc>
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_color"
+              c:identifier="clutter_text_get_color"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the text color as set by clutter_text_set_color().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for a #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cursor_color"
+              c:identifier="clutter_text_get_cursor_color"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the color of the cursor of a #ClutterText actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for a #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cursor_position"
+              c:identifier="clutter_text_get_cursor_position"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the cursor position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the cursor position, in characters</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_cursor_size"
+              c:identifier="clutter_text_get_cursor_size"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the size of the cursor of a #ClutterText actor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the size of the cursor, in pixels</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_cursor_visible"
+              c:identifier="clutter_text_get_cursor_visible"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves whether the cursor of a #ClutterText actor is visible.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the cursor is visible</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_editable"
+              c:identifier="clutter_text_get_editable"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves whether a #ClutterText is editable or not.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the actor is editable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_ellipsize"
+              c:identifier="clutter_text_get_ellipsize"
+              version="1.0">
+        <doc xml:whitespace="preserve">Returns the ellipsizing position of a #ClutterText actor, as
+set by clutter_text_set_ellipsize().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#PangoEllipsizeMode</doc>
+          <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+        </return-value>
+      </method>
+      <method name="get_font_description"
+              c:identifier="clutter_text_get_font_description"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the #PangoFontDescription used by @self
+by the #ClutterText actor and it should not be modified or freed</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #PangoFontDescription. The returned value is owned</doc>
+          <type name="Pango.FontDescription" c:type="PangoFontDescription*"/>
+        </return-value>
+      </method>
+      <method name="get_font_name"
+              c:identifier="clutter_text_get_font_name"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the font name as set by clutter_text_set_font_name().
+string is owned by the #ClutterText actor and should not be
+modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the font name. The returned</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_justify"
+              c:identifier="clutter_text_get_justify"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves whether the #ClutterText actor should justify its contents
+on both margins.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the text should be justified</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_layout"
+              c:identifier="clutter_text_get_layout"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the current #PangoLayout used by a #ClutterText actor.
+the #ClutterText actor and should not be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoLayout. The returned object is owned by</doc>
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </return-value>
+      </method>
+      <method name="get_line_alignment"
+              c:identifier="clutter_text_get_line_alignment"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the alignment of a #ClutterText, as set by
+clutter_text_set_line_alignment().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoAlignment</doc>
+          <type name="Pango.Alignment" c:type="PangoAlignment"/>
+        </return-value>
+      </method>
+      <method name="get_line_wrap"
+              c:identifier="clutter_text_get_line_wrap"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the value set using clutter_text_set_line_wrap().
+its contents</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterText actor should wrap</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_line_wrap_mode"
+              c:identifier="clutter_text_get_line_wrap_mode"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the line wrap mode used by the #ClutterText actor.
+See clutter_text_set_line_wrap_mode ().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the wrap mode used by the #ClutterText</doc>
+          <type name="Pango.WrapMode" c:type="PangoWrapMode"/>
+        </return-value>
+      </method>
+      <method name="get_max_length"
+              c:identifier="clutter_text_get_max_length"
+              version="1.0">
+        <doc xml:whitespace="preserve">Gets the maximum length of text that can be set into a text actor.
+See clutter_text_set_max_length().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the maximum number of characters.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_password_char"
+              c:identifier="clutter_text_get_password_char"
+              version="1.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Retrieves the character to use in place of the actual text
+as set by clutter_text_set_password_char().
+character is not set</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a Unicode character or 0 if the password</doc>
+          <type name="gunichar" c:type="gunichar"/>
+        </return-value>
+      </method>
+      <method name="get_selectable"
+              c:identifier="clutter_text_get_selectable"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves whether a #ClutterText is selectable or not.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the actor is selectable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_selection"
+              c:identifier="clutter_text_get_selection"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the currently selected text.
+selected text, or %NULL. Use g_free() to free the returned
+string.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated string containing the currently</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_selection_bound"
+              c:identifier="clutter_text_get_selection_bound"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the other end of the selection of a #ClutterText actor,
+in characters from the current cursor position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the position of the other end of the selection</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_selection_color"
+              c:identifier="clutter_text_get_selection_color"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the color of the selection of a #ClutterText actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for a #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_single_line_mode"
+              c:identifier="clutter_text_get_single_line_mode"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves whether the #ClutterText actor is in single line mode.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterText actor is in single line mode</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_text"
+              c:identifier="clutter_text_get_text"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves a pointer to the current contents of a #ClutterText
+actor.
+If you need a copy of the contents for manipulating, either
+use g_strdup() on the returned string, or use:
+|[
+copy = clutter_text_get_chars (text, 0, -1);
+]|
+Which will return a newly allocated string.
+is owned by the #ClutterText actor and should never be
+modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the contents of the actor. The returned string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_use_markup"
+              c:identifier="clutter_text_get_use_markup"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves whether the contents of the #ClutterText actor should be
+parsed for the Pango text markup.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the contents will be parsed for markup</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="insert_text"
+              c:identifier="clutter_text_insert_text"
+              version="1.0">
+        <doc xml:whitespace="preserve">Inserts @text into a #ClutterActor at the given position.
+If @position is a negative number, the text will be appended
+at the end of the current contents of the #ClutterText.
+The position is expressed in characters, not in bytes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text to be inserted</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position of the insertion, or -1</doc>
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_unichar"
+              c:identifier="clutter_text_insert_unichar"
+              version="1.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Inserts @wc at the current cursor position of a
+#ClutterText actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a Unicode character</doc>
+            <type name="gunichar" c:type="gunichar"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="position_to_coords"
+              c:identifier="clutter_text_position_to_coords"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the coordinates of the given @position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the conversion was successful</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position in characters</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the X coordinate, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the Y coordinate, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="line_height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the line height, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_activatable"
+              c:identifier="clutter_text_set_activatable"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether a #ClutterText actor should be activatable.
+An activatable #ClutterText actor will emit the #ClutterText::activate
+signal whenever the 'Enter' (or 'Return') key is pressed; if it is not
+activatable, a new line will be appended to the current content.
+An activatable #ClutterText must also be set as editable using
+clutter_text_set_editable().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="activatable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the #ClutterText actor should be activatable</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attributes"
+              c:identifier="clutter_text_set_attributes"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the attributes list that are going to be applied to the
+#ClutterText contents.
+The #ClutterText actor will take a reference on the #PangoAttrList
+passed to this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attrs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoAttrList or %NULL to unset the attributes</doc>
+            <type name="Pango.AttrList" c:type="PangoAttrList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_color"
+              c:identifier="clutter_text_set_color"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the color of the contents of a #ClutterText actor.
+The overall opacity of the #ClutterText actor will be the
+result of the alpha value of @color and the composited
+opacity of the actor itself on the scenegraph, as returned
+by clutter_actor_get_paint_opacity().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor_color"
+              c:identifier="clutter_text_set_cursor_color"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the color of the cursor of a #ClutterText actor.
+If @color is %NULL, the cursor color will be the same as the
+text color.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the color of the cursor, or %NULL to unset it</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor_position"
+              c:identifier="clutter_text_set_cursor_position"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the cursor of a #ClutterText actor at @position.
+The position is expressed in characters, not in bytes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new cursor position, in characters</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor_size"
+              c:identifier="clutter_text_set_cursor_size"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the size of the cursor of a #ClutterText. The cursor
+will only be visible if the #ClutterText:cursor-visible property
+is set to %TRUE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of the cursor, in pixels, or -1 to use the default value</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor_visible"
+              c:identifier="clutter_text_set_cursor_visible"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether the cursor of a #ClutterText actor should be
+visible or not.
+The color of the cursor will be the same as the text color
+unless clutter_text_set_cursor_color() has been called.
+The size of the cursor can be set using clutter_text_set_cursor_size().
+The position of the cursor can be changed programmatically using
+clutter_text_set_cursor_position().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cursor_visible" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the cursor should be visible</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_editable"
+              c:identifier="clutter_text_set_editable"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether the #ClutterText actor should be editable.
+An editable #ClutterText with key focus set using
+clutter_actor_grab_key_focus() or clutter_stage_take_key_focus()
+will receive key events and will update its contents accordingly.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="editable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the #ClutterText should be editable</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_ellipsize"
+              c:identifier="clutter_text_set_ellipsize"
+              version="1.0">
+        <doc xml:whitespace="preserve">text if there is not enough space to render the entire contents
+of a #ClutterText actor</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoEllipsizeMode</doc>
+            <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_font_description"
+              c:identifier="clutter_text_set_font_description"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets @font_desc as the font description for a #ClutterText
+The #PangoFontDescription is copied by the #ClutterText actor
+so you can safely call pango_font_description_free() on it after
+calling this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_desc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoFontDescription</doc>
+            <type name="Pango.FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_font_name"
+              c:identifier="clutter_text_set_font_name"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the font used by a #ClutterText. The @font_name string
+must either be %NULL, which means that the font name from the
+default #ClutterBackend will be used; or be something that can
+be parsed by the pango_font_description_from_string() function,
+like:
+|[
+clutter_text_set_font_name (text, "Sans 10pt");
+clutter_text_set_font_name (text, "Serif 16px");
+clutter_text_set_font_name (text, "Helvetica 10");
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a font name, or %NULL to set the default font name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_justify"
+              c:identifier="clutter_text_set_justify"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether the text of the #ClutterText actor should be justified
+on both margins. This setting is ignored if Clutter is compiled
+against Pango &amp;lt; 1.18.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="justify" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the text should be justified</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_line_alignment"
+              c:identifier="clutter_text_set_line_alignment"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the way that the lines of a wrapped label are aligned with
+respect to each other. This does not affect the overall alignment
+of the label within its allocated or specified width.
+To align a #ClutterText actor you should add it to a container
+that supports alignment, or use the anchor point.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alignment" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #PangoAlignment</doc>
+            <type name="Pango.Alignment" c:type="PangoAlignment"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_line_wrap"
+              c:identifier="clutter_text_set_line_wrap"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether the contents of a #ClutterText actor should wrap,
+if they don't fit the size assigned to the actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="line_wrap" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the contents should wrap</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_line_wrap_mode"
+              c:identifier="clutter_text_set_line_wrap_mode"
+              version="1.0">
+        <doc xml:whitespace="preserve">If line wrapping is enabled (see clutter_text_set_line_wrap()) this
+function controls how the line wrapping is performed. The default is
+%PANGO_WRAP_WORD which means wrap on word boundaries.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wrap_mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the line wrapping mode</doc>
+            <type name="Pango.WrapMode" c:type="PangoWrapMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_markup"
+              c:identifier="clutter_text_set_markup"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets @markup as the contents of a #ClutterText.
+This is a convenience function for setting a string containing
+Pango markup, and it is logically equivalent to:
+|[
+clutter_text_set_text (CLUTTER_TEXT (actor), markup);
+clutter_text_set_use_markup (CLUTTER_TEXT (actor), TRUE);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="markup" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing Pango markup. Passing %NULL is the same as passing "" (the empty string)</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_max_length"
+              c:identifier="clutter_text_set_max_length"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the maximum allowed length of the contents of the actor. If the
+current contents are longer than the given length, then they will be
+truncated to fit.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="max" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the maximum number of characters allowed in the text actor; 0 to disable or -1 to set the length of the current string</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_password_char"
+              c:identifier="clutter_text_set_password_char"
+              version="1.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the character to use in place of the actual text in a
+password text actor.
+If @wc is 0 the text will be displayed as it is entered in the
+#ClutterText actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a Unicode character, or 0 to unset the password character</doc>
+            <type name="gunichar" c:type="gunichar"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_preedit_string"
+              c:identifier="clutter_text_set_preedit_string"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets, or unsets, the pre-edit string. This function is useful
+for input methods to display a string (with eventual specific
+Pango attributes) before it is entered inside the #ClutterText
+buffer.
+The preedit string and attributes are ignored if the #ClutterText
+actor is not editable.
+This function should not be used by applications</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="preedit_str"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the pre-edit string, or %NULL to unset it</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="preedit_attrs"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the pre-edit string attributes</doc>
+            <type name="Pango.AttrList" c:type="PangoAttrList*"/>
+          </parameter>
+          <parameter name="cursor_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the cursor position for the pre-edit string</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_selectable"
+              c:identifier="clutter_text_set_selectable"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether a #ClutterText actor should be selectable.
+A selectable #ClutterText will allow selecting its contents using
+the pointer or the keyboard.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="selectable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the #ClutterText actor should be selectable</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_selection"
+              c:identifier="clutter_text_set_selection"
+              version="1.0">
+        <doc xml:whitespace="preserve">Selects the region of text between @start_pos and @end_pos.
+This function changes the position of the cursor to match</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start of the selection, in characters</doc>
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">end of the selection, in characters</doc>
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_selection_bound"
+              c:identifier="clutter_text_set_selection_bound"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the other end of the selection, starting from the current
+cursor position.
+If @selection_bound is -1, the selection unset.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="selection_bound" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position of the end of the selection, in characters</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_selection_color"
+              c:identifier="clutter_text_set_selection_color"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the color of the selection of a #ClutterText actor.
+If @color is %NULL, the selection color will be the same as the
+cursor color, or if no cursor color is set either then it will be
+the same as the text color.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the color of the selection, or %NULL to unset it</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_single_line_mode"
+              c:identifier="clutter_text_set_single_line_mode"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether a #ClutterText actor should be in single line mode
+or not. Only editable #ClutterText&lt;!-- --&gt;s can be in single line
+mode.
+A text actor in single line mode will not wrap text and will clip
+the the visible area to the predefined size. The contents of the
+text actor will scroll to display the end of the text if its length
+is bigger than the allocated width.
+When setting the single line mode the #ClutterText:activatable
+property is also set as a side effect. Instead of entering a new
+line character, the text actor will emit the #ClutterText::activate
+signal.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="single_line" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to enable single line mode</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_text"
+              c:identifier="clutter_text_set_text"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the contents of a #ClutterText actor.
+If the #ClutterText:use-markup property was set to %TRUE it
+will be reset to %FALSE as a side effect. If you want to
+maintain the #ClutterText:use-markup you should use the
+clutter_text_set_markup() function instead</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text to set. Passing %NULL is the same as passing "" (the empty string)</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_markup"
+              c:identifier="clutter_text_set_use_markup"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether the contents of the #ClutterText actor contains markup
+in &lt;link linkend="PangoMarkupFormat"&gt;Pango's text markup language&lt;/link&gt;.
+Setting #ClutterText:use-markup on an editable #ClutterText will
+not have any effect except hiding the markup.
+See also #ClutterText:use-markup.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the text should be parsed for markup.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="activatable"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Toggles whether return invokes the activate signal or not.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="attributes"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A list of #PangoStyleAttribute&lt;!-- --&gt;s to be applied to the
+contents of the #ClutterText actor.</doc>
+        <type name="Pango.AttrList"/>
+      </property>
+      <property name="color"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The color used to render the text.</doc>
+        <type name="Color"/>
+      </property>
+      <property name="cursor-color"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The color of the cursor.</doc>
+        <type name="Color"/>
+      </property>
+      <property name="cursor-color-set"
+                version="1.0"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Will be set to %TRUE if #ClutterText:cursor-color has been set.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="cursor-size"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The size of the cursor, in pixels. If set to -1 the size used will
+be the default cursor size of 2 pixels.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="cursor-visible"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the input cursor is visible or not, it will only be visible
+if both #ClutterText:cursor-visible and #ClutterText:editable are
+set to %TRUE.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="editable"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether key events delivered to the actor causes editing.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="ellipsize"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The preferred place to ellipsize the contents of the #ClutterText actor</doc>
+        <type name="Pango.EllipsizeMode"/>
+      </property>
+      <property name="font-description"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #PangoFontDescription that should be used by the #ClutterText
+If you have a string describing the font then you should look at
+#ClutterText:font-name instead</doc>
+        <type name="Pango.FontDescription"/>
+      </property>
+      <property name="font-name"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The font to be used by the #ClutterText, as a string
+that can be parsed by pango_font_description_from_string().
+If set to %NULL, the default system font will be used instead.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="justify"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the contents of the #ClutterText should be justified
+on both margins.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="line-alignment"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The preferred alignment for the text. This property controls
+the alignment of multi-line paragraphs.</doc>
+        <type name="Pango.Alignment"/>
+      </property>
+      <property name="line-wrap"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether to wrap the lines of #ClutterText:text if the contents
+exceed the available allocation. The wrapping strategy is
+controlled by the #ClutterText:line-wrap-mode property.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="line-wrap-mode"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If #ClutterText:line-wrap is set to %TRUE, this property will
+control how the text is wrapped.</doc>
+        <type name="Pango.WrapMode"/>
+      </property>
+      <property name="max-length"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The maximum length of the contents of the #ClutterText actor.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="password-char"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If non-zero, the character that should be used in place of
+the actual text in a password text actor.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="position"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The current input cursor position. -1 is taken to be the end of the text</doc>
+        <type name="gint"/>
+      </property>
+      <property name="selectable"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether it is possible to select text, either using the pointer
+or the keyboard.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="selection-bound"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The current input cursor position. -1 is taken to be the end of the text</doc>
+        <type name="gint"/>
+      </property>
+      <property name="selection-color"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The color of the selection.</doc>
+        <type name="Color"/>
+      </property>
+      <property name="selection-color-set"
+                version="1.0"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Will be set to %TRUE if #ClutterText:selection-color has been set.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="single-line-mode"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterText actor should be in single line mode
+or not. A single line #ClutterText actor will only contain a
+single line of text, scrolling it in case its length is bigger
+than the allocated size.
+Setting this property will also set the #ClutterText:activatable
+property as a side-effect.
+The #ClutterText:single-line-mode property is used only if the
+#ClutterText:editable property is set to %TRUE.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="text"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The text to render inside the actor.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="use-markup"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the text includes Pango markup.
+For more informations about the Pango markup format, see
+pango_layout_set_markup() in the Pango documentation.
+&lt;note&gt;It is not possible to round-trip this property between
+%TRUE and %FALSE. Once a string with markup has been set on
+a #ClutterText actor with :use-markup set to %TRUE, the markup
+is stripped from the string.&lt;/note&gt;</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv">
+        <type name="TextPrivate" c:type="ClutterTextPrivate*"/>
+      </field>
+      <glib:signal name="activate">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="cursor-event" version="1.0">
+        <doc xml:whitespace="preserve">The ::cursor-event signal is emitted whenever the cursor position
+changes inside a #ClutterText actor. Inside @geometry it is stored
+the current position and size of the cursor, relative to the actor
+itself.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the coordinates of the cursor</doc>
+            <type name="Geometry"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="delete-text" version="1.2">
+        <doc xml:whitespace="preserve">This signal is emitted when text is deleted from the actor by
+the user. It is emitted before @self text changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the starting position</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the end position</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="insert-text" version="1.2">
+        <doc xml:whitespace="preserve">This signal is emitted when text is inserted into the actor by
+the user. It is emitted before @self text changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new text to insert</doc>
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of the new text, in bytes, or -1 if new_text is nul-terminated</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position, in characters, at which to insert the new text. this is an in-out parameter.  After the signal emission is finished, it should point after the newly inserted text.</doc>
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="text-changed" version="1.0">
+        <doc xml:whitespace="preserve">The ::text-changed signal is emitted after @actor's text changes</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="TextClass"
+            c:type="ClutterTextClass"
+            glib:is-gtype-struct-for="Text"
+            version="1.0">
+      <doc xml:whitespace="preserve">The #ClutterTextClass struct contains only private data.</doc>
+      <field name="parent_class">
+        <type name="ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="text_changed">
+        <callback name="text_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Text" c:type="ClutterText*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate">
+        <callback name="activate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Text" c:type="ClutterText*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cursor_event">
+        <callback name="cursor_event">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Text" c:type="ClutterText*"/>
+            </parameter>
+            <parameter name="geometry" transfer-ownership="none">
+              <type name="Geometry" c:type="ClutterGeometry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_reserved1" introspectable="0">
+        <callback name="_clutter_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved2" introspectable="0">
+        <callback name="_clutter_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved3" introspectable="0">
+        <callback name="_clutter_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved4" introspectable="0">
+        <callback name="_clutter_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved5" introspectable="0">
+        <callback name="_clutter_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved6" introspectable="0">
+        <callback name="_clutter_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved7" introspectable="0">
+        <callback name="_clutter_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved8" introspectable="0">
+        <callback name="_clutter_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="TextDirection"
+                 version="1.2"
+                 glib:type-name="ClutterTextDirection"
+                 glib:get-type="clutter_text_direction_get_type"
+                 c:type="ClutterTextDirection">
+      <doc xml:whitespace="preserve">The text direction to be used by #ClutterActor&lt;!-- --&gt;s</doc>
+      <member name="default"
+              value="0"
+              c:identifier="CLUTTER_TEXT_DIRECTION_DEFAULT"
+              glib:nick="default"/>
+      <member name="ltr"
+              value="1"
+              c:identifier="CLUTTER_TEXT_DIRECTION_LTR"
+              glib:nick="ltr"/>
+      <member name="rtl"
+              value="2"
+              c:identifier="CLUTTER_TEXT_DIRECTION_RTL"
+              glib:nick="rtl"/>
+    </enumeration>
+    <record name="TextPrivate" c:type="ClutterTextPrivate" disguised="1">
+    </record>
+    <class name="Texture"
+           c:symbol-prefix="texture"
+           c:type="ClutterTexture"
+           version="0.1"
+           parent="Actor"
+           glib:type-name="ClutterTexture"
+           glib:get-type="clutter_texture_get_type"
+           glib:type-struct="TextureClass">
+      <doc xml:whitespace="preserve">The #ClutterTexture structure contains only private data
+and should be accessed using the provided API</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Animatable"/>
+      <implements name="Scriptable"/>
+      <constructor name="new" c:identifier="clutter_texture_new">
+        <doc xml:whitespace="preserve">Creates a new empty #ClutterTexture object.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A newly created #ClutterTexture object.</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_actor"
+                   c:identifier="clutter_texture_new_from_actor"
+                   version="0.6">
+        <doc xml:whitespace="preserve">Creates a new #ClutterTexture object with its source a prexisting
+actor (and associated children). The textures content will contain
+'live' redirected output of the actors scene.
+Note this function is intented as a utility call for uniformly applying
+shaders to groups and other potential visual effects. It requires that
+the %CLUTTER_FEATURE_OFFSCREEN feature is supported by the current backend
+and the target system.
+Some tips on usage:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;
+&lt;para&gt;The source actor must be made visible (i.e by calling
+#clutter_actor_show).&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;The source actor must have a parent in order for it to be
+allocated a size from the layouting mechanism. If the source
+actor does not have a parent when this function is called then
+the ClutterTexture will adopt it and allocate it at its
+preferred size. Using this you can clone an actor that is
+otherwise not displayed. Because of this feature if you do
+intend to display the source actor then you must make sure that
+the actor is parented before calling
+clutter_texture_new_from_actor() or that you unparent it before
+adding it to a container.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;When getting the image for the clone texture, Clutter
+will attempt to render the source actor exactly as it would
+appear if it was rendered on screen. The source actor's parent
+transformations are taken into account. Therefore if your
+source actor is rotated along the X or Y axes so that it has
+some depth, the texture will appear differently depending on
+the on-screen location of the source actor. While painting the
+source actor, Clutter will set up a temporary asymmetric
+perspective matrix as the projection matrix so that the source
+actor will be projected as if a small section of the screen was
+being viewed. Before version 0.8.2, an orthogonal identity
+projection was used which meant that the source actor would be
+clipped if any part of it was not on the zero Z-plane.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;Avoid reparenting the source with the created texture.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;A group can be padded with a transparent rectangle as to
+provide a border to contents for shader output (blurring text
+for example).&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;The texture will automatically resize to contain a further
+transformed source. However, this involves overhead and can be
+avoided by placing the source actor in a bounding group
+sized large enough to contain any child tranformations.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;Uploading pixel data to the texture (e.g by using
+clutter_actor_set_from_file()) will destroy the offscreen texture data
+and end redirection.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;cogl_texture_get_data() with the handle returned by
+clutter_texture_get_cogl_texture() can be used to read the
+offscreen texture pixels into a pixbuf.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A newly created #ClutterTexture object, or %NULL on failure.</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A source #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_file"
+                   c:identifier="clutter_texture_new_from_file"
+                   version="0.8"
+                   throws="1">
+        <doc xml:whitespace="preserve">Creates a new ClutterTexture actor to display the image contained a
+file. If the image failed to load then NULL is returned and @error
+is set.
+error.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A newly created #ClutterTexture object or NULL on</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The name of an image file to load.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_base_size"
+              c:identifier="clutter_texture_get_base_size">
+        <doc xml:whitespace="preserve">Gets the size in pixels of the untransformed underlying image</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the width, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the height, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cogl_material"
+              c:identifier="clutter_texture_get_cogl_material"
+              version="1.0">
+        <doc xml:whitespace="preserve">Returns a handle to the underlying COGL material used for drawing
+the actor.
+material is owned by the #ClutterTexture and it should not be
+unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a handle for a #CoglMaterial. The</doc>
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="get_cogl_texture"
+              c:identifier="clutter_texture_get_cogl_texture"
+              version="0.8">
+        <doc xml:whitespace="preserve">Retrieves the handle to the underlying COGL texture used for drawing
+the actor. No extra reference is taken so if you need to keep the
+handle then you should call cogl_handle_ref() on it.
+The texture handle returned is the first layer of the material
+handle used by the #ClutterTexture. If you need to access the other
+layers you should use clutter_texture_get_cogl_material() instead
+and use the #CoglMaterial API.
+handle is owned by the #ClutterTexture and it should not be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for the texture. The returned</doc>
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="get_filter_quality"
+              c:identifier="clutter_texture_get_filter_quality">
+        <return-value transfer-ownership="none">
+          <type name="TextureQuality" c:type="ClutterTextureQuality"/>
+        </return-value>
+      </method>
+      <method name="get_keep_aspect_ratio"
+              c:identifier="clutter_texture_get_keep_aspect_ratio"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the value set using clutter_texture_set_keep_aspect_ratio()
+aspect ratio of the underlying image</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterTexture should maintain the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_load_async"
+              c:identifier="clutter_texture_get_load_async"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the value set using clutter_texture_set_load_async()
+disk asynchronously</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterTexture should load the data from</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_load_data_async"
+              c:identifier="clutter_texture_get_load_data_async"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the value set by clutter_texture_set_load_data_async()
+data from a file asynchronously</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterTexture should load the image</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_max_tile_waste"
+              c:identifier="clutter_texture_get_max_tile_waste">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_pick_with_alpha"
+              c:identifier="clutter_texture_get_pick_with_alpha"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the value set by clutter_texture_set_load_data_async()
+using the alpha channel when picking.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterTexture should define its shape</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_pixel_format"
+              c:identifier="clutter_texture_get_pixel_format"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the pixel format used by @texture. This is
+equivalent to:
+|[
+handle = clutter_texture_get_pixel_format (texture);
+if (handle != COGL_INVALID_HANDLE)
+format = cogl_texture_get_format (handle);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglPixelFormat value</doc>
+          <type name="Cogl.PixelFormat" c:type="CoglPixelFormat"/>
+        </return-value>
+      </method>
+      <method name="get_repeat"
+              c:identifier="clutter_texture_get_repeat"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the horizontal and vertical repeat values set
+using clutter_texture_set_repeat()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="repeat_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the horizontal repeat</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="repeat_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the vertical repeat</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sync_size"
+              c:identifier="clutter_texture_get_sync_size"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the value set with clutter_texture_set_sync_size()
+preferred size of the underlying image data</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterTexture should have the same</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_area_from_rgb_data"
+              c:identifier="clutter_texture_set_area_from_rgb_data"
+              version="0.6"
+              throws="1">
+        <doc xml:whitespace="preserve">Updates a sub-region of the pixel data in a #ClutterTexture.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on failure.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Image data in RGB type colorspace.</doc>
+            <type name="guint8" c:type="guchar*"/>
+          </parameter>
+          <parameter name="has_alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Set to TRUE if image data has an alpha channel.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of upper left corner of region to update.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of upper left corner of region to update.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Width in pixels of region to update.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Height in pixels of region to update.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="rowstride" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Distance in bytes between row starts on source buffer.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="bpp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">bytes per pixel (Currently only 3 and 4 supported, depending on @has_alpha)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#ClutterTextureFlags</doc>
+            <type name="TextureFlags" c:type="ClutterTextureFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cogl_material"
+              c:identifier="clutter_texture_set_cogl_material"
+              version="0.8">
+        <doc xml:whitespace="preserve">Replaces the underlying Cogl material drawn by this actor with
+handle is no longer needed it should be deref'd with
+cogl_handle_unref. Texture data is attached to the material so
+calling this function also replaces the Cogl
+texture. #ClutterTexture requires that the material have a texture
+layer so you should set one on the material before calling this
+function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cogl_material" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A CoglHandle for a material</doc>
+            <type name="Cogl.Handle" c:type="CoglHandle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cogl_texture"
+              c:identifier="clutter_texture_set_cogl_texture">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cogl_tex" transfer-ownership="none">
+            <type name="Cogl.Handle" c:type="CoglHandle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_filter_quality"
+              c:identifier="clutter_texture_set_filter_quality"
+              version="0.8">
+        <doc xml:whitespace="preserve">Sets the filter quality when scaling a texture. The quality is an
+enumeration currently the following values are supported:
+%CLUTTER_TEXTURE_QUALITY_LOW which is fast but only uses nearest neighbour
+interpolation. %CLUTTER_TEXTURE_QUALITY_MEDIUM which is computationally a
+bit more expensive (bilinear interpolation), and
+%CLUTTER_TEXTURE_QUALITY_HIGH which uses extra texture memory resources to
+improve scaled down rendering as well (by using mipmaps). The default value
+is %CLUTTER_TEXTURE_QUALITY_MEDIUM.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter_quality" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new filter quality value</doc>
+            <type name="TextureQuality" c:type="ClutterTextureQuality"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_file"
+              c:identifier="clutter_texture_set_from_file"
+              version="0.8"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets the #ClutterTexture image data from an image file. In case of
+failure, %FALSE is returned and @error is set.
+If #ClutterTexture:load-async is set to %TRUE, this function
+will return as soon as possible, and the actual image loading
+from disk will be performed asynchronously. #ClutterTexture::size-change
+will be emitten when the size of the texture is available and
+#ClutterTexture::load-finished will be emitted when the image has been
+loaded or if an error occurred.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the image was successfully loaded and set</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The filename of the image in GLib file name encoding</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_rgb_data"
+              c:identifier="clutter_texture_set_from_rgb_data"
+              version="0.4."
+              throws="1">
+        <doc xml:whitespace="preserve">Sets #ClutterTexture image data.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on failure.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Image data in RGBA type colorspace.</doc>
+            <type name="guint8" c:type="guchar*"/>
+          </parameter>
+          <parameter name="has_alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Set to TRUE if image data has an alpha channel.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Width in pixels of image data.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Height in pixels of image data</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="rowstride" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Distance in bytes between row starts.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="bpp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">bytes per pixel (Currently only 3 and 4 supported, depending on @has_alpha)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#ClutterTextureFlags</doc>
+            <type name="TextureFlags" c:type="ClutterTextureFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_yuv_data"
+              c:identifier="clutter_texture_set_from_yuv_data"
+              version="0.4"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets a #ClutterTexture from YUV image data. If an error occurred,
+%FALSE is returned and @error is set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the texture was successfully updated</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Image data in YUV type colorspace.</doc>
+            <type name="guint8" c:type="guchar*"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Width in pixels of image data.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Height in pixels of image data</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#ClutterTextureFlags</doc>
+            <type name="TextureFlags" c:type="ClutterTextureFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_keep_aspect_ratio"
+              c:identifier="clutter_texture_set_keep_aspect_ratio"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether @texture should have a preferred size maintaining
+the aspect ratio of the underlying image</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="keep_aspect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to maintain aspect ratio</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_load_async"
+              c:identifier="clutter_texture_set_load_async"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether @texture should use a worker thread to load the data
+from disk asynchronously. Setting @load_async to %TRUE will make
+clutter_texture_set_from_file() return immediately.
+See the #ClutterTexture:load-async property documentation, and
+clutter_texture_set_load_data_async().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="load_async" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the texture should asynchronously load data from a filename</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_load_data_async"
+              c:identifier="clutter_texture_set_load_data_async"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether @texture should use a worker thread to load the data
+from disk asynchronously. Setting @load_async to %TRUE will make
+clutter_texture_set_from_file() block until the #ClutterTexture has
+determined the width and height of the image data.
+See the #ClutterTexture:load-async property documentation, and
+clutter_texture_set_load_async().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="load_async" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the texture should asynchronously load data from a filename</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pick_with_alpha"
+              c:identifier="clutter_texture_set_pick_with_alpha"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets whether @texture should have it's shape defined by the alpha
+channel when picking.
+Be aware that this is a bit more costly than the default picking
+due to the texture lookup, extra test against the alpha value and
+the fact that it will also interrupt the batching of geometry done
+internally.
+Also there is currently no control over the threshold used to
+determine what value of alpha is considered pickable, and so only
+fully opaque parts of the texture will react to picking.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pick_with_alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the alpha channel should affect the picking shape</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_repeat"
+              c:identifier="clutter_texture_set_repeat"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether the @texture should repeat horizontally or
+vertically when the actor size is bigger than the image size</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="repeat_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the texture should repeat horizontally</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="repeat_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the texture should repeat vertically</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sync_size"
+              c:identifier="clutter_texture_set_sync_size"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether @texture should have the same preferred size as the
+underlying image data.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sync_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the texture should have the same size of the underlying image data</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="cogl-material"
+                introspectable="0"
+                writable="1"
+                transfer-ownership="none">
+        <type/>
+      </property>
+      <property name="cogl-texture"
+                introspectable="0"
+                writable="1"
+                transfer-ownership="none">
+        <type/>
+      </property>
+      <property name="disable-slicing"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="filename" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The path of the file containing the image data to be displayed by
+the texture.
+This property is unset when using the clutter_texture_set_from_*_data()
+family of functions.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="filter-quality"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="TextureQuality"/>
+      </property>
+      <property name="keep-aspect-ratio"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="load-async"
+                version="1.0"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Tries to load a texture from a filename by using a local thread to perform
+the read operations. The initially created texture has dimensions 0x0 when
+the true size becomes available the #ClutterTexture::size-change signal is
+emitted and when the image has completed loading the
+#ClutterTexture::load-finished signal is emitted.
+Threading is only enabled if g_thread_init() has been called prior to
+clutter_init(), otherwise #ClutterTexture will use the main loop to load
+the image.
+The upload of the texture data on the GL pipeline is not asynchronous, as
+it must be performed from within the same thread that called
+clutter_main().</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="load-data-async"
+                version="1.0"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Like #ClutterTexture:load-async but loads the width and height
+synchronously causing some blocking.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="pick-with-alpha" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="pixel-format" transfer-ownership="none">
+        <type name="Cogl.PixelFormat"/>
+      </property>
+      <property name="repeat-x" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="repeat-y" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="sync-size" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="tile-waste" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <field name="parent">
+        <type name="Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv">
+        <type name="TexturePrivate" c:type="ClutterTexturePrivate*"/>
+      </field>
+      <glib:signal name="load-finished" version="1.0">
+        <doc xml:whitespace="preserve">The ::load-finished signal is emitted when a texture load has
+completed. If there was an error during loading, @error will
+be set, otherwise it will be %NULL</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A set error, or %NULL</doc>
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="pixbuf-change">
+        <doc xml:whitespace="preserve">The ::pixbuf-change signal is emitted each time the pixbuf
+used by @texture changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="size-change">
+        <doc xml:whitespace="preserve">The ::size-change signal is emitted each time the size of the
+pixbuf used by @texture changes.  The new size is given as
+argument to the callback.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the width of the new texture</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the height of the new texture</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="TextureClass"
+            c:type="ClutterTextureClass"
+            glib:is-gtype-struct-for="Texture"
+            version="0.1">
+      <doc xml:whitespace="preserve">The #ClutterTextureClass structure contains only private data</doc>
+      <field name="parent_class">
+        <type name="ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="size_change">
+        <callback name="size_change">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="texture" transfer-ownership="none">
+              <type name="Texture" c:type="ClutterTexture*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pixbuf_change">
+        <callback name="pixbuf_change">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="texture" transfer-ownership="none">
+              <type name="Texture" c:type="ClutterTexture*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="load_finished">
+        <callback name="load_finished">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="texture" transfer-ownership="none">
+              <type name="Texture" c:type="ClutterTexture*"/>
+            </parameter>
+            <parameter name="error" transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_texture1" introspectable="0">
+        <callback name="_clutter_texture1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_texture2" introspectable="0">
+        <callback name="_clutter_texture2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_texture3" introspectable="0">
+        <callback name="_clutter_texture3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_texture4" introspectable="0">
+        <callback name="_clutter_texture4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_texture5" introspectable="0">
+        <callback name="_clutter_texture5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="TextureError"
+                 version="0.4"
+                 glib:type-name="ClutterTextureError"
+                 glib:get-type="clutter_texture_error_get_type"
+                 c:type="ClutterTextureError"
+                 glib:error-quark="clutter_texture_error_quark">
+      <doc xml:whitespace="preserve">Error enumeration for #ClutterTexture</doc>
+      <member name="out_of_memory"
+              value="0"
+              c:identifier="CLUTTER_TEXTURE_ERROR_OUT_OF_MEMORY"
+              glib:nick="out-of-memory"/>
+      <member name="no_yuv"
+              value="1"
+              c:identifier="CLUTTER_TEXTURE_ERROR_NO_YUV"
+              glib:nick="no-yuv"/>
+      <member name="bad_format"
+              value="2"
+              c:identifier="CLUTTER_TEXTURE_ERROR_BAD_FORMAT"
+              glib:nick="bad-format"/>
+    </enumeration>
+    <bitfield name="TextureFlags"
+              version="0.4"
+              glib:type-name="ClutterTextureFlags"
+              glib:get-type="clutter_texture_flags_get_type"
+              c:type="ClutterTextureFlags">
+      <doc xml:whitespace="preserve">Flags for clutter_texture_set_from_rgb_data() and
+clutter_texture_set_from_yuv_data().</doc>
+      <member name="none"
+              value="0"
+              c:identifier="CLUTTER_TEXTURE_NONE"
+              glib:nick="none"/>
+      <member name="rgb_flag_bgr"
+              value="2"
+              c:identifier="CLUTTER_TEXTURE_RGB_FLAG_BGR"
+              glib:nick="rgb-flag-bgr"/>
+      <member name="rgb_flag_premult"
+              value="4"
+              c:identifier="CLUTTER_TEXTURE_RGB_FLAG_PREMULT"
+              glib:nick="rgb-flag-premult"/>
+      <member name="yuv_flag_yuv2"
+              value="8"
+              c:identifier="CLUTTER_TEXTURE_YUV_FLAG_YUV2"
+              glib:nick="yuv-flag-yuv2"/>
+    </bitfield>
+    <record name="TexturePrivate" c:type="ClutterTexturePrivate" disguised="1">
+    </record>
+    <enumeration name="TextureQuality"
+                 version="0.8"
+                 glib:type-name="ClutterTextureQuality"
+                 glib:get-type="clutter_texture_quality_get_type"
+                 c:type="ClutterTextureQuality">
+      <doc xml:whitespace="preserve">Enumaration controlling the texture quality.</doc>
+      <member name="low"
+              value="0"
+              c:identifier="CLUTTER_TEXTURE_QUALITY_LOW"
+              glib:nick="low"/>
+      <member name="medium"
+              value="1"
+              c:identifier="CLUTTER_TEXTURE_QUALITY_MEDIUM"
+              glib:nick="medium"/>
+      <member name="high"
+              value="2"
+              c:identifier="CLUTTER_TEXTURE_QUALITY_HIGH"
+              glib:nick="high"/>
+    </enumeration>
+    <constant name="Thai_baht" value="3551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_bobaimai" value="3514">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_chochan" value="3496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_chochang" value="3498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_choching" value="3497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_chochoe" value="3500">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_dochada" value="3502">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_dodek" value="3508">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_fofa" value="3517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_fofan" value="3519">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_hohip" value="3531">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_honokhuk" value="3534">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_khokhai" value="3490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_khokhon" value="3493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_khokhuat" value="3491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_khokhwai" value="3492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_khorakhang" value="3494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_kokai" value="3489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_lakkhangyao" value="3557">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_lekchet" value="3575">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_lekha" value="3573">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_lekhok" value="3574">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_lekkao" value="3577">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_leknung" value="3569">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_lekpaet" value="3576">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_leksam" value="3571">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_leksi" value="3572">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_leksong" value="3570">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_leksun" value="3568">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_lochula" value="3532">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_loling" value="3525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_lu" value="3526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_maichattawa" value="3563">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_maiek" value="3560">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_maihanakat" value="3537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_maihanakat_maitho" value="3550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_maitaikhu" value="3559">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_maitho" value="3561">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_maitri" value="3562">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_maiyamok" value="3558">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_moma" value="3521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_ngongu" value="3495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_nikhahit" value="3565">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_nonen" value="3507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_nonu" value="3513">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_oang" value="3533">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_paiyannoi" value="3535">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_phinthu" value="3546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_phophan" value="3518">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_phophung" value="3516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_phosamphao" value="3520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_popla" value="3515">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_rorua" value="3523">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_ru" value="3524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_saraa" value="3536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_saraaa" value="3538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_saraae" value="3553">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_saraaimaimalai" value="3556">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_saraaimaimuan" value="3555">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_saraam" value="3539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_sarae" value="3552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_sarai" value="3540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_saraii" value="3541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_sarao" value="3554">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_sarau" value="3544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_saraue" value="3542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_sarauee" value="3543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_sarauu" value="3545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_sorusi" value="3529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_sosala" value="3528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_soso" value="3499">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_sosua" value="3530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_thanthakhat" value="3564">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_thonangmontho" value="3505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_thophuthao" value="3506">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_thothahan" value="3511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_thothan" value="3504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_thothong" value="3512">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_thothung" value="3510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_topatak" value="3503">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_totao" value="3509">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_wowaen" value="3527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_yoyak" value="3522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_yoying" value="3501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thorn" value="222">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Time" value="269025183">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Timeline"
+           c:symbol-prefix="timeline"
+           c:type="ClutterTimeline"
+           version="0.2"
+           parent="GObject.Object"
+           glib:type-name="ClutterTimeline"
+           glib:get-type="clutter_timeline_get_type"
+           glib:type-struct="TimelineClass">
+      <doc xml:whitespace="preserve">The #ClutterTimeline structure contains only private data
+and should be accessed using the provided API</doc>
+      <constructor name="new"
+                   c:identifier="clutter_timeline_new"
+                   version="0.6">
+        <doc xml:whitespace="preserve">Creates a new #ClutterTimeline with a duration of @msecs.
+g_object_unref() when done using it</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #ClutterTimeline instance. Use</doc>
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Duration of the timeline in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add_marker_at_time"
+              c:identifier="clutter_timeline_add_marker_at_time"
+              version="0.8">
+        <doc xml:whitespace="preserve">Adds a named marker that will be hit when the timeline has been
+running for @msecs milliseconds. Markers are unique string
+identifiers for a given time. Once @timeline reaches
+attached to that time.
+A marker can be removed with clutter_timeline_remove_marker(). The
+timeline can be advanced to a marker using
+clutter_timeline_advance_to_marker().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="marker_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the unique name for this marker</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="msecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position of the marker in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="advance" c:identifier="clutter_timeline_advance">
+        <doc xml:whitespace="preserve">Advance timeline to the requested point. The point is given as a
+time in milliseconds since the timeline started.
+&lt;note&gt;&lt;para&gt;The @timeline will not emit the #ClutterTimeline::new-frame
+signal for the given time. The first ::new-frame signal after the call to
+clutter_timeline_advance() will be emit the skipped markers.
+&lt;/para&gt;&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Time to advance to</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="advance_to_marker"
+              c:identifier="clutter_timeline_advance_to_marker"
+              version="0.8">
+        <doc xml:whitespace="preserve">Advances @timeline to the time of the given @marker_name.
+&lt;note&gt;&lt;para&gt;Like clutter_timeline_advance(), this function will not
+emit the #ClutterTimeline::new-frame for the time where @marker_name
+is set, nor it will emit #ClutterTimeline::marker-reached for</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="marker_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the marker</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clone" c:identifier="clutter_timeline_clone" version="0.4">
+        <doc xml:whitespace="preserve">Create a new #ClutterTimeline instance which has property values
+matching that of supplied timeline. The cloned timeline will not
+be started and will not be positioned to the current position of
+from @timeline</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #ClutterTimeline, cloned</doc>
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+      </method>
+      <method name="do_tick" c:identifier="clutter_timeline_do_tick">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tick_time" transfer-ownership="none">
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_delay"
+              c:identifier="clutter_timeline_get_delay"
+              version="0.4">
+        <doc xml:whitespace="preserve">Retrieves the delay set using clutter_timeline_set_delay().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the delay in milliseconds.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_delta"
+              c:identifier="clutter_timeline_get_delta"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the amount of time elapsed since the last
+ClutterTimeline::new-frame signal.
+This function is only useful inside handlers for the ::new-frame
+signal, and its behaviour is undefined if the timeline is not
+playing.
+last frame</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the amount of time in milliseconds elapsed since the</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_direction"
+              c:identifier="clutter_timeline_get_direction"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the direction of the timeline set with
+clutter_timeline_set_direction().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the direction of the timeline</doc>
+          <type name="TimelineDirection" c:type="ClutterTimelineDirection"/>
+        </return-value>
+      </method>
+      <method name="get_duration"
+              c:identifier="clutter_timeline_get_duration"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the duration of a #ClutterTimeline in milliseconds.
+See clutter_timeline_set_duration().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the duration of the timeline, in milliseconds.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_elapsed_time"
+              c:identifier="clutter_timeline_get_elapsed_time">
+        <doc xml:whitespace="preserve">Request the current time position of the timeline.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">current elapsed time in milliseconds.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_loop" c:identifier="clutter_timeline_get_loop">
+        <doc xml:whitespace="preserve">Gets whether @timeline is looping</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the timeline is looping</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_progress"
+              c:identifier="clutter_timeline_get_progress"
+              version="0.6">
+        <doc xml:whitespace="preserve">The position of the timeline in a [0, 1] interval.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the position of the timeline.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="has_marker"
+              c:identifier="clutter_timeline_has_marker"
+              version="0.8">
+        <doc xml:whitespace="preserve">Checks whether @timeline has a marker set with the given name.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the marker was found</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="marker_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the marker</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_playing" c:identifier="clutter_timeline_is_playing">
+        <doc xml:whitespace="preserve">Queries state of a #ClutterTimeline.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if timeline is currently playing</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="list_markers"
+              c:identifier="clutter_timeline_list_markers"
+              version="0.8">
+        <doc xml:whitespace="preserve">Retrieves the list of markers at time @msecs. If @frame_num is a
+negative integer, all the markers attached to @timeline will be
+returned.
+a newly allocated, %NULL terminated string array containing the names
+of the markers. Use g_strfreev() when done.</doc>
+        <return-value transfer-ownership="full">
+          <array length="1" c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the time to check, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="n_markers"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">the number of markers returned</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pause" c:identifier="clutter_timeline_pause">
+        <doc xml:whitespace="preserve">Pauses the #ClutterTimeline on current frame</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="remove_marker"
+              c:identifier="clutter_timeline_remove_marker"
+              version="0.8">
+        <doc xml:whitespace="preserve">Removes @marker_name, if found, from @timeline.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="marker_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the marker to remove</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="rewind" c:identifier="clutter_timeline_rewind">
+        <doc xml:whitespace="preserve">Rewinds #ClutterTimeline to the first frame if its direction is
+%CLUTTER_TIMELINE_FORWARD and the last frame if it is
+%CLUTTER_TIMELINE_BACKWARD.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_delay"
+              c:identifier="clutter_timeline_set_delay"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the delay, in milliseconds, before @timeline should start.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">delay in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_direction"
+              c:identifier="clutter_timeline_set_direction"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the direction of @timeline, either %CLUTTER_TIMELINE_FORWARD or
+%CLUTTER_TIMELINE_BACKWARD.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the direction of the timeline</doc>
+            <type name="TimelineDirection" c:type="ClutterTimelineDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_duration"
+              c:identifier="clutter_timeline_set_duration"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the duration of the timeline, in milliseconds. The speed
+of the timeline depends on the ClutterTimeline:fps setting.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">duration of the timeline in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_loop" c:identifier="clutter_timeline_set_loop">
+        <doc xml:whitespace="preserve">Sets whether @timeline should loop.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="loop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE for enable looping</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="skip" c:identifier="clutter_timeline_skip">
+        <doc xml:whitespace="preserve">Advance timeline by the requested time in milliseconds</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Amount of time to skip</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start" c:identifier="clutter_timeline_start">
+        <doc xml:whitespace="preserve">Starts the #ClutterTimeline playing.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="stop" c:identifier="clutter_timeline_stop">
+        <doc xml:whitespace="preserve">Stops the #ClutterTimeline and moves to frame 0</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="delay"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A delay, in milliseconds, that should be observed by the
+timeline before actually starting.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="direction"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The direction of the timeline, either %CLUTTER_TIMELINE_FORWARD or
+%CLUTTER_TIMELINE_BACKWARD.</doc>
+        <type name="TimelineDirection"/>
+      </property>
+      <property name="duration"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Duration of the timeline in milliseconds, depending on the
+ClutterTimeline:fps value.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="loop" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the timeline should automatically rewind and restart.</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="TimelinePrivate" c:type="ClutterTimelinePrivate*"/>
+      </field>
+      <glib:signal name="completed">
+        <doc xml:whitespace="preserve">The ::completed signal is emitted when the timeline reaches the
+number of frames specified by the ClutterTimeline:num-frames property.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="marker-reached" version="0.8">
+        <doc xml:whitespace="preserve">The ::marker-reached signal is emitted each time a timeline
+reaches a marker set with
+clutter_timeline_add_marker_at_time(). This signal is detailed
+with the name of the marker as well, so it is possible to connect
+a callback to the ::marker-reached signal for a specific marker
+with:
+&lt;informalexample&gt;&lt;programlisting&gt;
+clutter_timeline_add_marker_at_time (timeline, "foo", 500);
+clutter_timeline_add_marker_at_time (timeline, "bar", 750);
+g_signal_connect (timeline, "marker-reached",
+G_CALLBACK (each_marker_reached), NULL);
+g_signal_connect (timeline, "marker-reached::foo",
+G_CALLBACK (foo_marker_reached), NULL);
+g_signal_connect (timeline, "marker-reached::bar",
+G_CALLBACK (bar_marker_reached), NULL);
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+In the example, the first callback will be invoked for both
+the "foo" and "bar" marker, while the second and third callbacks
+will be invoked for the "foo" or "bar" markers, respectively.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the marker reached</doc>
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the elapsed time</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="new-frame">
+        <doc xml:whitespace="preserve">The ::new-frame signal is emitted for each timeline running
+timeline before a new frame is drawn to give animations a chance
+to update the scene.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the elapsed time between 0 and duration</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="paused">
+        <doc xml:whitespace="preserve">The ::paused signal is emitted when clutter_timeline_pause() is invoked.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="started">
+        <doc xml:whitespace="preserve">The ::started signal is emitted when the timeline starts its run.
+This might be as soon as clutter_timeline_start() is invoked or
+after the delay set in the ClutterTimeline:delay property has
+expired.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="TimelineClass"
+            c:type="ClutterTimelineClass"
+            glib:is-gtype-struct-for="Timeline"
+            version="0.2">
+      <doc xml:whitespace="preserve">The #ClutterTimelineClass structure contains only private data</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="started">
+        <callback name="started">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="completed">
+        <callback name="completed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="paused">
+        <callback name="paused">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="new_frame">
+        <callback name="new_frame">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+            <parameter name="frame_num" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="marker_reached">
+        <callback name="marker_reached">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+            <parameter name="marker_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="frame_num" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_timeline_1" introspectable="0">
+        <callback name="_clutter_timeline_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_timeline_2" introspectable="0">
+        <callback name="_clutter_timeline_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_timeline_3" introspectable="0">
+        <callback name="_clutter_timeline_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_timeline_4" introspectable="0">
+        <callback name="_clutter_timeline_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_timeline_5" introspectable="0">
+        <callback name="_clutter_timeline_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="TimelineDirection"
+                 version="0.6"
+                 glib:type-name="ClutterTimelineDirection"
+                 glib:get-type="clutter_timeline_direction_get_type"
+                 c:type="ClutterTimelineDirection">
+      <doc xml:whitespace="preserve">The direction of a #ClutterTimeline</doc>
+      <member name="forward"
+              value="0"
+              c:identifier="CLUTTER_TIMELINE_FORWARD"
+              glib:nick="forward"/>
+      <member name="backward"
+              value="1"
+              c:identifier="CLUTTER_TIMELINE_BACKWARD"
+              glib:nick="backward"/>
+    </enumeration>
+    <record name="TimelinePrivate"
+            c:type="ClutterTimelinePrivate"
+            disguised="1">
+    </record>
+    <record name="TimeoutPool"
+            c:type="ClutterTimeoutPool"
+            disguised="1"
+            version="0.6"
+            introspectable="0">
+      <doc xml:whitespace="preserve">&lt;structname&gt;ClutterTimeoutPool&lt;/structname&gt; is an opaque structure
+whose members cannot be directly accessed.</doc>
+      <method name="add" c:identifier="clutter_timeout_pool_add" version="0.4">
+        <doc xml:whitespace="preserve">Sets a function to be called at regular intervals, and puts it inside
+the @pool. The function is repeatedly called until it returns %FALSE,
+at which point the timeout is automatically destroyed and the function
+won't be called again. If @notify is not %NULL, the @notify function
+will be called. The first call to @func will be at the end of @interval.
+Since Clutter 0.8 this will try to compensate for delays. For
+example, if @func takes half the interval time to execute then the
+function will be called again half the interval time after it
+finished. Before version 0.8 it would not fire until a full
+interval after the function completes so the delay between calls
+would be @interval * 1.5. This function does not however try to
+invoke the function multiple times to catch up missing frames if
+Use clutter_timeout_pool_remove() to stop the timeout.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ID (greater than 0) of the timeout inside the pool.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="fps" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the time between calls to the function, in frames per second</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <doc xml:whitespace="preserve">function to call</doc>
+            <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to the function, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">function to call when the timeout is removed, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="clutter_timeout_pool_remove"
+              version="0.4">
+        <doc xml:whitespace="preserve">Removes a timeout function with @id from the timeout pool. The id
+is the same returned when adding a function to the timeout pool with
+clutter_timeout_pool_add().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id of the timeout to remove</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <constant name="ToDoList" value="269025055">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Tools" value="269025153">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="TopMenu" value="269025186">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="TouchpadToggle" value="269025193">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Touroku" value="65323">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Travel" value="269025154">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Tslash" value="940">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="U" value="85">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="UWB" value="269025174">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Uacute" value="218">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ubelowdot" value="16785124">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ubreve" value="733">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ucircumflex" value="219">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Udiaeresis" value="220">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Udoubleacute" value="475">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ugrave" value="217">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Uhook" value="16785126">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Uhorn" value="16777647">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Uhornacute" value="16785128">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Uhornbelowdot" value="16785136">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Uhorngrave" value="16785130">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Uhornhook" value="16785132">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Uhorntilde" value="16785134">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukrainian_GHE_WITH_UPTURN" value="1725">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukrainian_I" value="1718">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukrainian_IE" value="1716">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukrainian_YI" value="1719">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukrainian_ghe_with_upturn" value="1709">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukrainian_i" value="1702">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukrainian_ie" value="1700">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukrainian_yi" value="1703">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukranian_I" value="1718">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukranian_JE" value="1716">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukranian_YI" value="1719">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukranian_i" value="1702">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukranian_je" value="1700">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukranian_yi" value="1703">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Umacron" value="990">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Undo" value="65381">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ungrab" value="269024800">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="UnitType"
+                 version="1.0"
+                 glib:type-name="ClutterUnitType"
+                 glib:get-type="clutter_unit_type_get_type"
+                 c:type="ClutterUnitType">
+      <doc xml:whitespace="preserve">The type of unit in which a value is expressed
+This enumeration might be expanded at later date</doc>
+      <member name="pixel"
+              value="0"
+              c:identifier="CLUTTER_UNIT_PIXEL"
+              glib:nick="pixel"/>
+      <member name="em"
+              value="1"
+              c:identifier="CLUTTER_UNIT_EM"
+              glib:nick="em"/>
+      <member name="mm"
+              value="2"
+              c:identifier="CLUTTER_UNIT_MM"
+              glib:nick="mm"/>
+      <member name="point"
+              value="3"
+              c:identifier="CLUTTER_UNIT_POINT"
+              glib:nick="point"/>
+      <member name="cm"
+              value="4"
+              c:identifier="CLUTTER_UNIT_CM"
+              glib:nick="cm"/>
+    </enumeration>
+    <record name="Units"
+            c:type="ClutterUnits"
+            version="1.0"
+            glib:type-name="ClutterUnits"
+            glib:get-type="clutter_units_get_type"
+            c:symbol-prefix="units">
+      <doc xml:whitespace="preserve">An opaque structure, to be used to store sizing and positioning
+values along with their unit.</doc>
+      <field name="unit_type" writable="1">
+        <type name="UnitType" c:type="ClutterUnitType"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="pixels" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="pixels_set" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="serial" writable="1">
+        <type name="gint32" c:type="gint32"/>
+      </field>
+      <field name="__padding_1" writable="1">
+        <type name="gint32" c:type="gint32"/>
+      </field>
+      <field name="__padding_2" writable="1">
+        <type name="gint64" c:type="gint64"/>
+      </field>
+      <method name="copy" c:identifier="clutter_units_copy" version="1.0">
+        <doc xml:whitespace="preserve">Copies @units
+#ClutterUnits structure. Use clutter_units_free() to free
+the allocated resources</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created copy of a</doc>
+          <type name="Units" c:type="ClutterUnits*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="clutter_units_free" version="1.0">
+        <doc xml:whitespace="preserve">Frees the resources allocated by @units
+You should only call this function on a #ClutterUnits
+created using clutter_units_copy()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="from_cm"
+              c:identifier="clutter_units_from_cm"
+              version="1.2">
+        <doc xml:whitespace="preserve">Stores a value in centimeters inside @units</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cm" transfer-ownership="none">
+            <doc xml:whitespace="preserve">centimeters</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_em"
+              c:identifier="clutter_units_from_em"
+              version="1.0">
+        <doc xml:whitespace="preserve">Stores a value in em inside @units, using the default font
+name as returned by clutter_backend_get_font_name()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="em" transfer-ownership="none">
+            <doc xml:whitespace="preserve">em</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_em_for_font"
+              c:identifier="clutter_units_from_em_for_font"
+              version="1.0">
+        <doc xml:whitespace="preserve">Stores a value in em inside @units using @font_name</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the font name and size</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="em" transfer-ownership="none">
+            <doc xml:whitespace="preserve">em</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_mm"
+              c:identifier="clutter_units_from_mm"
+              version="1.0">
+        <doc xml:whitespace="preserve">Stores a value in millimiters inside @units</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mm" transfer-ownership="none">
+            <doc xml:whitespace="preserve">millimeters</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_pixels"
+              c:identifier="clutter_units_from_pixels"
+              version="1.0">
+        <doc xml:whitespace="preserve">Stores a value in pixels inside @units</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="px" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pixels</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_pt"
+              c:identifier="clutter_units_from_pt"
+              version="1.0">
+        <doc xml:whitespace="preserve">Stores a value in typographic points inside @units</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">typographic points</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_string"
+              c:identifier="clutter_units_from_string"
+              version="1.0">
+        <doc xml:whitespace="preserve">Parses a value and updates @units with it
+A #ClutterUnits expressed in string should match:
+|[
+| digit* sep digit+
+]|
+For instance, these are valid strings:
+|[
+10 px
+5.1 em
+24 pt
+12.6 mm
+.3 cm
+]|
+While these are not:
+|[
+42 cats
+omg!1!ponies
+]|
+&lt;note&gt;&lt;para&gt;If no unit is specified, pixels are assumed.&lt;/para&gt;&lt;/note&gt;
+and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the string was successfully parsed,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the string to convert</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_unit_type"
+              c:identifier="clutter_units_get_unit_type"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the unit type of the value stored inside @units</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a unit type</doc>
+          <type name="UnitType" c:type="ClutterUnitType"/>
+        </return-value>
+      </method>
+      <method name="get_unit_value"
+              c:identifier="clutter_units_get_unit_value"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the value stored inside @units</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value stored inside a #ClutterUnits</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="to_pixels"
+              c:identifier="clutter_units_to_pixels"
+              version="1.0">
+        <doc xml:whitespace="preserve">Converts a value in #ClutterUnits to pixels</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value in pixels</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="to_string"
+              c:identifier="clutter_units_to_string"
+              version="1.0">
+        <doc xml:whitespace="preserve">Converts @units into a string
+See clutter_units_from_string() for the units syntax and for
+examples of output
+&lt;note&gt;Fractional values are truncated to the second decimal
+position for em, mm and cm, and to the first decimal position for
+typographic points. Pixels are integers.&lt;/note&gt;
+#ClutterUnits value. Use g_free() to free the string</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated string containing the encoded</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <constant name="Uogonek" value="985">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Up" value="65362">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Uring" value="473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="User1KB" value="269025157">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="User2KB" value="269025158">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="UserPB" value="269025156">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Utilde" value="989">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="V" value="86">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="VERSION" value="1.400000">
+      <type name="gdouble" c:type="gdouble"/>
+    </constant>
+    <constant name="VERSION_HEX" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="VERSION_S" value="1.4.0">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="VendorHome" value="269025076">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="Vertex"
+            c:type="ClutterVertex"
+            version="0.4"
+            glib:type-name="ClutterVertex"
+            glib:get-type="clutter_vertex_get_type"
+            c:symbol-prefix="vertex">
+      <doc xml:whitespace="preserve">Vertex of an actor in 3D space, expressed in pixels</doc>
+      <field name="x" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="z" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <constructor name="new" c:identifier="clutter_vertex_new" version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterVertex for the point in 3D space
+identified by the 3 coordinates @x, @y, @z
+clutter_vertex_free() to free the resources</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocate #ClutterVertex. Use</doc>
+          <type name="Vertex" c:type="ClutterVertex*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="z" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Z coordinate</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy" c:identifier="clutter_vertex_copy" version="1.0">
+        <doc xml:whitespace="preserve">Copies @vertex
+clutter_vertex_free() to free the allocated resources</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated copy of #ClutterVertex. Use</doc>
+          <type name="Vertex" c:type="ClutterVertex*"/>
+        </return-value>
+      </method>
+      <method name="equal" c:identifier="clutter_vertex_equal" version="1.0">
+        <doc xml:whitespace="preserve">Compares @vertex_a and @vertex_b for equality</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the passed #ClutterVertex are equal</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="vertex_b" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterVertex</doc>
+            <type name="Vertex" c:type="ClutterVertex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="clutter_vertex_free" version="1.0">
+        <doc xml:whitespace="preserve">Frees a #ClutterVertex allocated using clutter_vertex_copy()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <constant name="Video" value="269025159">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="View" value="269025185">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="VoidSymbol" value="16777215">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="W" value="87">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="WLAN" value="269025173">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="WWW" value="269025070">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Wacute" value="16785026">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="WakeUp" value="269025067">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Wcircumflex" value="16777588">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Wdiaeresis" value="16785028">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="WebCam" value="269025167">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Wgrave" value="16785024">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="WheelButton" value="269025160">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="WindowClear" value="269025109">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="WonSign" value="16785577">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Word" value="269025161">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="X" value="88">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Xabovedot" value="16785034">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Xfer" value="269025162">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Y" value="89">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Yacute" value="221">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ybelowdot" value="16785140">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ycircumflex" value="16777590">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ydiaeresis" value="5054">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Yellow" value="269025189">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ygrave" value="16785138">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Yhook" value="16785142">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ytilde" value="16785144">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Z" value="90">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Zabovedot" value="431">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Zacute" value="428">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Zcaron" value="430">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Zen_Koho" value="65341">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Zenkaku" value="65320">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Zenkaku_Hankaku" value="65322">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ZoomIn" value="269025163">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ZoomOut" value="269025164">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Zstroke" value="16777653">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="a" value="97">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="aacute" value="225">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="abelowdot" value="16785057">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="abovedot" value="511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="abreve" value="483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="abreveacute" value="16785071">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="abrevebelowdot" value="16785079">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="abrevegrave" value="16785073">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="abrevehook" value="16785075">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="abrevetilde" value="16785077">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="acircumflex" value="226">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="acircumflexacute" value="16785061">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="acircumflexbelowdot" value="16785069">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="acircumflexgrave" value="16785063">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="acircumflexhook" value="16785065">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="acircumflextilde" value="16785067">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="acute" value="180">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="adiaeresis" value="228">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ae" value="230">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="agrave" value="224">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ahook" value="16785059">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="amacron" value="992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ampersand" value="38">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="aogonek" value="433">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="apostrophe" value="39">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="approxeq" value="16785992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="approximate" value="2248">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="aring" value="229">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="asciicircum" value="94">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="asciitilde" value="126">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="asterisk" value="42">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="at" value="64">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="atilde" value="227">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="b" value="98">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="babovedot" value="16784899">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="backslash" value="92">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ballotcross" value="2804">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="bar" value="124">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="base_init" c:identifier="clutter_base_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <constant name="because" value="16785973">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="blank" value="2527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="botintegral" value="2213">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="botleftparens" value="2220">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="botleftsqbracket" value="2216">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="botleftsummation" value="2226">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="botrightparens" value="2222">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="botrightsqbracket" value="2218">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="botrightsummation" value="2230">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="bott" value="2550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="botvertsummationconnector" value="2228">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braceleft" value="123">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braceright" value="125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="bracketleft" value="91">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="bracketright" value="93">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_blank" value="16787456">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dot_1" value="65521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dot_10" value="65530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dot_2" value="65522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dot_3" value="65523">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dot_4" value="65524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dot_5" value="65525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dot_6" value="65526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dot_7" value="65527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dot_8" value="65528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dot_9" value="65529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1" value="16787457">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12" value="16787459">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_123" value="16787463">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1234" value="16787471">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12345" value="16787487">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_123456" value="16787519">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1234567" value="16787583">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12345678" value="16787711">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1234568" value="16787647">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_123457" value="16787551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1234578" value="16787679">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_123458" value="16787615">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12346" value="16787503">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_123467" value="16787567">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1234678" value="16787695">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_123468" value="16787631">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12347" value="16787535">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_123478" value="16787663">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12348" value="16787599">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1235" value="16787479">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12356" value="16787511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_123567" value="16787575">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1235678" value="16787703">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_123568" value="16787639">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12357" value="16787543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_123578" value="16787671">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12358" value="16787607">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1236" value="16787495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12367" value="16787559">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_123678" value="16787687">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12368" value="16787623">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1237" value="16787527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12378" value="16787655">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1238" value="16787591">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_124" value="16787467">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1245" value="16787483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12456" value="16787515">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_124567" value="16787579">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1245678" value="16787707">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_124568" value="16787643">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12457" value="16787547">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_124578" value="16787675">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12458" value="16787611">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1246" value="16787499">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12467" value="16787563">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_124678" value="16787691">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12468" value="16787627">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1247" value="16787531">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12478" value="16787659">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1248" value="16787595">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_125" value="16787475">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1256" value="16787507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12567" value="16787571">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_125678" value="16787699">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12568" value="16787635">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1257" value="16787539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12578" value="16787667">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1258" value="16787603">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_126" value="16787491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1267" value="16787555">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12678" value="16787683">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1268" value="16787619">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_127" value="16787523">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1278" value="16787651">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_128" value="16787587">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_13" value="16787461">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_134" value="16787469">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1345" value="16787485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_13456" value="16787517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_134567" value="16787581">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1345678" value="16787709">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_134568" value="16787645">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_13457" value="16787549">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_134578" value="16787677">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_13458" value="16787613">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1346" value="16787501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_13467" value="16787565">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_134678" value="16787693">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_13468" value="16787629">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1347" value="16787533">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_13478" value="16787661">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1348" value="16787597">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_135" value="16787477">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1356" value="16787509">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_13567" value="16787573">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_135678" value="16787701">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_13568" value="16787637">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1357" value="16787541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_13578" value="16787669">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1358" value="16787605">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_136" value="16787493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1367" value="16787557">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_13678" value="16787685">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1368" value="16787621">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_137" value="16787525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1378" value="16787653">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_138" value="16787589">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_14" value="16787465">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_145" value="16787481">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1456" value="16787513">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_14567" value="16787577">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_145678" value="16787705">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_14568" value="16787641">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1457" value="16787545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_14578" value="16787673">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1458" value="16787609">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_146" value="16787497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1467" value="16787561">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_14678" value="16787689">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1468" value="16787625">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_147" value="16787529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1478" value="16787657">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_148" value="16787593">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_15" value="16787473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_156" value="16787505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1567" value="16787569">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_15678" value="16787697">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1568" value="16787633">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_157" value="16787537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1578" value="16787665">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_158" value="16787601">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_16" value="16787489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_167" value="16787553">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1678" value="16787681">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_168" value="16787617">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_17" value="16787521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_178" value="16787649">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_18" value="16787585">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2" value="16787458">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_23" value="16787462">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_234" value="16787470">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2345" value="16787486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_23456" value="16787518">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_234567" value="16787582">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2345678" value="16787710">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_234568" value="16787646">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_23457" value="16787550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_234578" value="16787678">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_23458" value="16787614">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2346" value="16787502">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_23467" value="16787566">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_234678" value="16787694">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_23468" value="16787630">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2347" value="16787534">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_23478" value="16787662">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2348" value="16787598">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_235" value="16787478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2356" value="16787510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_23567" value="16787574">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_235678" value="16787702">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_23568" value="16787638">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2357" value="16787542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_23578" value="16787670">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2358" value="16787606">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_236" value="16787494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2367" value="16787558">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_23678" value="16787686">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2368" value="16787622">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_237" value="16787526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2378" value="16787654">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_238" value="16787590">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_24" value="16787466">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_245" value="16787482">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2456" value="16787514">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_24567" value="16787578">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_245678" value="16787706">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_24568" value="16787642">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2457" value="16787546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_24578" value="16787674">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2458" value="16787610">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_246" value="16787498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2467" value="16787562">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_24678" value="16787690">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2468" value="16787626">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_247" value="16787530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2478" value="16787658">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_248" value="16787594">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_25" value="16787474">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_256" value="16787506">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2567" value="16787570">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_25678" value="16787698">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2568" value="16787634">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_257" value="16787538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2578" value="16787666">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_258" value="16787602">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_26" value="16787490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_267" value="16787554">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2678" value="16787682">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_268" value="16787618">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_27" value="16787522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_278" value="16787650">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_28" value="16787586">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_3" value="16787460">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_34" value="16787468">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_345" value="16787484">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_3456" value="16787516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_34567" value="16787580">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_345678" value="16787708">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_34568" value="16787644">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_3457" value="16787548">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_34578" value="16787676">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_3458" value="16787612">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_346" value="16787500">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_3467" value="16787564">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_34678" value="16787692">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_3468" value="16787628">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_347" value="16787532">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_3478" value="16787660">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_348" value="16787596">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_35" value="16787476">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_356" value="16787508">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_3567" value="16787572">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_35678" value="16787700">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_3568" value="16787636">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_357" value="16787540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_3578" value="16787668">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_358" value="16787604">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_36" value="16787492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_367" value="16787556">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_3678" value="16787684">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_368" value="16787620">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_37" value="16787524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_378" value="16787652">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_38" value="16787588">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_4" value="16787464">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_45" value="16787480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_456" value="16787512">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_4567" value="16787576">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_45678" value="16787704">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_4568" value="16787640">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_457" value="16787544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_4578" value="16787672">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_458" value="16787608">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_46" value="16787496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_467" value="16787560">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_4678" value="16787688">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_468" value="16787624">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_47" value="16787528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_478" value="16787656">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_48" value="16787592">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_5" value="16787472">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_56" value="16787504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_567" value="16787568">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_5678" value="16787696">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_568" value="16787632">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_57" value="16787536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_578" value="16787664">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_58" value="16787600">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_6" value="16787488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_67" value="16787552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_678" value="16787680">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_68" value="16787616">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_7" value="16787520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_78" value="16787648">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_8" value="16787584">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="breve" value="418">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="brokenbar" value="166">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="c" value="99">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="cabovedot" value="741">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="cacute" value="486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="cairo_set_source_color"
+              c:identifier="clutter_cairo_set_source_color"
+              version="1.0">
+      <doc xml:whitespace="preserve">Utility function for setting the source color of @cr using
+a #ClutterColor.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cr" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a Cairo context</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterColor</doc>
+          <type name="Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="careof" value="2744">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="caret" value="2812">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="caron" value="439">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ccaron" value="488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ccedilla" value="231">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ccircumflex" value="742">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="cedilla" value="184">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="cent" value="162">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="check_version"
+              c:identifier="clutter_check_version"
+              version="1.2">
+      <doc xml:whitespace="preserve">Run-time version check, to check the version the Clutter library
+that an application is currently linked against
+This is the run-time equivalent of the compile-time %CLUTTER_CHECK_VERSION
+pre-processor macro
+greater than (@major, @minor, @micro), and %FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the version of the Clutter library is</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="major" transfer-ownership="none">
+          <doc xml:whitespace="preserve">major version, like 1 in 1.2.3</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="minor" transfer-ownership="none">
+          <doc xml:whitespace="preserve">minor version, like 2 in 1.2.3</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="micro" transfer-ownership="none">
+          <doc xml:whitespace="preserve">micro version, like 3 in 1.2.3</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="checkerboard" value="2529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="checkmark" value="2803">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="circle" value="3023">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="clear_glyph_cache"
+              c:identifier="clutter_clear_glyph_cache"
+              version="0.8">
+      <doc xml:whitespace="preserve">Clears the internal cache of glyphs used by the Pango
+renderer. This will free up some memory and GL texture
+resources. The cache will be automatically refilled as more text is
+drawn.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <constant name="club" value="2796">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="colon" value="58">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="color_equal"
+              c:identifier="clutter_color_equal"
+              version="0.2">
+      <doc xml:whitespace="preserve">Compares two #ClutterColor&lt;!-- --&gt;s and checks if they are the same.
+This function can be passed to g_hash_table_new() as the @key_equal_func
+parameter, when using #ClutterColor&lt;!-- --&gt;s as keys in a #GHashTable.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the two colors are the same.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="v1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterColor</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterColor</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="color_hash"
+              c:identifier="clutter_color_hash"
+              version="1.0">
+      <doc xml:whitespace="preserve">Converts a #ClutterColor to a hash value.
+This function can be passed to g_hash_table_new() as the @hash_func
+parameter, when using #ClutterColor&lt;!-- --&gt;s as keys in a #GHashTable.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a hash value corresponding to the color</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterColor</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="comma" value="44">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="container_class_find_child_property"
+              c:identifier="clutter_container_class_find_child_property"
+              version="0.8">
+      <doc xml:whitespace="preserve">Looks up the #GParamSpec for a child property of @klass.
+if no such property exist.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GParamSpec for the property or %NULL</doc>
+        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="klass" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObjectClass implementing the #ClutterContainer interface.</doc>
+          <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
+        </parameter>
+        <parameter name="property_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a property name.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="container_class_list_child_properties"
+              c:identifier="clutter_container_class_list_child_properties"
+              version="0.8">
+      <doc xml:whitespace="preserve">Returns an array of #GParamSpec for all child properties.
+of #GParamSpec&lt;!-- --&gt;s which should be freed after use.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">an array</doc>
+        <array length="1" c:type="GParamSpec**">
+          <type name="GObject.ParamSpec"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="klass" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObjectClass implementing the #ClutterContainer interface.</doc>
+          <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
+        </parameter>
+        <parameter name="n_properties"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">return location for length of returned array.</doc>
+          <type name="guint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="containsas" value="16785931">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="copyright" value="169">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="cr" value="2532">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="crossinglines" value="2542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="cuberoot" value="16785947">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="currency" value="164">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="cursor" value="2815">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="d" value="100">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dabovedot" value="16784907">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dagger" value="2801">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dcaron" value="495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_A" value="65153">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_E" value="65155">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_I" value="65157">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_O" value="65159">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_U" value="65161">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_a" value="65152">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_abovecomma" value="65124">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_abovedot" value="65110">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_abovereversedcomma" value="65125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_abovering" value="65112">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_acute" value="65105">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_belowbreve" value="65131">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_belowcircumflex" value="65129">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_belowcomma" value="65134">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_belowdiaeresis" value="65132">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_belowdot" value="65120">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_belowmacron" value="65128">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_belowring" value="65127">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_belowtilde" value="65130">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_breve" value="65109">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_capital_schwa" value="65163">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_caron" value="65114">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_cedilla" value="65115">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_circumflex" value="65106">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_currency" value="65135">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_dasia" value="65125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_diaeresis" value="65111">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_doubleacute" value="65113">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_doublegrave" value="65126">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_e" value="65154">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_grave" value="65104">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_hook" value="65121">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_horn" value="65122">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_i" value="65156">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_invertedbreve" value="65133">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_iota" value="65117">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_macron" value="65108">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_o" value="65158">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_ogonek" value="65116">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_perispomeni" value="65107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_psili" value="65124">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_semivoiced_sound" value="65119">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_small_schwa" value="65162">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_stroke" value="65123">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_tilde" value="65107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_u" value="65160">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_voiced_sound" value="65118">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="decimalpoint" value="2749">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="degree" value="176">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="diaeresis" value="168">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="diamond" value="2797">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="digitspace" value="2725">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dintegral" value="16785964">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="division" value="247">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="do_event" c:identifier="clutter_do_event">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Event" c:type="ClutterEvent*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="dollar" value="36">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="doubbaselinedot" value="2735">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="doubleacute" value="445">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="doubledagger" value="2802">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="doublelowquotemark" value="2814">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="downarrow" value="2302">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="downcaret" value="2984">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="downshoe" value="3030">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="downstile" value="3012">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="downtack" value="3010">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dstroke" value="496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="e" value="101">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="eabovedot" value="1004">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="eacute" value="233">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ebelowdot" value="16785081">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ecaron" value="492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ecircumflex" value="234">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ecircumflexacute" value="16785087">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ecircumflexbelowdot" value="16785095">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ecircumflexgrave" value="16785089">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ecircumflexhook" value="16785091">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ecircumflextilde" value="16785093">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ediaeresis" value="235">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="egrave" value="232">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ehook" value="16785083">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="eightsubscript" value="16785544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="eightsuperior" value="16785528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="elementof" value="16785928">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ellipsis" value="2734">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="em3space" value="2723">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="em4space" value="2724">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="emacron" value="954">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="emdash" value="2729">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="emfilledcircle" value="2782">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="emfilledrect" value="2783">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="emopencircle" value="2766">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="emopenrectangle" value="2767">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="emptyset" value="16785925">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="emspace" value="2721">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="endash" value="2730">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="enfilledcircbullet" value="2790">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="enfilledsqbullet" value="2791">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="eng" value="959">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="enopencircbullet" value="2784">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="enopensquarebullet" value="2785">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="enspace" value="2722">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="eogonek" value="490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="equal" value="61">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="eth" value="240">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="etilde" value="16785085">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="event_get" c:identifier="clutter_event_get" version="0.4">
+      <doc xml:whitespace="preserve">Pops an event off the event queue. Applications should not need to call 
+this.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">A #ClutterEvent or NULL if queue empty</doc>
+        <type name="Event" c:type="ClutterEvent*"/>
+      </return-value>
+    </function>
+    <function name="event_peek"
+              c:identifier="clutter_event_peek"
+              version="0.4">
+      <doc xml:whitespace="preserve">Returns a pointer to the first event from the event queue but 
+does not remove it.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">A #ClutterEvent or NULL if queue empty.</doc>
+        <type name="Event" c:type="ClutterEvent*"/>
+      </return-value>
+    </function>
+    <function name="events_pending"
+              c:identifier="clutter_events_pending"
+              version="0.4">
+      <doc xml:whitespace="preserve">Checks if events are pending in the event queue.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if there are pending events, FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <constant name="exclam" value="33">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="exclamdown" value="161">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="f" value="102">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="fabovedot" value="16784927">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="feature_available"
+              c:identifier="clutter_feature_available"
+              version="0.1.1">
+      <doc xml:whitespace="preserve">Checks whether @feature is available.  @feature can be a logical
+OR of #ClutterFeatureFlags.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if a feature is available</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="feature" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterFeatureFlags</doc>
+          <type name="FeatureFlags" c:type="ClutterFeatureFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="feature_get_all"
+              c:identifier="clutter_feature_get_all"
+              version="0.1.1">
+      <doc xml:whitespace="preserve">Returns all the supported features.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a logical OR of all the supported features.</doc>
+        <type name="FeatureFlags" c:type="ClutterFeatureFlags"/>
+      </return-value>
+    </function>
+    <constant name="femalesymbol" value="2808">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ff" value="2531">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="figdash" value="2747">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="filledlefttribullet" value="2780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="filledrectbullet" value="2779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="filledrighttribullet" value="2781">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="filledtribulletdown" value="2793">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="filledtribulletup" value="2792">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="fiveeighths" value="2757">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="fivesixths" value="2743">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="fivesubscript" value="16785541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="fivesuperior" value="16785525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="fourfifths" value="2741">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="foursubscript" value="16785540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="foursuperior" value="16785524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="fourthroot" value="16785948">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="frame_source_add"
+              c:identifier="clutter_frame_source_add"
+              shadowed-by="frame_source_add_full"
+              version="0.8"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Simple wrapper around clutter_frame_source_add_full().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the ID (greater than 0) of the event source.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="fps" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of times per second to call the function</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">function to call</doc>
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="frame_source_add_full"
+              c:identifier="clutter_frame_source_add_full"
+              shadows="frame_source_add"
+              version="0.8">
+      <doc xml:whitespace="preserve">Sets a function to be called at regular intervals with the given
+priority.  The function is called repeatedly until it returns
+%FALSE, at which point the timeout is automatically destroyed and
+the function will not be called again.  The @notify function is
+called when the timeout is destroyed.  The first call to the
+function will be at the end of the first @interval.
+This function is similar to g_timeout_add_full() except that it
+will try to compensate for delays. For example, if @func takes half
+the interval time to execute then the function will be called again
+half the interval time after it finished. In contrast
+g_timeout_add_full() would not fire until a full interval after the
+function completes so the delay between calls would be 1.0 / @fps *
+1.5. This function does not however try to invoke the function
+multiple times to catch up missing frames if @func takes more than</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the ID (greater than 0) of the event source.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the priority of the frame source. Typically this will be in the range between %G_PRIORITY_DEFAULT and %G_PRIORITY_HIGH.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="fps" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of times per second to call the function</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="3"
+                   destroy="4">
+          <doc xml:whitespace="preserve">function to call</doc>
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="async">
+          <doc xml:whitespace="preserve">function to call when the timeout source is removed</doc>
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="function" value="2294">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="g" value="103">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="gabovedot" value="757">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="gbreve" value="699">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="gcaron" value="16777703">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="gcedilla" value="955">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="gcircumflex" value="760">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="get_accessibility_enabled"
+              c:identifier="clutter_get_accessibility_enabled"
+              version="1.4">
+      <doc xml:whitespace="preserve">Returns whether Clutter has accessibility support enabled.  As
+least, a value of TRUE means that there are a proper AtkUtil
+implementation available</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if Clutter has accessibility support enabled</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="get_actor_by_gid"
+              c:identifier="clutter_get_actor_by_gid"
+              version="0.6">
+      <doc xml:whitespace="preserve">Retrieves the #ClutterActor with @id.
+The returned actor does not have its reference count increased.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the actor with the passed id or %NULL.</doc>
+        <type name="Actor" c:type="ClutterActor*"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterActor ID.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_current_event"
+              c:identifier="clutter_get_current_event"
+              version="1.2">
+      <doc xml:whitespace="preserve">If an event is currently being processed, return that event.
+This function is intended to be used to access event state
+that might not be exposed by higher-level widgets.  For
+example, to get the key modifier state from a Button 'clicked'
+event.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The current ClutterEvent, or %NULL if none</doc>
+        <type name="Event" c:type="ClutterEvent*"/>
+      </return-value>
+    </function>
+    <function name="get_current_event_time"
+              c:identifier="clutter_get_current_event_time"
+              version="1.0">
+      <doc xml:whitespace="preserve">Retrieves the timestamp of the last event, if there is an
+event or if the event has a timestamp.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the event timestamp, or %CLUTTER_CURRENT_TIME</doc>
+        <type name="guint32" c:type="guint32"/>
+      </return-value>
+    </function>
+    <function name="get_debug_enabled"
+              c:identifier="clutter_get_debug_enabled">
+      <doc xml:whitespace="preserve">Check if clutter has debugging turned on.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if debugging is turned on, FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="get_default_backend"
+              c:identifier="clutter_get_default_backend"
+              version="0.4">
+      <doc xml:whitespace="preserve">Retrieves the default #ClutterBackend used by Clutter. The
+#ClutterBackend holds backend-specific configuration options.
+not ref or unref the returned object. Applications should rarely
+need to use this.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the default backend. You should</doc>
+        <type name="Backend" c:type="ClutterBackend*"/>
+      </return-value>
+    </function>
+    <function name="get_default_frame_rate"
+              c:identifier="clutter_get_default_frame_rate"
+              version="0.6">
+      <doc xml:whitespace="preserve">Retrieves the default frame rate. See clutter_set_default_frame_rate().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the default frame rate</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+    </function>
+    <function name="get_default_text_direction"
+              c:identifier="clutter_get_default_text_direction"
+              version="1.2">
+      <doc xml:whitespace="preserve">Retrieves the default direction for the text. The text direction is
+determined by the locale and/or by the %CLUTTER_TEXT_DIRECTION environment
+variable
+The default text direction can be overridden on a per-actor basis by using
+clutter_actor_set_text_direction()</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the default text direction</doc>
+        <type name="TextDirection" c:type="ClutterTextDirection"/>
+      </return-value>
+    </function>
+    <function name="get_font_flags"
+              c:identifier="clutter_get_font_flags"
+              version="1.0">
+      <doc xml:whitespace="preserve">Gets the current font flags for rendering text. See
+clutter_set_font_flags().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The font flags</doc>
+        <type name="FontFlags" c:type="ClutterFontFlags"/>
+      </return-value>
+    </function>
+    <function name="get_font_map"
+              c:identifier="clutter_get_font_map"
+              version="1.0">
+      <doc xml:whitespace="preserve">Retrieves the #PangoFontMap instance used by Clutter.
+You can use the global font map object with the COGL
+Pango API.
+value is owned by Clutter and it should never be unreferenced.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the #PangoFontMap instance. The returned</doc>
+        <type name="Pango.FontMap" c:type="PangoFontMap*"/>
+      </return-value>
+    </function>
+    <function name="get_input_device_for_id"
+              c:identifier="clutter_get_input_device_for_id"
+              version="0.8">
+      <doc xml:whitespace="preserve">Retrieves the #ClutterInputDevice from its @id. This is a convenience
+wrapper for clutter_device_manager_get_device() and it is functionally
+equivalent to:
+|[
+ClutterDeviceManager *manager;
+ClutterInputDevice *device;
+manager = clutter_device_manager_get_default ();
+device = clutter_device_manager_get_device (manager, id);
+]|</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a #ClutterInputDevice, or %NULL</doc>
+        <type name="InputDevice" c:type="ClutterInputDevice*"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the unique id for a device</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_keyboard_grab"
+              c:identifier="clutter_get_keyboard_grab"
+              version="0.6">
+      <doc xml:whitespace="preserve">Queries the current keyboard grab of clutter.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the actor currently holding the keyboard grab, or NULL if there is no grab.</doc>
+        <type name="Actor" c:type="ClutterActor*"/>
+      </return-value>
+    </function>
+    <function name="get_motion_events_enabled"
+              c:identifier="clutter_get_motion_events_enabled"
+              version="0.6">
+      <doc xml:whitespace="preserve">Gets whether the per-actor motion events are enabled.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the motion events are enabled</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="get_option_group"
+              c:identifier="clutter_get_option_group"
+              version="0.2"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Returns a #GOptionGroup for the command line arguments recognized
+by Clutter. You should add this group to your #GOptionContext with
+g_option_context_add_group(), if you are using g_option_context_parse()
+to parse your commandline arguments.
+Calling g_option_context_parse() with Clutter's #GOptionGroup will result
+in Clutter's initialization. That is, the following code:
+|[
+g_option_context_set_main_group (context, clutter_get_option_group ());
+res = g_option_context_parse (context, &amp;amp;argc, &amp;amp;argc, NULL);
+]|
+is functionally equivalent to:
+|[
+clutter_init (&amp;amp;argc, &amp;amp;argv);
+]|
+After g_option_context_parse() on a #GOptionContext containing the
+Clutter #GOptionGroup has returned %TRUE, Clutter is guaranteed to be
+initialized.
+recognized by Clutter</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a #GOptionGroup for the commandline arguments</doc>
+        <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+      </return-value>
+    </function>
+    <function name="get_option_group_without_init"
+              c:identifier="clutter_get_option_group_without_init"
+              version="0.8.2"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Returns a #GOptionGroup for the command line arguments recognized
+by Clutter. You should add this group to your #GOptionContext with
+g_option_context_add_group(), if you are using g_option_context_parse()
+to parse your commandline arguments. Unlike clutter_get_option_group(),
+calling g_option_context_parse() with the #GOptionGroup returned by this
+function requires a subsequent explicit call to clutter_init(); use this
+function when needing to set foreign display connection with
+clutter_x11_set_display(), or with gtk_clutter_init().
+recognized by Clutter</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a #GOptionGroup for the commandline arguments</doc>
+        <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+      </return-value>
+    </function>
+    <function name="get_pointer_grab"
+              c:identifier="clutter_get_pointer_grab"
+              version="0.6">
+      <doc xml:whitespace="preserve">Queries the current pointer grab of clutter.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the actor currently holding the pointer grab, or NULL if there is no grab.</doc>
+        <type name="Actor" c:type="ClutterActor*"/>
+      </return-value>
+    </function>
+    <function name="get_script_id"
+              c:identifier="clutter_get_script_id"
+              version="0.6">
+      <doc xml:whitespace="preserve">Retrieves the Clutter script id, if any.
+a UI definition file. The returned string is owned by the object and
+should never be modified or freed.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the script id, or %NULL if @object was not defined inside</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gobject" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObject</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_show_fps"
+              c:identifier="clutter_get_show_fps"
+              version="0.4">
+      <doc xml:whitespace="preserve">Returns whether Clutter should print out the frames per second on the
+console. You can enable this setting either using the
+&lt;literal&gt;CLUTTER_SHOW_FPS&lt;/literal&gt; environment variable or passing
+the &lt;literal&gt;--clutter-show-fps&lt;/literal&gt; command line argument. *</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if Clutter should show the FPS.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="get_timestamp" c:identifier="clutter_get_timestamp">
+      <doc xml:whitespace="preserve">Returns the approximate number of microseconds passed since clutter was
+intialised.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">Number of microseconds since clutter_init() was called.</doc>
+        <type name="gulong" c:type="gulong"/>
+      </return-value>
+    </function>
+    <function name="grab_keyboard"
+              c:identifier="clutter_grab_keyboard"
+              version="0.6">
+      <doc xml:whitespace="preserve">Grabs keyboard events, after the grab is done keyboard
+events (#ClutterActor::key-press-event and #ClutterActor::key-release-event)
+are delivered to this actor directly. The source set in the event will be
+the actor that would have received the event if the keyboard grab was not
+in effect.
+Like pointer grabs, keyboard grabs should only be used as a last
+resource.
+See also clutter_stage_set_key_focus() and clutter_actor_grab_key_focus()
+to perform a "soft" key grab and assign key focus to a specific actor.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="actor" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterActor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="grab_pointer"
+              c:identifier="clutter_grab_pointer"
+              version="0.6">
+      <doc xml:whitespace="preserve">Grabs pointer events, after the grab is done all pointer related events
+(press, motion, release, enter, leave and scroll) are delivered to this
+actor directly without passing through both capture and bubble phases of
+the event delivery chain. The source set in the event will be the actor
+that would have received the event if the pointer grab was not in effect.
+&lt;note&gt;&lt;para&gt;Grabs completely override the entire event delivery chain
+done by Clutter. Pointer grabs should only be used as a last resource;
+using the #ClutterActor::captured-event signal should always be the
+preferred way to intercept event delivery to reactive actors.&lt;/para&gt;&lt;/note&gt;
+If you wish to grab all the pointer events for a specific input device,
+you should use clutter_grab_pointer_for_device().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="actor" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterActor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="grab_pointer_for_device"
+              c:identifier="clutter_grab_pointer_for_device"
+              version="0.8">
+      <doc xml:whitespace="preserve">Grabs all the pointer events coming from the device @id for @actor.
+If @id is -1 then this function is equivalent to clutter_grab_pointer().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="actor" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterActor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </parameter>
+        <parameter name="id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a device id, or -1</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="grave" value="96">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="greater" value="62">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="greaterthanequal" value="2238">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="guillemotleft" value="171">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="guillemotright" value="187">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="h" value="104">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hairspace" value="2728">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hcircumflex" value="694">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="heart" value="2798">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_aleph" value="3296">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_ayin" value="3314">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_bet" value="3297">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_beth" value="3297">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_chet" value="3303">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_dalet" value="3299">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_daleth" value="3299">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_doublelowline" value="3295">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_finalkaph" value="3306">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_finalmem" value="3309">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_finalnun" value="3311">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_finalpe" value="3315">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_finalzade" value="3317">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_finalzadi" value="3317">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_gimel" value="3298">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_gimmel" value="3298">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_he" value="3300">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_het" value="3303">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_kaph" value="3307">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_kuf" value="3319">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_lamed" value="3308">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_mem" value="3310">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_nun" value="3312">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_pe" value="3316">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_qoph" value="3319">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_resh" value="3320">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_samech" value="3313">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_samekh" value="3313">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_shin" value="3321">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_taf" value="3322">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_taw" value="3322">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_tet" value="3304">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_teth" value="3304">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_waw" value="3301">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_yod" value="3305">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_zade" value="3318">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_zadi" value="3318">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_zain" value="3302">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_zayin" value="3302">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hexagram" value="2778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="horizconnector" value="2211">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="horizlinescan1" value="2543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="horizlinescan3" value="2544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="horizlinescan5" value="2545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="horizlinescan7" value="2546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="horizlinescan9" value="2547">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hstroke" value="689">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ht" value="2530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hyphen" value="173">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="i" value="105">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="iTouch" value="269025120">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="iacute" value="237">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ibelowdot" value="16785099">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ibreve" value="16777517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="icircumflex" value="238">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="identical" value="2255">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="idiaeresis" value="239">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="idotless" value="697">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ifonlyif" value="2253">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="igrave" value="236">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ihook" value="16785097">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="imacron" value="1007">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="implies" value="2254">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="includedin" value="2266">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="includes" value="2267">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="infinity" value="2242">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="init" c:identifier="clutter_init">
+      <doc xml:whitespace="preserve">It will initialise everything needed to operate with Clutter and
+parses some standard command line options. @argc and @argv are
+adjusted accordingly so your own code will never see those standard
+arguments.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">1 on success, &lt; 0 on failure.</doc>
+        <type name="InitError" c:type="ClutterInitError"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">The number of arguments in @argv</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">A pointer to an array of arguments.</doc>
+          <array length="0" c:type="char***">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_error_quark" c:identifier="clutter_init_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="init_with_args"
+              c:identifier="clutter_init_with_args"
+              version="0.2"
+              throws="1">
+      <doc xml:whitespace="preserve">This function does the same work as clutter_init(). Additionally,
+it allows you to add your own command line options, and it
+automatically generates nicely formatted &lt;option&gt;--help&lt;/option&gt;
+output. Note that your program will be terminated after writing
+out the help output. Also note that, in case of error, the
+error message will be placed inside @error instead of being
+printed on the display.
+initialised, or other values or #ClutterInitError in case of
+error.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%CLUTTER_INIT_SUCCESS if Clutter has been successfully</doc>
+        <type name="InitError" c:type="ClutterInitError"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the number of command line arguments</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">a pointer to the array of command line arguments</doc>
+          <array length="0" c:type="char***">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="parameter_string"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">a string which is displayed in the first line of &lt;option&gt;--help&lt;/option&gt; output, after &lt;literal&gt;&lt;replaceable&gt;programname&lt;/replaceable&gt; [OPTION...]&lt;/literal&gt;</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="entries" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a %NULL terminated array of #GOptionEntry&lt;!-- --&gt;s describing the options of your program</doc>
+          <type name="GLib.OptionEntry" c:type="GOptionEntry*"/>
+        </parameter>
+        <parameter name="translation_domain"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">a translation domain to use for translating the &lt;option&gt;--help&lt;/option&gt; output for the options in</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="integral" value="2239">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="intersection" value="2268">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="iogonek" value="999">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="itilde" value="949">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="j" value="106">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="jcircumflex" value="700">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="jot" value="3018">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="k" value="107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_A" value="1201">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_CHI" value="1217">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_E" value="1204">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_FU" value="1228">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_HA" value="1226">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_HE" value="1229">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_HI" value="1227">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_HO" value="1230">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_HU" value="1228">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_I" value="1202">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_KA" value="1206">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_KE" value="1209">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_KI" value="1207">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_KO" value="1210">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_KU" value="1208">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_MA" value="1231">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_ME" value="1234">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_MI" value="1232">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_MO" value="1235">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_MU" value="1233">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_N" value="1245">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_NA" value="1221">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_NE" value="1224">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_NI" value="1222">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_NO" value="1225">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_NU" value="1223">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_O" value="1205">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_RA" value="1239">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_RE" value="1242">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_RI" value="1240">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_RO" value="1243">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_RU" value="1241">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_SA" value="1211">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_SE" value="1214">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_SHI" value="1212">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_SO" value="1215">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_SU" value="1213">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_TA" value="1216">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_TE" value="1219">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_TI" value="1217">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_TO" value="1220">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_TSU" value="1218">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_TU" value="1218">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_U" value="1203">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_WA" value="1244">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_WO" value="1190">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_YA" value="1236">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_YO" value="1238">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_YU" value="1237">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_a" value="1191">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_closingbracket" value="1187">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_comma" value="1188">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_conjunctive" value="1189">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_e" value="1194">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_fullstop" value="1185">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_i" value="1192">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_middledot" value="1189">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_o" value="1195">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_openingbracket" value="1186">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_tsu" value="1199">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_tu" value="1199">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_u" value="1193">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_ya" value="1196">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_yo" value="1198">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_yu" value="1197">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kappa" value="930">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kcedilla" value="1011">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="keysym_to_unicode"
+              c:identifier="clutter_keysym_to_unicode">
+      <doc xml:whitespace="preserve">Convert from a Clutter key symbol to the corresponding ISO10646 (Unicode)
+character.
+character.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a Unicode character, or 0 if there  is no corresponding</doc>
+        <type name="guint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="keyval" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a key symbol</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="kra" value="930">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="l" value="108">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="lacute" value="485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="latincross" value="2777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="lbelowdot" value="16784951">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="lcaron" value="437">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="lcedilla" value="950">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="leftanglebracket" value="2748">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="leftarrow" value="2299">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="leftcaret" value="2979">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="leftdoublequotemark" value="2770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="leftmiddlecurlybrace" value="2223">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="leftopentriangle" value="2764">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="leftpointer" value="2794">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="leftradical" value="2209">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="leftshoe" value="3034">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="leftsinglequotemark" value="2768">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="leftt" value="2548">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="lefttack" value="3036">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="less" value="60">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="lessthanequal" value="2236">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="lf" value="2533">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="logicaland" value="2270">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="logicalor" value="2271">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="lowleftcorner" value="2541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="lowrightcorner" value="2538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="lstroke" value="435">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="m" value="109">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="mabovedot" value="16784961">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="macron" value="175">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="main" c:identifier="clutter_main">
+      <doc xml:whitespace="preserve">Starts the Clutter mainloop.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="main_level" c:identifier="clutter_main_level">
+      <doc xml:whitespace="preserve">Retrieves the depth of the Clutter mainloop.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The level of the mainloop.</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+    </function>
+    <function name="main_quit" c:identifier="clutter_main_quit">
+      <doc xml:whitespace="preserve">Terminates the Clutter mainloop.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <constant name="malesymbol" value="2807">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="maltesecross" value="2800">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="marker" value="2751">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="masculine" value="186">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="minus" value="45">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="minutes" value="2774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="mu" value="181">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="multiply" value="215">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="musicalflat" value="2806">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="musicalsharp" value="2805">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="n" value="110">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="nabla" value="2245">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="nacute" value="497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ncaron" value="498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ncedilla" value="1009">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ninesubscript" value="16785545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ninesuperior" value="16785529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="nl" value="2536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="nobreakspace" value="160">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="notapproxeq" value="16785991">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="notelementof" value="16785929">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="notequal" value="2237">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="notidentical" value="16786018">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="notsign" value="172">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ntilde" value="241">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="numbersign" value="35">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="numerosign" value="1712">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="o" value="111">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="oacute" value="243">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="obarred" value="16777845">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="obelowdot" value="16785101">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ocaron" value="16777682">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ocircumflex" value="244">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ocircumflexacute" value="16785105">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ocircumflexbelowdot" value="16785113">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ocircumflexgrave" value="16785107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ocircumflexhook" value="16785109">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ocircumflextilde" value="16785111">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="odiaeresis" value="246">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="odoubleacute" value="501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="oe" value="5053">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ogonek" value="434">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ograve" value="242">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ohook" value="16785103">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ohorn" value="16777633">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ohornacute" value="16785115">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ohornbelowdot" value="16785123">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ohorngrave" value="16785117">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ohornhook" value="16785119">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ohorntilde" value="16785121">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="omacron" value="1010">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="oneeighth" value="2755">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="onefifth" value="2738">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="onehalf" value="189">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="onequarter" value="188">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="onesixth" value="2742">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="onesubscript" value="16785537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="onesuperior" value="185">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="onethird" value="2736">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ooblique" value="248">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="openrectbullet" value="2786">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="openstar" value="2789">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="opentribulletdown" value="2788">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="opentribulletup" value="2787">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ordfeminine" value="170">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="oslash" value="248">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="otilde" value="245">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="overbar" value="3008">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="overline" value="1150">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="p" value="112">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="pabovedot" value="16784983">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="paragraph" value="182">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="param_spec_color"
+              c:identifier="clutter_param_spec_color"
+              version="0.8.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a #GParamSpec for properties using #ClutterColor.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly created #GParamSpec</doc>
+        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the property</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">short name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description (can be translatable)</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">default value</doc>
+          <type name="Color" c:type="ClutterColor*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the param spec</doc>
+          <type name="GObject.ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_fixed"
+              c:identifier="clutter_param_spec_fixed"
+              version="0.8"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a #GParamSpec for properties using #CoglFixed values</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly created #GParamSpec</doc>
+        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the property</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">short name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description (can be translatable)</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="minimum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">lower boundary</doc>
+          <type name="Cogl.Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">higher boundary</doc>
+          <type name="Cogl.Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">default value</doc>
+          <type name="Cogl.Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the param spec</doc>
+          <type name="GObject.ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_units"
+              c:identifier="clutter_param_spec_units"
+              version="1.0"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a #GParamSpec for properties using #ClutterUnits.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly created #GParamSpec</doc>
+        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the property</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">short name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description (can be translatable)</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="default_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the default type for the #ClutterUnits</doc>
+          <type name="UnitType" c:type="ClutterUnitType"/>
+        </parameter>
+        <parameter name="minimum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">lower boundary</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">higher boundary</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">default value</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the param spec</doc>
+          <type name="GObject.ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="parenleft" value="40">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="parenright" value="41">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="partdifferential" value="16785922">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="partialderivative" value="2287">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="percent" value="37">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="period" value="46">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="periodcentered" value="183">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="phonographcopyright" value="2811">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="plus" value="43">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="plusminus" value="177">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="prescription" value="2772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="prolongedsound" value="1200">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="punctspace" value="2726">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="q" value="113">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="quad" value="3020">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="question" value="63">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="questiondown" value="191">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="quotedbl" value="34">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="quoteleft" value="96">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="quoteright" value="39">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="r" value="114">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="racute" value="480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="radical" value="2262">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rcaron" value="504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rcedilla" value="947">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="redraw" c:identifier="clutter_redraw">
+      <doc xml:whitespace="preserve">Forces a redraw of the entire stage. Applications should never use this
+function, but queue a redraw using clutter_actor_queue_redraw().
+This function should only be used by libraries integrating Clutter from
+within another toolkit.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stage" transfer-ownership="none">
+          <type name="Stage" c:type="ClutterStage*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="registered" value="174">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rightanglebracket" value="2750">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rightarrow" value="2301">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rightcaret" value="2982">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rightdoublequotemark" value="2771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rightmiddlecurlybrace" value="2224">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rightmiddlesummation" value="2231">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rightopentriangle" value="2765">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rightpointer" value="2795">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rightshoe" value="3032">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rightsinglequotemark" value="2769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rightt" value="2549">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="righttack" value="3068">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="s" value="115">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="sabovedot" value="16784993">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="sacute" value="438">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="scaron" value="441">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="scedilla" value="442">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="schwa" value="16777817">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="scircumflex" value="766">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="script_error_quark"
+              c:identifier="clutter_script_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <constant name="script_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="seconds" value="2775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="section" value="167">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="semicolon" value="59">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="semivoicedsound" value="1247">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="set_default_frame_rate"
+              c:identifier="clutter_set_default_frame_rate"
+              version="0.6">
+      <doc xml:whitespace="preserve">Sets the default frame rate. This frame rate will be used to limit
+the number of frames drawn if Clutter is not able to synchronize
+with the vertical refresh rate of the display. When synchronization
+is possible, this value is ignored.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="frames_per_sec" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new default frame rate</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_font_flags"
+              c:identifier="clutter_set_font_flags"
+              version="1.0">
+      <doc xml:whitespace="preserve">Sets the font quality options for subsequent text rendering
+operations.
+Using mipmapped textures will improve the quality for scaled down
+text but will use more texture memory.
+Enabling hinting improves text quality for static text but may
+introduce some artifacts if the text is animated.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The new flags</doc>
+          <type name="FontFlags" c:type="ClutterFontFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_motion_events_enabled"
+              c:identifier="clutter_set_motion_events_enabled"
+              version="0.6">
+      <doc xml:whitespace="preserve">Sets whether per-actor motion events should be enabled or not (the
+default is to enable them).
+If @enable is %FALSE the following events will not work:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;ClutterActor::motion-event, unless on the
+#ClutterStage&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;ClutterActor::enter-event&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;ClutterActor::leave-event&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="enable" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to enable per-actor motion events</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="seveneighths" value="2758">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="sevensubscript" value="16785543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="sevensuperior" value="16785527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="shader_error_quark"
+              c:identifier="clutter_shader_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="shader_float_get_type"
+              c:identifier="clutter_shader_float_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="shader_int_get_type"
+              c:identifier="clutter_shader_int_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="shader_matrix_get_type"
+              c:identifier="clutter_shader_matrix_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <constant name="signaturemark" value="2762">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="signifblank" value="2732">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="similarequal" value="2249">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="singlelowquotemark" value="2813">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="sixsubscript" value="16785542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="sixsuperior" value="16785526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="slash" value="47">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="soliddiamond" value="2528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="space" value="32">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="squareroot" value="16785946">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ssharp" value="223">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="sterling" value="163">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="stricteq" value="16786019">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="t" value="116">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="tabovedot" value="16785003">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="tcaron" value="443">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="tcedilla" value="510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="telephone" value="2809">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="telephonerecorder" value="2810">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="texture_error_quark"
+              c:identifier="clutter_texture_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <constant name="therefore" value="2240">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="thinspace" value="2727">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="thorn" value="254">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="threads_add_frame_source"
+              c:identifier="clutter_threads_add_frame_source"
+              shadowed-by="threads_add_frame_source_full"
+              version="0.8"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Simple wrapper around clutter_threads_add_frame_source_full().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the ID (greater than 0) of the event source.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="fps" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of times per second to call the function</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">function to call</doc>
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_frame_source_full"
+              c:identifier="clutter_threads_add_frame_source_full"
+              shadows="threads_add_frame_source"
+              version="0.8">
+      <doc xml:whitespace="preserve">Sets a function to be called at regular intervals holding the Clutter
+threads lock, with the given priority. The function is called repeatedly
+until it returns %FALSE, at which point the timeout is automatically
+removed and the function will not be called again. The @notify function
+is called when the timeout is removed.
+This function is similar to clutter_threads_add_timeout_full()
+except that it will try to compensate for delays. For example, if
+will be called again half the interval time after it finished. In
+contrast clutter_threads_add_timeout_full() would not fire until a
+full interval after the function completes so the delay between
+calls would be @interval * 1.5. This function does not however try
+to invoke the function multiple times to catch up missing frames if
+See also clutter_threads_add_idle_full().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the ID (greater than 0) of the event source.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the priority of the frame source. Typically this will be in the range between #G_PRIORITY_DEFAULT and #G_PRIORITY_HIGH.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="fps" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of times per second to call the function</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="3"
+                   destroy="4">
+          <doc xml:whitespace="preserve">function to call</doc>
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="async">
+          <doc xml:whitespace="preserve">function to call when the timeout source is removed</doc>
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_idle"
+              c:identifier="clutter_threads_add_idle"
+              shadowed-by="threads_add_idle_full"
+              version="0.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Simple wrapper around clutter_threads_add_idle_full() using the
+default priority.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the ID (greater than 0) of the event source.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="func" transfer-ownership="none" closure="1">
+          <doc xml:whitespace="preserve">function to call</doc>
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_idle_full"
+              c:identifier="clutter_threads_add_idle_full"
+              shadows="threads_add_idle"
+              version="0.4">
+      <doc xml:whitespace="preserve">Adds a function to be called whenever there are no higher priority
+events pending. If the function returns %FALSE it is automatically
+removed from the list of event sources and will not be called again.
+This function can be considered a thread-safe variant of g_idle_add_full():
+it will call @function while holding the Clutter lock. It is logically
+equivalent to the following implementation:
+|[
+static gboolean
+idle_safe_callback (gpointer data)
+{
+SafeClosure *closure = data;
+gboolean res = FALSE;
+/&amp;ast; mark the critical section &amp;ast;/
+clutter_threads_enter();
+/&amp;ast; the callback does not need to acquire the Clutter
+&amp;ast; lock itself, as it is held by the this proxy handler
+&amp;ast;/
+res = closure-&gt;callback (closure-&gt;data);
+clutter_threads_leave();
+return res;
+}
+static gulong
+add_safe_idle (GSourceFunc callback,
+gpointer    data)
+{
+SafeClosure *closure = g_new0 (SafeClosure, 1);
+closure-&amp;gt;callback = callback;
+closure-&amp;gt;data = data;
+return g_add_idle_full (G_PRIORITY_DEFAULT_IDLE,
+idle_safe_callback,
+closure,
+g_free)
+}
+]|
+This function should be used by threaded applications to make sure
+that @func is emitted under the Clutter threads lock and invoked
+from the same thread that started the Clutter main loop. For instance,
+it can be used to update the UI using the results from a worker
+thread:
+|[
+static gboolean
+update_ui (gpointer data)
+{
+SomeClosure *closure = data;
+/&amp;ast; it is safe to call Clutter API from this function because
+&amp;ast; it is invoked from the same thread that started the main
+&amp;ast; loop and under the Clutter thread lock
+&amp;ast;/
+clutter_label_set_text (CLUTTER_LABEL (closure-&amp;gt;label),
+closure-&amp;gt;text);
+g_object_unref (closure-&amp;gt;label);
+g_free (closure);
+return FALSE;
+}
+/&amp;ast; within another thread &amp;ast;/
+closure = g_new0 (SomeClosure, 1);
+/&amp;ast; always take a reference on GObject instances &amp;ast;/
+closure-&amp;gt;label = g_object_ref (my_application-&amp;gt;label);
+closure-&amp;gt;text = g_strdup (processed_text_to_update_the_label);
+clutter_threads_add_idle_full (G_PRIORITY_HIGH_IDLE,
+update_ui,
+closure,
+NULL);
+]|</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the ID (greater than 0) of the event source.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the priority of the timeout source. Typically this will be in the range between #G_PRIORITY_DEFAULT_IDLE and #G_PRIORITY_HIGH_IDLE</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <doc xml:whitespace="preserve">function to call</doc>
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="async">
+          <doc xml:whitespace="preserve">functio to call when the idle source is removed</doc>
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_repaint_func"
+              c:identifier="clutter_threads_add_repaint_func"
+              version="1.0">
+      <doc xml:whitespace="preserve">Adds a function to be called whenever Clutter is repainting a Stage.
+If the function returns %FALSE it is automatically removed from the
+list of repaint functions and will not be called again.
+This function is guaranteed to be called from within the same thread
+that called clutter_main(), and while the Clutter lock is being held.
+A repaint function is useful to ensure that an update of the scenegraph
+is performed before the scenegraph is repainted; for instance, uploading
+a frame from a video into a #ClutterTexture.
+When the repaint function is removed (either because it returned %FALSE
+or because clutter_threads_remove_repaint_func() has been called) the
+can use the returned integer to remove the repaint function by
+calling clutter_threads_remove_repaint_func().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the ID (greater than 0) of the repaint function. You</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="1"
+                   destroy="2">
+          <doc xml:whitespace="preserve">the function to be called within the paint cycle</doc>
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to be passed to the function, or %NULL</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="async">
+          <doc xml:whitespace="preserve">function to be called when removing the repaint function, or %NULL</doc>
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_timeout"
+              c:identifier="clutter_threads_add_timeout"
+              shadowed-by="threads_add_timeout_full"
+              version="0.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Simple wrapper around clutter_threads_add_timeout_full().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the ID (greater than 0) of the event source.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="interval" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the time between calls to the function, in milliseconds</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">function to call</doc>
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_timeout_full"
+              c:identifier="clutter_threads_add_timeout_full"
+              shadows="threads_add_timeout"
+              version="0.4">
+      <doc xml:whitespace="preserve">Sets a function to be called at regular intervals holding the Clutter
+threads lock, with the given priority. The function is called repeatedly
+until it returns %FALSE, at which point the timeout is automatically
+removed and the function will not be called again. The @notify function
+is called when the timeout is removed.
+The first call to the function will be at the end of the first @interval.
+It is important to note that, due to how the Clutter main loop is
+implemented, the timing will not be accurate and it will not try to
+"keep up" with the interval. A more reliable source is available
+using clutter_threads_add_frame_source_full(), which is also internally
+used by #ClutterTimeline.
+See also clutter_threads_add_idle_full().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the ID (greater than 0) of the event source.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the priority of the timeout source. Typically this will be in the range between #G_PRIORITY_DEFAULT and #G_PRIORITY_HIGH.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="interval" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the time between calls to the function, in milliseconds</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="3"
+                   destroy="4">
+          <doc xml:whitespace="preserve">function to call</doc>
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="async">
+          <doc xml:whitespace="preserve">function to call when the timeout source is removed</doc>
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_enter"
+              c:identifier="clutter_threads_enter"
+              version="0.4">
+      <doc xml:whitespace="preserve">Locks the Clutter thread lock.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="threads_init"
+              c:identifier="clutter_threads_init"
+              version="0.4">
+      <doc xml:whitespace="preserve">Initialises the Clutter threading mechanism, so that Clutter API can be
+called by multiple threads, using clutter_threads_enter() and
+clutter_threads_leave() to mark the critical sections.
+You must call g_thread_init() before this function.
+This function must be called before clutter_init().
+It is safe to call this function multiple times.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="threads_leave"
+              c:identifier="clutter_threads_leave"
+              version="0.4">
+      <doc xml:whitespace="preserve">Unlocks the Clutter thread lock.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="threads_remove_repaint_func"
+              c:identifier="clutter_threads_remove_repaint_func"
+              version="1.0">
+      <doc xml:whitespace="preserve">Removes the repaint function with @handle_id as its id</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an unsigned integer greater than zero</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_set_lock_functions"
+              c:identifier="clutter_threads_set_lock_functions"
+              version="0.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Allows the application to replace the standard method that
+Clutter uses to protect its data structures. Normally, Clutter
+creates a single #GMutex that is locked by clutter_threads_enter(),
+and released by clutter_threads_leave(); using this function an
+application provides, instead, a function @enter_fn that is
+called by clutter_threads_enter() and a function @leave_fn that is
+called by clutter_threads_leave().
+The functions must provide at least same locking functionality
+as the default implementation, but can also do extra application
+specific processing.
+As an example, consider an application that has its own recursive
+lock that when held, holds the Clutter lock as well. When Clutter
+unlocks the Clutter lock when entering a recursive main loop, the
+application must temporarily release its lock as well.
+Most threaded Clutter apps won't need to use this method.
+This method must be called before clutter_threads_init(), and cannot
+be called multiple times.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="enter_fn" transfer-ownership="none">
+          <doc xml:whitespace="preserve">function called when aquiring the Clutter main lock</doc>
+          <type name="GObject.Callback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="leave_fn" transfer-ownership="none">
+          <doc xml:whitespace="preserve">function called when releasing the Clutter main lock</doc>
+          <type name="GObject.Callback" c:type="GCallback"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="threeeighths" value="2756">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="threefifths" value="2740">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="threequarters" value="190">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="threesubscript" value="16785539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="threesuperior" value="179">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="timeout_pool_new"
+              c:identifier="clutter_timeout_pool_new"
+              version="0.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new timeout pool source. A timeout pool should be used when
+multiple timeout functions, running at the same priority, are needed and
+the g_timeout_add() API might lead to starvation of the time slice of
+the main loop. A timeout pool allocates a single time slice of the main
+loop and runs every timeout function inside it. The timeout pool is
+always sorted, so that the extraction of the next timeout function is
+a constant time operation.
+is owned by the GLib default context and will be automatically
+destroyed when the context is destroyed. It is possible to force
+the destruction of the timeout pool using g_source_destroy()</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly created #ClutterTimeoutPool. The created pool</doc>
+        <type name="TimeoutPool" c:type="ClutterTimeoutPool*"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the priority of the timeout pool. Typically this will be #G_PRIORITY_DEFAULT</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="tintegral" value="16785965">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="topintegral" value="2212">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="topleftparens" value="2219">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="topleftradical" value="2210">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="topleftsqbracket" value="2215">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="topleftsummation" value="2225">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="toprightparens" value="2221">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="toprightsqbracket" value="2217">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="toprightsummation" value="2229">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="topt" value="2551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="topvertsummationconnector" value="2227">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="trademark" value="2761">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="trademarkincircle" value="2763">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="tslash" value="956">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="twofifths" value="2739">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="twosubscript" value="16785538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="twosuperior" value="178">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="twothirds" value="2737">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="u" value="117">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uacute" value="250">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ubelowdot" value="16785125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ubreve" value="765">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ucircumflex" value="251">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="udiaeresis" value="252">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="udoubleacute" value="507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ugrave" value="249">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uhook" value="16785127">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uhorn" value="16777648">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uhornacute" value="16785129">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uhornbelowdot" value="16785137">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uhorngrave" value="16785131">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uhornhook" value="16785133">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uhorntilde" value="16785135">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="umacron" value="1022">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="underbar" value="3014">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="underscore" value="95">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="ungrab_keyboard"
+              c:identifier="clutter_ungrab_keyboard"
+              version="0.6">
+      <doc xml:whitespace="preserve">Removes an existing grab of the keyboard.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="ungrab_pointer"
+              c:identifier="clutter_ungrab_pointer"
+              version="0.6">
+      <doc xml:whitespace="preserve">Removes an existing grab of the pointer.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="ungrab_pointer_for_device"
+              c:identifier="clutter_ungrab_pointer_for_device"
+              version="0.8">
+      <doc xml:whitespace="preserve">Removes an existing grab of the pointer events for device @id.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a device id</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="union" value="2269">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uogonek" value="1017">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uparrow" value="2300">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="upcaret" value="2985">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="upleftcorner" value="2540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uprightcorner" value="2539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="upshoe" value="3011">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="upstile" value="3027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uptack" value="3022">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uring" value="505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="util_next_p2"
+              c:identifier="clutter_util_next_p2"
+              deprecated="1.2">
+      <doc xml:whitespace="preserve">Calculates the nearest power of two, greater than or equal to @a.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The nearest power of two, greater or equal to @a.</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Value to get the next power</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="utilde" value="1021">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="v" value="118">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="value_get_color"
+              c:identifier="clutter_value_get_color"
+              version="0.8.4">
+      <doc xml:whitespace="preserve">Gets the #ClutterColor contained in @value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the color inside the passed #GValue</doc>
+        <type name="Color" c:type="ClutterColor*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue initialized to #CLUTTER_TYPE_COLOR</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_fixed"
+              c:identifier="clutter_value_get_fixed"
+              version="0.8">
+      <doc xml:whitespace="preserve">Gets the fixed point value stored inside @value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the value inside the passed #GValue</doc>
+        <type name="Cogl.Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue initialized to %COGL_TYPE_FIXED</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_shader_float"
+              c:identifier="clutter_value_get_shader_float"
+              version="0.8">
+      <doc xml:whitespace="preserve">Retrieves the list of floating point values stored inside
+the passed #GValue. @value must have been initialized with
+%CLUTTER_TYPE_SHADER_FLOAT.
+The returned value is owned by the #GValue and should never
+be modified or freed.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the pointer to a list of floating point values.</doc>
+        <type name="gfloat" c:type="gfloat*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for the number of returned floating point values, or %NULL</doc>
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_shader_int"
+              c:identifier="clutter_value_get_shader_int"
+              version="0.8">
+      <doc xml:whitespace="preserve">Retrieves the list of integer values stored inside the passed
+#GValue. @value must have been initialized with
+%CLUTTER_TYPE_SHADER_INT.
+The returned value is owned by the #GValue and should never
+be modified or freed.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the pointer to a list of integer values.</doc>
+        <type name="gint" c:type="gint*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for the number of returned integer values, or %NULL</doc>
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_shader_matrix"
+              c:identifier="clutter_value_get_shader_matrix"
+              version="0.8">
+      <doc xml:whitespace="preserve">Retrieves a matrix of floating point values stored inside
+the passed #GValue. @value must have been initialized with
+%CLUTTER_TYPE_SHADER_MATRIX.
+of floating point values. The returned value is owned by the #GValue and
+should never be modified or freed.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the pointer to a matrix</doc>
+        <array length="1" c:type="gfloat*">
+          <type name="gfloat"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="length"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">return location for the number of returned floating point values, or %NULL</doc>
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_units"
+              c:identifier="clutter_value_get_units"
+              version="0.8">
+      <doc xml:whitespace="preserve">Gets the #ClutterUnit&lt;!-- --&gt;s contained in @value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the units inside the passed #GValue</doc>
+        <type name="Units" c:type="ClutterUnits*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue initialized to #CLUTTER_TYPE_UNIT</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_color"
+              c:identifier="clutter_value_set_color"
+              version="0.8.4">
+      <doc xml:whitespace="preserve">Sets @value to @color.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue initialized to #CLUTTER_TYPE_COLOR</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the color to set</doc>
+          <type name="Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_fixed"
+              c:identifier="clutter_value_set_fixed"
+              version="0.8">
+      <doc xml:whitespace="preserve">Sets @value to @fixed_.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue initialized to %COGL_TYPE_FIXED</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="fixed_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the fixed point value to set</doc>
+          <type name="Cogl.Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_shader_float"
+              c:identifier="clutter_value_set_shader_float"
+              version="0.8">
+      <doc xml:whitespace="preserve">Sets @floats as the contents of @value. The passed #GValue
+must have been initialized using %CLUTTER_TYPE_SHADER_FLOAT.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of floating point values in @floats</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="floats" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an array of floating point values</doc>
+          <type name="gfloat" c:type="gfloat*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_shader_int"
+              c:identifier="clutter_value_set_shader_int"
+              version="0.8">
+      <doc xml:whitespace="preserve">Sets @ints as the contents of @value. The passed #GValue
+must have been initialized using %CLUTTER_TYPE_SHADER_INT.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of integer values in @ints</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="ints" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an array of integer values</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_shader_matrix"
+              c:identifier="clutter_value_set_shader_matrix"
+              version="0.8">
+      <doc xml:whitespace="preserve">Sets @matrix as the contents of @value. The passed #GValue
+must have been initialized using %CLUTTER_TYPE_SHADER_MATRIX.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of floating point values in @floats</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="matrix" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a matrix of floating point values</doc>
+          <type name="gfloat" c:type="gfloat*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_units"
+              c:identifier="clutter_value_set_units"
+              version="0.8">
+      <doc xml:whitespace="preserve">Sets @value to @units</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue initialized to #CLUTTER_TYPE_UNIT</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="units" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the units to set</doc>
+          <type name="Units" c:type="ClutterUnits*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="variation" value="2241">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="vertbar" value="2552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="vertconnector" value="2214">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="voicedsound" value="1246">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="vt" value="2537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="w" value="119">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="wacute" value="16785027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="wcircumflex" value="16777589">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="wdiaeresis" value="16785029">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="wgrave" value="16785025">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="x" value="120">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="xabovedot" value="16785035">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="y" value="121">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="yacute" value="253">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ybelowdot" value="16785141">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ycircumflex" value="16777591">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ydiaeresis" value="255">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="yen" value="165">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ygrave" value="16785139">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="yhook" value="16785143">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ytilde" value="16785145">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="z" value="122">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="zabovedot" value="447">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="zacute" value="444">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="zcaron" value="446">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="zerosubscript" value="16785536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="zerosuperior" value="16785520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="zstroke" value="16777654">
+      <type name="gint" c:type="gint"/>
+    </constant>
+  </namespace>
+</repository>
diff --git a/extra/clutter/authors.txt b/extra/clutter/authors.txt
new file mode 100644 (file)
index 0000000..ce9bcc8
--- /dev/null
@@ -0,0 +1 @@
+Anton Gorenko
\ No newline at end of file
diff --git a/extra/clutter/clutter.factor b/extra/clutter/clutter.factor
new file mode 100644 (file)
index 0000000..a69a857
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: clutter.ffi ;
+IN: clutter
+
diff --git a/extra/clutter/cogl/Cogl-1.0.gir b/extra/clutter/cogl/Cogl-1.0.gir
new file mode 100644 (file)
index 0000000..95d199a
--- /dev/null
@@ -0,0 +1,7107 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GL" version="1.0"/>
+  <include name="GLib" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <c:include name="cogl/cogl.h"/>
+  <namespace name="Cogl"
+             version="1.0"
+             shared-library="libclutter-glx-1.0.so.0"
+             c:identifier-prefixes="Cogl"
+             c:symbol-prefixes="cogl">
+    <alias name="Angle" c:type="CoglAngle">
+      <doc xml:whitespace="preserve">Integer representation of an angle such that 1024 corresponds to
+full circle (i.e., 2 * pi).</doc>
+      <type name="gint32" c:type="gint32"/>
+    </alias>
+    <alias name="Fixed" c:type="CoglFixed">
+      <doc xml:whitespace="preserve">Fixed point number using a (16.16) notation.</doc>
+      <type name="gint32" c:type="gint32"/>
+    </alias>
+    <alias name="Handle" c:type="CoglHandle">
+      <doc xml:whitespace="preserve">Type used for storing references to cogl objects, the CoglHandle is
+a fully opaque type without any public data members.</doc>
+      <type name="gpointer" c:type="gpointer"/>
+    </alias>
+    <constant name="AFIRST_BIT" value="64">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="A_BIT" value="16">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="AttributeType"
+                 version="1.0"
+                 glib:type-name="CoglAttributeType"
+                 glib:get-type="cogl_attribute_type_get_type"
+                 c:type="CoglAttributeType">
+      <doc xml:whitespace="preserve">Data types for the components of cogl_vertex_buffer_add()</doc>
+      <member name="byte"
+              value="5120"
+              c:identifier="COGL_ATTRIBUTE_TYPE_BYTE"
+              glib:nick="byte"/>
+      <member name="unsigned_byte"
+              value="5121"
+              c:identifier="COGL_ATTRIBUTE_TYPE_UNSIGNED_BYTE"
+              glib:nick="unsigned-byte"/>
+      <member name="short"
+              value="5122"
+              c:identifier="COGL_ATTRIBUTE_TYPE_SHORT"
+              glib:nick="short"/>
+      <member name="unsigned_short"
+              value="5123"
+              c:identifier="COGL_ATTRIBUTE_TYPE_UNSIGNED_SHORT"
+              glib:nick="unsigned-short"/>
+      <member name="float"
+              value="5126"
+              c:identifier="COGL_ATTRIBUTE_TYPE_FLOAT"
+              glib:nick="float"/>
+    </enumeration>
+    <constant name="BGR_BIT" value="32">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="Bitmap" c:type="CoglBitmap" disguised="1">
+    </record>
+    <enumeration name="BitmapError"
+                 version="1.4"
+                 glib:type-name="CoglBitmapError"
+                 glib:get-type="cogl_bitmap_error_get_type"
+                 c:type="CoglBitmapError"
+                 glib:error-quark="cogl_bitmap_error_quark">
+      <doc xml:whitespace="preserve">Error codes that can be thrown when performing bitmap
+operations. Note that gdk_pixbuf_new_from_file() can also throw
+errors directly from the underlying image loading library. For
+example, if GdkPixbuf is used then errors #GdkPixbufError&lt;!-- --&gt;s
+will be used directly.</doc>
+      <member name="failed"
+              value="0"
+              c:identifier="COGL_BITMAP_ERROR_FAILED"
+              glib:nick="failed"/>
+      <member name="unknown_type"
+              value="1"
+              c:identifier="COGL_BITMAP_ERROR_UNKNOWN_TYPE"
+              glib:nick="unknown-type"/>
+      <member name="corrupt_image"
+              value="2"
+              c:identifier="COGL_BITMAP_ERROR_CORRUPT_IMAGE"
+              glib:nick="corrupt-image"/>
+    </enumeration>
+    <enumeration name="BlendStringError"
+                 version="1.0"
+                 glib:type-name="CoglBlendStringError"
+                 glib:get-type="cogl_blend_string_error_get_type"
+                 c:type="CoglBlendStringError"
+                 glib:error-quark="cogl_blend_string_error_quark">
+      <doc xml:whitespace="preserve">Error enumeration for the blend strings parser</doc>
+      <member name="parse_error"
+              value="0"
+              c:identifier="COGL_BLEND_STRING_ERROR_PARSE_ERROR"
+              glib:nick="parse-error"/>
+      <member name="argument_parse_error"
+              value="1"
+              c:identifier="COGL_BLEND_STRING_ERROR_ARGUMENT_PARSE_ERROR"
+              glib:nick="argument-parse-error"/>
+      <member name="invalid_error"
+              value="2"
+              c:identifier="COGL_BLEND_STRING_ERROR_INVALID_ERROR"
+              glib:nick="invalid-error"/>
+      <member name="gpu_unsupported_error"
+              value="3"
+              c:identifier="COGL_BLEND_STRING_ERROR_GPU_UNSUPPORTED_ERROR"
+              glib:nick="gpu-unsupported-error"/>
+    </enumeration>
+    <record name="Buffer" c:type="CoglBuffer" disguised="1">
+      <method name="get_size_EXP" c:identifier="cogl_buffer_get_size_EXP">
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </return-value>
+      </method>
+      <method name="get_update_hint_EXP"
+              c:identifier="cogl_buffer_get_update_hint_EXP">
+        <return-value transfer-ownership="none">
+          <type name="BufferUpdateHint" c:type="CoglBufferUpdateHint"/>
+        </return-value>
+      </method>
+      <method name="map_EXP" c:identifier="cogl_buffer_map_EXP">
+        <return-value transfer-ownership="none">
+          <type name="guint8" c:type="guint8*"/>
+        </return-value>
+        <parameters>
+          <parameter name="access" transfer-ownership="none">
+            <type name="BufferAccess" c:type="CoglBufferAccess"/>
+          </parameter>
+          <parameter name="hints" transfer-ownership="none">
+            <type name="BufferMapHint" c:type="CoglBufferMapHint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_data_EXP" c:identifier="cogl_buffer_set_data_EXP">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="guint8" c:type="guint8*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="gulong" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_update_hint_EXP"
+              c:identifier="cogl_buffer_set_update_hint_EXP">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hint" transfer-ownership="none">
+            <type name="BufferUpdateHint" c:type="CoglBufferUpdateHint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unmap_EXP" c:identifier="cogl_buffer_unmap_EXP">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <bitfield name="BufferAccess"
+              version="1.2"
+              glib:type-name="CoglBufferAccess"
+              glib:get-type="cogl_buffer_access_get_type"
+              c:type="CoglBufferAccess">
+      <doc xml:whitespace="preserve">The access hints for cogl_buffer_set_update_hint()</doc>
+      <member name="read"
+              value="1"
+              c:identifier="COGL_BUFFER_ACCESS_READ"
+              glib:nick="read"/>
+      <member name="write"
+              value="2"
+              c:identifier="COGL_BUFFER_ACCESS_WRITE"
+              glib:nick="write"/>
+      <member name="read_write"
+              value="3"
+              c:identifier="COGL_BUFFER_ACCESS_READ_WRITE"
+              glib:nick="read-write"/>
+    </bitfield>
+    <bitfield name="BufferBit"
+              version="1.0"
+              glib:type-name="CoglBufferBit"
+              glib:get-type="cogl_buffer_bit_get_type"
+              c:type="CoglBufferBit">
+      <doc xml:whitespace="preserve">Types of auxiliary buffers</doc>
+      <member name="color"
+              value="1"
+              c:identifier="COGL_BUFFER_BIT_COLOR"
+              glib:nick="color"/>
+      <member name="depth"
+              value="2"
+              c:identifier="COGL_BUFFER_BIT_DEPTH"
+              glib:nick="depth"/>
+      <member name="stencil"
+              value="4"
+              c:identifier="COGL_BUFFER_BIT_STENCIL"
+              glib:nick="stencil"/>
+    </bitfield>
+    <bitfield name="BufferMapHint"
+              version="1.4"
+              glib:type-name="CoglBufferMapHint"
+              glib:get-type="cogl_buffer_map_hint_get_type"
+              c:type="CoglBufferMapHint">
+      <doc xml:whitespace="preserve">all the buffer's contents.
+Hints to Cogl about how you are planning to modify the data once it
+is mapped.</doc>
+      <member name="discard"
+              value="1"
+              c:identifier="COGL_BUFFER_MAP_HINT_DISCARD"
+              glib:nick="discard"/>
+    </bitfield>
+    <bitfield name="BufferTarget"
+              version="0.8"
+              glib:type-name="CoglBufferTarget"
+              glib:get-type="cogl_buffer_target_get_type"
+              c:type="CoglBufferTarget">
+      <doc xml:whitespace="preserve">Target flags for FBOs.</doc>
+      <member name="window_buffer"
+              value="2"
+              c:identifier="COGL_WINDOW_BUFFER"
+              glib:nick="window-buffer"/>
+      <member name="offscreen_buffer"
+              value="4"
+              c:identifier="COGL_OFFSCREEN_BUFFER"
+              glib:nick="offscreen-buffer"/>
+    </bitfield>
+    <enumeration name="BufferUpdateHint"
+                 version="1.2"
+                 glib:type-name="CoglBufferUpdateHint"
+                 glib:get-type="cogl_buffer_update_hint_get_type"
+                 c:type="CoglBufferUpdateHint">
+      <doc xml:whitespace="preserve">The update hint on a buffer allows the user to give some detail on how often
+the buffer data is going to be updated.</doc>
+      <member name="static"
+              value="0"
+              c:identifier="COGL_BUFFER_UPDATE_HINT_STATIC"
+              glib:nick="static"/>
+      <member name="dynamic"
+              value="1"
+              c:identifier="COGL_BUFFER_UPDATE_HINT_DYNAMIC"
+              glib:nick="dynamic"/>
+      <member name="stream"
+              value="2"
+              c:identifier="COGL_BUFFER_UPDATE_HINT_STREAM"
+              glib:nick="stream"/>
+    </enumeration>
+    <record name="Color" c:type="CoglColor" version="1.0">
+      <doc xml:whitespace="preserve">A structure for holding a color definition. The contents of
+the CoglColor structure are private and should never by accessed
+directly.</doc>
+      <field name="red" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="green" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="blue" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="alpha" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="padding0" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="padding1" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="padding2" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <method name="copy"
+              c:identifier="cogl_color_copy"
+              version="1.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Creates a copy of @color
+to free the allocate resources</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a newly-allocated #CoglColor. Use cogl_color_free()</doc>
+          <type name="Color" c:type="CoglColor*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="cogl_color_free" version="1.0">
+        <doc xml:whitespace="preserve">Frees the resources allocated by cogl_color_new() and cogl_color_copy()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_alpha"
+              c:identifier="cogl_color_get_alpha"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the alpha channel of @color as a fixed point
+value between 0 and %1.0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the alpha channel of the passed color</doc>
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_alpha_byte"
+              c:identifier="cogl_color_get_alpha_byte"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the alpha channel of @color as a byte value
+between 0 and 255</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the alpha channel of the passed color</doc>
+          <type name="guint8" c:type="unsigned char"/>
+        </return-value>
+      </method>
+      <method name="get_alpha_float"
+              c:identifier="cogl_color_get_alpha_float"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the alpha channel of @color as a floating point
+value between 0.0 and 1.0</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the alpha channel of the passed color</doc>
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_blue" c:identifier="cogl_color_get_blue" version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the blue channel of @color as a fixed point
+value between 0 and %1.0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the blue channel of the passed color</doc>
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_blue_byte"
+              c:identifier="cogl_color_get_blue_byte"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the blue channel of @color as a byte value
+between 0 and 255</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the blue channel of the passed color</doc>
+          <type name="guint8" c:type="unsigned char"/>
+        </return-value>
+      </method>
+      <method name="get_blue_float"
+              c:identifier="cogl_color_get_blue_float"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the blue channel of @color as a floating point
+value between 0.0 and 1.0</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the blue channel of the passed color</doc>
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_green"
+              c:identifier="cogl_color_get_green"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the green channel of @color as a fixed point
+value between 0 and %1.0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the green channel of the passed color</doc>
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_green_byte"
+              c:identifier="cogl_color_get_green_byte"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the green channel of @color as a byte value
+between 0 and 255</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the green channel of the passed color</doc>
+          <type name="guint8" c:type="unsigned char"/>
+        </return-value>
+      </method>
+      <method name="get_green_float"
+              c:identifier="cogl_color_get_green_float"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the green channel of @color as a floating point
+value between 0.0 and 1.0</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the green channel of the passed color</doc>
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_red" c:identifier="cogl_color_get_red" version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the red channel of @color as a fixed point
+value between 0 and %1.0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the red channel of the passed color</doc>
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_red_byte"
+              c:identifier="cogl_color_get_red_byte"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the red channel of @color as a byte value
+between 0 and 255</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the red channel of the passed color</doc>
+          <type name="guint8" c:type="unsigned char"/>
+        </return-value>
+      </method>
+      <method name="get_red_float"
+              c:identifier="cogl_color_get_red_float"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the red channel of @color as a floating point
+value between 0.0 and 1.0</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the red channel of the passed color</doc>
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="init_from_4f"
+              c:identifier="cogl_color_init_from_4f"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the values of the passed channels into a #CoglColor</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the red channel, between 0 and %1.0</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="green" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the green channel, between 0 and %1.0</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="blue" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the blue channel, between 0 and %1.0</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the alpha channel, between 0 and %1.0</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_from_4fv"
+              c:identifier="cogl_color_init_from_4fv"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the values of the passed channels into a #CoglColor</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color_array" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to an array of 4 float color components</doc>
+            <type name="gfloat" c:type="float*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_from_4ub"
+              c:identifier="cogl_color_init_from_4ub"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the values of the passed channels into a #CoglColor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the red channel, between 0 and 255</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="green" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the green channel, between 0 and 255</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="blue" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the blue channel, between 0 and 255</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the alpha channel, between 0 and 255</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="premultiply"
+              c:identifier="cogl_color_premultiply"
+              version="1.0">
+        <doc xml:whitespace="preserve">Converts a non-premultiplied color to a pre-multiplied color. For
+example, semi-transparent red is (1.0, 0, 0, 0.5) when non-premultiplied
+and (0.5, 0, 0, 0.5) when premultiplied.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_alpha"
+              c:identifier="cogl_color_set_alpha"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the alpha channel of @color to @alpha.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a float value between 0.0f and 1.0f</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alpha_byte"
+              c:identifier="cogl_color_set_alpha_byte"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the alpha channel of @color to @alpha.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a byte value between 0 and 255</doc>
+            <type name="guint8" c:type="unsigned char"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alpha_float"
+              c:identifier="cogl_color_set_alpha_float"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the alpha channel of @color to @alpha.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a float value between 0.0f and 1.0f</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blue" c:identifier="cogl_color_set_blue" version="1.4">
+        <doc xml:whitespace="preserve">Sets the blue channel of @color to @blue.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="blue" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a float value between 0.0f and 1.0f</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blue_byte"
+              c:identifier="cogl_color_set_blue_byte"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the blue channel of @color to @blue.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="blue" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a byte value between 0 and 255</doc>
+            <type name="guint8" c:type="unsigned char"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blue_float"
+              c:identifier="cogl_color_set_blue_float"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the blue channel of @color to @blue.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="blue" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a float value between 0.0f and 1.0f</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_4f"
+              c:identifier="cogl_color_set_from_4f"
+              version="1.0"
+              deprecated="Use cogl_color_init_from_4f instead."
+              deprecated-version="1.4">
+        <doc xml:whitespace="preserve">Sets the values of the passed channels into a #CoglColor</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the red channel, between 0 and %1.0</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="green" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the green channel, between 0 and %1.0</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="blue" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the blue channel, between 0 and %1.0</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the alpha channel, between 0 and %1.0</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_4ub"
+              c:identifier="cogl_color_set_from_4ub"
+              version="1.0"
+              deprecated="Use cogl_color_init_from_4ub instead."
+              deprecated-version="1.4">
+        <doc xml:whitespace="preserve">Sets the values of the passed channels into a #CoglColor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the red channel, between 0 and 255</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="green" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the green channel, between 0 and 255</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="blue" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the blue channel, between 0 and 255</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the alpha channel, between 0 and 255</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_green"
+              c:identifier="cogl_color_set_green"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the green channel of @color to @green.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="green" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a float value between 0.0f and 1.0f</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_green_byte"
+              c:identifier="cogl_color_set_green_byte"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the green channel of @color to @green.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="green" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a byte value between 0 and 255</doc>
+            <type name="guint8" c:type="unsigned char"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_green_float"
+              c:identifier="cogl_color_set_green_float"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the green channel of @color to @green.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="green" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a float value between 0.0f and 1.0f</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_red" c:identifier="cogl_color_set_red" version="1.4">
+        <doc xml:whitespace="preserve">Sets the red channel of @color to @red.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a float value between 0.0f and 1.0f</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_red_byte"
+              c:identifier="cogl_color_set_red_byte"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the red channel of @color to @red.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a byte value between 0 and 255</doc>
+            <type name="guint8" c:type="unsigned char"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_red_float"
+              c:identifier="cogl_color_set_red_float"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the red channel of @color to @red.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a float value between 0.0f and 1.0f</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unpremultiply"
+              c:identifier="cogl_color_unpremultiply"
+              version="1.4">
+        <doc xml:whitespace="preserve">Converts a pre-multiplied color to a non-premultiplied color. For
+example, semi-transparent red is (0.5, 0, 0, 0.5) when premultiplied
+and (1.0, 0, 0, 0.5) when non-premultiplied.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="DepthTestFunction"
+                 glib:type-name="CoglDepthTestFunction"
+                 glib:get-type="cogl_depth_test_function_get_type"
+                 c:type="CoglDepthTestFunction">
+      <doc xml:whitespace="preserve">When using depth testing one of these functions is used to compare
+the depth of an incoming fragment against the depth value currently
+stored in the depth buffer. The function is changed using
+cogl_material_set_depth_test_function().
+The test is only done when depth testing is explicitly enabled. (See
+cogl_material_set_depth_test_enabled())</doc>
+      <member name="never"
+              value="512"
+              c:identifier="COGL_DEPTH_TEST_FUNCTION_NEVER"
+              glib:nick="never"/>
+      <member name="less"
+              value="513"
+              c:identifier="COGL_DEPTH_TEST_FUNCTION_LESS"
+              glib:nick="less"/>
+      <member name="equal"
+              value="514"
+              c:identifier="COGL_DEPTH_TEST_FUNCTION_EQUAL"
+              glib:nick="equal"/>
+      <member name="lequal"
+              value="515"
+              c:identifier="COGL_DEPTH_TEST_FUNCTION_LEQUAL"
+              glib:nick="lequal"/>
+      <member name="greater"
+              value="516"
+              c:identifier="COGL_DEPTH_TEST_FUNCTION_GREATER"
+              glib:nick="greater"/>
+      <member name="notequal"
+              value="517"
+              c:identifier="COGL_DEPTH_TEST_FUNCTION_NOTEQUAL"
+              glib:nick="notequal"/>
+      <member name="gequal"
+              value="518"
+              c:identifier="COGL_DEPTH_TEST_FUNCTION_GEQUAL"
+              glib:nick="gequal"/>
+      <member name="always"
+              value="519"
+              c:identifier="COGL_DEPTH_TEST_FUNCTION_ALWAYS"
+              glib:nick="always"/>
+    </enumeration>
+    <enumeration name="DriverError"
+                 glib:type-name="CoglDriverError"
+                 glib:get-type="cogl_driver_error_get_type"
+                 c:type="CoglDriverError">
+      <member name="unknown_version"
+              value="0"
+              c:identifier="COGL_DRIVER_ERROR_UNKNOWN_VERSION"
+              glib:nick="unknown-version"/>
+      <member name="invalid_version"
+              value="1"
+              c:identifier="COGL_DRIVER_ERROR_INVALID_VERSION"
+              glib:nick="invalid-version"/>
+    </enumeration>
+    <enumeration name="Error"
+                 version="1.4"
+                 glib:type-name="CoglError"
+                 glib:get-type="cogl_error_get_type"
+                 c:type="CoglError">
+      <doc xml:whitespace="preserve">Error enumeration for Cogl
+The @COGL_ERROR_UNSUPPORTED error can be thrown for a variety of
+reasons. For example:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;You've tried to use a feature that is not
+advertised by cogl_get_features(). This could happen if you create
+a non-sliced texture with a non-power-of-two size when
+%COGL_FEATURE_TEXTURE_NPOT is not advertised.&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;The GPU can not handle the configuration you have
+requested. An example might be if you try to use too many texture
+layers in a single #CoglMaterial&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;The driver does not support some
+configuration.&lt;/para&gt;&lt;/listiem&gt;
+&lt;/itemizedlist&gt;
+Currently this is only used by Cogl API marked as experimental so
+this enum should also be considered experimental.</doc>
+      <member name="unsupported"
+              value="0"
+              c:identifier="COGL_ERROR_UNSUPPORTED"
+              glib:nick="unsupported"/>
+    </enumeration>
+    <constant name="FIXED_0_5" value="32768">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FIXED_1" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FIXED_2_PI" value="411775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FIXED_BITS" value="32">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FIXED_EPSILON" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FIXED_MAX" value="2147483647">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FIXED_MIN" value="-2147483648">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FIXED_PI" value="205887">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FIXED_PI_2" value="102944">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FIXED_PI_4" value="51472">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FIXED_Q" value="-16">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <bitfield name="FeatureFlags"
+              version="0.8"
+              glib:type-name="CoglFeatureFlags"
+              glib:get-type="cogl_feature_flags_get_type"
+              c:type="CoglFeatureFlags">
+      <doc xml:whitespace="preserve">Flags for the supported features.</doc>
+      <member name="texture_rectangle"
+              value="2"
+              c:identifier="COGL_FEATURE_TEXTURE_RECTANGLE"
+              glib:nick="texture-rectangle"/>
+      <member name="texture_npot"
+              value="4"
+              c:identifier="COGL_FEATURE_TEXTURE_NPOT"
+              glib:nick="texture-npot"/>
+      <member name="texture_yuv"
+              value="8"
+              c:identifier="COGL_FEATURE_TEXTURE_YUV"
+              glib:nick="texture-yuv"/>
+      <member name="texture_read_pixels"
+              value="16"
+              c:identifier="COGL_FEATURE_TEXTURE_READ_PIXELS"
+              glib:nick="texture-read-pixels"/>
+      <member name="shaders_glsl"
+              value="32"
+              c:identifier="COGL_FEATURE_SHADERS_GLSL"
+              glib:nick="shaders-glsl"/>
+      <member name="offscreen"
+              value="64"
+              c:identifier="COGL_FEATURE_OFFSCREEN"
+              glib:nick="offscreen"/>
+      <member name="offscreen_multisample"
+              value="128"
+              c:identifier="COGL_FEATURE_OFFSCREEN_MULTISAMPLE"
+              glib:nick="offscreen-multisample"/>
+      <member name="offscreen_blit"
+              value="256"
+              c:identifier="COGL_FEATURE_OFFSCREEN_BLIT"
+              glib:nick="offscreen-blit"/>
+      <member name="four_clip_planes"
+              value="512"
+              c:identifier="COGL_FEATURE_FOUR_CLIP_PLANES"
+              glib:nick="four-clip-planes"/>
+      <member name="stencil_buffer"
+              value="1024"
+              c:identifier="COGL_FEATURE_STENCIL_BUFFER"
+              glib:nick="stencil-buffer"/>
+      <member name="vbos"
+              value="2048"
+              c:identifier="COGL_FEATURE_VBOS"
+              glib:nick="vbos"/>
+      <member name="pbos"
+              value="4096"
+              c:identifier="COGL_FEATURE_PBOS"
+              glib:nick="pbos"/>
+      <member name="unsigned_int_indices"
+              value="8192"
+              c:identifier="COGL_FEATURE_UNSIGNED_INT_INDICES"
+              glib:nick="unsigned-int-indices"/>
+      <member name="depth_range"
+              value="16384"
+              c:identifier="COGL_FEATURE_DEPTH_RANGE"
+              glib:nick="depth-range"/>
+      <member name="texture_npot_basic"
+              value="32768"
+              c:identifier="COGL_FEATURE_TEXTURE_NPOT_BASIC"
+              glib:nick="texture-npot-basic"/>
+      <member name="texture_npot_mipmap"
+              value="65536"
+              c:identifier="COGL_FEATURE_TEXTURE_NPOT_MIPMAP"
+              glib:nick="texture-npot-mipmap"/>
+      <member name="texture_npot_repeat"
+              value="131072"
+              c:identifier="COGL_FEATURE_TEXTURE_NPOT_REPEAT"
+              glib:nick="texture-npot-repeat"/>
+      <member name="point_sprite"
+              value="262144"
+              c:identifier="COGL_FEATURE_POINT_SPRITE"
+              glib:nick="point-sprite"/>
+      <member name="texture_3d"
+              value="524288"
+              c:identifier="COGL_FEATURE_TEXTURE_3D"
+              glib:nick="texture-3d"/>
+      <member name="shaders_arbfp"
+              value="1048576"
+              c:identifier="COGL_FEATURE_SHADERS_ARBFP"
+              glib:nick="shaders-arbfp"/>
+    </bitfield>
+    <enumeration name="FogMode"
+                 version="1.0"
+                 glib:type-name="CoglFogMode"
+                 glib:get-type="cogl_fog_mode_get_type"
+                 c:type="CoglFogMode">
+      <doc xml:whitespace="preserve">The fog mode determines the equation used to calculate the fogging blend
+factor while fogging is enabled. The simplest %COGL_FOG_MODE_LINEAR mode
+determines f as:
+|[
+f = end - eye_distance / end - start
+]|
+Where eye_distance is the distance of the current fragment in eye
+coordinates from the origin.</doc>
+      <member name="linear"
+              value="0"
+              c:identifier="COGL_FOG_MODE_LINEAR"
+              glib:nick="linear"/>
+      <member name="exponential"
+              value="1"
+              c:identifier="COGL_FOG_MODE_EXPONENTIAL"
+              glib:nick="exponential"/>
+      <member name="exponential_squared"
+              value="2"
+              c:identifier="COGL_FOG_MODE_EXPONENTIAL_SQUARED"
+              glib:nick="exponential-squared"/>
+    </enumeration>
+    <record name="Framebuffer" c:type="CoglFramebuffer" disguised="1">
+    </record>
+    <callback name="FuncPtr" c:type="CoglFuncPtr">
+      <doc xml:whitespace="preserve">The type used by cogl for function pointers, note that this type
+is used as a generic catch-all cast for function pointers and the
+actual arguments and return type may be different.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <enumeration name="IndicesType"
+                 glib:type-name="CoglIndicesType"
+                 glib:get-type="cogl_indices_type_get_type"
+                 c:type="CoglIndicesType">
+      <doc xml:whitespace="preserve">You should aim to use the smallest data type that gives you enough
+range, since it reduces the size of your index array and can help
+reduce the demand on memory bandwidth.
+Note that %COGL_INDICES_TYPE_UNSIGNED_INT is only supported if the
+%COGL_FEATURE_UNSIGNED_INT_INDICES feature is available. This
+should always be available on OpenGL but on OpenGL ES it will only
+be available if the GL_OES_element_index_uint extension is
+advertized.</doc>
+      <member name="byte"
+              value="0"
+              c:identifier="COGL_INDICES_TYPE_UNSIGNED_BYTE"
+              glib:nick="byte"/>
+      <member name="short"
+              value="1"
+              c:identifier="COGL_INDICES_TYPE_UNSIGNED_SHORT"
+              glib:nick="short"/>
+      <member name="int"
+              value="2"
+              c:identifier="COGL_INDICES_TYPE_UNSIGNED_INT"
+              glib:nick="int"/>
+    </enumeration>
+    <record name="Material" c:type="CoglMaterial" disguised="1">
+      <method name="copy"
+              c:identifier="cogl_material_copy"
+              version="1.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new material with the configuration copied from the
+source material.
+We would strongly advise developers to always aim to use
+cogl_material_copy() instead of cogl_material_new() whenever there will
+be any similarity between two materials. Copying a material helps Cogl
+keep track of a materials ancestry which we may use to help minimize GPU
+state changes.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a pointer to the newly allocated #CoglMaterial</doc>
+          <type name="Material" c:type="CoglMaterial*"/>
+        </return-value>
+      </method>
+      <method name="foreach_layer"
+              c:identifier="cogl_material_foreach_layer"
+              version="1.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Iterates all the layer indices of the given @material.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">A #CoglMaterialLayerCallback to be called for each layer index</doc>
+            <type name="MaterialLayerCallback"
+                  c:type="CoglMaterialLayerCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Private data that will be passed to the callback</doc>
+            <type name="gpointer" c:type="void*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ambient"
+              c:identifier="cogl_material_get_ambient"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the current ambient color for @material</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ambient" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The location to store the ambient color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_color"
+              c:identifier="cogl_material_get_color"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the current material color.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">The location to store the color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_depth_range"
+              c:identifier="cogl_material_get_depth_range">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="near_val" transfer-ownership="none">
+            <type name="gfloat" c:type="float*"/>
+          </parameter>
+          <parameter name="far_val" transfer-ownership="none">
+            <type name="gfloat" c:type="float*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_depth_test_enabled"
+              c:identifier="cogl_material_get_depth_test_enabled"
+              version="1.4">
+        <doc xml:whitespace="preserve">Gets the current depth test enabled state as previously set by
+cogl_material_set_depth_test_enabled().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The material's current depth test enabled state.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_depth_test_function"
+              c:identifier="cogl_material_get_depth_test_function"
+              version="1.4">
+        <doc xml:whitespace="preserve">Gets the current depth test enable state as previously set via
+cogl_material_set_depth_test_enabled().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The current depth test enable state.</doc>
+          <type name="DepthTestFunction" c:type="CoglDepthTestFunction"/>
+        </return-value>
+      </method>
+      <method name="get_depth_writing_enabled"
+              c:identifier="cogl_material_get_depth_writing_enabled"
+              version="1.4">
+        <doc xml:whitespace="preserve">Gets the depth writing enable state as set by the corresponding
+cogl_material_set_depth_writing_enabled.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The current depth writing enable state</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_diffuse"
+              c:identifier="cogl_material_get_diffuse"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the current diffuse color for @material</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="diffuse" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The location to store the diffuse color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_emission"
+              c:identifier="cogl_material_get_emission"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the materials current emission color.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="emission" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The location to store the emission color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_layer_point_sprite_coords_enabled"
+              c:identifier="cogl_material_get_layer_point_sprite_coords_enabled"
+              version="1.4">
+        <doc xml:whitespace="preserve">Gets whether point sprite coordinate generation is enabled for this
+texture layer.
+point sprite coordinates.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the texture coordinates will be replaced with</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to check.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_layers" c:identifier="cogl_material_get_layers">
+        <doc xml:whitespace="preserve">This function lets you access a material's internal list of layers
+for iteration.
+&lt;note&gt;You should avoid using this API if possible since it was only
+made public by mistake and will be deprecated when we have
+suitable alternative.&lt;/note&gt;
+&lt;note&gt;It's important to understand that the list returned may not
+remain valid if you modify the material or any of the layers in any
+way and so you would have to re-get the list in that
+situation.&lt;/note&gt;
+list of #CoglMaterialLayer&lt;!-- --&gt;'s that can be passed to the
+cogl_material_layer_* functions. The list is owned by Cogl and it
+should not be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="MaterialLayer"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_n_layers"
+              c:identifier="cogl_material_get_n_layers"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the number of layers defined for the given @material</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of layers</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_shininess"
+              c:identifier="cogl_material_get_shininess"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the materials current emission color.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The materials current shininess value</doc>
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_specular"
+              c:identifier="cogl_material_get_specular"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the materials current specular color.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="specular" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The location to store the specular color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_user_program"
+              c:identifier="cogl_material_get_user_program"
+              version="1.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Queries what user program has been associated with the given</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">The current user program or %COGL_INVALID_HANDLE.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="remove_layer" c:identifier="cogl_material_remove_layer">
+        <doc xml:whitespace="preserve">This function removes a layer from your material</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Specifies the layer you want to remove</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alpha_test_function"
+              c:identifier="cogl_material_set_alpha_test_function"
+              version="1.0">
+        <doc xml:whitespace="preserve">Before a primitive is blended with the framebuffer, it goes through an
+alpha test stage which lets you discard fragments based on the current
+alpha value. This function lets you change the function used to evaluate
+the alpha channel, and thus determine which fragments are discarded
+and which continue on to the blending stage.
+The default is %COGL_MATERIAL_ALPHA_FUNC_ALWAYS</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha_func" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A @CoglMaterialAlphaFunc constant</doc>
+            <type name="MaterialAlphaFunc" c:type="CoglMaterialAlphaFunc"/>
+          </parameter>
+          <parameter name="alpha_reference" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A reference point that the chosen alpha function uses to compare incoming fragments to.</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_ambient"
+              c:identifier="cogl_material_set_ambient"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the material's ambient color, in the standard OpenGL lighting
+model. The ambient color affects the overall color of the object.
+Since the diffuse color will be intense when the light hits the surface
+directly, the ambient will be most apparent where the light hits at a
+slant.
+The default value is (0.2, 0.2, 0.2, 1.0)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ambient" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The components of the desired ambient color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_ambient_and_diffuse"
+              c:identifier="cogl_material_set_ambient_and_diffuse"
+              version="1.0">
+        <doc xml:whitespace="preserve">Conveniently sets the diffuse and ambient color of @material at the same
+time. See cogl_material_set_ambient() and cogl_material_set_diffuse().
+The default ambient color is (0.2, 0.2, 0.2, 1.0)
+The default diffuse color is (0.8, 0.8, 0.8, 1.0)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The components of the desired ambient and diffuse colors</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blend"
+              c:identifier="cogl_material_set_blend"
+              version="1.0"
+              throws="1">
+        <doc xml:whitespace="preserve">If not already familiar; please refer &lt;link linkend="cogl-Blend-Strings"&gt;here&lt;/link&gt;
+for an overview of what blend strings are, and their syntax.
+Blending occurs after the alpha test function, and combines fragments with
+the framebuffer.
+Currently the only blend function Cogl exposes is ADD(). So any valid
+blend statements will be of the form:
+|[
+&amp;lt;channel-mask&amp;gt;=ADD(SRC_COLOR*(&amp;lt;factor&amp;gt;), DST_COLOR*(&amp;lt;factor&amp;gt;))
+]|
+&lt;warning&gt;The brackets around blend factors are currently not
+optional!&lt;/warning&gt;
+This is the list of source-names usable as blend factors:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;SRC_COLOR: The color of the in comming fragment&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;DST_COLOR: The color of the framebuffer&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;CONSTANT: The constant set via cogl_material_set_blend_constant()&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+The source names can be used according to the
+&lt;link linkend="cogl-Blend-String-syntax"&gt;color-source and factor syntax&lt;/link&gt;,
+so for example "(1-SRC_COLOR[A])" would be a valid factor, as would
+"(CONSTANT[RGB])"
+These can also be used as factors:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;0: (0, 0, 0, 0)&lt;/listitem&gt;
+&lt;listitem&gt;1: (1, 1, 1, 1)&lt;/listitem&gt;
+&lt;listitem&gt;SRC_ALPHA_SATURATE_FACTOR: (f,f,f,1) where f = MIN(SRC_COLOR[A],1-DST_COLOR[A])&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;note&gt;Remember; all color components are normalized to the range [0, 1]
+before computing the result of blending.&lt;/note&gt;
+&lt;example id="cogl-Blend-Strings-blend-unpremul"&gt;
+&lt;title&gt;Blend Strings/1&lt;/title&gt;
+&lt;para&gt;Blend a non-premultiplied source over a destination with
+premultiplied alpha:&lt;/para&gt;
+&lt;programlisting&gt;
+"RGB = ADD(SRC_COLOR*(SRC_COLOR[A]), DST_COLOR*(1-SRC_COLOR[A]))"
+"A   = ADD(SRC_COLOR, DST_COLOR*(1-SRC_COLOR[A]))"
+&lt;/programlisting&gt;
+&lt;/example&gt;
+&lt;example id="cogl-Blend-Strings-blend-premul"&gt;
+&lt;title&gt;Blend Strings/2&lt;/title&gt;
+&lt;para&gt;Blend a premultiplied source over a destination with
+premultiplied alpha&lt;/para&gt;
+&lt;programlisting&gt;
+"RGBA = ADD(SRC_COLOR, DST_COLOR*(1-SRC_COLOR[A]))"
+&lt;/programlisting&gt;
+&lt;/example&gt;
+The default blend string is:
+|[
+RGBA = ADD (SRC_COLOR, DST_COLOR*(1-SRC_COLOR[A]))
+]|
+That gives normal alpha-blending when the calculated color for the material
+is in premultiplied form.
+described blending is supported by the underlying driver/hardware. If
+there was an error, %FALSE is returned and @error is set accordingly (if
+present).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the blend string was successfully parsed, and the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="blend_string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A &lt;link linkend="cogl-Blend-Strings"&gt;Cogl blend string&lt;/link&gt; describing the desired blend function.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blend_constant"
+              c:identifier="cogl_material_set_blend_constant"
+              version="1.0">
+        <doc xml:whitespace="preserve">When blending is setup to reference a CONSTANT blend factor then
+blending will depend on the constant set with this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="constant_color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The constant color you want</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_color"
+              c:identifier="cogl_material_set_color"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the basic color of the material, used when no lighting is enabled.
+Note that if you don't add any layers to the material then the color
+will be blended unmodified with the destination; the default blend
+semi-transparent red. See cogl_color_premultiply().
+The default value is (1.0, 1.0, 1.0, 1.0)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The components of the color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_color4f"
+              c:identifier="cogl_material_set_color4f"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the basic color of the material, used when no lighting is enabled.
+The default value is (1.0, 1.0, 1.0, 1.0)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The red component</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="green" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The green component</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="blue" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The blue component</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The alpha component</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_color4ub"
+              c:identifier="cogl_material_set_color4ub"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the basic color of the material, used when no lighting is enabled.
+The default value is (0xff, 0xff, 0xff, 0xff)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The red component</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="green" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The green component</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="blue" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The blue component</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The alpha component</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_depth_range"
+              c:identifier="cogl_material_set_depth_range"
+              version="1.4"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets the range to map depth values in normalized device coordinates
+to before writing out to a depth buffer.
+After your geometry has be transformed, clipped and had perspective
+division applied placing it in normalized device
+coordinates all depth values between the near and far z clipping
+planes are in the range -1 to 1. Before writing any depth value to
+the depth buffer though the value is mapped into the range [0, 1].
+With this function you can change the range which depth values are
+mapped too although the range must still lye within the range [0,
+1].
+If your driver does not support this feature (for example you are
+using GLES 1 drivers) then this will return %FALSE and set an error
+if @error isn't NULL. You can check ahead of time for the
+%COGL_FEATURE_DEPTH_RANGE feature with cogl_features_available() to
+know if this function will succeed.
+By default normalized device coordinate depth values are mapped to
+the full range of depth buffer values, [0, 1].</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if driver support is available else %FALSE.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="near_val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The near component of the desired depth range which will be clamped to the range [0, 1]</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="far_val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The far component of the desired depth range which will be clamped to the range [0, 1]</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_depth_test_enabled"
+              c:identifier="cogl_material_set_depth_test_enabled"
+              version="1.4">
+        <doc xml:whitespace="preserve">Enables or disables depth testing according to the value of
+If depth testing is enable then the #CoglDepthTestFunction set
+using cogl_material_set_depth_test_function() us used to evaluate
+the depth value of incoming fragments against the corresponding
+value stored in the current depth buffer, and if the test passes
+then the fragments depth value is used to update the depth buffer.
+(unless you have disabled depth writing via
+cogl_material_set_depth_writing_enabled ())
+By default depth testing is disabled.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The enable state you want</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_depth_test_function"
+              c:identifier="cogl_material_set_depth_test_function"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the #CoglDepthTestFunction used to compare the depth value of
+an incoming fragment against the corresponding value in the current
+depth buffer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="function" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #CoglDepthTestFunction to set</doc>
+            <type name="DepthTestFunction" c:type="CoglDepthTestFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_depth_writing_enabled"
+              c:identifier="cogl_material_set_depth_writing_enabled"
+              version="1.4">
+        <doc xml:whitespace="preserve">Enables or disables depth buffer writing according to the value of
+between a fragment's depth value and the corresponding depth buffer
+value passes then the fragment's depth is written to the depth
+buffer unless writing is disabled here.
+By default depth writing is enabled</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The enable state you want</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_diffuse"
+              c:identifier="cogl_material_set_diffuse"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the material's diffuse color, in the standard OpenGL lighting
+model. The diffuse color is most intense where the light hits the
+surface directly - perpendicular to the surface.
+The default value is (0.8, 0.8, 0.8, 1.0)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="diffuse" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The components of the desired diffuse color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_emission"
+              c:identifier="cogl_material_set_emission"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the material's emissive color, in the standard OpenGL lighting
+model. It will look like the surface is a light source emitting this
+color.
+The default value is (0.0, 0.0, 0.0, 1.0)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="emission" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The components of the desired emissive color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer"
+              c:identifier="cogl_material_set_layer"
+              version="1.0">
+        <doc xml:whitespace="preserve">In addition to the standard OpenGL lighting model a Cogl material may have
+one or more layers comprised of textures that can be blended together in
+order, with a number of different texture combine modes. This function
+defines a new texture layer.
+The index values of multiple layers do not have to be consecutive; it is
+only their relative order that is important.
+&lt;note&gt;In the future, we may define other types of material layers, such
+as purely GLSL based layers.&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the layer</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="texture" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #CoglHandle for the layer object</doc>
+            <type name="Handle" c:type="CoglHandle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_combine"
+              c:identifier="cogl_material_set_layer_combine"
+              version="1.0"
+              throws="1">
+        <doc xml:whitespace="preserve">If not already familiar; you can refer
+&lt;link linkend="cogl-Blend-Strings"&gt;here&lt;/link&gt; for an overview of what blend
+strings are and there syntax.
+These are all the functions available for texture combining:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;REPLACE(arg0) = arg0&lt;/listitem&gt;
+&lt;listitem&gt;MODULATE(arg0, arg1) = arg0 x arg1&lt;/listitem&gt;
+&lt;listitem&gt;ADD(arg0, arg1) = arg0 + arg1&lt;/listitem&gt;
+&lt;listitem&gt;ADD_SIGNED(arg0, arg1) = arg0 + arg1 - 0.5&lt;/listitem&gt;
+&lt;listitem&gt;INTERPOLATE(arg0, arg1, arg2) = arg0 x arg2 + arg1 x (1 - arg2)&lt;/listitem&gt;
+&lt;listitem&gt;SUBTRACT(arg0, arg1) = arg0 - arg1&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;programlisting&gt;
+DOT3_RGB(arg0, arg1) = 4 x ((arg0[R] - 0.5)) * (arg1[R] - 0.5) +
+(arg0[G] - 0.5)) * (arg1[G] - 0.5) +
+(arg0[B] - 0.5)) * (arg1[B] - 0.5))
+&lt;/programlisting&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;programlisting&gt;
+DOT3_RGBA(arg0, arg1) = 4 x ((arg0[R] - 0.5)) * (arg1[R] - 0.5) +
+(arg0[G] - 0.5)) * (arg1[G] - 0.5) +
+(arg0[B] - 0.5)) * (arg1[B] - 0.5))
+&lt;/programlisting&gt;
+&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+Refer to the
+&lt;link linkend="cogl-Blend-String-syntax"&gt;color-source syntax&lt;/link&gt; for
+describing the arguments. The valid source names for texture combining
+are:
+&lt;variablelist&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;TEXTURE&lt;/term&gt;
+&lt;listitem&gt;Use the color from the current texture layer&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;TEXTURE_0, TEXTURE_1, etc&lt;/term&gt;
+&lt;listitem&gt;Use the color from the specified texture layer&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;CONSTANT&lt;/term&gt;
+&lt;listitem&gt;Use the color from the constant given with
+cogl_material_set_layer_constant()&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;PRIMARY&lt;/term&gt;
+&lt;listitem&gt;Use the color of the material as set with
+cogl_material_set_color()&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;PREVIOUS&lt;/term&gt;
+&lt;listitem&gt;Either use the texture color from the previous layer, or
+if this is layer 0, use the color of the material as set with
+cogl_material_set_color()&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;/variablelist&gt;
+&lt;refsect2 id="cogl-Layer-Combine-Examples"&gt;
+&lt;title&gt;Layer Combine Examples&lt;/title&gt;
+&lt;para&gt;This is effectively what the default blending is:&lt;/para&gt;
+&lt;informalexample&gt;&lt;programlisting&gt;
+RGBA = MODULATE (PREVIOUS, TEXTURE)
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+&lt;para&gt;This could be used to cross-fade between two images, using
+the alpha component of a constant as the interpolator. The constant
+color is given by calling cogl_material_set_layer_constant.&lt;/para&gt;
+&lt;informalexample&gt;&lt;programlisting&gt;
+RGBA = INTERPOLATE (PREVIOUS, TEXTURE, CONSTANT[A])
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+&lt;/refsect2&gt;
+&lt;note&gt;You can't give a multiplication factor for arguments as you can
+with blending.&lt;/note&gt;
+described texture combining is supported by the underlying driver and
+or hardware. On failure, %FALSE is returned and @error is set</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the blend string was successfully parsed, and the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Specifies the layer you want define a combine function for</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="blend_string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A &lt;link linkend="cogl-Blend-Strings"&gt;Cogl blend string&lt;/link&gt; describing the desired texture combine function.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_combine_constant"
+              c:identifier="cogl_material_set_layer_combine_constant"
+              version="1.0">
+        <doc xml:whitespace="preserve">When you are using the 'CONSTANT' color source in a layer combine
+description then you can use this function to define its value.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Specifies the layer you want to specify a constant used for texture combining</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="constant" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The constant color you want</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_filters"
+              c:identifier="cogl_material_set_layer_filters">
+        <doc xml:whitespace="preserve">Changes the decimation and interpolation filters used when a texture is
+drawn at other scales than 100%.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to change.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="min_filter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the filter used when scaling a texture down.</doc>
+            <type name="MaterialFilter" c:type="CoglMaterialFilter"/>
+          </parameter>
+          <parameter name="mag_filter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the filter used when magnifying a texture.</doc>
+            <type name="MaterialFilter" c:type="CoglMaterialFilter"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_matrix"
+              c:identifier="cogl_material_set_layer_matrix">
+        <doc xml:whitespace="preserve">This function lets you set a matrix that can be used to e.g. translate
+and rotate a single layer of a material used to fill your geometry.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index for the layer inside @material</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="matrix" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the transformation matrix for the layer</doc>
+            <type name="Matrix" c:type="CoglMatrix*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_point_sprite_coords_enabled"
+              c:identifier="cogl_material_set_layer_point_sprite_coords_enabled"
+              version="1.4"
+              throws="1">
+        <doc xml:whitespace="preserve">When rendering points, if @enable is %TRUE then the texture
+coordinates for this layer will be replaced with coordinates that
+vary from 0.0 to 1.0 across the primitive. The top left of the
+point will have the coordinates 0.0,0.0 and the bottom right will
+have 1.0,1.0. If @enable is %FALSE then the coordinates will be
+fixed for the entire point.
+This function will only work if %COGL_FEATURE_POINT_SPRITE is
+available. If the feature is not available then the function will
+return %FALSE and set @error.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the function succeeds, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to change.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="enable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to enable point sprite coord generation.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_wrap_mode"
+              c:identifier="cogl_material_set_layer_wrap_mode"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the wrap mode for all three coordinates of texture lookups on
+this layer. This is equivalent to calling
+cogl_material_set_layer_wrap_mode_s(),
+cogl_material_set_layer_wrap_mode_t() and
+cogl_material_set_layer_wrap_mode_p() separately.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to change.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new wrap mode</doc>
+            <type name="MaterialWrapMode" c:type="CoglMaterialWrapMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_wrap_mode_p"
+              c:identifier="cogl_material_set_layer_wrap_mode_p"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the wrap mode for the 'p' coordinate of texture lookups on
+this layer. 'p' is the third coordinate.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to change.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new wrap mode</doc>
+            <type name="MaterialWrapMode" c:type="CoglMaterialWrapMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_wrap_mode_s"
+              c:identifier="cogl_material_set_layer_wrap_mode_s"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the wrap mode for the 's' coordinate of texture lookups on this layer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to change.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new wrap mode</doc>
+            <type name="MaterialWrapMode" c:type="CoglMaterialWrapMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_wrap_mode_t"
+              c:identifier="cogl_material_set_layer_wrap_mode_t"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the wrap mode for the 't' coordinate of texture lookups on this layer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to change.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new wrap mode</doc>
+            <type name="MaterialWrapMode" c:type="CoglMaterialWrapMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_shininess"
+              c:identifier="cogl_material_set_shininess"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the shininess of the material, in the standard OpenGL lighting
+model, which determines the size of the specular highlights. A
+higher @shininess will produce smaller highlights which makes the
+object appear more shiny.
+The default value is 0.0</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="shininess" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The desired shininess; must be &gt;= 0.0</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_specular"
+              c:identifier="cogl_material_set_specular"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the material's specular color, in the standard OpenGL lighting
+model. The intensity of the specular color depends on the viewport
+position, and is brightest along the lines of reflection.
+The default value is (0.0, 0.0, 0.0, 1.0)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="specular" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The components of the desired specular color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_user_program"
+              c:identifier="cogl_material_set_user_program"
+              version="1.4">
+        <doc xml:whitespace="preserve">Associates a linked CoglProgram with the given material so that the
+program can take full control of vertex and/or fragment processing.
+This is an example of how it can be used to associate an ARBfp
+program with a #CoglMaterial:
+|[
+CoglHandle shader;
+CoglHandle program;
+CoglMaterial *material;
+shader = cogl_create_shader (COGL_SHADER_TYPE_FRAGMENT);
+cogl_shader_source (shader,
+"!!ARBfp1.0\n"
+"MOV result.color,fragment.color;\n"
+"END\n");
+cogl_shader_compile (shader);
+program = cogl_create_program ();
+cogl_program_attach_shader (program, shader);
+cogl_program_link (program);
+material = cogl_material_new ();
+cogl_material_set_user_program (material, program);
+cogl_set_source_color4ub (0xff, 0x00, 0x00, 0xff);
+cogl_rectangle (0, 0, 100, 100);
+]|
+It is possibly worth keeping in mind that this API is not part of
+the long term design for how we want to expose shaders to Cogl
+developers (We are planning on deprecating the cogl_program and
+cogl_shader APIs in favour of a "snippet" framework) but in the
+meantime we hope this will handle most practical GLSL and ARBfp
+requirements.
+Also remember you need to check for either the
+%COGL_FEATURE_SHADERS_GLSL or %COGL_FEATURE_SHADERS_ARBFP before
+using the cogl_program or cogl_shader API.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="program" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #CoglHandle to a linked CoglProgram</doc>
+            <type name="Handle" c:type="CoglHandle"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="MaterialAlphaFunc"
+                 glib:type-name="CoglMaterialAlphaFunc"
+                 glib:get-type="cogl_material_alpha_func_get_type"
+                 c:type="CoglMaterialAlphaFunc">
+      <doc xml:whitespace="preserve">Alpha testing happens before blending primitives with the framebuffer and
+gives an opportunity to discard fragments based on a comparison with the
+incoming alpha value and a reference alpha value. The #CoglMaterialAlphaFunc
+determines how the comparison is done.</doc>
+      <member name="never"
+              value="512"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_NEVER"
+              glib:nick="never"/>
+      <member name="less"
+              value="513"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_LESS"
+              glib:nick="less"/>
+      <member name="equal"
+              value="514"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_EQUAL"
+              glib:nick="equal"/>
+      <member name="lequal"
+              value="515"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_LEQUAL"
+              glib:nick="lequal"/>
+      <member name="greater"
+              value="516"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_GREATER"
+              glib:nick="greater"/>
+      <member name="notequal"
+              value="517"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_NOTEQUAL"
+              glib:nick="notequal"/>
+      <member name="gequal"
+              value="518"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_GEQUAL"
+              glib:nick="gequal"/>
+      <member name="always"
+              value="519"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_ALWAYS"
+              glib:nick="always"/>
+    </enumeration>
+    <enumeration name="MaterialFilter"
+                 glib:type-name="CoglMaterialFilter"
+                 glib:get-type="cogl_material_filter_get_type"
+                 c:type="CoglMaterialFilter">
+      <doc xml:whitespace="preserve">Texture filtering is used whenever the current pixel maps either to more
+than one texture element (texel) or less than one. These filter enums
+correspond to different strategies used to come up with a pixel color, by
+possibly referring to multiple neighbouring texels and taking a weighted
+average or simply using the nearest texel.</doc>
+      <member name="nearest"
+              value="9728"
+              c:identifier="COGL_MATERIAL_FILTER_NEAREST"
+              glib:nick="nearest"/>
+      <member name="linear"
+              value="9729"
+              c:identifier="COGL_MATERIAL_FILTER_LINEAR"
+              glib:nick="linear"/>
+      <member name="nearest_mipmap_nearest"
+              value="9984"
+              c:identifier="COGL_MATERIAL_FILTER_NEAREST_MIPMAP_NEAREST"
+              glib:nick="nearest-mipmap-nearest"/>
+      <member name="linear_mipmap_nearest"
+              value="9985"
+              c:identifier="COGL_MATERIAL_FILTER_LINEAR_MIPMAP_NEAREST"
+              glib:nick="linear-mipmap-nearest"/>
+      <member name="nearest_mipmap_linear"
+              value="9986"
+              c:identifier="COGL_MATERIAL_FILTER_NEAREST_MIPMAP_LINEAR"
+              glib:nick="nearest-mipmap-linear"/>
+      <member name="linear_mipmap_linear"
+              value="9987"
+              c:identifier="COGL_MATERIAL_FILTER_LINEAR_MIPMAP_LINEAR"
+              glib:nick="linear-mipmap-linear"/>
+    </enumeration>
+    <record name="MaterialLayer" c:type="CoglMaterialLayer" disguised="1">
+      <method name="get_mag_filter"
+              c:identifier="cogl_material_layer_get_mag_filter">
+        <doc xml:whitespace="preserve">Queries the currently set downscaling filter for a material later</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current downscaling filter</doc>
+          <type name="MaterialFilter" c:type="CoglMaterialFilter"/>
+        </return-value>
+      </method>
+      <method name="get_min_filter"
+              c:identifier="cogl_material_layer_get_min_filter">
+        <doc xml:whitespace="preserve">Queries the currently set downscaling filter for a material layer</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current downscaling filter</doc>
+          <type name="MaterialFilter" c:type="CoglMaterialFilter"/>
+        </return-value>
+      </method>
+      <method name="get_texture"
+              c:identifier="cogl_material_layer_get_texture">
+        <doc xml:whitespace="preserve">Extracts a texture handle for a specific layer.
+&lt;note&gt;In the future Cogl may support purely GLSL based layers; for those
+layers this function which will likely return %COGL_INVALID_HANDLE if you
+try to get the texture handle from them. Considering this scenario, you
+should call cogl_material_layer_get_type() first in order check it is of
+type %COGL_MATERIAL_LAYER_TYPE_TEXTURE before calling this function.&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for the texture inside the layer</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="get_wrap_mode_p"
+              c:identifier="cogl_material_layer_get_wrap_mode_p"
+              version="1.4">
+        <doc xml:whitespace="preserve">Gets the wrap mode for the 'p' coordinate of texture lookups on
+this layer. 'p' is the third coordinate.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the wrap mode value for the p coordinate.</doc>
+          <type name="MaterialWrapMode" c:type="CoglMaterialWrapMode"/>
+        </return-value>
+      </method>
+      <method name="get_wrap_mode_s"
+              c:identifier="cogl_material_layer_get_wrap_mode_s"
+              version="1.4">
+        <doc xml:whitespace="preserve">Gets the wrap mode for the 's' coordinate of texture lookups on this layer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the wrap mode value for the s coordinate.</doc>
+          <type name="MaterialWrapMode" c:type="CoglMaterialWrapMode"/>
+        </return-value>
+      </method>
+      <method name="get_wrap_mode_t"
+              c:identifier="cogl_material_layer_get_wrap_mode_t"
+              version="1.4">
+        <doc xml:whitespace="preserve">Gets the wrap mode for the 't' coordinate of texture lookups on this layer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the wrap mode value for the t coordinate.</doc>
+          <type name="MaterialWrapMode" c:type="CoglMaterialWrapMode"/>
+        </return-value>
+      </method>
+    </record>
+    <callback name="MaterialLayerCallback"
+              c:type="CoglMaterialLayerCallback"
+              version="1.4">
+      <doc xml:whitespace="preserve">The callback prototype used with cogl_material_foreach_layer() for
+iterating all the layers of a @material.</doc>
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #CoglMaterial whos layers are being iterated</doc>
+          <type name="Material" c:type="CoglMaterial*"/>
+        </parameter>
+        <parameter name="layer_index" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The current layer index</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">The private data passed to cogl_material_foreach_layer()</doc>
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="MaterialLayerType"
+                 version="1.0"
+                 glib:type-name="CoglMaterialLayerType"
+                 glib:get-type="cogl_material_layer_type_get_type"
+                 c:type="CoglMaterialLayerType">
+      <doc xml:whitespace="preserve">Available types of layers for a #CoglMaterial. This enumeration
+might be expanded in later versions.</doc>
+      <member name="texture"
+              value="0"
+              c:identifier="COGL_MATERIAL_LAYER_TYPE_TEXTURE"
+              glib:nick="texture"/>
+    </enumeration>
+    <enumeration name="MaterialWrapMode"
+                 version="1.4"
+                 glib:type-name="CoglMaterialWrapMode"
+                 glib:get-type="cogl_material_wrap_mode_get_type"
+                 c:type="CoglMaterialWrapMode">
+      <doc xml:whitespace="preserve">The wrap mode specifies what happens when texture coordinates
+outside the range 0→1 are used. Note that if the filter mode is
+anything but %COGL_MATERIAL_FILTER_NEAREST then texels outside the
+range 0→1 might be used even when the coordinate is exactly 0 or 1
+because OpenGL will try to sample neighbouring pixels. For example
+if you are trying to render the full texture then you may get
+artifacts around the edges when the pixels from the other side are
+merged in if the wrap mode is set to repeat.</doc>
+      <member name="repeat"
+              value="10497"
+              c:identifier="COGL_MATERIAL_WRAP_MODE_REPEAT"
+              glib:nick="repeat"/>
+      <member name="clamp_to_edge"
+              value="33071"
+              c:identifier="COGL_MATERIAL_WRAP_MODE_CLAMP_TO_EDGE"
+              glib:nick="clamp-to-edge"/>
+      <member name="automatic"
+              value="519"
+              c:identifier="COGL_MATERIAL_WRAP_MODE_AUTOMATIC"
+              glib:nick="automatic"/>
+    </enumeration>
+    <record name="Matrix" c:type="CoglMatrix">
+      <doc xml:whitespace="preserve">A CoglMatrix holds a 4x4 transform matrix. This is a single precision,
+column-major matrix which means it is compatible with what OpenGL expects.
+A CoglMatrix can represent transforms such as, rotations, scaling,
+translation, sheering, and linear projections. You can combine these
+transforms by multiplying multiple matrices in the order you want them
+applied.
+The transformation of a vertex (x, y, z, w) by a CoglMatrix is given by:
+|[
+x_new = xx * x + xy * y + xz * z + xw * w
+y_new = yx * x + yy * y + yz * z + yw * w
+z_new = zx * x + zy * y + zz * z + zw * w
+w_new = wx * x + wy * y + wz * z + ww * w
+]|
+Where w is normally 1
+&lt;note&gt;You must consider the members of the CoglMatrix structure read only,
+and all matrix modifications must be done via the cogl_matrix API. This
+allows Cogl to annotate the matrices internally. Violation of this will give
+undefined results. If you need to initialize a matrix with a constant other
+than the identity matrix you can use cogl_matrix_init_from_array().&lt;/note&gt;</doc>
+      <field name="xx" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="yx" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="zx" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="wx" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="xy" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="yy" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="zy" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="wy" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="xz" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="yz" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="zz" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="wz" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="xw" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="yw" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="zw" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="ww" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="inv" writable="1">
+        <array zero-terminated="0" c:type="gfloat" fixed-size="16">
+          <type name="gfloat" c:type="float"/>
+        </array>
+      </field>
+      <field name="type" writable="1">
+        <type name="guint" c:type="unsigned"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="guint" c:type="unsigned"/>
+      </field>
+      <field name="_padding3" writable="1">
+        <type name="guint" c:type="unsigned"/>
+      </field>
+      <method name="frustum" c:identifier="cogl_matrix_frustum">
+        <doc xml:whitespace="preserve">Multiplies @matrix by the given frustum perspective matrix.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="left" transfer-ownership="none">
+            <doc xml:whitespace="preserve">coord of left vertical clipping plane</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="right" transfer-ownership="none">
+            <doc xml:whitespace="preserve">coord of right vertical clipping plane</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="bottom" transfer-ownership="none">
+            <doc xml:whitespace="preserve">coord of bottom horizontal clipping plane</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="top" transfer-ownership="none">
+            <doc xml:whitespace="preserve">coord of top horizontal clipping plane</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="z_near" transfer-ownership="none">
+            <doc xml:whitespace="preserve">positive distance to near depth clipping plane</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="z_far" transfer-ownership="none">
+            <doc xml:whitespace="preserve">positive distance to far depth clipping plane</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_array" c:identifier="cogl_matrix_get_array">
+        <doc xml:whitespace="preserve">Casts @matrix to a float array which can be directly passed to OpenGL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the float array</doc>
+          <type name="gfloat" c:type="float*"/>
+        </return-value>
+      </method>
+      <method name="get_inverse"
+              c:identifier="cogl_matrix_get_inverse"
+              version="1.2">
+        <doc xml:whitespace="preserve">Gets the inverse transform of a given matrix and uses it to initialize
+a new #CoglMatrix.
+&lt;note&gt;Although the first parameter is annotated as const to indicate
+that the transform it represents isn't modified this function may
+technically save a copy of the inverse transform within the given
+#CoglMatrix so that subsequent requests for the inverse transform may
+avoid costly inversion calculations.&lt;/note&gt;
+for degenerate transformations that can't be inverted (in this case the</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the inverse was successfully calculated or %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="inverse"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">The destination for a 4x4 inverse transformation matrix</doc>
+            <type name="Matrix" c:type="CoglMatrix*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_from_array"
+              c:identifier="cogl_matrix_init_from_array">
+        <doc xml:whitespace="preserve">Initializes @matrix with the contents of @array</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="array" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A linear array of 16 floats (column-major order)</doc>
+            <type name="gfloat" c:type="float*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_identity" c:identifier="cogl_matrix_init_identity">
+        <doc xml:whitespace="preserve">Resets matrix to the identity matrix:
+|[
+.xx=1; .xy=0; .xz=0; .xw=0;
+.yx=0; .yy=1; .yz=0; .yw=0;
+.zx=0; .zy=0; .zz=1; .zw=0;
+.wx=0; .wy=0; .wz=0; .ww=1;
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="multiply" c:identifier="cogl_matrix_multiply">
+        <doc xml:whitespace="preserve">Multiplies the two supplied matrices together and stores
+the resulting matrix inside @result</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="a" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A 4x4 transformation matrix</doc>
+            <type name="Matrix" c:type="CoglMatrix*"/>
+          </parameter>
+          <parameter name="b" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A 4x4 transformation matrix</doc>
+            <type name="Matrix" c:type="CoglMatrix*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ortho" c:identifier="cogl_matrix_ortho">
+        <doc xml:whitespace="preserve">Multiplies @matrix by a parallel projection matrix.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="left" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The coordinate for the left clipping plane</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="right" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The coordinate for the right clipping plane</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="bottom" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The coordinate for the bottom clipping plane</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="top" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The coordinate for the top clipping plane</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="z_near" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The coordinate for the near clipping plane (may be negative if the plane is behind the viewer)</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="z_far" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The coordinate for the far clipping plane (may be negative if the plane is behind the viewer)</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="perspective" c:identifier="cogl_matrix_perspective">
+        <doc xml:whitespace="preserve">Multiplies @matrix by the described perspective matrix
+&lt;note&gt;You should be careful not to have to great a @z_far / @z_near ratio
+since that will reduce the effectiveness of depth testing since there wont
+be enough precision to identify the depth of objects near to each
+other.&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fov_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A field of view angle for the Y axis</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="aspect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The ratio of width to height determining the field of view angle for the x axis.</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="z_near" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The distance to the near clip plane. Never pass 0 and always pass a positive number.</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="z_far" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The distance to the far clip plane. (Should always be positive)</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="rotate" c:identifier="cogl_matrix_rotate">
+        <doc xml:whitespace="preserve">Multiplies @matrix with a rotation matrix that applies a rotation
+of @angle degrees around the specified 3D vector.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The angle you want to rotate in degrees</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X component of your rotation vector</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y component of your rotation vector</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="z" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Z component of your rotation vector</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scale" c:identifier="cogl_matrix_scale">
+        <doc xml:whitespace="preserve">Multiplies @matrix with a transform matrix that scales along the X,
+Y and Z axis.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sx" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The X scale factor</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="sy" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The Y scale factor</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="sz" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The Z scale factor</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="transform_point"
+              c:identifier="cogl_matrix_transform_point">
+        <doc xml:whitespace="preserve">Transforms a point whos position is given and returned as four float
+components.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">The X component of your points position</doc>
+            <type name="gfloat" c:type="float*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">The Y component of your points position</doc>
+            <type name="gfloat" c:type="float*"/>
+          </parameter>
+          <parameter name="z"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">The Z component of your points position</doc>
+            <type name="gfloat" c:type="float*"/>
+          </parameter>
+          <parameter name="w"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">The W component of your points position</doc>
+            <type name="gfloat" c:type="float*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="translate" c:identifier="cogl_matrix_translate">
+        <doc xml:whitespace="preserve">Multiplies @matrix with a transform matrix that translates along
+the X, Y and Z axis.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The X translation you want to apply</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The Y translation you want to apply</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="z" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The Z translation you want to apply</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="Object" c:type="CoglObject" disguised="1">
+      <method name="get_user_data"
+              c:identifier="cogl_object_get_user_data"
+              version="1.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Finds the user data previously associated with @object using
+the given @key. If no user data has been associated with @object
+for the given @key this function returns NULL.
+the given @key; or NULL if no associated data is found.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">The user data previously associated with @object using</doc>
+          <type name="gpointer" c:type="void*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The address of a #CoglUserDataKey which provides a unique value with which to index the private data.</doc>
+            <type name="UserDataKey" c:type="CoglUserDataKey*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_user_data"
+              c:identifier="cogl_object_set_user_data"
+              version="1.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Associates some private @user_data with a given #CoglObject. To
+later remove the association call cogl_object_set_user_data() with
+the same @key but NULL for the @user_data.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The address of a #CoglUserDataKey which provides a unique value with which to index the private data.</doc>
+            <type name="UserDataKey" c:type="CoglUserDataKey*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The data to associate with the given object, or NULL to remove a previous association.</doc>
+            <type name="gpointer" c:type="void*"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #CoglUserDataDestroyCallback to call if the object is destroyed or if the association is removed by later setting NULL data for the same key.</doc>
+            <type name="UserDataDestroyCallback"
+                  c:type="CoglUserDataDestroyCallback"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <constant name="PIXEL_FORMAT_24" value="2">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PIXEL_FORMAT_32" value="3">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PREMULT_BIT" value="128">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="Path" c:type="CoglPath" disguised="1">
+      <method name="copy" c:identifier="cogl_path_copy" introspectable="0">
+        <doc xml:whitespace="preserve">Returns a new copy of the path in @path. The new path has a
+reference count of 1 so you should unref it with
+cogl_object_unref() if you no longer need it.
+Internally the path will share the data until one of the paths is
+modified so copying paths should be relatively cheap.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a copy of the path in @path.</doc>
+          <type name="Path" c:type="CoglPath*"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="PathFillRule"
+                 version="1.4"
+                 glib:type-name="CoglPathFillRule"
+                 glib:get-type="cogl_path_fill_rule_get_type"
+                 c:type="CoglPathFillRule">
+      <doc xml:whitespace="preserve">#CoglPathFillRule is used to determine how a path is filled. There
+are two options - 'non-zero' and 'even-odd'. To work out whether any
+point will be filled imagine drawing an infinetely long line in any
+direction from that point. The number of times and the direction
+that the edges of the path crosses this line determines whether the
+line is filled as described below. Any open sub paths are treated
+as if there was an extra line joining the first point and the last
+point.
+The default fill rule is %COGL_PATH_FILL_RULE_EVEN_ODD. The fill
+rule is attached to the current path so preserving a path with
+cogl_get_path() also preserves the fill rule. Calling
+cogl_path_new() resets the current fill rule to the default.
+&lt;figure id="fill-rule-non-zero"&gt;
+&lt;title&gt;Example of filling various paths using the non-zero rule&lt;/title&gt;
+&lt;graphic fileref="fill-rule-non-zero.png" format="PNG"/&gt;
+&lt;/figure&gt;
+&lt;figure id="fill-rule-even-odd"&gt;
+&lt;title&gt;Example of filling various paths using the even-odd rule&lt;/title&gt;
+&lt;graphic fileref="fill-rule-even-odd.png" format="PNG"/&gt;
+&lt;/figure&gt;</doc>
+      <member name="non_zero"
+              value="0"
+              c:identifier="COGL_PATH_FILL_RULE_NON_ZERO"
+              glib:nick="non-zero"/>
+      <member name="even_odd"
+              value="1"
+              c:identifier="COGL_PATH_FILL_RULE_EVEN_ODD"
+              glib:nick="even-odd"/>
+    </enumeration>
+    <record name="PixelArray" c:type="CoglPixelArray" disguised="1">
+    </record>
+    <enumeration name="PixelFormat"
+                 version="0.8"
+                 glib:type-name="CoglPixelFormat"
+                 glib:get-type="cogl_pixel_format_get_type"
+                 c:type="CoglPixelFormat">
+      <doc xml:whitespace="preserve">Pixel formats used by COGL. For the formats with a byte per
+component, the order of the components specify the order in
+increasing memory addresses. So for example
+%COGL_PIXEL_FORMAT_RGB_888 would have the red component in the
+lowest address, green in the next address and blue after that
+regardless of the endinanness of the system.
+For the 16-bit formats the component order specifies the order
+within a 16-bit number from most significant bit to least
+significant. So for %COGL_PIXEL_FORMAT_RGB_565, the red component
+would be in bits 11-15, the green component would be in 6-11 and
+the blue component would be in 1-5. Therefore the order in memory
+depends on the endianness of the system.
+When uploading a texture %COGL_PIXEL_FORMAT_ANY can be used as the
+internal format. Cogl will try to pick the best format to use
+internally and convert the texture data if necessary.</doc>
+      <member name="any"
+              value="0"
+              c:identifier="COGL_PIXEL_FORMAT_ANY"
+              glib:nick="any"/>
+      <member name="a_8"
+              value="17"
+              c:identifier="COGL_PIXEL_FORMAT_A_8"
+              glib:nick="a-8"/>
+      <member name="rgb_565"
+              value="4"
+              c:identifier="COGL_PIXEL_FORMAT_RGB_565"
+              glib:nick="rgb-565"/>
+      <member name="rgba_4444"
+              value="21"
+              c:identifier="COGL_PIXEL_FORMAT_RGBA_4444"
+              glib:nick="rgba-4444"/>
+      <member name="rgba_5551"
+              value="22"
+              c:identifier="COGL_PIXEL_FORMAT_RGBA_5551"
+              glib:nick="rgba-5551"/>
+      <member name="yuv"
+              value="7"
+              c:identifier="COGL_PIXEL_FORMAT_YUV"
+              glib:nick="yuv"/>
+      <member name="g_8"
+              value="8"
+              c:identifier="COGL_PIXEL_FORMAT_G_8"
+              glib:nick="g-8"/>
+      <member name="rgb_888"
+              value="2"
+              c:identifier="COGL_PIXEL_FORMAT_RGB_888"
+              glib:nick="rgb-888"/>
+      <member name="bgr_888"
+              value="34"
+              c:identifier="COGL_PIXEL_FORMAT_BGR_888"
+              glib:nick="bgr-888"/>
+      <member name="rgba_8888"
+              value="19"
+              c:identifier="COGL_PIXEL_FORMAT_RGBA_8888"
+              glib:nick="rgba-8888"/>
+      <member name="bgra_8888"
+              value="51"
+              c:identifier="COGL_PIXEL_FORMAT_BGRA_8888"
+              glib:nick="bgra-8888"/>
+      <member name="argb_8888"
+              value="83"
+              c:identifier="COGL_PIXEL_FORMAT_ARGB_8888"
+              glib:nick="argb-8888"/>
+      <member name="abgr_8888"
+              value="115"
+              c:identifier="COGL_PIXEL_FORMAT_ABGR_8888"
+              glib:nick="abgr-8888"/>
+      <member name="rgba_8888_pre"
+              value="147"
+              c:identifier="COGL_PIXEL_FORMAT_RGBA_8888_PRE"
+              glib:nick="rgba-8888-pre"/>
+      <member name="bgra_8888_pre"
+              value="179"
+              c:identifier="COGL_PIXEL_FORMAT_BGRA_8888_PRE"
+              glib:nick="bgra-8888-pre"/>
+      <member name="argb_8888_pre"
+              value="211"
+              c:identifier="COGL_PIXEL_FORMAT_ARGB_8888_PRE"
+              glib:nick="argb-8888-pre"/>
+      <member name="abgr_8888_pre"
+              value="243"
+              c:identifier="COGL_PIXEL_FORMAT_ABGR_8888_PRE"
+              glib:nick="abgr-8888-pre"/>
+      <member name="rgba_4444_pre"
+              value="149"
+              c:identifier="COGL_PIXEL_FORMAT_RGBA_4444_PRE"
+              glib:nick="rgba-4444-pre"/>
+      <member name="rgba_5551_pre"
+              value="150"
+              c:identifier="COGL_PIXEL_FORMAT_RGBA_5551_PRE"
+              glib:nick="rgba-5551-pre"/>
+    </enumeration>
+    <constant name="RADIANS_TO_DEGREES" value="3754936">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <bitfield name="ReadPixelsFlags"
+              version="1.0"
+              glib:type-name="CoglReadPixelsFlags"
+              glib:get-type="cogl_read_pixels_flags_get_type"
+              c:type="CoglReadPixelsFlags">
+      <doc xml:whitespace="preserve">Flags for cogl_read_pixels()</doc>
+      <member name="color_buffer"
+              value="1"
+              c:identifier="COGL_READ_PIXELS_COLOR_BUFFER"
+              glib:nick="color-buffer"/>
+    </bitfield>
+    <constant name="SQRTI_ARG_10_PERCENT" value="5590">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="SQRTI_ARG_5_PERCENT" value="210">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="SQRTI_ARG_MAX" value="4194303">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="ShaderType"
+                 version="1.0"
+                 glib:type-name="CoglShaderType"
+                 glib:get-type="cogl_shader_type_get_type"
+                 c:type="CoglShaderType">
+      <doc xml:whitespace="preserve">Types of shaders</doc>
+      <member name="vertex"
+              value="0"
+              c:identifier="COGL_SHADER_TYPE_VERTEX"
+              glib:nick="vertex"/>
+      <member name="fragment"
+              value="1"
+              c:identifier="COGL_SHADER_TYPE_FRAGMENT"
+              glib:nick="fragment"/>
+    </enumeration>
+    <constant name="TEXTURE_MAX_WASTE" value="127">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <bitfield name="TextureFlags"
+              version="1.0"
+              glib:type-name="CoglTextureFlags"
+              glib:get-type="cogl_texture_flags_get_type"
+              c:type="CoglTextureFlags">
+      <doc xml:whitespace="preserve">Flags to pass to the cogl_texture_new_* family of functions.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="COGL_TEXTURE_NONE"
+              glib:nick="none"/>
+      <member name="no_auto_mipmap"
+              value="1"
+              c:identifier="COGL_TEXTURE_NO_AUTO_MIPMAP"
+              glib:nick="no-auto-mipmap"/>
+      <member name="no_slicing"
+              value="2"
+              c:identifier="COGL_TEXTURE_NO_SLICING"
+              glib:nick="no-slicing"/>
+      <member name="no_atlas"
+              value="4"
+              c:identifier="COGL_TEXTURE_NO_ATLAS"
+              glib:nick="no-atlas"/>
+    </bitfield>
+    <enumeration name="TexturePixmapX11ReportLevel"
+                 glib:type-name="CoglTexturePixmapX11ReportLevel"
+                 glib:get-type="cogl_texture_pixmap_x11_report_level_get_type"
+                 c:type="CoglTexturePixmapX11ReportLevel">
+      <member name="raw_rectangles"
+              value="0"
+              c:identifier="COGL_TEXTURE_PIXMAP_X11_DAMAGE_RAW_RECTANGLES"
+              glib:nick="raw-rectangles"/>
+      <member name="delta_rectangles"
+              value="1"
+              c:identifier="COGL_TEXTURE_PIXMAP_X11_DAMAGE_DELTA_RECTANGLES"
+              glib:nick="delta-rectangles"/>
+      <member name="bounding_box"
+              value="2"
+              c:identifier="COGL_TEXTURE_PIXMAP_X11_DAMAGE_BOUNDING_BOX"
+              glib:nick="bounding-box"/>
+      <member name="non_empty"
+              value="3"
+              c:identifier="COGL_TEXTURE_PIXMAP_X11_DAMAGE_NON_EMPTY"
+              glib:nick="non-empty"/>
+    </enumeration>
+    <record name="TextureVertex" c:type="CoglTextureVertex">
+      <doc xml:whitespace="preserve">Used to specify vertex information when calling cogl_polygon()</doc>
+      <field name="x" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="z" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="tx" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="ty" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="color" writable="1">
+        <type name="Color" c:type="CoglColor"/>
+      </field>
+    </record>
+    <constant name="UNORDERED_MASK" value="15">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="UNPREMULT_MASK" value="127">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <callback name="UserDataDestroyCallback"
+              c:type="CoglUserDataDestroyCallback"
+              version="1.4">
+      <doc xml:whitespace="preserve">When associating private data with a #CoglObject a callback can be
+given which will be called either if the object is destroyed or if
+cogl_object_set_user_data() is called with NULL user_data for the
+same key.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="user_data" transfer-ownership="none" closure="0">
+          <doc xml:whitespace="preserve">The data whos association with a #CoglObject has been destoyed.</doc>
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="UserDataKey" c:type="CoglUserDataKey" version="1.4">
+      <doc xml:whitespace="preserve">A #CoglUserDataKey is used to declare a key for attaching data to a
+#CoglObject using cogl_object_set_user_data. The typedef only exists as a
+formality to make code self documenting since only the unique address of a
+#CoglUserDataKey is used.
+Typically you would declare a static #CoglUserDataKey and set private data
+on an object something like this:
+|[
+static CoglUserDataKey path_private_key;
+static void
+destroy_path_private_cb (void *data)
+{
+g_free (data);
+}
+static void
+my_path_set_data (CoglPath *path, void *data)
+{
+cogl_object_set_user_data (COGL_OBJECT (path),
+&amp;private_key,
+data,
+destroy_path_private_cb);
+}
+]|</doc>
+      <field name="unused" writable="1">
+        <type name="gint" c:type="int"/>
+      </field>
+    </record>
+    <record name="Vector3" c:type="CoglVector3">
+      <field name="x" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="z" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <method name="add_EXP" c:identifier="cogl_vector3_add_EXP">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="a" transfer-ownership="none">
+            <type name="Vector3" c:type="CoglVector3*"/>
+          </parameter>
+          <parameter name="b" transfer-ownership="none">
+            <type name="Vector3" c:type="CoglVector3*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy_EXP"
+              c:identifier="cogl_vector3_copy_EXP"
+              introspectable="0">
+        <return-value>
+          <type name="Vector3" c:type="CoglVector3*"/>
+        </return-value>
+      </method>
+      <method name="cross_product_EXP"
+              c:identifier="cogl_vector3_cross_product_EXP">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="u" transfer-ownership="none">
+            <type name="Vector3" c:type="CoglVector3*"/>
+          </parameter>
+          <parameter name="v" transfer-ownership="none">
+            <type name="Vector3" c:type="CoglVector3*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="distance_EXP" c:identifier="cogl_vector3_distance_EXP">
+        <return-value transfer-ownership="none">
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+        <parameters>
+          <parameter name="b" transfer-ownership="none">
+            <type name="Vector3" c:type="CoglVector3*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="divide_scalar_EXP"
+              c:identifier="cogl_vector3_divide_scalar_EXP">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scalar" transfer-ownership="none">
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dot_product_EXP"
+              c:identifier="cogl_vector3_dot_product_EXP">
+        <return-value transfer-ownership="none">
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+        <parameters>
+          <parameter name="b" transfer-ownership="none">
+            <type name="Vector3" c:type="CoglVector3*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="equal_with_epsilon_EXP"
+              c:identifier="cogl_vector3_equal_with_epsilon_EXP">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="vector1" transfer-ownership="none">
+            <type name="Vector3" c:type="CoglVector3*"/>
+          </parameter>
+          <parameter name="epsilon" transfer-ownership="none">
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free_EXP" c:identifier="cogl_vector3_free_EXP">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="init_EXP" c:identifier="cogl_vector3_init_EXP">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="z" transfer-ownership="none">
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_zero_EXP" c:identifier="cogl_vector3_init_zero_EXP">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="invert_EXP" c:identifier="cogl_vector3_invert_EXP">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="magnitude_EXP" c:identifier="cogl_vector3_magnitude_EXP">
+        <return-value transfer-ownership="none">
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="multiply_scalar_EXP"
+              c:identifier="cogl_vector3_multiply_scalar_EXP">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scalar" transfer-ownership="none">
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="normalize_EXP" c:identifier="cogl_vector3_normalize_EXP">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="subtract_EXP" c:identifier="cogl_vector3_subtract_EXP">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="a" transfer-ownership="none">
+            <type name="Vector3" c:type="CoglVector3*"/>
+          </parameter>
+          <parameter name="b" transfer-ownership="none">
+            <type name="Vector3" c:type="CoglVector3*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="VerticesMode"
+                 version="1.0"
+                 glib:type-name="CoglVerticesMode"
+                 glib:get-type="cogl_vertices_mode_get_type"
+                 c:type="CoglVerticesMode">
+      <doc xml:whitespace="preserve">How vertices passed to cogl_vertex_buffer_draw() and
+cogl_vertex_buffer_draw_elements() should be interpreted</doc>
+      <member name="points"
+              value="0"
+              c:identifier="COGL_VERTICES_MODE_POINTS"
+              glib:nick="points"/>
+      <member name="line_strip"
+              value="3"
+              c:identifier="COGL_VERTICES_MODE_LINE_STRIP"
+              glib:nick="line-strip"/>
+      <member name="line_loop"
+              value="2"
+              c:identifier="COGL_VERTICES_MODE_LINE_LOOP"
+              glib:nick="line-loop"/>
+      <member name="lines"
+              value="1"
+              c:identifier="COGL_VERTICES_MODE_LINES"
+              glib:nick="lines"/>
+      <member name="triangle_strip"
+              value="5"
+              c:identifier="COGL_VERTICES_MODE_TRIANGLE_STRIP"
+              glib:nick="triangle-strip"/>
+      <member name="triangle_fan"
+              value="6"
+              c:identifier="COGL_VERTICES_MODE_TRIANGLE_FAN"
+              glib:nick="triangle-fan"/>
+      <member name="triangles"
+              value="4"
+              c:identifier="COGL_VERTICES_MODE_TRIANGLES"
+              glib:nick="triangles"/>
+    </enumeration>
+    <function name="angle_cos" c:identifier="cogl_angle_cos" version="1.0">
+      <doc xml:whitespace="preserve">Computes the cosine of @angle</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the cosine of the passed angle</doc>
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an angle expressed using #CoglAngle</doc>
+          <type name="Angle" c:type="CoglAngle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="angle_sin" c:identifier="cogl_angle_sin" version="1.0">
+      <doc xml:whitespace="preserve">Computes the sine of @angle</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the sine of the passed angle</doc>
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an angle expressed using #CoglAngle</doc>
+          <type name="Angle" c:type="CoglAngle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="angle_tan" c:identifier="cogl_angle_tan" version="1.0">
+      <doc xml:whitespace="preserve">Computes the tangent of @angle</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the tangent of the passed angle</doc>
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an angle expressed using #CoglAngle</doc>
+          <type name="Angle" c:type="CoglAngle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="begin_gl" c:identifier="cogl_begin_gl" version="1.0">
+      <doc xml:whitespace="preserve">We do not advise nor reliably support the interleaving of raw GL drawing and
+Cogl drawing functions, but if you insist, cogl_begin_gl() and cogl_end_gl()
+provide a simple mechanism that may at least give you a fighting chance of
+succeeding.
+through the modification of GL state; that will never be reliably supported,
+but if you are trying to do something like:
+|[
+{
+- setup some OpenGL state.
+- draw using OpenGL (e.g. glDrawArrays() )
+- reset modified OpenGL state.
+- continue using Cogl to draw
+}
+]|
+You should surround blocks of drawing using raw GL with cogl_begin_gl()
+and cogl_end_gl():
+|[
+{
+cogl_begin_gl ();
+- setup some OpenGL state.
+- draw using OpenGL (e.g. glDrawArrays() )
+- reset modified OpenGL state.
+cogl_end_gl ();
+- continue using Cogl to draw
+}
+]|
+Don't ever try and do:
+|[
+{
+- setup some OpenGL state.
+- use Cogl to draw
+- reset modified OpenGL state.
+}
+]|
+When the internals of Cogl evolves, this is very liable to break.
+This function will flush all batched primitives, and subsequently flush
+all internal Cogl state to OpenGL as if it were going to draw something
+itself.
+The result is that the OpenGL modelview matrix will be setup; the state
+corresponding to the current source material will be set up and other world
+state such as backface culling, depth and fogging enabledness will be sent
+to OpenGL.
+&lt;note&gt;No special material state is flushed, so if you want Cogl to setup a
+simplified material state it is your responsibility to set a simple source
+material before calling cogl_begin_gl(). E.g. by calling
+cogl_set_source_color4ub().&lt;/note&gt;
+&lt;note&gt;It is your responsibility to restore any OpenGL state that you modify
+to how it was after calling cogl_begin_gl() if you don't do this then the
+result of further Cogl calls is undefined.&lt;/note&gt;
+&lt;note&gt;You can not nest begin/end blocks.&lt;/note&gt;
+Again we would like to stress, we do not advise the use of this API and if
+possible we would prefer to improve Cogl than have developers require raw
+OpenGL.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="bitmap_error_quark" c:identifier="cogl_bitmap_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="bitmap_get_size_from_file"
+              c:identifier="cogl_bitmap_get_size_from_file"
+              version="1.0">
+      <doc xml:whitespace="preserve">Parses an image file enough to extract the width and height
+of the bitmap.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the image was successfully parsed</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the file to check</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="width"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">return location for the bitmap width, or %NULL</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="height"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">return location for the bitmap height, or %NULL</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bitmap_new_from_file"
+              c:identifier="cogl_bitmap_new_from_file"
+              version="1.0"
+              introspectable="0"
+              throws="1">
+      <doc xml:whitespace="preserve">Loads an image file from disk. This function can be safely called from
+within a thread.
+%NULL if loading the image failed.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a #CoglBitmap to the new loaded image data, or</doc>
+        <type name="Bitmap" c:type="CoglBitmap*"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the file to load.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="blend_string_error_quark"
+              c:identifier="cogl_blend_string_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="check_extension"
+              c:identifier="cogl_check_extension"
+              deprecated="OpenGL is an implementation detail for Cogl and so it&apos;s"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Check whether @name occurs in list of extensions in @ext.
+not appropriate to expose OpenGL extensions through the Cogl API. This
+function can be replaced by the following equivalent code:
+|[
+]|</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the extension occurs in the list, %FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">extension to check for</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="ext" transfer-ownership="none">
+          <doc xml:whitespace="preserve">list of extensions</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clear" c:identifier="cogl_clear">
+      <doc xml:whitespace="preserve">Clears all the auxiliary buffers identified in the @buffers mask, and if
+that includes the color buffer then the specified @color is used.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="color" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Background color to clear to</doc>
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+        <parameter name="buffers" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A mask of #CoglBufferBit&lt;!-- --&gt;'s identifying which auxiliary buffers to clear</doc>
+          <type name="gulong" c:type="unsigned long"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clip_ensure"
+              c:identifier="cogl_clip_ensure"
+              version="1.0"
+              deprecated="Calling this function has no effect"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Ensures that the current clipping region has been set in GL. This
+will automatically be called before any Cogl primitives but it
+maybe be neccessary to call if you are using raw GL calls with
+clipping.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="clip_pop" c:identifier="cogl_clip_pop">
+      <doc xml:whitespace="preserve">Reverts the clipping region to the state before the last call to
+cogl_clip_push().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="clip_push"
+              c:identifier="cogl_clip_push"
+              deprecated="The x, y, width, height arguments are inconsistent"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Specifies a rectangular clipping area for all subsequent drawing
+operations. Any drawing commands that extend outside the rectangle
+will be clipped so that only the portion inside the rectangle will
+be displayed. The rectangle dimensions are transformed by the
+current model-view matrix.
+The rectangle is intersected with the current clip region. To undo
+the effect of this function, call cogl_clip_pop().
+with other API that specify rectangles in model space, and when used
+with a coordinate space that puts the origin at the center and y+
+extending up, it's awkward to use. Please use cogl_clip_push_rectangle()
+instead</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_offset" transfer-ownership="none">
+          <doc xml:whitespace="preserve">left edge of the clip rectangle</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_offset" transfer-ownership="none">
+          <doc xml:whitespace="preserve">top edge of the clip rectangle</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of the clip rectangle</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">height of the clip rectangle</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clip_push_from_path"
+              c:identifier="cogl_clip_push_from_path"
+              version="1.0">
+      <doc xml:whitespace="preserve">Sets a new clipping area using the current path. The current path
+is then cleared. The clipping area is intersected with the previous
+clipping area. To restore the previous clipping area, call
+cogl_clip_pop().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="clip_push_from_path_preserve"
+              c:identifier="cogl_clip_push_from_path_preserve"
+              version="1.0">
+      <doc xml:whitespace="preserve">Sets a new clipping area using the current path. The current path
+is then cleared. The clipping area is intersected with the previous
+clipping area. To restore the previous clipping area, call
+cogl_clip_pop().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="clip_push_rectangle"
+              c:identifier="cogl_clip_push_rectangle"
+              version="1.2">
+      <doc xml:whitespace="preserve">Specifies a rectangular clipping area for all subsequent drawing
+operations. Any drawing commands that extend outside the rectangle
+will be clipped so that only the portion inside the rectangle will
+be displayed. The rectangle dimensions are transformed by the
+current model-view matrix.
+The rectangle is intersected with the current clip region. To undo
+the effect of this function, call cogl_clip_pop().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x0" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x coordinate for top left corner of the clip rectangle</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y0" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y coordinate for top left corner of the clip rectangle</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="x1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x coordinate for bottom right corner of the clip rectangle</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y coordinate for bottom right corner of the clip rectangle</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clip_push_window_rect"
+              c:identifier="cogl_clip_push_window_rect"
+              deprecated="Use cogl_clip_push_window_rectangle() instead"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Specifies a rectangular clipping area for all subsequent drawing
+operations. Any drawing commands that extend outside the rectangle
+will be clipped so that only the portion inside the rectangle will
+be displayed. The rectangle dimensions are not transformed by the
+current model-view matrix.
+The rectangle is intersected with the current clip region. To undo
+the effect of this function, call cogl_clip_pop().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_offset" transfer-ownership="none">
+          <doc xml:whitespace="preserve">left edge of the clip rectangle in window coordinates</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_offset" transfer-ownership="none">
+          <doc xml:whitespace="preserve">top edge of the clip rectangle in window coordinates</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of the clip rectangle</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">height of the clip rectangle</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clip_push_window_rectangle"
+              c:identifier="cogl_clip_push_window_rectangle"
+              version="1.2">
+      <doc xml:whitespace="preserve">Specifies a rectangular clipping area for all subsequent drawing
+operations. Any drawing commands that extend outside the rectangle
+will be clipped so that only the portion inside the rectangle will
+be displayed. The rectangle dimensions are not transformed by the
+current model-view matrix.
+The rectangle is intersected with the current clip region. To undo
+the effect of this function, call cogl_clip_pop().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_offset" transfer-ownership="none">
+          <doc xml:whitespace="preserve">left edge of the clip rectangle in window coordinates</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="y_offset" transfer-ownership="none">
+          <doc xml:whitespace="preserve">top edge of the clip rectangle in window coordinates</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of the clip rectangle</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">height of the clip rectangle</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clip_stack_restore"
+              c:identifier="cogl_clip_stack_restore"
+              version="0.8.2"
+              deprecated="This was originally added to allow us to restore"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Restore the state of the clipping stack that was previously saved
+by cogl_clip_stack_save().
+the clip stack when switching back from an offscreen framebuffer,
+but it's not necessary anymore given that framebuffers now own
+separate clip stacks which will be automatically switched between
+when a new buffer is set. Calling this function has no effect</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="clip_stack_save"
+              c:identifier="cogl_clip_stack_save"
+              version="0.8.2"
+              deprecated="This was originally added to allow us to save the"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Save the entire state of the clipping stack and then clear all
+clipping. The previous state can be returned to with
+cogl_clip_stack_restore(). Each call to cogl_clip_push() after this
+must be matched by a call to cogl_clip_pop() before calling
+cogl_clip_stack_restore().
+clip stack when switching to an offscreen framebuffer, but it's
+not necessary anymore given that framebuffers now own separate
+clip stacks which will be automatically switched between when a
+new buffer is set. Calling this function has no effect</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="color_equal" c:identifier="cogl_color_equal" version="1.0">
+      <doc xml:whitespace="preserve">Compares two #CoglColor&lt;!-- --&gt;s and checks if they are the same.
+This function can be passed to g_hash_table_new() as the @key_equal_func
+parameter, when using #CoglColor&lt;!-- --&gt;s as keys in a #GHashTable.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the two colors are the same.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="v1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglColor</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglColor</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="color_new"
+              c:identifier="cogl_color_new"
+              version="1.0"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new (empty) color
+to free the allocated resources</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly-allocated #CoglColor. Use cogl_color_free()</doc>
+        <type name="Color" c:type="CoglColor*"/>
+      </return-value>
+    </function>
+    <function name="create_program"
+              c:identifier="cogl_create_program"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new cogl program object that can be used to replace parts of the GL
+rendering pipeline with custom code.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a new cogl program.</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+    </function>
+    <function name="create_shader"
+              c:identifier="cogl_create_shader"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new shader handle, use #cogl_shader_source to set the source code
+to be used on it.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a new shader handle.</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="shader_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">COGL_SHADER_TYPE_VERTEX or COGL_SHADER_TYPE_FRAGMENT.</doc>
+          <type name="ShaderType" c:type="CoglShaderType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="disable_fog" c:identifier="cogl_disable_fog">
+      <doc xml:whitespace="preserve">This function disables fogging, so primitives drawn afterwards will not be
+blended with any previously set fog color.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="double_to_fixed" c:identifier="cogl_double_to_fixed">
+      <return-value transfer-ownership="none">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="double_to_int" c:identifier="cogl_double_to_int">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="double_to_uint" c:identifier="cogl_double_to_uint">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="end_gl" c:identifier="cogl_end_gl" version="1.0">
+      <doc xml:whitespace="preserve">This is the counterpart to cogl_begin_gl() used to delimit blocks of drawing
+code using raw OpenGL. Please refer to cogl_begin_gl() for full details.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="features_available" c:identifier="cogl_features_available">
+      <doc xml:whitespace="preserve">Checks whether the given COGL features are available. Multiple
+features can be checked for by or-ing them together with the '|'
+operator. %TRUE is only returned if all of the requested features
+are available.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the features are available, %FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="features" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A bitmask of features to check for</doc>
+          <type name="FeatureFlags" c:type="CoglFeatureFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_atan" c:identifier="cogl_fixed_atan" version="1.0">
+      <doc xml:whitespace="preserve">Computes the arc tangent of @a.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the arc tangent of the passed value, in fixed point notation</doc>
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglFixed number</doc>
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_atan2" c:identifier="cogl_fixed_atan2" version="1.0">
+      <doc xml:whitespace="preserve">Computes the arc tangent of @a / @b but uses the sign of both
+arguments to return the angle in right quadrant.
+notation</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the arc tangent of the passed fraction, in fixed point</doc>
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the numerator as a #CoglFixed number</doc>
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the denominator as a #CoglFixed number</doc>
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_cos" c:identifier="cogl_fixed_cos" version="1.0">
+      <doc xml:whitespace="preserve">Computes the cosine of @angle.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the cosine of the passed angle, in fixed point notation</doc>
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglFixed number</doc>
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_div" c:identifier="cogl_fixed_div">
+      <return-value transfer-ownership="none">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_get_type" c:identifier="cogl_fixed_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="fixed_log2" c:identifier="cogl_fixed_log2" version="1.0">
+      <doc xml:whitespace="preserve">Calculates base 2 logarithm.
+This function is some 2.5 times faster on x86, and over 12 times faster on
+fpu-less arm, than using libc log().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">base 2 logarithm.</doc>
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value to calculate base 2 logarithm from</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_mul" c:identifier="cogl_fixed_mul">
+      <return-value transfer-ownership="none">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_mul_div" c:identifier="cogl_fixed_mul_div">
+      <return-value transfer-ownership="none">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="c" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_pow" c:identifier="cogl_fixed_pow" version="1.0">
+      <doc xml:whitespace="preserve">Calculates @x to the @y power.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the power of @x to the @y</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">base</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#CoglFixed exponent</doc>
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_pow2" c:identifier="cogl_fixed_pow2" version="1.0">
+      <doc xml:whitespace="preserve">Calculates 2 to the @x power.
+This function is around 11 times faster on x86, and around 22 times faster
+on fpu-less arm than libc pow(2, x).</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the power of 2 to the passed value</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglFixed number</doc>
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_sin" c:identifier="cogl_fixed_sin" version="1.0">
+      <doc xml:whitespace="preserve">Computes the sine of @angle.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the sine of the passed angle, in fixed point notation</doc>
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglFixed number</doc>
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_sqrt" c:identifier="cogl_fixed_sqrt" version="1.0">
+      <doc xml:whitespace="preserve">Computes the square root of @x.
+notation</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the square root of the passed value, in floating point</doc>
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglFixed number</doc>
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_tan" c:identifier="cogl_fixed_tan" version="1.0">
+      <doc xml:whitespace="preserve">Computes the tangent of @angle.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the tangent of the passed angle, in fixed point notation</doc>
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglFixed number</doc>
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flush" c:identifier="cogl_flush" version="1.0">
+      <doc xml:whitespace="preserve">This function should only need to be called in exceptional circumstances.
+As an optimization Cogl drawing functions may batch up primitives
+internally, so if you are trying to use raw GL outside of Cogl you stand a
+better chance of being successful if you ask Cogl to flush any batched
+geometry before making your state changes.
+It only ensure that the underlying driver is issued all the commands
+necessary to draw the batched primitives. It provides no guarantees about
+when the driver will complete the rendering.
+This provides no guarantees about the GL state upon returning and to avoid
+confusing Cogl you should aim to restore any changes you make before
+resuming use of Cogl.
+If you are making state changes with the intention of affecting Cogl drawing
+primitives you are 100% on your own since you stand a good chance of
+conflicting with Cogl internals. For example clutter-gst which currently
+uses direct GL calls to bind ARBfp programs will very likely break when Cogl
+starts to use ARBfb programs itself for the material API.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="frustum" c:identifier="cogl_frustum" version="0.8.2">
+      <doc xml:whitespace="preserve">Replaces the current projection matrix with a perspective matrix
+for the given viewing frustum.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="left" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Left clipping plane</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="right" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Right clipping plane</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="bottom" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Bottom clipping plane</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="top" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Top clipping plane</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="z_near" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Nearest visible point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="z_far" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Furthest visible point along the z-axis</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_backface_culling_enabled"
+              c:identifier="cogl_get_backface_culling_enabled">
+      <doc xml:whitespace="preserve">Queries if backface culling has been enabled via
+cogl_set_backface_culling_enabled()</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if backface culling is enabled, and %FALSE otherwise</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="get_bitmasks" c:identifier="cogl_get_bitmasks">
+      <doc xml:whitespace="preserve">Gets the number of bitplanes used for each of the color components
+in the color buffer. Pass %NULL for any of the arguments if the
+value is not required.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">Return location for the number of red bits or %NULL</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="green"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">Return location for the number of green bits or %NULL</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="blue"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">Return location for the number of blue bits or %NULL</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="alpha"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">Return location for the number of alpha bits or %NULL</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_depth_test_enabled"
+              c:identifier="cogl_get_depth_test_enabled"
+              deprecated="Use cogl_material_get_depth_test_enabled()"
+              deprecated-version="1.4">
+      <doc xml:whitespace="preserve">Queries if depth testing has been enabled via cogl_set_depth_test_enable()
+instead.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if depth testing is enabled, and %FALSE otherwise</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="get_features"
+              c:identifier="cogl_get_features"
+              version="0.8">
+      <doc xml:whitespace="preserve">Returns all of the features supported by COGL.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">A logical OR of all the supported COGL features.</doc>
+        <type name="FeatureFlags" c:type="CoglFeatureFlags"/>
+      </return-value>
+    </function>
+    <function name="get_modelview_matrix"
+              c:identifier="cogl_get_modelview_matrix">
+      <doc xml:whitespace="preserve">Stores the current model-view matrix in @matrix.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="matrix"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for the model-view matrix</doc>
+          <type name="Matrix" c:type="CoglMatrix*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_option_group"
+              c:identifier="cogl_get_option_group"
+              version="1.0"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Retrieves the #GOptionGroup used by COGL to parse the command
+line options. Clutter uses this to handle the COGL command line
+options during its initialization process.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a #GOptionGroup</doc>
+        <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+      </return-value>
+    </function>
+    <function name="get_path"
+              c:identifier="cogl_get_path"
+              version="1.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Gets a pointer to the current path. The path can later be used
+again by calling cogl_path_set(). Note that the path isn't copied
+so if you later call any functions to add to the path it will
+affect the returned object too. No reference is taken on the path
+so if you want to retain it you should take your own reference with
+cogl_object_ref().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a pointer to the current path.</doc>
+        <type name="Path" c:type="CoglPath*"/>
+      </return-value>
+    </function>
+    <function name="get_proc_address"
+              c:identifier="cogl_get_proc_address"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Gets a pointer to a given GL or GL ES extension function. This acts
+as a wrapper around glXGetProcAddress() or whatever is the
+appropriate function for the current backend.
+function is not available.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a pointer to the requested function or %NULL if the</doc>
+        <type name="FuncPtr" c:type="CoglFuncPtr"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the function.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_projection_matrix"
+              c:identifier="cogl_get_projection_matrix">
+      <doc xml:whitespace="preserve">Stores the current projection matrix in @matrix.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="matrix"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for the projection matrix</doc>
+          <type name="Matrix" c:type="CoglMatrix*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_viewport" c:identifier="cogl_get_viewport">
+      <doc xml:whitespace="preserve">Stores the current viewport in @v. @v[0] and @v[1] get the x and y
+position of the viewport and @v[2] and @v[3] get the width and
+height.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">pointer to a 4 element array of #float&lt;!-- --&gt;s to receive the viewport dimensions.</doc>
+          <array c:type="float" fixed-size="4">
+            <type name="gfloat"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="handle_get_type" c:identifier="cogl_handle_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="handle_ref" c:identifier="cogl_handle_ref">
+      <doc xml:whitespace="preserve">Increases the reference count of @handle by 1</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the handle, with its reference count increased</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="handle_unref" c:identifier="cogl_handle_unref">
+      <doc xml:whitespace="preserve">Drecreases the reference count of @handle by 1; if the reference
+count reaches 0, the resources allocated by @handle will be freed</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_bitmap" c:identifier="cogl_is_bitmap" version="1.0">
+      <doc xml:whitespace="preserve">Checks whether @handle is a #CoglHandle for a bitmap
+and %FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the passed handle represents a bitmap,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a bitmap</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_buffer_EXP" c:identifier="cogl_is_buffer_EXP">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_material" c:identifier="cogl_is_material">
+      <doc xml:whitespace="preserve">Gets whether the given handle references an existing material object.
+%FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the handle references a #CoglMaterial,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A CoglHandle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_offscreen" c:identifier="cogl_is_offscreen">
+      <doc xml:whitespace="preserve">Determines whether the given #CoglHandle references an offscreen buffer
+object.
+%FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the handle references an offscreen buffer,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A CoglHandle for an offscreen buffer</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_path" c:identifier="cogl_is_path">
+      <doc xml:whitespace="preserve">Gets whether the given handle references an existing path object.
+%FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the handle references a #CoglPath,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A CoglHandle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_pixel_array_EXP" c:identifier="cogl_is_pixel_array_EXP">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_program" c:identifier="cogl_is_program">
+      <doc xml:whitespace="preserve">Gets whether the given handle references an existing program object.
+%FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the handle references a program,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A CoglHandle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_shader" c:identifier="cogl_is_shader">
+      <doc xml:whitespace="preserve">Gets whether the given handle references an existing shader object.
+%FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the handle references a shader,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A CoglHandle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_texture" c:identifier="cogl_is_texture">
+      <doc xml:whitespace="preserve">Gets whether the given handle references an existing texture object.
+%FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the handle references a texture, and</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A CoglHandle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_texture_3d_EXP" c:identifier="cogl_is_texture_3d_EXP">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_texture_pixmap_x11_EXP"
+              c:identifier="cogl_is_texture_pixmap_x11_EXP">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_vertex_buffer"
+              c:identifier="cogl_is_vertex_buffer"
+              version="1.0">
+      <doc xml:whitespace="preserve">Checks whether @handle is a Vertex Buffer Object
+otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the handle is a VBO, and %FALSE</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a vertex buffer object</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_vertex_buffer_indices"
+              c:identifier="cogl_is_vertex_buffer_indices"
+              version="1.4">
+      <doc xml:whitespace="preserve">Checks whether @handle is a handle to the indices for a vertex
+buffer object
+otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the handle is indices, and %FALSE</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_get_point_size"
+              c:identifier="cogl_material_get_point_size"
+              version="1.4">
+      <doc xml:whitespace="preserve">Get the size of points drawn when %COGL_VERTICES_MODE_POINTS is
+used with the vertex buffer API.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the point size of the material.</doc>
+        <type name="gfloat" c:type="float"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle to a material.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_layer_get_type"
+              c:identifier="cogl_material_layer_get_type">
+      <doc xml:whitespace="preserve">Retrieves the type of the layer
+Currently there is only one type of layer defined:
+%COGL_MATERIAL_LAYER_TYPE_TEXTURE, but considering we may add purely GLSL
+based layers in the future, you should write code that checks the type
+first.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the type of the layer</doc>
+        <type name="MaterialLayerType" c:type="CoglMaterialLayerType"/>
+      </return-value>
+      <parameters>
+        <parameter name="layer" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglMaterialLayer object</doc>
+          <type name="MaterialLayer" c:type="CoglMaterialLayer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_new"
+              c:identifier="cogl_material_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Allocates and initializes a blank white material</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a pointer to a new #CoglMaterial</doc>
+        <type name="Material" c:type="CoglMaterial*"/>
+      </return-value>
+    </function>
+    <function name="material_ref"
+              c:identifier="cogl_material_ref"
+              version="1.0"
+              introspectable="0"
+              deprecated="Use cogl_object_ref() instead"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Increment the reference count for a #CoglMaterial.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the @material.</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_set_point_size"
+              c:identifier="cogl_material_set_point_size"
+              version="1.4">
+      <doc xml:whitespace="preserve">Changes the size of points drawn when %COGL_VERTICES_MODE_POINTS is
+used with the vertex buffer API. Note that typically the GPU will
+only support a limited minimum and maximum range of point sizes. If
+the chosen point size is outside that range then the nearest value
+within that range will be used instead. The size of a point is in
+screen space so it will be the same regardless of any
+transformations. The default point size is 1.0.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle to a material.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="point_size" transfer-ownership="none">
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_unref"
+              c:identifier="cogl_material_unref"
+              version="1.0"
+              deprecated="Use cogl_object_unref() instead"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Decrement the reference count for a #CoglMaterial.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="matrix_equal"
+              c:identifier="cogl_matrix_equal"
+              version="1.4">
+      <doc xml:whitespace="preserve">Compares two matrices to see if they represent the same
+transformation. Although internally the matrices may have different
+annotations associated with them and may potentially have a cached
+inverse matrix these are not considered in the comparison.</doc>
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="v1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A 4x4 transformation matrix</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A 4x4 transformation matrix</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_ref"
+              c:identifier="cogl_object_ref"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Increases the reference count of @handle by 1</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the @object, with its reference count increased</doc>
+        <type name="gpointer" c:type="void*"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglObject</doc>
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_unref" c:identifier="cogl_object_unref">
+      <doc xml:whitespace="preserve">Drecreases the reference count of @object by 1; if the reference
+count reaches 0, the resources allocated by @object will be freed</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglObject</doc>
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="offscreen_new_to_texture"
+              c:identifier="cogl_offscreen_new_to_texture">
+      <doc xml:whitespace="preserve">This creates an offscreen buffer object using the given texture as the
+primary color buffer. It doesn't just initialize the contents of the
+offscreen buffer with the texture; they are tightly bound so that
+drawing to the offscreen buffer effectivly updates the contents of the
+given texture. You don't need to destroy the offscreen buffer before
+you can use the texture again.
+buffer or %COGL_INVALID_HANDLE if it wasn't possible to create the
+buffer.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a #CoglHandle for the new offscreen</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A CoglHandle for a Cogl texture</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="offscreen_ref"
+              c:identifier="cogl_offscreen_ref"
+              deprecated="cogl_handle_ref() should be used in new code."
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Increments the reference count on the offscreen buffer.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">For convenience it returns the given CoglHandle</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A CoglHandle for an offscreen buffer</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="offscreen_unref"
+              c:identifier="cogl_offscreen_unref"
+              deprecated="cogl_handle_unref() should be used in new code."
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Decreases the reference count for the offscreen buffer and frees it when
+the count reaches 0.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A CoglHandle for an offscreen buffer</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ortho" c:identifier="cogl_ortho" version="1.0">
+      <doc xml:whitespace="preserve">Replaces the current projection matrix with an orthographic projection
+matrix. See &lt;xref linkend="cogl-ortho-matrix"/&gt; to see how the matrix is
+calculated.
+&lt;figure id="cogl-ortho-matrix"&gt;
+&lt;title&gt;&lt;/title&gt;
+&lt;graphic fileref="cogl_ortho.png" format="PNG"/&gt;
+&lt;/figure&gt;
+&lt;note&gt;This function copies the arguments from OpenGL's glOrtho() even
+though they are unnecessarily confusing due to the z near and z far
+arguments actually being a "distance" from the origin, where
+negative values are behind the viewer, instead of coordinates for
+the z clipping planes which would have been consistent with the
+left, right bottom and top arguments.&lt;/note&gt;</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="left" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The coordinate for the left clipping plane</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="right" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The coordinate for the right clipping plane</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="bottom" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The coordinate for the bottom clipping plane</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="top" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The coordinate for the top clipping plane</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="near" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The &lt;emphasis&gt;distance&lt;/emphasis&gt; to the near clipping plane (negative if the plane is behind the viewer)</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="far" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The &lt;emphasis&gt;distance&lt;/emphasis&gt; for the far clipping plane (negative if the plane is behind the viewer)</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_arc" c:identifier="cogl_path_arc">
+      <doc xml:whitespace="preserve">Adds an elliptical arc segment to the current path. A straight line
+segment will link the current pen location with the first vertex
+of the arc. If you perform a move_to to the arcs start just before
+drawing it you create a free standing arc.
+The angles are measured in degrees where 0° is in the direction of
+the positive X axis and 90° is in the direction of the positive Y
+axis. The angle of the arc begins at @angle_1 and heads towards
+otherwise it will increase).</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="center_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the elliptical arc center</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="center_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the elliptical arc center</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="radius_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X radius of the elliptical arc</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="radius_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y radius of the elliptical arc</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="angle_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Angle in degrees at which the arc begin</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="angle_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Angle in degrees at which the arc ends</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_close" c:identifier="cogl_path_close">
+      <doc xml:whitespace="preserve">Closes the path being constructed by adding a straight line segment
+to it that ends at the first vertex of the path.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="path_curve_to" c:identifier="cogl_path_curve_to">
+      <doc xml:whitespace="preserve">Adds a cubic bezier curve segment to the current path with the given
+second, third and fourth control points and using current pen location
+as the first control point.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the second bezier control point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the second bezier control point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="x_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the third bezier control point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the third bezier control point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="x_3" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the fourth bezier control point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_3" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the fourth bezier control point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_ellipse" c:identifier="cogl_path_ellipse">
+      <doc xml:whitespace="preserve">Constructs an ellipse shape. If there is an existing path this will
+start a new disjoint sub-path.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="center_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the ellipse center</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="center_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the ellipse center</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="radius_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X radius of the ellipse</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="radius_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y radius of the ellipse</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_fill" c:identifier="cogl_path_fill">
+      <doc xml:whitespace="preserve">Fills the interior of the constructed shape using the current
+drawing color. The current path is then cleared. To use the path
+again, call cogl_path_fill_preserve() instead.
+The interior of the shape is determined using the fill rule of the
+path. See %CoglPathFillRule for details.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="path_fill_preserve"
+              c:identifier="cogl_path_fill_preserve"
+              version="1.0">
+      <doc xml:whitespace="preserve">Fills the interior of the constructed shape using the current
+drawing color and preserves the path to be used again. See
+cogl_path_fill() for a description what is considered the interior
+of the shape.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="path_get_fill_rule"
+              c:identifier="cogl_path_get_fill_rule"
+              version="1.4">
+      <doc xml:whitespace="preserve">Retrieves the fill rule set using cogl_path_set_fill_rule().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the fill rule that is used for the current path.</doc>
+        <type name="PathFillRule" c:type="CoglPathFillRule"/>
+      </return-value>
+    </function>
+    <function name="path_line" c:identifier="cogl_path_line">
+      <doc xml:whitespace="preserve">Constructs a straight line shape starting and ending at the given
+coordinates. If there is an existing path this will start a new
+disjoint sub-path.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the start line vertex</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the start line vertex</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="x_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the end line vertex</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the end line vertex</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_line_to" c:identifier="cogl_path_line_to">
+      <doc xml:whitespace="preserve">Adds a straight line segment to the current path that ends at the
+given coordinates.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the end line vertex</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the end line vertex</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_move_to" c:identifier="cogl_path_move_to">
+      <doc xml:whitespace="preserve">Moves the pen to the given location. If there is an existing path
+this will start a new disjoint subpath.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the pen location to move to.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the pen location to move to.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_new" c:identifier="cogl_path_new" version="1.0">
+      <doc xml:whitespace="preserve">Clears the current path and starts a new one. Creating a new path
+also resets the fill rule to the default which is
+%COGL_PATH_FILL_RULE_EVEN_ODD.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="path_polygon" c:identifier="cogl_path_polygon">
+      <doc xml:whitespace="preserve">Constructs a polygonal shape of the given number of vertices. If
+there is an existing path this will start a new disjoint sub-path.
+The coords array must contain 2 * num_points values. The first value
+represents the X coordinate of the first vertex, the second value
+represents the Y coordinate of the first vertex, continuing in the same
+fashion for the rest of the vertices.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="coords" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A pointer to the first element of an array of fixed-point values that specify the vertex coordinates.</doc>
+          <array c:type="float*">
+            <type name="gfloat"/>
+          </array>
+        </parameter>
+        <parameter name="num_points" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The total number of vertices.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_polyline" c:identifier="cogl_path_polyline">
+      <doc xml:whitespace="preserve">Constructs a series of straight line segments, starting from the
+first given vertex coordinate. If there is an existing path this
+will start a new disjoint sub-path. Each subsequent segment starts
+where the previous one ended and ends at the next given vertex
+coordinate.
+The coords array must contain 2 * num_points values. The first value
+represents the X coordinate of the first vertex, the second value
+represents the Y coordinate of the first vertex, continuing in the same
+fashion for the rest of the vertices. (num_points - 1) segments will
+be constructed.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="coords" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A pointer to the first element of an array of fixed-point values that specify the vertex coordinates.</doc>
+          <array c:type="float*">
+            <type name="gfloat"/>
+          </array>
+        </parameter>
+        <parameter name="num_points" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The total number of vertices.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_rectangle" c:identifier="cogl_path_rectangle">
+      <doc xml:whitespace="preserve">Constructs a rectangular shape at the given coordinates. If there
+is an existing path this will start a new disjoint sub-path.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the top-left corner.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the top-left corner.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="x_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the bottom-right corner.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the bottom-right corner.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_rel_curve_to" c:identifier="cogl_path_rel_curve_to">
+      <doc xml:whitespace="preserve">Adds a cubic bezier curve segment to the current path with the given
+second, third and fourth control points and using current pen location
+as the first control point. The given coordinates are relative to the
+current pen location.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the second bezier control point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the second bezier control point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="x_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the third bezier control point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the third bezier control point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="x_3" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the fourth bezier control point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_3" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the fourth bezier control point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_rel_line_to" c:identifier="cogl_path_rel_line_to">
+      <doc xml:whitespace="preserve">Adds a straight line segment to the current path that ends at the
+given coordinates relative to the current pen location.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X offset from the current pen location of the end line vertex</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y offset from the current pen location of the end line vertex</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_rel_move_to" c:identifier="cogl_path_rel_move_to">
+      <doc xml:whitespace="preserve">Moves the pen to the given offset relative to the current pen
+location. If there is an existing path this will start a new
+disjoint subpath.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X offset from the current pen location to move the pen to.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y offset from the current pen location to move the pen to.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_round_rectangle"
+              c:identifier="cogl_path_round_rectangle">
+      <doc xml:whitespace="preserve">Constructs a rectangular shape with rounded corners. If there is an
+existing path this will start a new disjoint sub-path.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the top-left corner.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the top-left corner.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="x_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the bottom-right corner.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the bottom-right corner.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="radius" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Radius of the corner arcs.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="arc_step" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Angle increment resolution for subdivision of the corner arcs.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_set_fill_rule"
+              c:identifier="cogl_path_set_fill_rule"
+              version="1.4">
+      <doc xml:whitespace="preserve">Sets the fill rule of the current path to @fill_rule. This will
+affect how the path is filled when cogl_path_fill() is later
+called. Note that the fill rule state is attached to the path so
+calling cogl_get_path() will preserve the fill rule and calling
+cogl_path_new() will reset the fill rule back to the default.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="fill_rule" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The new fill rule.</doc>
+          <type name="PathFillRule" c:type="CoglPathFillRule"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_stroke" c:identifier="cogl_path_stroke">
+      <doc xml:whitespace="preserve">Strokes the constructed shape using the current drawing color and a
+width of 1 pixel (regardless of the current transformation
+matrix). To current path is then cleared. To use the path again,
+call cogl_path_stroke_preserve() instead.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="path_stroke_preserve"
+              c:identifier="cogl_path_stroke_preserve"
+              version="1.0">
+      <doc xml:whitespace="preserve">Strokes the constructed shape using the current drawing color and
+preserves the path to be used again.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="perspective" c:identifier="cogl_perspective">
+      <doc xml:whitespace="preserve">Replaces the current projection matrix with a perspective matrix
+based on the provided values.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="fovy" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Vertical of view angle in degrees.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="aspect" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Aspect ratio of diesplay</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="z_near" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Nearest visible point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="z_far" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Furthest visible point along the z-axis</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pixel_array_new_with_size_EXP"
+              c:identifier="cogl_pixel_array_new_with_size_EXP"
+              introspectable="0">
+      <return-value>
+        <type name="PixelArray" c:type="CoglPixelArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="width" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="polygon" c:identifier="cogl_polygon" version="1.0">
+      <doc xml:whitespace="preserve">Draws a convex polygon using the current source material to fill / texture
+with according to the texture coordinates passed.
+If @use_color is %TRUE then the color will be changed for each vertex using
+the value specified in the color member of #CoglTextureVertex. This can be
+used for example to make the texture fade out by setting the alpha value of
+the color.
+All of the texture coordinates must be in the range [0,1] and repeating the
+texture is not supported.
+Because of the way this function is implemented it will currently
+only work if either the texture is not sliced or the backend is not
+OpenGL ES and the minifying and magnifying functions are both set
+to COGL_MATERIAL_FILTER_NEAREST.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="vertices" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An array of #CoglTextureVertex structs</doc>
+          <type name="TextureVertex" c:type="CoglTextureVertex*"/>
+        </parameter>
+        <parameter name="n_vertices" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The length of the vertices array</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="use_color" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the color member of #CoglTextureVertex should be used</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pop_draw_buffer"
+              c:identifier="cogl_pop_draw_buffer"
+              deprecated="The draw buffer API was replaced with a framebuffer API"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Restore cogl_set_draw_buffer() state.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="pop_framebuffer"
+              c:identifier="cogl_pop_framebuffer"
+              version="1.2">
+      <doc xml:whitespace="preserve">Restores the framebuffer that was previously at the top of the stack.
+All subsequent drawing will be redirected to this framebuffer.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="pop_matrix" c:identifier="cogl_pop_matrix">
+      <doc xml:whitespace="preserve">Restores the current model-view matrix from the matrix stack.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="program_attach_shader"
+              c:identifier="cogl_program_attach_shader">
+      <doc xml:whitespace="preserve">Attaches a shader to a program object, a program can have one vertex shader
+and one fragment shader attached.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="program_handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a shdaer program.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="shader_handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a vertex of fragment shader.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_get_uniform_location"
+              c:identifier="cogl_program_get_uniform_location">
+      <doc xml:whitespace="preserve">Retrieve the location (offset) of a uniform variable in a shader program,
+a uniform is a variable that is constant for all vertices/fragments for a
+shader object and is possible to modify as an external parameter.
+This uniform can be set using cogl_program_uniform_1f() when the
+program is in use.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the offset of a uniform in a specified program.</doc>
+        <type name="gint" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a shader program.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="uniform_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of a uniform.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_link" c:identifier="cogl_program_link">
+      <doc xml:whitespace="preserve">Links a program making it ready for use.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a shader program.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_ref"
+              c:identifier="cogl_program_ref"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Add an extra reference to a program.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">@handle</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle to a program.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_set_uniform_1f"
+              c:identifier="cogl_program_set_uniform_1f"
+              version="1.4">
+      <doc xml:whitespace="preserve">Changes the value of a floating point uniform for the given linked</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="program" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle for a linked program</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="uniform_location" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the uniform location retrieved from cogl_program_get_uniform_location().</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new value of the uniform.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_set_uniform_1i"
+              c:identifier="cogl_program_set_uniform_1i"
+              version="1.4">
+      <doc xml:whitespace="preserve">Changes the value of an integer uniform for the given linked</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="program" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle for a linked program</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="uniform_location" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the uniform location retrieved from cogl_program_get_uniform_location().</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new value of the uniform.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_set_uniform_float"
+              c:identifier="cogl_program_set_uniform_float"
+              version="1.4">
+      <doc xml:whitespace="preserve">Changes the value of a float vector uniform, or uniform array for
+the given linked @program.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="program" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle for a linked program</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="uniform_location" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the uniform location retrieved from cogl_program_get_uniform_location().</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="n_components" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of components for the uniform. For example with glsl you'd use 3 for a vec3 or 4 for a vec4.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <doc xml:whitespace="preserve">For uniform arrays this is the array length otherwise just pass 1</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new value of the uniform[s].</doc>
+          <array length="3" c:type="float*">
+            <type name="gfloat"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_set_uniform_int"
+              c:identifier="cogl_program_set_uniform_int"
+              version="1.4">
+      <doc xml:whitespace="preserve">Changes the value of a int vector uniform, or uniform array for
+the given linked @program.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="program" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle for a linked program</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="uniform_location" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the uniform location retrieved from cogl_program_get_uniform_location().</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="n_components" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of components for the uniform. For example with glsl you'd use 3 for a vec3 or 4 for a vec4.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <doc xml:whitespace="preserve">For uniform arrays this is the array length otherwise just pass 1</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new value of the uniform[s].</doc>
+          <array length="3" c:type="int*">
+            <type name="gint"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_set_uniform_matrix"
+              c:identifier="cogl_program_set_uniform_matrix"
+              version="1.4">
+      <doc xml:whitespace="preserve">Changes the value of a matrix uniform, or uniform array in the
+given linked @program.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="program" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle for a linked program</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="uniform_location" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the uniform location retrieved from cogl_program_get_uniform_location().</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="dimensions" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The dimensions of the matrix. So for for example pass 2 for a 2x2 matrix or 3 for 3x3.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <doc xml:whitespace="preserve">For uniform arrays this is the array length otherwise just pass 1</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="transpose" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Whether to transpose the matrix when setting the uniform.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new value of the uniform.</doc>
+          <array length="3" c:type="float*">
+            <type name="gfloat"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_uniform_1f"
+              c:identifier="cogl_program_uniform_1f"
+              deprecated="Use cogl_program_set_uniform_1f() instead."
+              deprecated-version="1.4">
+      <doc xml:whitespace="preserve">Changes the value of a floating point uniform in the currently
+used (see cogl_program_use()) shader program.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="uniform_no" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the uniform to set.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new value of the uniform.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_uniform_1i"
+              c:identifier="cogl_program_uniform_1i"
+              deprecated="Use cogl_program_set_uniform_1i() instead."
+              deprecated-version="1.4">
+      <doc xml:whitespace="preserve">Changes the value of an integer uniform in the currently
+used (see cogl_program_use()) shader program.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="uniform_no" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the uniform to set.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new value of the uniform.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_uniform_float"
+              c:identifier="cogl_program_uniform_float"
+              deprecated="Use cogl_program_set_uniform_float() instead."
+              deprecated-version="1.4">
+      <doc xml:whitespace="preserve">Changes the value of a float vector uniform, or uniform array in the
+currently used (see cogl_program_use()) shader program.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="uniform_no" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the uniform to set.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Size of float vector.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Size of array of uniforms.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new value of the uniform.</doc>
+          <array length="2" c:type="float*">
+            <type name="gfloat"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_uniform_int"
+              c:identifier="cogl_program_uniform_int">
+      <doc xml:whitespace="preserve">Changes the value of a int vector uniform, or uniform array in the
+currently used (see cogl_program_use()) shader program.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="uniform_no" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the uniform to set.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Size of int vector.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Size of array of uniforms.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new value of the uniform.</doc>
+          <array length="2" c:type="int*">
+            <type name="gint"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_uniform_matrix"
+              c:identifier="cogl_program_uniform_matrix">
+      <doc xml:whitespace="preserve">Changes the value of a matrix uniform, or uniform array in the
+currently used (see cogl_program_use()) shader program. The @size
+parameter is used to determine the square size of the matrix.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="uniform_no" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the uniform to set.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Size of matrix.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Size of array of uniforms.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="transpose" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Whether to transpose the matrix when setting the uniform.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new value of the uniform.</doc>
+          <array length="2" c:type="float*">
+            <type name="gfloat"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_unref" c:identifier="cogl_program_unref">
+      <doc xml:whitespace="preserve">Removes a reference to a program. If it was the last reference the
+program object will be destroyed.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle to a program.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_use" c:identifier="cogl_program_use">
+      <doc xml:whitespace="preserve">Activate a specific shader program replacing that part of the GL
+rendering pipeline, if passed in %COGL_INVALID_HANDLE the default
+behavior of GL is reinstated.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a shader program or %COGL_INVALID_HANDLE.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="push_draw_buffer"
+              c:identifier="cogl_push_draw_buffer"
+              deprecated="The draw buffer API was replaced with a framebuffer API"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Save cogl_set_draw_buffer() state.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="push_framebuffer"
+              c:identifier="cogl_push_framebuffer"
+              version="1.2">
+      <doc xml:whitespace="preserve">Redirects all subsequent drawing to the specified framebuffer. This can
+either be an offscreen buffer created with cogl_offscreen_new_to_texture ()
+or in the future it may be an onscreen framebuffer too.
+You should understand that a framebuffer owns the following state:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;simpara&gt;The projection matrix&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;simpara&gt;The modelview matrix stack&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;simpara&gt;The viewport&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;simpara&gt;The clip stack&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+So these items will automatically be saved and restored when you
+push and pop between different framebuffers.
+Also remember a newly allocated framebuffer will have an identity matrix for
+the projection and modelview matrices which gives you a coordinate space
+like OpenGL with (-1, -1) corresponding to the top left of the viewport,
+(1, 1) corresponding to the bottom right and +z coming out towards the
+viewer.
+If you want to set up a coordinate space like Clutter does with (0, 0)
+corresponding to the top left and (framebuffer_width, framebuffer_height)
+corresponding to the bottom right you can do so like this:
+|[
+static void
+setup_viewport (unsigned int width,
+unsigned int height,
+float fovy,
+float aspect,
+float z_near,
+float z_far)
+{
+float z_camera;
+CoglMatrix projection_matrix;
+CoglMatrix mv_matrix;
+cogl_set_viewport (0, 0, width, height);
+cogl_perspective (fovy, aspect, z_near, z_far);
+cogl_get_projection_matrix (&amp;amp;projection_matrix);
+z_camera = 0.5 * projection_matrix.xx;
+cogl_matrix_init_identity (&amp;amp;mv_matrix);
+cogl_matrix_translate (&amp;amp;mv_matrix, -0.5f, -0.5f, -z_camera);
+cogl_matrix_scale (&amp;amp;mv_matrix, 1.0f / width, -1.0f / height, 1.0f / width);
+cogl_matrix_translate (&amp;amp;mv_matrix, 0.0f, -1.0 * height, 0.0f);
+cogl_set_modelview_matrix (&amp;amp;mv_matrix);
+}
+static void
+my_init_framebuffer (ClutterStage *stage,
+CoglFramebuffer *framebuffer,
+unsigned int framebuffer_width,
+unsigned int framebuffer_height)
+{
+ClutterPerspective perspective;
+clutter_stage_get_perspective (stage, &amp;perspective);
+cogl_push_framebuffer (framebuffer);
+setup_viewport (framebuffer_width,
+framebuffer_height,
+perspective.fovy,
+perspective.aspect,
+perspective.z_near,
+perspective.z_far);
+}
+]|
+The previous framebuffer can be restored by calling cogl_pop_framebuffer()</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglFramebuffer object, either onscreen or offscreen.</doc>
+          <type name="Framebuffer" c:type="CoglFramebuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="push_matrix" c:identifier="cogl_push_matrix">
+      <doc xml:whitespace="preserve">Stores the current model-view matrix on the matrix stack. The matrix
+can later be restored with cogl_pop_matrix().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="read_pixels" c:identifier="cogl_read_pixels">
+      <doc xml:whitespace="preserve">This reads a rectangle of pixels from the current framebuffer where
+position (0, 0) is the top left. The pixel at (x, y) is the first
+read, and the data is returned with a rowstride of (width * 4).
+Currently Cogl assumes that the framebuffer is in a premultiplied
+format so if @format is non-premultiplied it will convert it. To
+read the pixel values without any conversion you should either
+specify a format that doesn't use an alpha channel or use one of
+the formats ending in PRE.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The window x position to start reading from</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The window y position to start reading from</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The width of the rectangle you want to read</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The height of the rectangle you want to read</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="source" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Identifies which auxillary buffer you want to read (only COGL_READ_PIXELS_COLOR_BUFFER supported currently)</doc>
+          <type name="ReadPixelsFlags" c:type="CoglReadPixelsFlags"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The pixel format you want the result in (only COGL_PIXEL_FORMAT_RGBA_8888 supported currently)</doc>
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="pixels" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The location to write the pixel data.</doc>
+          <type name="guint8" c:type="guint8*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rectangle" c:identifier="cogl_rectangle">
+      <doc xml:whitespace="preserve">Fills a rectangle at the given coordinates with the current source material</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the top-left corner</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the top-left corner</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="x_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the bottom-right corner</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the bottom-right corner</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rectangle_with_multitexture_coords"
+              c:identifier="cogl_rectangle_with_multitexture_coords"
+              version="1.0">
+      <doc xml:whitespace="preserve">This function draws a rectangle using the current source material to
+texture or fill with. As a material may contain multiple texture layers
+this interface lets you supply texture coordinates for each layer of the
+material.
+The first pair of coordinates are for the first layer (with the smallest
+layer index) and if you supply less texture coordinates than there are
+layers in the current source material then default texture coordinates
+(0.0, 0.0, 1.0, 1.0) are generated.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x coordinate upper left on screen.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y coordinate upper left on screen.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="x2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x coordinate lower right on screen.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y coordinate lower right on screen.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="tex_coords" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An array containing groups of 4 float values: [tx1, ty1, tx2, ty2] that are interpreted as two texture coordinates; one for the upper left texel, and one for the lower right texel. Each value should be between 0.0 and 1.0, where the coordinate (0.0, 0.0) represents the top left of the texture, and (1.0, 1.0) the bottom right.</doc>
+          <array c:type="float*">
+            <type name="gfloat"/>
+          </array>
+        </parameter>
+        <parameter name="tex_coords_len" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The length of the tex_coords array. (e.g. for one layer and one group of texture coordinates, this would be 4)</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rectangle_with_texture_coords"
+              c:identifier="cogl_rectangle_with_texture_coords"
+              version="1.0">
+      <doc xml:whitespace="preserve">Draw a rectangle using the current material and supply texture coordinates
+to be used for the first texture layer of the material. To draw the entire
+texture pass in @tx1=0.0 @ty1=0.0 @tx2=1.0 @ty2=1.0.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x coordinate upper left on screen.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y coordinate upper left on screen.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="x2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x coordinate lower right on screen.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y coordinate lower right on screen.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="tx1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x part of texture coordinate to use for upper left pixel</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="ty1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y part of texture coordinate to use for upper left pixel</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="tx2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x part of texture coordinate to use for lower right pixel</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="ty2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y part of texture coordinate to use for left pixel</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rectangles" c:identifier="cogl_rectangles" version="1.0">
+      <doc xml:whitespace="preserve">Draws a series of rectangles in the same way that
+cogl_rectangle() does. In some situations it can give a
+significant performance boost to use this function rather than
+calling cogl_rectangle() separately for each rectangle.
+parameters x1, y1, x2, and y2, and have the same
+meaning as in cogl_rectangle().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="verts" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an array of vertices</doc>
+          <array c:type="float*">
+            <type name="gfloat"/>
+          </array>
+        </parameter>
+        <parameter name="n_rects" transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of rectangles to draw</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rectangles_with_texture_coords"
+              c:identifier="cogl_rectangles_with_texture_coords"
+              version="0.8.6">
+      <doc xml:whitespace="preserve">Draws a series of rectangles in the same way that
+cogl_rectangle_with_texture_coords() does. In some situations it can give a
+significant performance boost to use this function rather than
+calling cogl_rectangle_with_texture_coords() separately for each rectangle.
+parameters x1, y1, x2, y2, tx1, ty1, tx2 and ty2 and have the same
+meaning as in cogl_rectangle_with_texture_coords().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="verts" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an array of vertices</doc>
+          <array c:type="float*">
+            <type name="gfloat"/>
+          </array>
+        </parameter>
+        <parameter name="n_rects" transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of rectangles to draw</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rotate" c:identifier="cogl_rotate">
+      <doc xml:whitespace="preserve">Multiplies the current model-view matrix by one that rotates the
+model around the vertex specified by @x, @y and @z. The rotation
+follows the right-hand thumb rule so for example rotating by 10
+degrees about the vertex (0, 0, 1) causes a small counter-clockwise
+rotation.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Angle in degrees to rotate.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X-component of vertex to rotate around.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y-component of vertex to rotate around.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Z-component of vertex to rotate around.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scale" c:identifier="cogl_scale">
+      <doc xml:whitespace="preserve">Multiplies the current model-view matrix by one that scales the x,
+y and z axes by the given values.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Amount to scale along the x-axis</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Amount to scale along the y-axis</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Amount to scale along the z-axis</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_backface_culling_enabled"
+              c:identifier="cogl_set_backface_culling_enabled">
+      <doc xml:whitespace="preserve">Sets whether textures positioned so that their backface is showing
+should be hidden. This can be used to efficiently draw two-sided
+textures or fully closed cubes without enabling depth testing. This
+only affects calls to the cogl_rectangle* family of functions and
+cogl_vertex_buffer_draw*. Backface culling is disabled by default.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="setting" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to enable backface culling or %FALSE to disable.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_depth_test_enabled"
+              c:identifier="cogl_set_depth_test_enabled"
+              deprecated="Use cogl_material_set_depth_test_enabled()"
+              deprecated-version="1.4">
+      <doc xml:whitespace="preserve">Sets whether depth testing is enabled. If it is disabled then the
+order that actors are layered on the screen depends solely on the
+order specified using clutter_actor_raise() and
+clutter_actor_lower(), otherwise it will also take into account the
+actor's depth. Depth testing is disabled by default.
+instead.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="setting" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to enable depth testing or %FALSE to disable.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_draw_buffer"
+              c:identifier="cogl_set_draw_buffer"
+              deprecated="The target argument was redundant since we could look at"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Redirects all subsequent drawing to the specified framebuffer. This
+can either be an offscreen buffer created with
+cogl_offscreen_new_to_texture () or you can revert to your original
+on screen window buffer.
+the type of CoglHandle given instead.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglBufferTarget that specifies what kind of framebuffer you are setting as the render target.</doc>
+          <type name="BufferTarget" c:type="CoglBufferTarget"/>
+        </parameter>
+        <parameter name="offscreen" transfer-ownership="none">
+          <doc xml:whitespace="preserve">If you are setting a framebuffer of type COGL_OFFSCREEN_BUFFER then this is a CoglHandle for the offscreen buffer.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_fog" c:identifier="cogl_set_fog">
+      <doc xml:whitespace="preserve">Enables fogging. Fogging causes vertices that are further away from the eye
+to be rendered with a different color. The color is determined according to
+the chosen fog mode; at it's simplest the color is linearly interpolated so
+that vertices at @z_near are drawn fully with their original color and
+vertices at @z_far are drawn fully with @fog_color. Fogging will remain
+enabled until you call cogl_disable_fog().
+&lt;note&gt;The fogging functions only work correctly when primitives use
+unmultiplied alpha colors. By default Cogl will premultiply textures
+and cogl_set_source_color() will premultiply colors, so unless you
+explicitly load your textures requesting an unmultiplied internal format
+and use cogl_material_set_color() you can only use fogging with fully
+opaque primitives. This might improve in the future when we can depend
+on fragment shaders.&lt;/note&gt;</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="fog_color" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The color of the fog</doc>
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglFogMode that determines the equation used to calculate the fogging blend factor.</doc>
+          <type name="FogMode" c:type="CoglFogMode"/>
+        </parameter>
+        <parameter name="density" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Used by %COGL_FOG_MODE_EXPONENTIAL and by %COGL_FOG_MODE_EXPONENTIAL_SQUARED equations.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="z_near" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Position along Z axis where no fogging should be applied</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="z_far" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Position along Z axis where full fogging should be applied</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_framebuffer"
+              c:identifier="cogl_set_framebuffer"
+              version="1.2">
+      <doc xml:whitespace="preserve">This redirects all subsequent drawing to the specified framebuffer. This can
+either be an offscreen buffer created with cogl_offscreen_new_to_texture ()
+or in the future it may be an onscreen framebuffers too.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglFramebuffer object, either onscreen or offscreen.</doc>
+          <type name="Framebuffer" c:type="CoglFramebuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_modelview_matrix"
+              c:identifier="cogl_set_modelview_matrix">
+      <doc xml:whitespace="preserve">Loads @matrix as the new model-view matrix.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="matrix" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new model-view matrix</doc>
+          <type name="Matrix" c:type="CoglMatrix*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_path" c:identifier="cogl_set_path" version="1.4">
+      <doc xml:whitespace="preserve">Replaces the current path with @path. A reference is taken on the
+object so if you no longer need the path you should unref with
+cogl_object_unref().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="path" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglPath object</doc>
+          <type name="Path" c:type="CoglPath*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_projection_matrix"
+              c:identifier="cogl_set_projection_matrix">
+      <doc xml:whitespace="preserve">Loads matrix as the new projection matrix.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="matrix" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new projection matrix</doc>
+          <type name="Matrix" c:type="CoglMatrix*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_source" c:identifier="cogl_set_source" version="1.0">
+      <doc xml:whitespace="preserve">This function sets the source material that will be used to fill subsequent
+geometry emitted via the cogl API.
+&lt;note&gt;In the future we may add the ability to set a front facing material,
+and a back facing material, in which case this function will set both to the
+same.&lt;/note&gt;</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle for a material</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_source_color"
+              c:identifier="cogl_set_source_color"
+              version="1.0">
+      <doc xml:whitespace="preserve">This is a convenience function for creating a solid fill source material
+from the given color. This color will be used for any subsequent drawing
+operation.
+The color will be premultiplied by Cogl, so the color should be
+semi-transparent red.
+See also cogl_set_source_color4ub() and cogl_set_source_color4f()
+if you already have the color components.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="color" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglColor</doc>
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_source_color4f"
+              c:identifier="cogl_set_source_color4f"
+              version="1.0">
+      <doc xml:whitespace="preserve">This is a convenience function for creating a solid fill source material
+from the given color using normalized values for each component. This color
+will be used for any subsequent drawing operation.
+The value for each component is a fixed point number in the range
+between 0 and %1.0. If the values passed in are outside that
+range, they will be clamped.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value of the red channel, between 0 and %1.0</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value of the green channel, between 0 and %1.0</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value of the blue channel, between 0 and %1.0</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="alpha" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value of the alpha channel, between 0 and %1.0</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_source_color4ub"
+              c:identifier="cogl_set_source_color4ub"
+              version="1.0">
+      <doc xml:whitespace="preserve">This is a convenience function for creating a solid fill source material
+from the given color using unsigned bytes for each component. This
+color will be used for any subsequent drawing operation.
+The value for each component is an unsigned byte in the range
+between 0 and 255.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value of the red channel, between 0 and 255</doc>
+          <type name="guint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value of the green channel, between 0 and 255</doc>
+          <type name="guint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value of the blue channel, between 0 and 255</doc>
+          <type name="guint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="alpha" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value of the alpha channel, between 0 and 255</doc>
+          <type name="guint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_source_texture"
+              c:identifier="cogl_set_source_texture"
+              version="1.0">
+      <doc xml:whitespace="preserve">This is a convenience function for creating a material with the first
+layer set to #texture_handle and setting that material as the source with
+cogl_set_source.
+and cogl_set_source_texture. If you need to blend a texture with a color then
+you can create a simple material like this:
+&lt;programlisting&gt;
+material = cogl_material_new ();
+cogl_material_set_color4ub (material, 0xff, 0x00, 0x00, 0x80);
+cogl_material_set_layer (material, 0, tex_handle);
+cogl_set_source (material);
+&lt;/programlisting&gt;</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="texture_handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The Cogl texture you want as your source</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_viewport"
+              c:identifier="cogl_set_viewport"
+              version="1.2">
+      <doc xml:whitespace="preserve">Replaces the current viewport with the given values.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X offset of the viewport</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y offset of the viewport</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Width of the viewport</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Height of the viewport</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_compile" c:identifier="cogl_shader_compile">
+      <doc xml:whitespace="preserve">Compiles the shader, no return value, but the shader is now ready for
+linking into a program.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#CoglHandle for a shader.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_get_info_log"
+              c:identifier="cogl_shader_get_info_log">
+      <doc xml:whitespace="preserve">Retrieves the information log for a coglobject, can be used in conjunction
+with cogl_shader_get_parameteriv() to retrieve the compiler warnings/error
+messages that caused a shader to not compile correctly, mainly useful for
+debugging purposes.
+g_free() to free it</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a newly allocated string containing the info log. Use</doc>
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#CoglHandle for a shader.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_get_type" c:identifier="cogl_shader_get_type">
+      <doc xml:whitespace="preserve">Retrieves the type of a shader #CoglHandle
+or %COGL_SHADER_TYPE_FRAGMENT if the shader is a frament processor</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%COGL_SHADER_TYPE_VERTEX if the shader is a vertex processor</doc>
+        <type name="ShaderType" c:type="CoglShaderType"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#CoglHandle for a shader.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_is_compiled" c:identifier="cogl_shader_is_compiled">
+      <doc xml:whitespace="preserve">Retrieves whether a shader #CoglHandle has been compiled</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the shader object has sucessfully be compiled</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#CoglHandle for a shader.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_ref"
+              c:identifier="cogl_shader_ref"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Add an extra reference to a shader.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">@handle</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle to a shader.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_source" c:identifier="cogl_shader_source">
+      <doc xml:whitespace="preserve">Replaces the current GLSL source associated with a shader with a new
+one.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="shader" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#CoglHandle for a shader.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="source" transfer-ownership="none">
+          <doc xml:whitespace="preserve">GLSL shader source.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_unref" c:identifier="cogl_shader_unref">
+      <doc xml:whitespace="preserve">Removes a reference to a shader. If it was the last reference the
+shader object will be destroyed.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle to a shader.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sqrti" c:identifier="cogl_sqrti" version="1.0">
+      <doc xml:whitespace="preserve">Very fast fixed point implementation of square root for integers.
+This function is at least 6x faster than clib sqrt() on x86, and (this is
+not a typo!) about 500x faster on ARM without FPU. It's error is less than
+5% for arguments smaller than %COGL_SQRTI_ARG_5_PERCENT and less than 10%
+for narguments smaller than %COGL_SQRTI_ARG_10_PERCENT. The maximum
+argument that can be passed to this function is %COGL_SQRTI_ARG_MAX.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">integer square root.</doc>
+        <type name="gint" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">integer value</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_3d_new_from_data_EXP"
+              c:identifier="cogl_texture_3d_new_from_data_EXP"
+              introspectable="0"
+              throws="1">
+      <return-value>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="width" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="depth" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="TextureFlags" c:type="CoglTextureFlags"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="internal_format" transfer-ownership="none">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="rowstride" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="image_stride" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="guint8" c:type="guint8*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_3d_new_with_size_EXP"
+              c:identifier="cogl_texture_3d_new_with_size_EXP"
+              introspectable="0"
+              throws="1">
+      <return-value>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="width" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="depth" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="TextureFlags" c:type="CoglTextureFlags"/>
+        </parameter>
+        <parameter name="internal_format" transfer-ownership="none">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_data" c:identifier="cogl_texture_get_data">
+      <doc xml:whitespace="preserve">Copies the pixel data from a cogl texture to system memory.
+is not valid</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the size of the texture data in bytes, or 0 if the texture</doc>
+        <type name="gint" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a texture.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #CoglPixelFormat to store the texture as.</doc>
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="rowstride" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the rowstride of @data or retrieved from texture if none is specified.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">memory location to write contents of buffer, or %NULL if we're only querying the data size through the return value.</doc>
+          <type name="guint8" c:type="guint8*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_format" c:identifier="cogl_texture_get_format">
+      <doc xml:whitespace="preserve">Queries the #CoglPixelFormat of a cogl texture.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the #CoglPixelFormat of the GPU side texture</doc>
+        <type name="PixelFormat" c:type="CoglPixelFormat"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a texture.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_gl_texture"
+              c:identifier="cogl_texture_get_gl_texture">
+      <doc xml:whitespace="preserve">Queries the GL handles for a GPU side texture through its #CoglHandle.
+If the texture is spliced the data for the first sub texture will be
+queried.
+if the handle was invalid</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the handle was successfully retrieved, %FALSE</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a texture.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="out_gl_handle"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">pointer to return location for the textures GL handle, or %NULL.</doc>
+          <type name="GL.uint" c:type="GLuint*"/>
+        </parameter>
+        <parameter name="out_gl_target"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">pointer to return location for the GL target type, or %NULL.</doc>
+          <type name="GL.enum" c:type="GLenum*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_height" c:identifier="cogl_texture_get_height">
+      <doc xml:whitespace="preserve">Queries the height of a cogl texture.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the height of the GPU side texture in pixels</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a texture.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_max_waste"
+              c:identifier="cogl_texture_get_max_waste">
+      <doc xml:whitespace="preserve">Queries the maximum wasted (unused) pixels in one dimension of a GPU side
+texture.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the maximum waste</doc>
+        <type name="gint" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a texture.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_rowstride"
+              c:identifier="cogl_texture_get_rowstride">
+      <doc xml:whitespace="preserve">Queries the rowstride of a cogl texture.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the offset in bytes between each consequetive row of pixels</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a texture.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_width" c:identifier="cogl_texture_get_width">
+      <doc xml:whitespace="preserve">Queries the width of a cogl texture.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the width of the GPU side texture in pixels</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a texture.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_is_sliced" c:identifier="cogl_texture_is_sliced">
+      <doc xml:whitespace="preserve">Queries if a texture is sliced (stored as multiple GPU side tecture
+objects).
+is stored as a single GPU texture</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the texture is sliced, %FALSE if the texture</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a texture.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_bitmap"
+              c:identifier="cogl_texture_new_from_bitmap"
+              version="1.0"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a COGL texture from a CoglBitmap.
+%COGL_INVALID_HANDLE on failure</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a #CoglHandle to the newly created texture or</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="bmp_handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A CoglBitmap handle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Optional flags for the texture, or %COGL_TEXTURE_NONE</doc>
+          <type name="TextureFlags" c:type="CoglTextureFlags"/>
+        </parameter>
+        <parameter name="internal_format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #CoglPixelFormat to use for the GPU storage of the texture</doc>
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_buffer"
+              c:identifier="cogl_texture_new_from_buffer"
+              version="1.2"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new texture using the buffer specified by @handle. If the buffer
+has been created using cogl_pixel_buffer_new_for_size() it's possible to omit
+the height and width values already specified at creation time.
+failure</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a #CoglHandle to the new texture or %COGL_INVALID_HANDLE on</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #CoglHandle of a pixel buffer</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of texture in pixels or 0</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">height of texture in pixels or 0</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">optional flags for the texture, or %COGL_TEXTURE_NONE</doc>
+          <type name="TextureFlags" c:type="CoglTextureFlags"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #CoglPixelFormat the buffer is stored in in RAM</doc>
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="internal_format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #CoglPixelFormat that will be used for storing the buffer on the GPU. If %COGL_PIXEL_FORMAT_ANY is given then a premultiplied format similar to the format of the source data will be used. The default blending equations of Cogl expect premultiplied color data; the main use of passing a non-premultiplied format here is if you have non-premultiplied source data and are going to adjust the blend mode (see cogl_material_set_blend()) or use the data for something other than straight blending</doc>
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="rowstride" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the memory offset in bytes between the starts of scanlines in @data. If 0 is given the row stride will be deduced from</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <doc xml:whitespace="preserve">offset in bytes in @buffer from where the texture data starts</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_buffer_EXP"
+              c:identifier="cogl_texture_new_from_buffer_EXP"
+              introspectable="0">
+      <return-value>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="TextureFlags" c:type="CoglTextureFlags"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="internal_format" transfer-ownership="none">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="rowstride" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_data"
+              c:identifier="cogl_texture_new_from_data"
+              version="0.8"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new COGL texture based on data residing in memory.
+%COGL_INVALID_HANDLE on failure</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a #CoglHandle to the newly created texture or</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of texture in pixels</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">height of texture in pixels</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Optional flags for the texture, or %COGL_TEXTURE_NONE</doc>
+          <type name="TextureFlags" c:type="CoglTextureFlags"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #CoglPixelFormat the buffer is stored in in RAM</doc>
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="internal_format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #CoglPixelFormat that will be used for storing the buffer on the GPU. If COGL_PIXEL_FORMAT_ANY is given then a premultiplied format similar to the format of the source data will be used. The default blending equations of Cogl expect premultiplied color data; the main use of passing a non-premultiplied format here is if you have non-premultiplied source data and are going to adjust the blend mode (see cogl_material_set_blend()) or use the data for something other than straight blending.</doc>
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="rowstride" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the memory offset in bytes between the starts of scanlines in @data</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">pointer the memory region where the source buffer resides</doc>
+          <type name="guint8" c:type="guint8*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_file"
+              c:identifier="cogl_texture_new_from_file"
+              version="0.8"
+              introspectable="0"
+              throws="1">
+      <doc xml:whitespace="preserve">Creates a COGL texture from an image file.
+%COGL_INVALID_HANDLE on failure</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a #CoglHandle to the newly created texture or</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the file to load</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Optional flags for the texture, or %COGL_TEXTURE_NONE</doc>
+          <type name="TextureFlags" c:type="CoglTextureFlags"/>
+        </parameter>
+        <parameter name="internal_format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #CoglPixelFormat to use for the GPU storage of the texture. If %COGL_PIXEL_FORMAT_ANY is given then a premultiplied format similar to the format of the source data will be used. The default blending equations of Cogl expect premultiplied color data; the main use of passing a non-premultiplied format here is if you have non-premultiplied source data and are going to adjust the blend mode (see cogl_material_set_blend()) or use the data for something other than straight blending.</doc>
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_foreign"
+              c:identifier="cogl_texture_new_from_foreign"
+              version="0.8"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a COGL texture based on an existing OpenGL texture; the
+width, height and format are passed along since it is not always
+possible to query these from OpenGL.
+The waste arguments allow you to create a Cogl texture that maps to
+a region smaller than the real OpenGL texture. For instance if your
+hardware only supports power-of-two textures you may load a
+non-power-of-two image into a larger power-of-two texture and use
+the waste arguments to tell Cogl which region should be mapped to
+the texture coordinate range [0:1].
+%COGL_INVALID_HANDLE on failure</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a #CoglHandle to the newly created texture or</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="gl_handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">opengl handle of foreign texture.</doc>
+          <type name="GL.uint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="gl_target" transfer-ownership="none">
+          <doc xml:whitespace="preserve">opengl target type of foreign texture</doc>
+          <type name="GL.enum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of foreign texture</doc>
+          <type name="GL.uint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">height of foreign texture.</doc>
+          <type name="GL.uint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x_pot_waste" transfer-ownership="none">
+          <doc xml:whitespace="preserve">horizontal waste on the right hand edge of the texture.</doc>
+          <type name="GL.uint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="y_pot_waste" transfer-ownership="none">
+          <doc xml:whitespace="preserve">vertical waste on the bottom edge of the texture.</doc>
+          <type name="GL.uint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">format of the foreign texture.</doc>
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_sub_texture"
+              c:identifier="cogl_texture_new_from_sub_texture"
+              version="1.2"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new texture which represents a subregion of another
+texture. The GL resources will be shared so that no new texture
+data is actually allocated.
+Sub textures have undefined behaviour texture coordinates outside
+of the range [0,1] are used. They also do not work with
+CoglVertexBuffers.
+The sub texture will keep a reference to the full texture so you do
+not need to keep one separately if you only want to use the sub
+texture.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a #CoglHandle to the new texture.</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="full_texture" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle to an existing texture</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="sub_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the top-left of the subregion</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="sub_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the top-left of the subregion</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="sub_width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Width in pixels of the subregion</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="sub_height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Height in pixels of the subregion</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_with_size"
+              c:identifier="cogl_texture_new_with_size"
+              version="0.8"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new COGL texture with the specified dimensions and pixel format.
+%COGL_INVALID_HANDLE on failure</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a #CoglHandle to the newly created texture or</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of texture in pixels.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">height of texture in pixels.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Optional flags for the texture, or %COGL_TEXTURE_NONE</doc>
+          <type name="TextureFlags" c:type="CoglTextureFlags"/>
+        </parameter>
+        <parameter name="internal_format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #CoglPixelFormat to use for the GPU storage of the texture.</doc>
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_pixmap_x11_is_using_tfp_extension_EXP"
+              c:identifier="cogl_texture_pixmap_x11_is_using_tfp_extension_EXP">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_pixmap_x11_new_EXP"
+              c:identifier="cogl_texture_pixmap_x11_new_EXP"
+              introspectable="0">
+      <return-value>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="pixmap" transfer-ownership="none">
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+        <parameter name="automatic_updates" transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_pixmap_x11_set_damage_object_EXP"
+              c:identifier="cogl_texture_pixmap_x11_set_damage_object_EXP">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="damage" transfer-ownership="none">
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+        <parameter name="report_level" transfer-ownership="none">
+          <type name="TexturePixmapX11ReportLevel"
+                c:type="CoglTexturePixmapX11ReportLevel"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_pixmap_x11_update_area_EXP"
+              c:identifier="cogl_texture_pixmap_x11_update_area_EXP">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_ref"
+              c:identifier="cogl_texture_ref"
+              introspectable="0"
+              deprecated="Use cogl_handle_ref() instead"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Increment the reference count for a cogl texture.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the @handle.</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a @CoglHandle.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_set_region" c:identifier="cogl_texture_set_region">
+      <doc xml:whitespace="preserve">Sets the pixels in a rectangular subregion of @handle from an in-memory
+buffer containing pixel data.
+%FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the subregion upload was successful, and</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="src_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">upper left coordinate to use from source data.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="src_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">upper left coordinate to use from source data.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="dst_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">upper left destination horizontal coordinate.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="dst_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">upper left destination vertical coordinate.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="dst_width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of destination region to write.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="dst_height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">height of destination region to write.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of source data buffer.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">height of source data buffer.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #CoglPixelFormat used in the source buffer.</doc>
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="rowstride" transfer-ownership="none">
+          <doc xml:whitespace="preserve">rowstride of source buffer (computed from width if none specified)</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the actual pixel data.</doc>
+          <type name="guint8" c:type="guint8*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_unref"
+              c:identifier="cogl_texture_unref"
+              deprecated="Use cogl_handle_unref() instead"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Decrement the reference count for a cogl texture.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a @CoglHandle.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="transform" c:identifier="cogl_transform" version="1.4">
+      <doc xml:whitespace="preserve">Multiplies the current model-view matrix by the given matrix.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="matrix" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the matrix to multiply with the current model-view</doc>
+          <type name="Matrix" c:type="CoglMatrix*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="translate" c:identifier="cogl_translate">
+      <doc xml:whitespace="preserve">Multiplies the current model-view matrix by one that translates the
+model along all three axes according to the given values.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Distance to translate along the x-axis</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Distance to translate along the y-axis</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Distance to translate along the z-axis</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vector3_equal_EXP" c:identifier="cogl_vector3_equal_EXP">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="v1" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_add" c:identifier="cogl_vertex_buffer_add">
+      <doc xml:whitespace="preserve">Adds an attribute to a buffer.
+You either can use one of the built-in names such as "gl_Vertex", or
+"gl_MultiTexCoord0" to add standard attributes, like positions, colors
+and normals, or you can add custom attributes for use in shaders.
+The number of vertices declared when calling cogl_vertex_buffer_new()
+determines how many attribute values will be read from the supplied
+The data for your attribute isn't copied anywhere until you call
+cogl_vertex_buffer_submit(), or issue a draw call which automatically
+submits pending attribute changes. so the supplied pointer must remain
+valid until then. If you are updating an existing attribute (done by
+re-adding it) then you still need to re-call cogl_vertex_buffer_submit()
+to commit the changes to the GPU. Be carefull to minimize the number
+of calls to cogl_vertex_buffer_submit(), though.
+&lt;note&gt;If you are interleving attributes it is assumed that each interleaved
+attribute starts no farther than +- stride bytes from the other attributes
+it is interleved with. I.e. this is ok:
+&lt;programlisting&gt;
+|-0-0-0-0-0-0-0-0-0-0|
+&lt;/programlisting&gt;
+This is not ok:
+&lt;programlisting&gt;
+|- - - - -0-0-0-0-0-0 0 0 0 0|
+&lt;/programlisting&gt;
+(Though you can have multiple groups of interleved attributes)&lt;/note&gt;</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A vertex buffer handle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="attribute_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name of your attribute. It should be a valid GLSL variable name and standard attribute types must use one of following built-in names: (Note: they correspond to the built-in names of GLSL) &lt;itemizedlist&gt; &lt;listitem&gt;"gl_Color"&lt;/listitem&gt; &lt;listitem&gt;"gl_Normal"&lt;/listitem&gt; &lt;listitem&gt;"gl_MultiTexCoord0, gl_MultiTexCoord1, ..."&lt;/listitem&gt; &lt;listitem&gt;"gl_Vertex"&lt;/listitem&gt; &lt;/itemizedlist&gt; To support adding multiple variations of the same attribute the name can have a detail component, E.g. "gl_Color::active" or "gl_Color::inactive"</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="n_components" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of components per attribute and must be 1, 2, 3 or 4</doc>
+          <type name="guint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglAttributeType specifying the data type of each component.</doc>
+          <type name="AttributeType" c:type="CoglAttributeType"/>
+        </parameter>
+        <parameter name="normalized" transfer-ownership="none">
+          <doc xml:whitespace="preserve">If %TRUE, this specifies that values stored in an integer format should be mapped into the range [-1.0, 1.0] or [0.0, 1.0] for unsigned values. If %FALSE they are converted to floats directly.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <doc xml:whitespace="preserve">This specifies the number of bytes from the start of one attribute value to the start of the next value (for the same attribute). So, for example, with a position interleved with color like this: XYRGBAXYRGBAXYRGBA, then if each letter represents a byte, the stride for both attributes is 6. The special value 0 means the values are stored sequentially in memory.</doc>
+          <type name="guint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <doc xml:whitespace="preserve">This addresses the first attribute in the vertex array. This must remain valid until you either call cogl_vertex_buffer_submit() or issue a draw call.</doc>
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_delete"
+              c:identifier="cogl_vertex_buffer_delete">
+      <doc xml:whitespace="preserve">Deletes an attribute from a buffer. You will need to call
+cogl_vertex_buffer_submit() or issue a draw call to commit this
+change to the GPU.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A vertex buffer handle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="attribute_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name of a previously added attribute</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_disable"
+              c:identifier="cogl_vertex_buffer_disable">
+      <doc xml:whitespace="preserve">Disables a previosuly added attribute.
+Since it can be costly to add and remove new attributes to buffers; to make
+individual buffers more reuseable it is possible to enable and disable
+attributes before using a buffer for drawing.
+You don't need to call cogl_vertex_buffer_submit() after using this
+function.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A vertex buffer handle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="attribute_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name of the attribute you want to disable</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_draw" c:identifier="cogl_vertex_buffer_draw">
+      <doc xml:whitespace="preserve">Allows you to draw geometry using all or a subset of the
+vertices in a vertex buffer.
+Any un-submitted attribute changes are automatically submitted before
+drawing.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A vertex buffer handle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglVerticesMode specifying how the vertices should be interpreted.</doc>
+          <type name="VerticesMode" c:type="CoglVerticesMode"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Specifies the index of the first vertex you want to draw with</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Specifies the number of vertices you want to draw.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_draw_elements"
+              c:identifier="cogl_vertex_buffer_draw_elements">
+      <doc xml:whitespace="preserve">This function lets you use an array of indices to specify the vertices
+within your vertex buffer that you want to draw. The indices themselves
+are created by calling cogl_vertex_buffer_indices_new ()
+Any un-submitted attribute changes are automatically submitted before
+drawing.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A vertex buffer handle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglVerticesMode specifying how the vertices should be interpreted.</doc>
+          <type name="VerticesMode" c:type="CoglVerticesMode"/>
+        </parameter>
+        <parameter name="indices" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A CoglHandle for a set of indices allocated via cogl_vertex_buffer_indices_new ()</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="min_index" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Specifies the minimum vertex index contained in indices</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="max_index" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Specifies the maximum vertex index contained in indices</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="indices_offset" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An offset into named indices. The offset marks the first index to use for drawing.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Specifies the number of vertices you want to draw.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_enable"
+              c:identifier="cogl_vertex_buffer_enable">
+      <doc xml:whitespace="preserve">Enables a previosuly disabled attribute.
+Since it can be costly to add and remove new attributes to buffers; to make
+individual buffers more reuseable it is possible to enable and disable
+attributes before using a buffer for drawing.
+You don't need to call cogl_vertex_buffer_submit() after using this function</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A vertex buffer handle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="attribute_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name of the attribute you want to enable</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_get_n_vertices"
+              c:identifier="cogl_vertex_buffer_get_n_vertices">
+      <doc xml:whitespace="preserve">Retrieves the number of vertices that @handle represents</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the number of vertices</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A vertex buffer handle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_indices_get_for_quads"
+              c:identifier="cogl_vertex_buffer_indices_get_for_quads"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a vertex buffer containing the indices needed to draw pairs
+of triangles from a list of vertices grouped as quads. There will
+be at least @n_indices entries in the buffer (but there may be
+more).
+The indices will follow this pattern:
+0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7 ... etc
+For example, if you submit vertices for a quad like like that shown
+in &lt;xref linkend="quad-indices-order"/&gt; then you can request 6
+indices to render two triangles like those shown in &lt;xref
+linkend="quad-indices-triangles"/&gt;.
+&lt;figure id="quad-indices-order"&gt;
+&lt;title&gt;Example of vertices submitted to form a quad&lt;/title&gt;
+&lt;graphic fileref="quad-indices-order.png" format="PNG"/&gt;
+&lt;/figure&gt;
+&lt;figure id="quad-indices-triangles"&gt;
+&lt;title&gt;Illustration of the triangle indices that will be generated&lt;/title&gt;
+&lt;graphic fileref="quad-indices-triangles.png" format="PNG"/&gt;
+&lt;/figure&gt;
+owned by Cogl and should not be modified or unref'd.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">A %CoglHandle containing the indices. The handled is</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_indices" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of indices in the vertex buffer.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_indices_get_type"
+              c:identifier="cogl_vertex_buffer_indices_get_type">
+      <doc xml:whitespace="preserve">Queries back the data type used for the given indices</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The CoglIndicesType used</doc>
+        <type name="IndicesType" c:type="CoglIndicesType"/>
+      </return-value>
+      <parameters>
+        <parameter name="indices" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_indices_new"
+              c:identifier="cogl_vertex_buffer_indices_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Depending on how much geometry you are submitting it can be worthwhile
+optimizing the number of redundant vertices you submit. Using an index
+array allows you to reference vertices multiple times, for example
+during triangle strips.
+cogl_vertex_buffer_draw_elements().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">A CoglHandle for the indices which you can pass to</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="indices_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglIndicesType specifying the data type used for the indices.</doc>
+          <type name="IndicesType" c:type="CoglIndicesType"/>
+        </parameter>
+        <parameter name="indices_array" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Specifies the address of your array of indices</doc>
+          <array length="2" c:type="void*">
+            <type name="gpointer"/>
+          </array>
+        </parameter>
+        <parameter name="indices_len" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of indices in indices_array</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_new"
+              c:identifier="cogl_vertex_buffer_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new vertex buffer that you can use to add attributes.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a new #CoglHandle</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_vertices" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of vertices that your attributes will correspond to.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_ref"
+              c:identifier="cogl_vertex_buffer_ref"
+              introspectable="0"
+              deprecated="Use cogl_handle_ref() instead"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Increment the reference count for a vertex buffer</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the @handle.</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a @CoglHandle.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_submit"
+              c:identifier="cogl_vertex_buffer_submit">
+      <doc xml:whitespace="preserve">Submits all the user added attributes to the GPU; once submitted, the
+attributes can be used for drawing.
+You should aim to minimize calls to this function since it implies
+validating your data; it potentially incurs a transport cost (especially if
+you are using GLX indirect rendering) and potentially a format conversion
+cost if the GPU doesn't natively support any of the given attribute formats.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A vertex buffer handle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_unref"
+              c:identifier="cogl_vertex_buffer_unref"
+              deprecated="Use cogl_handle_unref() instead"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Decrement the reference count for a vertex buffer</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a @CoglHandle.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="viewport"
+              c:identifier="cogl_viewport"
+              version="0.8.2"
+              deprecated="Use cogl_set_viewport() instead"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Replace the current viewport with the given values.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Width of the viewport</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Height of the viewport</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/clutter/cogl/cogl.factor b/extra/clutter/cogl/cogl.factor
new file mode 100644 (file)
index 0000000..6b54a07
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: clutter.cogl.ffi ;
+IN: clutter.cogl
+
diff --git a/extra/clutter/cogl/ffi/ffi.factor b/extra/clutter/cogl/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..199fa07
--- /dev/null
@@ -0,0 +1,25 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries alien.syntax combinators
+gobject-introspection kernel opengl.gl system vocabs.loader ;
+IN: clutter.cogl.ffi
+
+<<
+"gobject.ffi" require
+>>
+
+LIBRARY: clutter.cogl
+
+<<
+"clutter.cogl" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libclutter-glx-1.0.so" cdecl add-library ] }
+} cond
+>>
+
+FOREIGN-ATOMIC-TYPE: GL.uint GLuint
+FOREIGN-ATOMIC-TYPE: GL.enum GLenum
+
+GIR: vocab:clutter/cogl/Cogl-1.0.gir
+
diff --git a/extra/clutter/ffi/ffi.factor b/extra/clutter/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..4a44412
--- /dev/null
@@ -0,0 +1,27 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries alien.syntax cairo.ffi combinators
+gobject-introspection kernel system vocabs.loader ;
+IN: clutter.ffi
+
+<<
+"atk.ffi" require
+"pango.cairo.ffi" require
+"clutter.cogl.ffi" require
+"clutter.json.ffi" require
+>>
+
+LIBRARY: clutter
+
+<<
+"clutter" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libclutter-glx-1.0.so" cdecl add-library ] }
+} cond
+>>
+
+FOREIGN-RECORD-TYPE: cairo.Path cairo_path_t
+
+GIR: vocab:clutter/Clutter-1.0.gir
+
diff --git a/extra/clutter/gtk/GtkClutter-0.10.gir b/extra/clutter/gtk/GtkClutter-0.10.gir
new file mode 100644 (file)
index 0000000..3811379
--- /dev/null
@@ -0,0 +1,912 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="Atk" version="1.0"/>
+  <include name="Clutter" version="1.0"/>
+  <include name="Cogl" version="1.0"/>
+  <include name="GL" version="1.0"/>
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gdk" version="2.0"/>
+  <include name="GdkPixbuf" version="2.0"/>
+  <include name="Gio" version="2.0"/>
+  <include name="Gtk" version="2.0"/>
+  <include name="Json" version="1.0"/>
+  <include name="Pango" version="1.0"/>
+  <include name="PangoCairo" version="1.0"/>
+  <include name="PangoFT2" version="1.0"/>
+  <include name="cairo" version="1.0"/>
+  <include name="fontconfig" version="2.0"/>
+  <include name="freetype2" version="2.0"/>
+  <namespace name="GtkClutter"
+             version="0.10"
+             shared-library="libclutter-gtk-0.10.so.0"
+             c:identifier-prefixes="GtkClutter"
+             c:symbol-prefixes="gtk_clutter">
+    <class name="Embed"
+           c:symbol-prefix="embed"
+           c:type="GtkClutterEmbed"
+           version="0.6"
+           parent="Gtk.Container"
+           glib:type-name="GtkClutterEmbed"
+           glib:get-type="gtk_clutter_embed_get_type"
+           glib:type-struct="EmbedClass">
+      <doc xml:whitespace="preserve">A #GtkWidget containing the default Clutter stage.</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Gtk.Buildable"/>
+      <constructor name="new"
+                   c:identifier="gtk_clutter_embed_new"
+                   version="0.6">
+        <doc xml:whitespace="preserve">Creates a new #GtkClutterEmbed widget. This widget can be
+used to build a scene using Clutter API into a GTK+ application.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #GtkClutterEmbed</doc>
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="get_stage"
+              c:identifier="gtk_clutter_embed_get_stage"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterStage from @embed. The returned stage can be
+used to add actors to the Clutter scene. Multiple calls to this function
+on the same #GtkClutterEmbed widget will return the same stage.
+or unref the returned actor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterStage. You should never destroy</doc>
+          <type name="Clutter.Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="Gtk.Container" c:type="GtkContainer"/>
+      </field>
+      <field name="priv">
+        <type name="EmbedPrivate" c:type="GtkClutterEmbedPrivate*"/>
+      </field>
+    </class>
+    <record name="EmbedClass"
+            c:type="GtkClutterEmbedClass"
+            glib:is-gtype-struct-for="Embed"
+            version="0.6">
+      <doc xml:whitespace="preserve">Base class for #GtkClutterEmbed.</doc>
+      <field name="parent_class">
+        <type name="Gtk.ContainerClass" c:type="GtkContainerClass"/>
+      </field>
+      <field name="_clutter_gtk_reserved1" introspectable="0">
+        <callback name="_clutter_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_gtk_reserved2" introspectable="0">
+        <callback name="_clutter_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_gtk_reserved3" introspectable="0">
+        <callback name="_clutter_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_gtk_reserved4" introspectable="0">
+        <callback name="_clutter_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_gtk_reserved5" introspectable="0">
+        <callback name="_clutter_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_gtk_reserved6" introspectable="0">
+        <callback name="_clutter_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="EmbedPrivate" c:type="GtkClutterEmbedPrivate" disguised="1">
+    </record>
+    <interface name="Scrollable"
+               c:symbol-prefix="scrollable"
+               c:type="GtkClutterScrollable"
+               glib:type-name="GtkClutterScrollable"
+               glib:get-type="gtk_clutter_scrollable_get_type"
+               glib:type-struct="ScrollableIface">
+      <virtual-method name="get_adjustments"
+                      invoker="get_adjustments"
+                      version="0.10">
+        <doc xml:whitespace="preserve">Retrieves the horizontal and vertical adjustments used to
+determine the position of the scrollable actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="h_adjust"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for a #GtkAdjustment, or %NULL</doc>
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment**"/>
+          </parameter>
+          <parameter name="v_adjust"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for a #GtkAdjustment, or %NULL</doc>
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_adjustments"
+                      invoker="set_adjustments"
+                      version="0.10">
+        <doc xml:whitespace="preserve">Sets the horizontal and vertical adjustments used to determine
+the position of the scrollable actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="h_adjust" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkAdjustment, or %NULL</doc>
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+          <parameter name="v_adjust" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkAdjustment, or %NULL</doc>
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_adjustments"
+              c:identifier="gtk_clutter_scrollable_get_adjustments"
+              version="0.10">
+        <doc xml:whitespace="preserve">Retrieves the horizontal and vertical adjustments used to
+determine the position of the scrollable actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="h_adjust"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for a #GtkAdjustment, or %NULL</doc>
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment**"/>
+          </parameter>
+          <parameter name="v_adjust"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for a #GtkAdjustment, or %NULL</doc>
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_adjustments"
+              c:identifier="gtk_clutter_scrollable_set_adjustments"
+              version="0.10">
+        <doc xml:whitespace="preserve">Sets the horizontal and vertical adjustments used to determine
+the position of the scrollable actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="h_adjust" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkAdjustment, or %NULL</doc>
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+          <parameter name="v_adjust" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkAdjustment, or %NULL</doc>
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="hadjustment"
+                version="0.10"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GtkAdjustment that determines the value of the
+horizontal position for this scrollable actor.</doc>
+        <type name="Gtk.Adjustment"/>
+      </property>
+      <property name="vadjustment"
+                version="0.10"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GtkAdjustment that determines the value of the
+vertical position for this scrollable actor.</doc>
+        <type name="Gtk.Adjustment"/>
+      </property>
+    </interface>
+    <record name="ScrollableIface"
+            c:type="GtkClutterScrollableIface"
+            glib:is-gtype-struct-for="Scrollable"
+            version="0.10">
+      <doc xml:whitespace="preserve">The #GtkClutterScrollableIface structure contains only private data
+and should be accessed using the provided functions.</doc>
+      <field name="parent_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="set_adjustments">
+        <callback name="set_adjustments">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="scrollable" transfer-ownership="none">
+              <type name="Scrollable" c:type="GtkClutterScrollable*"/>
+            </parameter>
+            <parameter name="h_adjust"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">a #GtkAdjustment, or %NULL</doc>
+              <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+            </parameter>
+            <parameter name="v_adjust"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">a #GtkAdjustment, or %NULL</doc>
+              <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_adjustments">
+        <callback name="get_adjustments">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="scrollable" transfer-ownership="none">
+              <type name="Scrollable" c:type="GtkClutterScrollable*"/>
+            </parameter>
+            <parameter name="h_adjust"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full">
+              <doc xml:whitespace="preserve">return location for a #GtkAdjustment, or %NULL</doc>
+              <type name="Gtk.Adjustment" c:type="GtkAdjustment**"/>
+            </parameter>
+            <parameter name="v_adjust"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full">
+              <doc xml:whitespace="preserve">return location for a #GtkAdjustment, or %NULL</doc>
+              <type name="Gtk.Adjustment" c:type="GtkAdjustment**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="Viewport"
+           c:symbol-prefix="viewport"
+           c:type="GtkClutterViewport"
+           version="0.8.2"
+           parent="Clutter.Actor"
+           glib:type-name="GtkClutterViewport"
+           glib:get-type="gtk_clutter_viewport_get_type"
+           glib:type-struct="ViewportClass">
+      <doc xml:whitespace="preserve">The #GtkClutterViewport structure contains only private data and
+should be accessed using the provided functions.</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Clutter.Animatable"/>
+      <implements name="Clutter.Container"/>
+      <implements name="Clutter.Scriptable"/>
+      <implements name="Scrollable"/>
+      <implements name="Zoomable"/>
+      <constructor name="new"
+                   c:identifier="gtk_clutter_viewport_new"
+                   version="0.10">
+        <doc xml:whitespace="preserve">Creates a new #GtkClutterViewport with the given adjustments.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created viewport actor</doc>
+          <type name="Clutter.Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="h_adjust" transfer-ownership="none">
+            <doc xml:whitespace="preserve">horizontal adjustment, or %NULL</doc>
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+          <parameter name="v_adjust" transfer-ownership="none">
+            <doc xml:whitespace="preserve">vertical adjustment, or %NULL</doc>
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+          <parameter name="z_adjust" transfer-ownership="none">
+            <doc xml:whitespace="preserve">zoom adjustment, or %NULL</doc>
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_origin"
+              c:identifier="gtk_clutter_viewport_get_origin"
+              version="0.10">
+        <doc xml:whitespace="preserve">Retrieves the current translation factor ("origin") used when
+displaying the child of @viewport.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the X origin in pixels, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the Y origin in pixels, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="z" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the Z origin in pixels, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="child"
+                version="0.10"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterActor inside the viewport.</doc>
+        <type name="Clutter.Actor"/>
+      </property>
+      <property name="origin" version="0.10" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The current origin of the viewport. You should use the
+vertex to convert event coordinates for the child of the
+viewport.</doc>
+        <type name="Clutter.Vertex"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Clutter.Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv">
+        <type name="ViewportPrivate" c:type="GtkClutterViewportPrivate*"/>
+      </field>
+    </class>
+    <record name="ViewportClass"
+            c:type="GtkClutterViewportClass"
+            glib:is-gtype-struct-for="Viewport"
+            version="0.8.2">
+      <doc xml:whitespace="preserve">The #GtkClutterViewportClass structure contains only private data and
+should be accessed using the provided functions.</doc>
+      <field name="parent_class">
+        <type name="Clutter.ActorClass" c:type="ClutterActorClass"/>
+      </field>
+    </record>
+    <record name="ViewportPrivate"
+            c:type="GtkClutterViewportPrivate"
+            disguised="1">
+    </record>
+    <interface name="Zoomable"
+               c:symbol-prefix="zoomable"
+               c:type="GtkClutterZoomable"
+               glib:type-name="GtkClutterZoomable"
+               glib:get-type="gtk_clutter_zoomable_get_type"
+               glib:type-struct="ZoomableIface">
+      <virtual-method name="get_adjustment"
+                      invoker="get_adjustment"
+                      version="0.10">
+        <doc xml:whitespace="preserve">Retrieves the adjustment used to determine the zoom factor of
+the zoomable actor</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkAdjustment</doc>
+          <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_adjustment"
+                      invoker="set_adjustment"
+                      version="0.10">
+        <doc xml:whitespace="preserve">Sets the adjustment used to determine the zoom factor of
+the zoomable actor</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="z_adjust" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkAdjustment, or %NULL</doc>
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_adjustment"
+              c:identifier="gtk_clutter_zoomable_get_adjustment"
+              version="0.10">
+        <doc xml:whitespace="preserve">Retrieves the adjustment used to determine the zoom factor of
+the zoomable actor</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkAdjustment</doc>
+          <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="set_adjustment"
+              c:identifier="gtk_clutter_zoomable_set_adjustment"
+              version="0.10">
+        <doc xml:whitespace="preserve">Sets the adjustment used to determine the zoom factor of
+the zoomable actor</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="z_adjust" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkAdjustment, or %NULL</doc>
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="zadjustment"
+                version="0.10"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GtkAdjustment that determines the value of
+the zoom factor for this zoomable actor</doc>
+        <type name="Gtk.Adjustment"/>
+      </property>
+    </interface>
+    <record name="ZoomableIface"
+            c:type="GtkClutterZoomableIface"
+            glib:is-gtype-struct-for="Zoomable"
+            version="1.0">
+      <doc xml:whitespace="preserve">The #GtkClutterZoomableIface structure contains only private data</doc>
+      <field name="parent_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="set_adjustment">
+        <callback name="set_adjustment">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="zoomable" transfer-ownership="none">
+              <type name="Zoomable" c:type="GtkClutterZoomable*"/>
+            </parameter>
+            <parameter name="z_adjust"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">a #GtkAdjustment, or %NULL</doc>
+              <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_adjustment">
+        <callback name="get_adjustment">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkAdjustment</doc>
+            <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
+          </return-value>
+          <parameters>
+            <parameter name="zoomable" transfer-ownership="none">
+              <type name="Zoomable" c:type="GtkClutterZoomable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <function name="get_base_color"
+              c:identifier="gtk_clutter_get_base_color"
+              version="0.8">
+      <doc xml:whitespace="preserve">Retrieves the base color of @widget for the given @state and copies it
+into @color.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="Gtk.StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for a #ClutterColor</doc>
+          <type name="Clutter.Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_bg_color"
+              c:identifier="gtk_clutter_get_bg_color"
+              version="0.8">
+      <doc xml:whitespace="preserve">Retrieves the background color of @widget for the given @state and copies
+it into @color.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="Gtk.StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for a #ClutterColor</doc>
+          <type name="Clutter.Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_dark_color"
+              c:identifier="gtk_clutter_get_dark_color"
+              version="0.8">
+      <doc xml:whitespace="preserve">Retrieves the dark color of @widget for the given @state and copies it
+into @color.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="Gtk.StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for a #ClutterColor</doc>
+          <type name="Clutter.Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_fg_color"
+              c:identifier="gtk_clutter_get_fg_color"
+              version="0.8">
+      <doc xml:whitespace="preserve">Retrieves the foreground color of @widget for the given @state and copies
+it into @color.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="Gtk.StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for a #ClutterColor</doc>
+          <type name="Clutter.Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_light_color"
+              c:identifier="gtk_clutter_get_light_color"
+              version="0.8">
+      <doc xml:whitespace="preserve">Retrieves the light color of @widget for the given @state and copies it
+into @color.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="Gtk.StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for a #ClutterColor</doc>
+          <type name="Clutter.Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_mid_color"
+              c:identifier="gtk_clutter_get_mid_color"
+              version="0.8">
+      <doc xml:whitespace="preserve">Retrieves the mid color of @widget for the given @state and copies it
+into @color.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="Gtk.StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for a #ClutterColor</doc>
+          <type name="Clutter.Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_text_aa_color"
+              c:identifier="gtk_clutter_get_text_aa_color"
+              version="0.8">
+      <doc xml:whitespace="preserve">Retrieves the text-aa color of @widget for the given @state and copies it
+into @color.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="Gtk.StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for a #ClutterColor</doc>
+          <type name="Clutter.Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_text_color"
+              c:identifier="gtk_clutter_get_text_color"
+              version="0.8">
+      <doc xml:whitespace="preserve">Retrieves the text color of @widget for the given @state and copies it
+into @color.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="state" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a state</doc>
+          <type name="Gtk.StateType" c:type="GtkStateType"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for a #ClutterColor</doc>
+          <type name="Clutter.Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init" c:identifier="gtk_clutter_init" version="0.8">
+      <doc xml:whitespace="preserve">This function should be called instead of clutter_init() and
+gtk_init().
+on failure.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%CLUTTER_INIT_SUCCESS on success, a negative integer</doc>
+        <type name="Clutter.InitError" c:type="ClutterInitError"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">pointer to the arguments count, or %NULL</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">pointer to the arguments vector, or %NULL</doc>
+          <array length="0" c:type="char***">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_with_args"
+              c:identifier="gtk_clutter_init_with_args"
+              version="0.10"
+              throws="1">
+      <doc xml:whitespace="preserve">This function should be called instead of clutter_init() and
+gtk_init_with_args().
+on failure.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%CLUTTER_INIT_SUCCESS on success, a negative integer</doc>
+        <type name="Clutter.InitError" c:type="ClutterInitError"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the number of command line arguments.</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">a pointer to the array of command line arguments.</doc>
+          <array length="0" c:type="char***">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="parameter_string"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">a string which is displayed in the first line of &lt;option&gt;--help&lt;/option&gt; output, after &lt;literal&gt;&lt;replaceable&gt;programname&lt;/replaceable&gt; [OPTION...]&lt;/literal&gt;</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="entries" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a %NULL-terminated array of #GOptionEntry&lt;!-- --&gt;s describing the options of your program, or %NULL</doc>
+          <type name="GLib.OptionEntry" c:type="GOptionEntry*"/>
+        </parameter>
+        <parameter name="translation_domain"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">a translation domain to use for translating the &lt;option&gt;--help&lt;/option&gt; output for the options in @entries with gettext(), or %NULL</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_error_quark"
+              c:identifier="gtk_clutter_texture_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="texture_new_from_icon_name"
+              c:identifier="gtk_clutter_texture_new_from_icon_name"
+              version="0.8"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #ClutterTexture and sets its contents to be
+the @icon_name from the current icon theme.
+was %NULL and @icon_name was not found.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly created texture, or %NULL if @widget</doc>
+        <type name="Clutter.Actor" c:type="ClutterActor*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget or %NULL</doc>
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="icon_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the icon</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the size of the icon, or -1</doc>
+          <type name="Gtk.IconSize" c:type="GtkIconSize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_pixbuf"
+              c:identifier="gtk_clutter_texture_new_from_pixbuf"
+              version="0.8"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #ClutterTexture and sets its contents with a copy
+of @pixbuf.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly created #ClutterTexture</doc>
+        <type name="Clutter.Actor" c:type="ClutterActor*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pixbuf" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkPixbuf</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_stock"
+              c:identifier="gtk_clutter_texture_new_from_stock"
+              version="0.8"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #ClutterTexture and sets its contents using the stock
+icon @stock_id as rendered by @widget.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly created #ClutterTexture</doc>
+        <type name="Clutter.Actor" c:type="ClutterActor*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="stock_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the stock id of the icon</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the size of the icon, or -1</doc>
+          <type name="Gtk.IconSize" c:type="GtkIconSize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_set_from_icon_name"
+              c:identifier="gtk_clutter_texture_set_from_icon_name"
+              version="0.8"
+              throws="1">
+      <doc xml:whitespace="preserve">Sets the contents of @texture using the @icon_name from the
+current icon theme.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE on success, %FALSE on failure.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="texture" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterTexture</doc>
+          <type name="Clutter.Texture" c:type="ClutterTexture*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget or %NULL</doc>
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="icon_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the icon</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the icon size or -1</doc>
+          <type name="Gtk.IconSize" c:type="GtkIconSize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_set_from_pixbuf"
+              c:identifier="gtk_clutter_texture_set_from_pixbuf"
+              version="0.8"
+              throws="1">
+      <doc xml:whitespace="preserve">Sets the contents of @texture with a copy of @pixbuf.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE on success, %FALSE on failure.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="texture" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterTexture</doc>
+          <type name="Clutter.Texture" c:type="ClutterTexture*"/>
+        </parameter>
+        <parameter name="pixbuf" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GdkPixbuf</doc>
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_set_from_stock"
+              c:identifier="gtk_clutter_texture_set_from_stock"
+              version="0.8"
+              throws="1">
+      <doc xml:whitespace="preserve">Sets the contents of @texture using the stock icon @stock_id, as
+rendered by @widget.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE on success, %FALSE on failure.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="texture" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterTexture</doc>
+          <type name="Clutter.Texture" c:type="ClutterTexture*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget</doc>
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="stock_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the stock id of the icon</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the size of the icon, or -1</doc>
+          <type name="Gtk.IconSize" c:type="GtkIconSize"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/clutter/gtk/ffi/ffi.factor b/extra/clutter/gtk/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..088899a
--- /dev/null
@@ -0,0 +1,23 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries alien.syntax combinators
+gobject-introspection kernel system vocabs.loader ;
+IN: clutter.gtk.ffi
+
+<<
+"clutter.ffi" require
+"gtk.ffi" require
+>>
+
+LIBRARY: clutter.gtk
+
+<<
+"clutter.gtk" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libclutter-gtk-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:clutter/gtk/GtkClutter-0.10.gir
+
diff --git a/extra/clutter/gtk/gtk.factor b/extra/clutter/gtk/gtk.factor
new file mode 100644 (file)
index 0000000..6c495f5
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: clutter.gtk.ffi ;
+IN: clutter.gtk
+
diff --git a/extra/clutter/json/Json-1.0.gir b/extra/clutter/json/Json-1.0.gir
new file mode 100644 (file)
index 0000000..e945408
--- /dev/null
@@ -0,0 +1,2925 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gio" version="2.0"/>
+  <package name="json-glib-1.0"/>
+  <namespace name="Json"
+             version="1.0"
+             shared-library="libjson-glib-1.0.so.0"
+             c:identifier-prefixes="Json"
+             c:symbol-prefixes="json">
+    <record name="Array"
+            c:type="JsonArray"
+            glib:type-name="JsonArray"
+            glib:get-type="json_array_get_type"
+            c:symbol-prefix="array">
+      <doc xml:whitespace="preserve">A JSON array type. The contents of the #JsonArray structure are private
+and should only be accessed by the provided API</doc>
+      <constructor name="new" c:identifier="json_array_new">
+        <doc xml:whitespace="preserve">Creates a new #JsonArray.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #JsonArray</doc>
+          <type name="Array" c:type="JsonArray*"/>
+        </return-value>
+      </constructor>
+      <constructor name="sized_new" c:identifier="json_array_sized_new">
+        <doc xml:whitespace="preserve">Creates a new #JsonArray with @n_elements slots already allocated.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #JsonArray</doc>
+          <type name="Array" c:type="JsonArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_elements" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of slots to pre-allocate</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add_array_element"
+              c:identifier="json_array_add_array_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently adds an array into @array. The @array takes ownership
+of the newly added #JsonArray</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #JsonArray</doc>
+            <type name="Array" c:type="JsonArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_boolean_element"
+              c:identifier="json_array_add_boolean_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently adds a boolean @value into @array</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a boolean value</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_double_element"
+              c:identifier="json_array_add_double_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently adds a floating point @value into @array</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a floating point value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_element" c:identifier="json_array_add_element">
+        <doc xml:whitespace="preserve">Appends @node inside @array. The array will take ownership of the
+#JsonNode.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #JsonNode</doc>
+            <type name="Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_int_element"
+              c:identifier="json_array_add_int_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently adds an integer @value into @array</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an integer value</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_null_element"
+              c:identifier="json_array_add_null_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently adds a null element into @array</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add_object_element"
+              c:identifier="json_array_add_object_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently adds an object into @array. The @array takes ownership
+of the newly added #JsonObject</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #JsonObject</doc>
+            <type name="Object" c:type="JsonObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_string_element"
+              c:identifier="json_array_add_string_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently adds a string @value into @array</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string value</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup_element"
+              c:identifier="json_array_dup_element"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves a copy of the #JsonNode containing the value of the
+element at @index_ inside a #JsonArray
+index. Use json_node_free() when done.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a copy of the #JsonNode at the requested</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the element to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach_element"
+              c:identifier="json_array_foreach_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Iterates over all elements of @array and calls @func on
+each one of them.
+It is safe to change the value of a #JsonNode of the @array
+from within the iterator @func, but it is not safe to add or
+remove elements from the @array.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">the function to be called on each element</doc>
+            <type name="ArrayForeach" c:type="JsonArrayForeach"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to be passed to the function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_array_element"
+              c:identifier="json_array_get_array_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently retrieves the array from the element at @index_
+inside @array</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the array</doc>
+          <type name="Array" c:type="JsonArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the element to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean_element"
+              c:identifier="json_array_get_boolean_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently retrieves the boolean value of the element at @index_
+inside @array</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the integer value</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the element to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double_element"
+              c:identifier="json_array_get_double_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently retrieves the floating point value of the element at</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the floating point value</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the element to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_element" c:identifier="json_array_get_element">
+        <doc xml:whitespace="preserve">Retrieves the #JsonNode containing the value of the element at @index_
+inside a #JsonArray.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the #JsonNode at the requested index</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the element to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_elements" c:identifier="json_array_get_elements">
+        <doc xml:whitespace="preserve">Gets the elements of a #JsonArray as a list of #JsonNode&lt;!-- --&gt;s.
+containing the elements of the array. The contents of the list are
+owned by the array and should never be modified or freed. Use
+g_list_free() on the returned list when done using it</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a #GList</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Node"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_int_element"
+              c:identifier="json_array_get_int_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently retrieves the integer value of the element at @index_
+inside @array</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the integer value</doc>
+          <type name="gint64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the element to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_length" c:identifier="json_array_get_length">
+        <doc xml:whitespace="preserve">Retrieves the length of a #JsonArray</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the length of the array</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_null_element"
+              c:identifier="json_array_get_null_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently retrieves whether the element at @index_ is set to null</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the element is null</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the element to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_object_element"
+              c:identifier="json_array_get_object_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently retrieves the object from the element at @index_
+inside @array</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object</doc>
+          <type name="Object" c:type="JsonObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the element to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string_element"
+              c:identifier="json_array_get_string_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently retrieves the string value of the element at @index_
+inside @array
+the #JsonArray and should not be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the string value; the returned string is owned by</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the element to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref" c:identifier="json_array_ref">
+        <doc xml:whitespace="preserve">Increase by one the reference count of a #JsonArray.
+increased by one.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the passed #JsonArray, with the reference count</doc>
+          <type name="Array" c:type="JsonArray*"/>
+        </return-value>
+      </method>
+      <method name="remove_element" c:identifier="json_array_remove_element">
+        <doc xml:whitespace="preserve">Removes the #JsonNode inside @array at @index_ freeing its allocated
+resources.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position of the element to be removed</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unref" c:identifier="json_array_unref">
+        <doc xml:whitespace="preserve">Decreases by one the reference count of a #JsonArray. If the
+reference count reaches zero, the array is destroyed and all
+its allocated resources are freed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <callback name="ArrayForeach" c:type="JsonArrayForeach" version="0.8">
+      <doc xml:whitespace="preserve">The function to be passed to json_array_foreach_element(). You
+should not add or remove elements to and from @array within
+this function. It is safe to change the value of @element_node.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the iterated #JsonArray</doc>
+          <type name="Array" c:type="JsonArray*"/>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index of the element</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="element_node" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #JsonNode containing the value at @index_</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <doc xml:whitespace="preserve">data passed to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="BoxedDeserializeFunc"
+              c:type="JsonBoxedDeserializeFunc"
+              version="0.10"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Deserializes the contents of the passed #JsonNode into a #GBoxed</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly created boxed type</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="node" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #JsonNode</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="BoxedSerializeFunc"
+              c:type="JsonBoxedSerializeFunc"
+              version="0.10">
+      <doc xml:whitespace="preserve">Serializes the passed #GBoxed and stores it inside a #JsonNode</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the newly created #JsonNode</doc>
+        <type name="Node" c:type="JsonNode*"/>
+      </return-value>
+      <parameters>
+        <parameter name="boxed" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GBoxed</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="Builder"
+           c:symbol-prefix="builder"
+           c:type="JsonBuilder"
+           version="0.12"
+           parent="GObject.Object"
+           glib:type-name="JsonBuilder"
+           glib:get-type="json_builder_get_type"
+           glib:type-struct="BuilderClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;JsonBuilder&lt;/structname&gt; structure contains only
+private data and shouls be accessed using the provided API</doc>
+      <constructor name="new" c:identifier="json_builder_new">
+        <doc xml:whitespace="preserve">Creates a new #JsonBuilder. You can use this object to generate a
+JSON tree and obtain the root #JsonNode&lt;!-- --&gt;s.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #JsonBuilder instance</doc>
+          <type name="Builder" c:type="JsonBuilder*"/>
+        </return-value>
+      </constructor>
+      <method name="add_boolean_value"
+              c:identifier="json_builder_add_boolean_value">
+        <doc xml:whitespace="preserve">If called after json_builder_set_member_name(), sets @value as member of the
+most recent opened object, otherwise @value is added as element of the most
+recent opened array.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
+          <type name="Builder" c:type="JsonBuilder*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the member or element</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_double_value"
+              c:identifier="json_builder_add_double_value">
+        <doc xml:whitespace="preserve">If called after json_builder_set_member_name(), sets @value as member of the
+most recent opened object, otherwise @value is added as element of the most
+recent opened array.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
+          <type name="Builder" c:type="JsonBuilder*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the member or element</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_int_value" c:identifier="json_builder_add_int_value">
+        <doc xml:whitespace="preserve">If called after json_builder_set_member_name(), sets @value as member of the
+most recent opened object, otherwise @value is added as element of the most
+recent opened array.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
+          <type name="Builder" c:type="JsonBuilder*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the member or element</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_null_value" c:identifier="json_builder_add_null_value">
+        <doc xml:whitespace="preserve">If called after json_builder_set_member_name(), sets null as member of the
+most recent opened object, otherwise null is added as element of the most
+recent opened array.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
+          <type name="Builder" c:type="JsonBuilder*"/>
+        </return-value>
+      </method>
+      <method name="add_string_value"
+              c:identifier="json_builder_add_string_value">
+        <doc xml:whitespace="preserve">If called after json_builder_set_member_name(), sets @value as member of the
+most recent opened object, otherwise @value is added as element of the most
+recent opened array.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
+          <type name="Builder" c:type="JsonBuilder*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the member or element</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_value" c:identifier="json_builder_add_value">
+        <doc xml:whitespace="preserve">If called after json_builder_set_member_name(), sets @node as member of the
+most recent opened object, otherwise @node is added as element of the most
+recent opened array.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
+          <type name="Builder" c:type="JsonBuilder*"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the member or element</doc>
+            <type name="Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="begin_array" c:identifier="json_builder_begin_array">
+        <doc xml:whitespace="preserve">Opens a subarray inside the given @builder. When done adding members to
+the subarray, json_builder_end_array() must be called.
+Can be called for first or only if the call is associated to an object member
+or an array element.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
+          <type name="Builder" c:type="JsonBuilder*"/>
+        </return-value>
+      </method>
+      <method name="begin_object" c:identifier="json_builder_begin_object">
+        <doc xml:whitespace="preserve">Opens a subobject inside the given @builder. When done adding members to
+the subobject, json_builder_end_object() must be called.
+Can be called for first or only if the call is associated to an object member
+or an array element.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
+          <type name="Builder" c:type="JsonBuilder*"/>
+        </return-value>
+      </method>
+      <method name="end_array" c:identifier="json_builder_end_array">
+        <doc xml:whitespace="preserve">Closes the subarray inside the given @builder that was opened by the most
+recent call to json_builder_begin_array().
+Cannot be called after json_builder_set_member_name().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
+          <type name="Builder" c:type="JsonBuilder*"/>
+        </return-value>
+      </method>
+      <method name="end_object" c:identifier="json_builder_end_object">
+        <doc xml:whitespace="preserve">Closes the subobject inside the given @builder that was opened by the most
+recent call to json_builder_begin_object().
+Cannot be called after json_builder_set_member_name().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
+          <type name="Builder" c:type="JsonBuilder*"/>
+        </return-value>
+      </method>
+      <method name="get_root" c:identifier="json_builder_get_root">
+        <doc xml:whitespace="preserve">Returns the root of the current constructed tree, if the build is complete
+(ie: all opened objects, object members and arrays are being closed).
+Free the returned value with json_node_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #JsonNode, or %NULL if the build is not complete.</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+      </method>
+      <method name="reset" c:identifier="json_builder_reset">
+        <doc xml:whitespace="preserve">Resets the state of the @builder back to its initial state.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_member_name"
+              c:identifier="json_builder_set_member_name">
+        <doc xml:whitespace="preserve">Set the name of the next member in an object. The next call must add a value,
+open an object or an array.
+Can be called only if the call is associated to an object.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
+          <type name="Builder" c:type="JsonBuilder*"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="BuilderPrivate" c:type="JsonBuilderPrivate*"/>
+      </field>
+    </class>
+    <record name="BuilderClass"
+            c:type="JsonBuilderClass"
+            glib:is-gtype-struct-for="Builder"
+            version="0.12">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;JsonBuilder&lt;/structname&gt; structure contains only
+private data</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_json_reserved1" introspectable="0">
+        <callback name="_json_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_reserved2" introspectable="0">
+        <callback name="_json_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="BuilderPrivate" c:type="JsonBuilderPrivate" disguised="1">
+    </record>
+    <class name="Generator"
+           c:symbol-prefix="generator"
+           c:type="JsonGenerator"
+           parent="GObject.Object"
+           glib:type-name="JsonGenerator"
+           glib:get-type="json_generator_get_type"
+           glib:type-struct="GeneratorClass">
+      <doc xml:whitespace="preserve">JSON data streams generator. The contents of the #JsonGenerator structure
+are private and should only be accessed via the provided API.</doc>
+      <constructor name="new" c:identifier="json_generator_new">
+        <doc xml:whitespace="preserve">Creates a new #JsonGenerator. You can use this object to generate a
+JSON data stream starting from a data object model composed by
+#JsonNode&lt;!-- --&gt;s.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #JsonGenerator instance</doc>
+          <type name="Generator" c:type="JsonGenerator*"/>
+        </return-value>
+      </constructor>
+      <method name="set_root" c:identifier="json_generator_set_root">
+        <doc xml:whitespace="preserve">Sets @node as the root of the JSON data stream to be serialized by
+the #JsonGenerator.
+&lt;note&gt;The node is copied by the generator object, so it can be safely
+freed after calling this function.&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #JsonNode</doc>
+            <type name="Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_data" c:identifier="json_generator_to_data">
+        <doc xml:whitespace="preserve">Generates a JSON data stream from @generator and returns it as a
+buffer.
+Use g_free() to free the allocated resources.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated buffer holding a JSON data stream.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="length"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the length of the returned buffer, or %NULL</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_file" c:identifier="json_generator_to_file" throws="1">
+        <doc xml:whitespace="preserve">Creates a JSON data stream and puts it inside @filename, overwriting the
+current file contents. This operation is atomic.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if saving was successful.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">path to the target file</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_stream"
+              c:identifier="json_generator_to_stream"
+              version="0.12"
+              throws="1">
+        <doc xml:whitespace="preserve">Outputs JSON data and streams it (synchronously) to @stream.
+on failure. In case of error, the #GError will be filled accordingly</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the write operation was successful, and %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="stream" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GOutputStream</doc>
+            <type name="Gio.OutputStream" c:type="GOutputStream*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Gio.Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="indent" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Number of spaces to be used to indent when pretty printing.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="indent-char"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The character that should be used when indenting in pretty print.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="pretty" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the output should be "pretty-printed", with indentation and
+newlines. The indentation level can be controlled by using the
+JsonGenerator:indent property</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="root"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The root #JsonNode to be used when constructing a JSON data
+stream.</doc>
+        <type name="Node"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="GeneratorPrivate" c:type="JsonGeneratorPrivate*"/>
+      </field>
+    </class>
+    <record name="GeneratorClass"
+            c:type="JsonGeneratorClass"
+            glib:is-gtype-struct-for="Generator">
+      <doc xml:whitespace="preserve">#JsonGenerator class</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_json_reserved1" introspectable="0">
+        <callback name="_json_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_reserved2" introspectable="0">
+        <callback name="_json_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_reserved3" introspectable="0">
+        <callback name="_json_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_reserved4" introspectable="0">
+        <callback name="_json_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="GeneratorPrivate"
+            c:type="JsonGeneratorPrivate"
+            disguised="1">
+    </record>
+    <record name="Node"
+            c:type="JsonNode"
+            glib:type-name="JsonNode"
+            glib:get-type="json_node_get_type"
+            c:symbol-prefix="node">
+      <doc xml:whitespace="preserve">A generic container of JSON data types. The contents of the #JsonNode
+structure are private and should only be accessed via the provided
+functions and never directly.</doc>
+      <constructor name="new" c:identifier="json_node_new">
+        <doc xml:whitespace="preserve">Creates a new #JsonNode of @type.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #JsonNode</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #JsonNodeType</doc>
+            <type name="NodeType" c:type="JsonNodeType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy" c:identifier="json_node_copy">
+        <doc xml:whitespace="preserve">Copies @node. If the node contains complex data types then the reference
+count of the objects is increased.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the copied #JsonNode</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+      </method>
+      <method name="dup_array" c:identifier="json_node_dup_array">
+        <return-value transfer-ownership="full">
+          <type name="Array" c:type="JsonArray*"/>
+        </return-value>
+      </method>
+      <method name="dup_object" c:identifier="json_node_dup_object">
+        <doc xml:whitespace="preserve">Retrieves the #JsonObject inside @node. The reference count of
+the returned object is increased.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #JsonObject</doc>
+          <type name="Object" c:type="JsonObject*"/>
+        </return-value>
+      </method>
+      <method name="dup_string" c:identifier="json_node_dup_string">
+        <doc xml:whitespace="preserve">Gets a copy of the string value stored inside a #JsonNode
+of the #JsonNode contents. Use g_free() to free the allocated resources</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated string containing a copy</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="json_node_free">
+        <doc xml:whitespace="preserve">Frees the resources allocated by @node.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_array" c:identifier="json_node_get_array">
+        <doc xml:whitespace="preserve">Retrieves the #JsonArray stored inside a #JsonNode</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonArray</doc>
+          <type name="Array" c:type="JsonArray*"/>
+        </return-value>
+      </method>
+      <method name="get_boolean" c:identifier="json_node_get_boolean">
+        <doc xml:whitespace="preserve">Gets the boolean value stored inside a #JsonNode</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a boolean value.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_double" c:identifier="json_node_get_double">
+        <doc xml:whitespace="preserve">Gets the double value stored inside a #JsonNode</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a double value.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_int" c:identifier="json_node_get_int">
+        <doc xml:whitespace="preserve">Gets the integer value stored inside a #JsonNode</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an integer value.</doc>
+          <type name="gint64" c:type="gint64"/>
+        </return-value>
+      </method>
+      <method name="get_node_type"
+              c:identifier="json_node_get_node_type"
+              version="0.8">
+        <doc xml:whitespace="preserve">Retrieves the #JsonNodeType of @node</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of the node</doc>
+          <type name="NodeType" c:type="JsonNodeType"/>
+        </return-value>
+      </method>
+      <method name="get_object" c:identifier="json_node_get_object">
+        <doc xml:whitespace="preserve">Retrieves the #JsonObject stored inside a #JsonNode</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonObject</doc>
+          <type name="Object" c:type="JsonObject*"/>
+        </return-value>
+      </method>
+      <method name="get_parent" c:identifier="json_node_get_parent">
+        <doc xml:whitespace="preserve">Retrieves the parent #JsonNode of @node.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the parent node, or %NULL if @node is the root node</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+      </method>
+      <method name="get_string" c:identifier="json_node_get_string">
+        <doc xml:whitespace="preserve">Gets the string value stored inside a #JsonNode</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string value.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_value" c:identifier="json_node_get_value">
+        <doc xml:whitespace="preserve">Retrieves a value from a #JsonNode and copies into @value. When done
+using it, call g_value_unset() on the #GValue.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for an uninitialized value</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_type"
+              c:identifier="json_node_get_value_type"
+              version="0.4">
+        <doc xml:whitespace="preserve">Returns the #GType of the payload of the node.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GType for the payload.</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="is_null" c:identifier="json_node_is_null" version="0.8">
+        <doc xml:whitespace="preserve">Checks whether @node is a %JSON_NODE_NULL
+&lt;note&gt;A null node is not the same as a %NULL #JsonNode&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the node is null</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_array" c:identifier="json_node_set_array">
+        <doc xml:whitespace="preserve">Sets @array inside @node and increases the #JsonArray reference count</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="array" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #JsonArray</doc>
+            <type name="Array" c:type="JsonArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_boolean" c:identifier="json_node_set_boolean">
+        <doc xml:whitespace="preserve">Sets @value as the boolean content of the @node, replacing any existing
+content.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a boolean value</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_double" c:identifier="json_node_set_double">
+        <doc xml:whitespace="preserve">Sets @value as the double content of the @node, replacing any existing
+content.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a double value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_int" c:identifier="json_node_set_int">
+        <doc xml:whitespace="preserve">Sets @value as the integer content of the @node, replacing any existing
+content.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an integer value</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_object" c:identifier="json_node_set_object">
+        <doc xml:whitespace="preserve">Sets @objects inside @node. The reference count of @object is increased.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #JsonObject</doc>
+            <type name="Object" c:type="JsonObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_parent"
+              c:identifier="json_node_set_parent"
+              version="0.8">
+        <doc xml:whitespace="preserve">Sets the parent #JsonNode of @node</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the parent #JsonNode of @node</doc>
+            <type name="Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_string" c:identifier="json_node_set_string">
+        <doc xml:whitespace="preserve">Sets @value as the string content of the @node, replacing any existing
+content.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string value</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value" c:identifier="json_node_set_value">
+        <doc xml:whitespace="preserve">Sets @value inside @node. The passed #GValue is copied into the #JsonNode</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GValue to set</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_array" c:identifier="json_node_take_array">
+        <doc xml:whitespace="preserve">Sets @array into @node without increasing the #JsonArray reference count.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="array" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #JsonArray</doc>
+            <type name="Array" c:type="JsonArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_object" c:identifier="json_node_take_object">
+        <doc xml:whitespace="preserve">Sets @object inside @node. The reference count of @object is not increased.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #JsonObject</doc>
+            <type name="Object" c:type="JsonObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="type_name" c:identifier="json_node_type_name">
+        <doc xml:whitespace="preserve">Retrieves the user readable name of the data type contained by @node.
+is owned by the node and should never be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the name of the type. The returned string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="NodeType" c:type="JsonNodeType">
+      <doc xml:whitespace="preserve">Indicates the content of a #JsonNode.</doc>
+      <member name="object" value="0" c:identifier="JSON_NODE_OBJECT"/>
+      <member name="array" value="1" c:identifier="JSON_NODE_ARRAY"/>
+      <member name="value" value="2" c:identifier="JSON_NODE_VALUE"/>
+      <member name="null" value="3" c:identifier="JSON_NODE_NULL"/>
+    </enumeration>
+    <record name="Object"
+            c:type="JsonObject"
+            glib:type-name="JsonObject"
+            glib:get-type="json_object_get_type"
+            c:symbol-prefix="object">
+      <doc xml:whitespace="preserve">A JSON object type. The contents of the #JsonObject structure are private
+and should only be accessed by the provided API</doc>
+      <constructor name="new" c:identifier="json_object_new">
+        <doc xml:whitespace="preserve">Creates a new #JsonObject, an JSON object type representation.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #JsonObject</doc>
+          <type name="Object" c:type="JsonObject*"/>
+        </return-value>
+      </constructor>
+      <method name="add_member"
+              c:identifier="json_object_add_member"
+              deprecated="Use json_object_set_member() instead"
+              deprecated-version="0.8">
+        <doc xml:whitespace="preserve">Adds a member named @member_name and containing @node into a #JsonObject.
+The object will take ownership of the #JsonNode.
+This function will return if the @object already contains a member</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the member</doc>
+            <type name="Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup_member"
+              c:identifier="json_object_dup_member"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves a copy of the #JsonNode containing the value of @member_name
+inside a #JsonObject
+object member or %NULL. Use json_node_free() when done.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">(transfer full) a copy of the node for the requested</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the JSON object member to access</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach_member"
+              c:identifier="json_object_foreach_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Iterates over all members of @object and calls @func on
+each one of them.
+It is safe to change the value of a #JsonNode of the @object
+from within the iterator @func, but it is not safe to add or
+remove members from the @object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">the function to be called on each member</doc>
+            <type name="ObjectForeach" c:type="JsonObjectForeach"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to be passed to the function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_array_member"
+              c:identifier="json_object_get_array_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function that retrieves the array
+stored in @member_name of @object</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the array inside the object's member</doc>
+          <type name="Array" c:type="JsonArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean_member"
+              c:identifier="json_object_get_boolean_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function that retrieves the boolean value
+stored in @member_name of @object</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the boolean value of the object's member</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double_member"
+              c:identifier="json_object_get_double_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function that retrieves the floating point value
+stored in @member_name of @object</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the floating point value of the object's member</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int_member"
+              c:identifier="json_object_get_int_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function that retrieves the integer value
+stored in @member_name of @object</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the integer value of the object's member</doc>
+          <type name="gint64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_member" c:identifier="json_object_get_member">
+        <doc xml:whitespace="preserve">Retrieves the #JsonNode containing the value of @member_name inside
+a #JsonObject.
+member, or %NULL</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the node for the requested object</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the JSON object member to access</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_members" c:identifier="json_object_get_members">
+        <doc xml:whitespace="preserve">Retrieves all the names of the members of a #JsonObject. You can
+obtain the value for each member using json_object_get_member().
+of member names. The content of the list is owned by the #JsonObject
+and should never be modified or freed. When you have finished using
+the returned list, use g_list_free() to free the resources it has
+allocated.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a #GList</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_null_member"
+              c:identifier="json_object_get_null_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function that checks whether the value
+stored in @member_name of @object is null</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value is null</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_object_member"
+              c:identifier="json_object_get_object_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function that retrieves the object
+stored in @member_name of @object</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object inside the object's member</doc>
+          <type name="Object" c:type="JsonObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size" c:identifier="json_object_get_size">
+        <doc xml:whitespace="preserve">Retrieves the number of members of a #JsonObject.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of members</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_string_member"
+              c:identifier="json_object_get_string_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function that retrieves the string value
+stored in @member_name of @object</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the string value of the object's member</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_values" c:identifier="json_object_get_values">
+        <doc xml:whitespace="preserve">Retrieves all the values of the members of a #JsonObject.
+#JsonNode&lt;!-- --&gt;s. The content of the list is owned by the #JsonObject
+and should never be modified or freed. When you have finished using the
+returned list, use g_list_free() to free the resources it has allocated.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a #GList of</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Node"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="has_member" c:identifier="json_object_has_member">
+        <doc xml:whitespace="preserve">Checks whether @object has a member named @member_name.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the JSON object has the requested member</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a JSON object member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref" c:identifier="json_object_ref">
+        <doc xml:whitespace="preserve">Increase by one the reference count of a #JsonObject.
+increased by one.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the passed #JsonObject, with the reference count</doc>
+          <type name="Object" c:type="JsonObject*"/>
+        </return-value>
+      </method>
+      <method name="remove_member" c:identifier="json_object_remove_member">
+        <doc xml:whitespace="preserve">Removes @member_name from @object, freeing its allocated resources.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member to remove</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_array_member"
+              c:identifier="json_object_set_array_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function for setting an array @value of
+The @object will take ownership of the passed #JsonArray</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the member</doc>
+            <type name="Array" c:type="JsonArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_boolean_member"
+              c:identifier="json_object_set_boolean_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function for setting a boolean @value of</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the member</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_double_member"
+              c:identifier="json_object_set_double_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function for setting a floating point @value
+of @member_name inside @object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the member</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_int_member"
+              c:identifier="json_object_set_int_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function for setting an integer @value of</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the member</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_member"
+              c:identifier="json_object_set_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Sets @node as the value of @member_name inside @object.
+If @object already contains a member called @member_name then
+the member's current value is overwritten. Otherwise, a new
+member is added to @object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the member</doc>
+            <type name="Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_null_member"
+              c:identifier="json_object_set_null_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function for setting a null @value of</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_object_member"
+              c:identifier="json_object_set_object_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function for setting an object @value of
+The @object will take ownership of the passed #JsonObject</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the member</doc>
+            <type name="Object" c:type="JsonObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_string_member"
+              c:identifier="json_object_set_string_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function for setting a string @value of</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unref" c:identifier="json_object_unref">
+        <doc xml:whitespace="preserve">Decreases by one the reference count of a #JsonObject. If the
+reference count reaches zero, the object is destroyed and all
+its allocated resources are freed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <callback name="ObjectForeach" c:type="JsonObjectForeach" version="0.8">
+      <doc xml:whitespace="preserve">The function to be passed to json_object_foreach_member(). You
+should not add or remove members to and from @object within
+this function. It is safe to change the value of @member_node.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the iterated #JsonObject</doc>
+          <type name="Object" c:type="JsonObject*"/>
+        </parameter>
+        <parameter name="member_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the member</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="member_node" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #JsonNode containing the @member_name value</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <doc xml:whitespace="preserve">data passed to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="Parser"
+           c:symbol-prefix="parser"
+           c:type="JsonParser"
+           parent="GObject.Object"
+           glib:type-name="JsonParser"
+           glib:get-type="json_parser_get_type"
+           glib:type-struct="ParserClass">
+      <doc xml:whitespace="preserve">JSON data streams parser. The contents of the #JsonParser structure are
+private and should only be accessed via the provided API.</doc>
+      <constructor name="new" c:identifier="json_parser_new">
+        <doc xml:whitespace="preserve">Creates a new #JsonParser instance. You can use the #JsonParser to
+load a JSON stream from either a file or a buffer and then walk the
+hierarchy using the data types API.
+to release all the memory it allocates.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #JsonParser. Use g_object_unref()</doc>
+          <type name="Parser" c:type="JsonParser*"/>
+        </return-value>
+      </constructor>
+      <function name="error_quark" c:identifier="json_parser_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <method name="get_current_line"
+              c:identifier="json_parser_get_current_line">
+        <doc xml:whitespace="preserve">Retrieves the line currently parsed, starting from 1.
+This function has defined behaviour only while parsing; calling this
+function from outside the signal handlers emitted by #JsonParser will
+yield 0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the currently parsed line, or 0.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_current_pos"
+              c:identifier="json_parser_get_current_pos">
+        <doc xml:whitespace="preserve">Retrieves the current position inside the current line, starting
+from 0.
+This function has defined behaviour only while parsing; calling this
+function from outside the signal handlers emitted by #JsonParser will
+yield 0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the position in the current line, or 0.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_root" c:identifier="json_parser_get_root">
+        <doc xml:whitespace="preserve">Retrieves the top level node from the parsed JSON stream.
+node is owned by the #JsonParser and should never be modified
+or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the root #JsonNode . The returned</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+      </method>
+      <method name="has_assignment"
+              c:identifier="json_parser_has_assignment"
+              version="0.4">
+        <doc xml:whitespace="preserve">A JSON data stream might sometimes contain an assignment, like:
+|[
+]|
+even though it would technically constitute a violation of the RFC.
+#JsonParser will ignore the left hand identifier and parse the right
+hand value of the assignment. #JsonParser will record, though, the
+existence of the assignment in the data stream and the variable name
+used.
+used in the assignment. The string is owned by #JsonParser and should
+never be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if there was an assignment, %FALSE otherwise. If</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="variable_name"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">Return location for the variable name, or %NULL</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_from_data"
+              c:identifier="json_parser_load_from_data"
+              throws="1">
+        <doc xml:whitespace="preserve">Loads a JSON stream from a buffer and parses it. You can call this function
+multiple times with the same #JsonParser object, but the contents of the
+parser will be destroyed each time.
+of error, @error is set accordingly and %FALSE is returned</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the buffer was succesfully parser. In case</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the buffer to parse</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of the buffer, or -1</doc>
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_from_file"
+              c:identifier="json_parser_load_from_file"
+              throws="1">
+        <doc xml:whitespace="preserve">Loads a JSON stream from the content of @filename and parses it. See
+json_parser_load_from_data().
+In case of error, @error is set accordingly and %FALSE is returned</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the file was successfully loaded and parsed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the path for the file to parse</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_from_stream"
+              c:identifier="json_parser_load_from_stream"
+              version="0.12"
+              throws="1">
+        <doc xml:whitespace="preserve">Loads the contents of an input stream and parses them.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the @cancellable object from another thread. If the
+operation was cancelled, the error %G_IO_ERROR_CANCELLED will be set
+on the passed @error.
+parsed, and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the data stream was successfully read and</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="stream" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an open #GInputStream</doc>
+            <type name="Gio.InputStream" c:type="GInputStream*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Gio.Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_from_stream_async"
+              c:identifier="json_parser_load_from_stream_async"
+              version="0.12">
+        <doc xml:whitespace="preserve">Asynchronously reads the contents of @stream.
+For more details, see json_parser_load_from_stream() which is the
+synchronous version of this call.
+When the operation is finished, @callback will be called. You should
+then call json_parser_load_from_stream_finish() to get the result
+of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stream" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GInputStream</doc>
+            <type name="Gio.InputStream" c:type="GInputStream*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Gio.Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_from_stream_finish"
+              c:identifier="json_parser_load_from_stream_finish"
+              version="0.12"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous stream loading started with
+json_parser_load_from_stream_async().
+and parsed, and %FALSE otherwise. In case of error, the #GError will be
+filled accordingly.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the content of the stream was successfully retrieves</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult</doc>
+            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ParserPrivate" c:type="JsonParserPrivate*"/>
+      </field>
+      <glib:signal name="array-element">
+        <doc xml:whitespace="preserve">The ::array-element signal is emitted each time the #JsonParser
+has successfully parsed a single element of a #JsonArray. The
+array and element index are passed to the signal handlers.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #JsonArray</doc>
+            <type name="Array"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the newly parsed element</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="array-end">
+        <doc xml:whitespace="preserve">The ::array-end signal is emitted each time the #JsonParser
+has successfully parsed an entire #JsonArray</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the parsed #JsonArray</doc>
+            <type name="Array"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="array-start">
+        <doc xml:whitespace="preserve">The ::array-start signal is emitted each time the #JsonParser
+starts parsing a #JsonArray</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="error">
+        <doc xml:whitespace="preserve">The ::error signal is emitted each time a #JsonParser encounters
+an error in a JSON stream.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to the #GError</doc>
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="object-end">
+        <doc xml:whitespace="preserve">The ::object-end signal is emitted each time the #JsonParser
+has successfully parsed an entire #JsonObject.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the parsed #JsonObject</doc>
+            <type name="Object"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="object-member">
+        <doc xml:whitespace="preserve">The ::object-member signal is emitted each time the #JsonParser
+has successfully parsed a single member of a #JsonObject. The
+object and member are passed to the signal handlers.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #JsonObject</doc>
+            <type name="Object"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the newly parsed member</doc>
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="object-start">
+        <doc xml:whitespace="preserve">The ::object-start signal is emitted each time the #JsonParser
+starts parsing a #JsonObject.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="parse-end">
+        <doc xml:whitespace="preserve">The ::parse-end signal is emitted when the parser successfully
+finished parsing a JSON data stream</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="parse-start">
+        <doc xml:whitespace="preserve">The ::parse-start signal is emitted when the parser began parsing
+a JSON data stream.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ParserClass"
+            c:type="JsonParserClass"
+            glib:is-gtype-struct-for="Parser">
+      <doc xml:whitespace="preserve">#JsonParser class.</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="parse_start">
+        <callback name="parse_start">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="Parser" c:type="JsonParser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="object_start">
+        <callback name="object_start">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="Parser" c:type="JsonParser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="object_member">
+        <callback name="object_member">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="Parser" c:type="JsonParser*"/>
+            </parameter>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="JsonObject*"/>
+            </parameter>
+            <parameter name="member_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="object_end">
+        <callback name="object_end">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="Parser" c:type="JsonParser*"/>
+            </parameter>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="JsonObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="array_start">
+        <callback name="array_start">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="Parser" c:type="JsonParser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="array_element">
+        <callback name="array_element">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="Parser" c:type="JsonParser*"/>
+            </parameter>
+            <parameter name="array" transfer-ownership="none">
+              <type name="Array" c:type="JsonArray*"/>
+            </parameter>
+            <parameter name="index_" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="array_end">
+        <callback name="array_end">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="Parser" c:type="JsonParser*"/>
+            </parameter>
+            <parameter name="array" transfer-ownership="none">
+              <type name="Array" c:type="JsonArray*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parse_end">
+        <callback name="parse_end">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="Parser" c:type="JsonParser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="error">
+        <callback name="error">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="Parser" c:type="JsonParser*"/>
+            </parameter>
+            <parameter name="error" transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_json_reserved1" introspectable="0">
+        <callback name="_json_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_reserved2" introspectable="0">
+        <callback name="_json_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_reserved3" introspectable="0">
+        <callback name="_json_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_reserved4" introspectable="0">
+        <callback name="_json_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_reserved5" introspectable="0">
+        <callback name="_json_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_reserved6" introspectable="0">
+        <callback name="_json_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_reserved7" introspectable="0">
+        <callback name="_json_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_reserved8" introspectable="0">
+        <callback name="_json_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="ParserError" c:type="JsonParserError">
+      <doc xml:whitespace="preserve">Error enumeration for #JsonParser
+This enumeration can be extended at later date</doc>
+      <member name="parse" value="0" c:identifier="JSON_PARSER_ERROR_PARSE"/>
+      <member name="trailing_comma"
+              value="1"
+              c:identifier="JSON_PARSER_ERROR_TRAILING_COMMA"/>
+      <member name="missing_comma"
+              value="2"
+              c:identifier="JSON_PARSER_ERROR_MISSING_COMMA"/>
+      <member name="missing_colon"
+              value="3"
+              c:identifier="JSON_PARSER_ERROR_MISSING_COLON"/>
+      <member name="invalid_bareword"
+              value="4"
+              c:identifier="JSON_PARSER_ERROR_INVALID_BAREWORD"/>
+      <member name="unknown"
+              value="5"
+              c:identifier="JSON_PARSER_ERROR_UNKNOWN"/>
+    </enumeration>
+    <record name="ParserPrivate" c:type="JsonParserPrivate" disguised="1">
+    </record>
+    <class name="Reader"
+           c:symbol-prefix="reader"
+           c:type="JsonReader"
+           version="0.12"
+           parent="GObject.Object"
+           glib:type-name="JsonReader"
+           glib:get-type="json_reader_get_type"
+           glib:type-struct="ReaderClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;JsonReader&lt;/structname&gt; structure contains only
+private data and should only be accessed using the provided API</doc>
+      <constructor name="new" c:identifier="json_reader_new" version="0.12">
+        <doc xml:whitespace="preserve">Creates a new #JsonReader. You can use this object to read the contents of
+the JSON tree starting from @node
+release the allocated resources when done</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #JsonReader. Use g_object_unref() to</doc>
+          <type name="Reader" c:type="JsonReader*"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #JsonNode, or %NULL</doc>
+            <type name="Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="error_quark" c:identifier="json_reader_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <method name="count_elements"
+              c:identifier="json_reader_count_elements"
+              version="0.12">
+        <doc xml:whitespace="preserve">Counts the elements of the current position, if @reader is
+positioned on an array
+the #JsonReader is set in an error state</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of elements, or -1. In case of failure</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="count_members"
+              c:identifier="json_reader_count_members"
+              version="0.12">
+        <doc xml:whitespace="preserve">Counts the members of the current position, if @reader is
+positioned on an object
+the #JsonReader is set in an error state</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of members, or -1. In case of failure</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="end_element"
+              c:identifier="json_reader_end_element"
+              version="0.12">
+        <doc xml:whitespace="preserve">Moves the cursor back to the previous node after being positioned
+inside an array
+This function resets the error state of @reader, if any was set</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="end_member"
+              c:identifier="json_reader_end_member"
+              version="0.12">
+        <doc xml:whitespace="preserve">Moves the cursor back to the previous node after being positioned
+inside an object
+This function resets the error state of @reader, if any was set</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_boolean_value"
+              c:identifier="json_reader_get_boolean_value"
+              version="0.12">
+        <doc xml:whitespace="preserve">Retrieves the boolean value of the current position of @reader</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the boolean value</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_double_value"
+              c:identifier="json_reader_get_double_value"
+              version="0.12">
+        <doc xml:whitespace="preserve">Retrieves the floating point value of the current position of @reader</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the floating point value</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_error"
+              c:identifier="json_reader_get_error"
+              version="0.12">
+        <doc xml:whitespace="preserve">Retrieves the #GError currently set on @reader, if the #JsonReader
+is in error state</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the pointer to the error, or %NULL</doc>
+          <type name="GLib.Error" c:type="GError*"/>
+        </return-value>
+      </method>
+      <method name="get_int_value"
+              c:identifier="json_reader_get_int_value"
+              version="0.12">
+        <doc xml:whitespace="preserve">Retrieves the integer value of the current position of @reader</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the integer value</doc>
+          <type name="gint64" c:type="gint64"/>
+        </return-value>
+      </method>
+      <method name="get_null_value"
+              c:identifier="json_reader_get_null_value"
+              version="0.12">
+        <doc xml:whitespace="preserve">Checks whether the value of the current position of @reader is 'null'</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if 'null' is set, and %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_string_value"
+              c:identifier="json_reader_get_string_value"
+              version="0.12">
+        <doc xml:whitespace="preserve">Retrieves the string value of the current position of @reader</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the string value</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_value"
+              c:identifier="json_reader_get_value"
+              version="0.12">
+        <doc xml:whitespace="preserve">Retrieves the #JsonNode of the current position of @reader
+is owned by the #JsonReader and it should not be modified or freed
+directly</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #JsonNode, or %NULL. The returned node</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+      </method>
+      <method name="is_array"
+              c:identifier="json_reader_is_array"
+              version="0.12">
+        <doc xml:whitespace="preserve">Checks whether the @reader is currently on an array
+otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #JsonReader is on an array, and %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_object"
+              c:identifier="json_reader_is_object"
+              version="0.12">
+        <doc xml:whitespace="preserve">Checks whether the @reader is currently on an object
+otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #JsonReader is on an object, and %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_value"
+              c:identifier="json_reader_is_value"
+              version="0.12">
+        <doc xml:whitespace="preserve">Checks whether the @reader is currently on a value
+otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #JsonReader is on a value, and %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="read_element"
+              c:identifier="json_reader_read_element"
+              version="0.12">
+        <doc xml:whitespace="preserve">Advances the cursor of @reader to the element @index_ of array at the
+current position.
+You can use the json_reader_get_value* family of functions to retrieve
+the value of the element; for instance:
+|[
+json_reader_read_element (reader, 0);
+int_value = json_reader_get_int_value (reader);
+]|
+After reading the value, json_reader_end_element() should be called to
+reposition the cursor inside the #JsonReader, e.g.:
+|[
+json_reader_read_element (reader, 1);
+str_value = json_reader_get_string_value (reader);
+json_reader_end_element (reader);
+json_reader_read_element (reader, 2);
+str_value = json_reader_get_string_value (reader);
+json_reader_end_element (reader);
+]|
+If @reader is not currently on an array, or if the @index_ is bigger than
+the size of the array, the #JsonReader will be put in an error state until
+json_reader_end_element() is called.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, and %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the element</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_member"
+              c:identifier="json_reader_read_member"
+              version="0.12">
+        <doc xml:whitespace="preserve">Advances the cursor of @reader to the @member_name of the object at the
+current position.
+You can use the json_reader_get_value* family of functions to retrieve
+the value of the member; for instance:
+|[
+json_reader_read_member (reader, "width");
+width = json_reader_get_int_value (reader);
+]|
+After reading the value, json_reader_end_member() should be called to
+reposition the cursor inside the #JsonReader, e.g.:
+|[
+json_reader_read_member (reader, "author");
+author = json_reader_get_string_value (reader);
+json_reader_end_element (reader);
+json_reader_read_element (reader, "title");
+title = json_reader_get_string_value (reader);
+json_reader_end_element (reader);
+]|
+If @reader is not currently on an object, or if the @member_name is not
+defined in the object, the #JsonReader will be put in an error state until
+json_reader_end_member() is called.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, and %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member to read</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_root"
+              c:identifier="json_reader_set_root"
+              version="0.12">
+        <doc xml:whitespace="preserve">Sets the root #JsonNode to be read by @reader. The @reader will take
+a copy of @root
+If another #JsonNode is currently set as root, it will be replaced.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="root" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #JsonNode</doc>
+            <type name="Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="root"
+                version="0.12"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The root of the JSON tree that the #JsonReader should read.</doc>
+        <type name="Node"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ReaderPrivate" c:type="JsonReaderPrivate*"/>
+      </field>
+    </class>
+    <record name="ReaderClass"
+            c:type="JsonReaderClass"
+            glib:is-gtype-struct-for="Reader"
+            version="0.12">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;JsonReaderClass&lt;/structname&gt; structure contains only
+private data</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_json_padding0" introspectable="0">
+        <callback name="_json_padding0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_padding1" introspectable="0">
+        <callback name="_json_padding1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_padding2" introspectable="0">
+        <callback name="_json_padding2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_padding3" introspectable="0">
+        <callback name="_json_padding3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_padding4" introspectable="0">
+        <callback name="_json_padding4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="ReaderError" version="0.12" c:type="JsonReaderError">
+      <doc xml:whitespace="preserve">Error codes enumeration for #JsonReader errors</doc>
+      <member name="no_array"
+              value="0"
+              c:identifier="JSON_READER_ERROR_NO_ARRAY"/>
+      <member name="invalid_index"
+              value="1"
+              c:identifier="JSON_READER_ERROR_INVALID_INDEX"/>
+      <member name="no_object"
+              value="2"
+              c:identifier="JSON_READER_ERROR_NO_OBJECT"/>
+      <member name="invalid_member"
+              value="3"
+              c:identifier="JSON_READER_ERROR_INVALID_MEMBER"/>
+    </enumeration>
+    <record name="ReaderPrivate" c:type="JsonReaderPrivate" disguised="1">
+    </record>
+    <interface name="Serializable"
+               c:symbol-prefix="serializable"
+               c:type="JsonSerializable"
+               glib:type-name="JsonSerializable"
+               glib:get-type="json_serializable_get_type"
+               glib:type-struct="SerializableIface">
+      <virtual-method name="deserialize_property"
+                      invoker="deserialize_property">
+        <doc xml:whitespace="preserve">Asks a #JsonSerializable implementation to deserialize the
+property contained inside @property_node into @value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the property was successfully deserialized.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to an uninitialized #GValue</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GParamSpec</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+          <parameter name="property_node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #JsonNode containing the serialized property</doc>
+            <type name="Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="serialize_property" invoker="serialize_property">
+        <doc xml:whitespace="preserve">Asks a #JsonSerializable implementation to serialize a #GObject
+property into a #JsonNode object.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #JsonNode containing the serialized property</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the property</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GParamSpec</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="default_deserialize_property"
+              c:identifier="json_serializable_default_deserialize_property"
+              version="0.10">
+        <doc xml:whitespace="preserve">Calls the default implementation of the #JsonSerializable
+deserialize_property() virtual function
+This function can be used inside a custom implementation
+of the deserialize_property() virtual function in lieu of:
+|[
+JsonSerializable *iface;
+gboolean res;
+iface = g_type_default_interface_peek (JSON_TYPE_SERIALIZABLE);
+res = iface-&gt;deserialize_property (serializable, property_name,
+value,
+pspec,
+property_node);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the property was successfully deserialized.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to an uninitialized #GValue</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GParamSpec</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+          <parameter name="property_node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #JsonNode containing the serialized property</doc>
+            <type name="Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="default_serialize_property"
+              c:identifier="json_serializable_default_serialize_property"
+              version="0.10">
+        <doc xml:whitespace="preserve">Calls the default implementation of the #JsonSerializable
+serialize_property() virtual function
+This function can be used inside a custom implementation
+of the serialize_property() virtual function in lieu of:
+|[
+JsonSerializable *iface;
+JsonNode *node;
+iface = g_type_default_interface_peek (JSON_TYPE_SERIALIZABLE);
+node = iface-&gt;serialize_property (serializable, property_name,
+value,
+pspec);
+]|
+property</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #JsonNode containing the serialized</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the property</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GParamSpec</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="deserialize_property"
+              c:identifier="json_serializable_deserialize_property">
+        <doc xml:whitespace="preserve">Asks a #JsonSerializable implementation to deserialize the
+property contained inside @property_node into @value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the property was successfully deserialized.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to an uninitialized #GValue</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GParamSpec</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+          <parameter name="property_node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #JsonNode containing the serialized property</doc>
+            <type name="Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="serialize_property"
+              c:identifier="json_serializable_serialize_property">
+        <doc xml:whitespace="preserve">Asks a #JsonSerializable implementation to serialize a #GObject
+property into a #JsonNode object.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #JsonNode containing the serialized property</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the property</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GParamSpec</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="SerializableIface"
+            c:type="JsonSerializableIface"
+            glib:is-gtype-struct-for="Serializable">
+      <doc xml:whitespace="preserve">Interface that allows serializing and deserializing #GObject&lt;!-- --&gt;s
+with properties storing complex data types. The json_serialize_gobject()
+function will check if the passed #GObject implements this interface,
+so it can also be used to override the default property serialization
+sequence.</doc>
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="serialize_property">
+        <callback name="serialize_property">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #JsonNode containing the serialized property</doc>
+            <type name="Node" c:type="JsonNode*"/>
+          </return-value>
+          <parameters>
+            <parameter name="serializable" transfer-ownership="none">
+              <type name="Serializable" c:type="JsonSerializable*"/>
+            </parameter>
+            <parameter name="property_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the property</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the value of the property</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GParamSpec</doc>
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="deserialize_property">
+        <callback name="deserialize_property">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the property was successfully deserialized.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="serializable" transfer-ownership="none">
+              <type name="Serializable" c:type="JsonSerializable*"/>
+            </parameter>
+            <parameter name="property_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the property</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a pointer to an uninitialized #GValue</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GParamSpec</doc>
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+            <parameter name="property_node" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #JsonNode containing the serialized property</doc>
+              <type name="Node" c:type="JsonNode*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <function name="boxed_can_deserialize"
+              c:identifier="json_boxed_can_deserialize"
+              version="0.10">
+      <doc xml:whitespace="preserve">Checks whether it is possible to deserialize a #GBoxed of
+type @gboxed_type from a #JsonNode of type @node_type</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the type can be deserialized, %FALSE otherwise</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="gboxed_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a boxed type</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="node_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #JsonNode type</doc>
+          <type name="NodeType" c:type="JsonNodeType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="boxed_can_serialize"
+              c:identifier="json_boxed_can_serialize"
+              version="0.10">
+      <doc xml:whitespace="preserve">Checks whether it is possible to serialize a #GBoxed of
+type @gboxed_type into a #JsonNode. The type of the
+#JsonNode is placed inside @node_type if the function
+returns %TRUE and it's undefined otherwise.
+and %FALSE otherwise.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the type can be serialized,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="gboxed_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a boxed type</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="node_type"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonNode type to which the boxed type can be serialized into</doc>
+          <type name="NodeType" c:type="JsonNodeType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="boxed_deserialize"
+              c:identifier="json_boxed_deserialize"
+              version="0.10">
+      <doc xml:whitespace="preserve">Deserializes @node into a #GBoxed of @gboxed_type
+g_boxed_free() to release the resources allocated by this
+function</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the newly allocated #GBoxed. Use</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="gboxed_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a boxed type</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="node" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #JsonNode</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="boxed_register_deserialize_func"
+              c:identifier="json_boxed_register_deserialize_func"
+              version="0.10"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Registers a deserialization function for a #GBoxed of type @gboxed_type
+from a #JsonNode of type @node_type</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="gboxed_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a boxed type</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="node_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a node type</doc>
+          <type name="NodeType" c:type="JsonNodeType"/>
+        </parameter>
+        <parameter name="deserialize_func" transfer-ownership="none">
+          <doc xml:whitespace="preserve">deserialization function for @boxed_type from a #JsonNode of type @node_type</doc>
+          <type name="BoxedDeserializeFunc" c:type="JsonBoxedDeserializeFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="boxed_register_serialize_func"
+              c:identifier="json_boxed_register_serialize_func"
+              version="0.10"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Registers a serialization function for a #GBoxed of type @gboxed_type
+to a #JsonNode of type @node_type</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="gboxed_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a boxed type</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="node_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a node type</doc>
+          <type name="NodeType" c:type="JsonNodeType"/>
+        </parameter>
+        <parameter name="serialize_func" transfer-ownership="none">
+          <doc xml:whitespace="preserve">serialization function for @boxed_type into a #JsonNode of type @node_type</doc>
+          <type name="BoxedSerializeFunc" c:type="JsonBoxedSerializeFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="boxed_serialize"
+              c:identifier="json_boxed_serialize"
+              version="0.10">
+      <doc xml:whitespace="preserve">Serializes @boxed, a pointer to a #GBoxed of type @gboxed_type,
+into a #JsonNode
+boxed type, or %NULL if serialization either failed or was not possible</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a #JsonNode with the serialization of the</doc>
+        <type name="Node" c:type="JsonNode*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gboxed_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a boxed type</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="boxed" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to a #GBoxed of type @gboxed_type</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="construct_gobject"
+              c:identifier="json_construct_gobject"
+              version="0.4"
+              deprecated="Use json_gobject_from_data() instead"
+              deprecated-version="0.10"
+              throws="1">
+      <doc xml:whitespace="preserve">Deserializes a JSON data stream and creates the corresponding
+#GObject class. If @gtype implements the #JsonSerializableIface
+interface, it will be asked to deserialize all the JSON members
+into the respective properties; otherwise, the default implementation
+will be used to translate the compatible JSON native types.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a #GObject or %NULL</doc>
+        <type name="GObject.Object" c:type="GObject*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gtype" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType of object to construct</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a JSON data stream</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">length of the data stream</doc>
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gobject_deserialize"
+              c:identifier="json_gobject_deserialize"
+              version="0.10">
+      <doc xml:whitespace="preserve">Creates a new #GObject of type @gtype, and constructs it
+using the members of the passed #JsonObject
+instance. Use g_object_unref() to free the resources
+allocated by this function</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">The newly created #GObject</doc>
+        <type name="GObject.Object" c:type="GObject*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gtype" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of the #GObject to create</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="node" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #JsonNode of type %JSON_NODE_OBJECT describing the instance of type @gtype</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gobject_from_data"
+              c:identifier="json_gobject_from_data"
+              version="0.10"
+              throws="1">
+      <doc xml:whitespace="preserve">Deserializes a JSON data stream and creates the corresponding
+#GObject class. If @gtype implements the #JsonSerializableIface
+interface, it will be asked to deserialize all the JSON members
+into the respective properties; otherwise, the default implementation
+will be used to translate the compatible JSON native types.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a #GObject or %NULL</doc>
+        <type name="GObject.Object" c:type="GObject*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gtype" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType of object to construct</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a JSON data stream</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">length of the data stream, or -1 if it is NUL-terminated</doc>
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gobject_serialize"
+              c:identifier="json_gobject_serialize"
+              version="0.10">
+      <doc xml:whitespace="preserve">Creates a #JsonNode representing the passed #GObject
+instance. Each member of the returned JSON object will
+map to a property of the #GObject
+of type %JSON_NODE_OBJECT. Use json_node_free() to free
+the resources allocated by this function</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the newly created #JsonNode</doc>
+        <type name="Node" c:type="JsonNode*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gobject" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObject</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gobject_to_data"
+              c:identifier="json_gobject_to_data"
+              version="0.10">
+      <doc xml:whitespace="preserve">Serializes a #GObject into a JSON data stream, iterating recursively
+over each property.
+If @gobject implements the #JsonSerializableIface interface, it will
+be asked to serialize all its properties; otherwise, the default
+implementation will be use to translate the compatible types into
+JSON native types.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a JSON data stream representing the passed #GObject</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gobject" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObject</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="length"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">return value for the length of the buffer, or %NULL</doc>
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="serialize_gobject"
+              c:identifier="json_serialize_gobject"
+              deprecated="Use json_gobject_to_data() instead"
+              deprecated-version="0.10">
+      <doc xml:whitespace="preserve">Serializes a #GObject into a JSON data stream. If @gobject implements
+the #JsonSerializableIface interface, it will be asked to serizalize all
+its properties; otherwise, the default implementation will be use to
+translate the compatible types into JSON native types.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a JSON data stream representing the passed #GObject</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gobject" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObject</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="length"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">return value for the length of the buffer, or %NULL</doc>
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/clutter/json/ffi/ffi.factor b/extra/clutter/json/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..5a9d118
--- /dev/null
@@ -0,0 +1,23 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries alien.syntax combinators
+gobject-introspection kernel system vocabs.loader ;
+IN: clutter.json.ffi
+
+<<
+"gobject.ffi" require
+"gio.ffi" require
+>>
+
+LIBRARY: clutter.json
+
+<<
+"clutter.json" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libclutter-glx-1.0.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:clutter/json/Json-1.0.gir
+
diff --git a/extra/clutter/json/json.factor b/extra/clutter/json/json.factor
new file mode 100644 (file)
index 0000000..9530483
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: clutter.json.ffi ;
+IN: clutter.json
+
diff --git a/extra/clutter/summary.txt b/extra/clutter/summary.txt
new file mode 100644 (file)
index 0000000..e7b8c48
--- /dev/null
@@ -0,0 +1 @@
+Clutter binding
diff --git a/extra/clutter/tags.txt b/extra/clutter/tags.txt
new file mode 100755 (executable)
index 0000000..bb863cf
--- /dev/null
@@ -0,0 +1 @@
+bindings
diff --git a/extra/gir/samples/lowlevel/gstreamer/authors.txt b/extra/gir/samples/lowlevel/gstreamer/authors.txt
new file mode 100644 (file)
index 0000000..ce9bcc8
--- /dev/null
@@ -0,0 +1 @@
+Anton Gorenko
\ No newline at end of file
diff --git a/extra/gir/samples/lowlevel/gstreamer/gstreamer.factor b/extra/gir/samples/lowlevel/gstreamer/gstreamer.factor
new file mode 100644 (file)
index 0000000..7508386
--- /dev/null
@@ -0,0 +1,63 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien.c-types alien.strings fry byte-arrays classes.struct
+io.encodings.utf8 kernel locals math prettyprint 
+gstreamer.ffi glib.ffi gobject.ffi gtk.ffi ;
+IN: gir.samples.lowlevel.gstreamer
+
+! CONSTANT: uri "http://www.xiph.org/vorbis/listen/compilation-ogg-q4.ogg"
+CONSTANT: uri "http://tinyvid.tv/file/3gocxnjott7wr.ogg"
+
+:: gstreamer-win ( -- window )
+    f f gst_init
+    "playbin" "player" [ utf8 string>alien ] bi@ gst_element_factory_make :> pipeline
+
+    GValue <struct> :> value
+    value G_TYPE_STRING g_value_init drop
+    value uri utf8 string>alien g_value_set_string
+    
+    pipeline "uri" utf8 string>alien value g_object_set_property
+        
+    ! pipeline GST_STATE_PLAYING gst_element_set_state drop
+
+    GTK_WINDOW_TOPLEVEL gtk_window_new :> window
+
+    window
+    [ "GStreamer" utf8 string>alien gtk_window_set_title ]
+    [ 300 200 gtk_window_set_default_size ]
+    [ GTK_WIN_POS_CENTER gtk_window_set_position ] tri
+
+    gtk_fixed_new :> frame
+    window frame gtk_container_add
+    
+    "Start" utf8 string>alien gtk_button_new_with_label :> button
+    button 140 30 gtk_widget_set_size_request
+    frame button 80 60 gtk_fixed_put
+
+    button "clicked" utf8 string>alien
+    [ nip GST_STATE_PLAYING gst_element_set_state drop ] GtkButton:clicked
+    pipeline f 0 g_signal_connect_data drop
+
+    window "destroy" utf8 string>alien
+    [ 
+        nip [ GST_STATE_NULL gst_element_set_state drop ]
+        [ gst_object_unref ] bi
+    ] GtkObject:destroy
+    pipeline f 0 g_signal_connect_data drop
+    
+    window ;
+
+:: gstreamer-main ( -- )
+    f f gtk_init
+    gstreamer-win :> window
+
+    window "destroy" utf8 string>alien
+    [ 2drop gtk_main_quit ] GtkObject:destroy
+    f f 0 g_signal_connect_data drop
+
+    window gtk_widget_show_all
+    
+    gtk_main ;
+
+MAIN: gstreamer-main
+
diff --git a/extra/gstreamer/Gst-0.10.gir b/extra/gstreamer/Gst-0.10.gir
new file mode 100644 (file)
index 0000000..d187fe1
--- /dev/null
@@ -0,0 +1,22063 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.0"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="glib-2.0"/>
+  <package name="gmodule-no-export-2.0"/>
+  <package name="gobject-2.0"/>
+  <package name="gthread-2.0"/>
+  <package name="libxml-2.0"/>
+  <c:include name="gst/gst.h"/>
+  <namespace name="Gst"
+             version="0.10"
+             shared-library="libgstreamer-0.10.so.0"
+             c:prefix="Gst">
+    <alias name="ClockID" target="any" c:type="GstClockID"/>
+    <alias name="ClockTime" target="uint64" c:type="GstClockTime"/>
+    <alias name="ClockTimeDiff" target="int64" c:type="GstClockTimeDiff"/>
+    <enumeration name="ActivateMode"
+                 doc="The status of a GstPad. After activating a pad, which usually happens when the
+parent element goes from READY to PAUSED, the GstActivateMode defines if the
+pad operates in push or pull mode."
+                 c:type="GstActivateMode">
+      <member name="none" value="0" c:identifier="GST_ACTIVATE_NONE"/>
+      <member name="push" value="1" c:identifier="GST_ACTIVATE_PUSH"/>
+      <member name="pull" value="2" c:identifier="GST_ACTIVATE_PULL"/>
+    </enumeration>
+    <record name="AllocTrace"
+            c:type="GstAllocTrace"
+            doc="The main tracing object">
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="live" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="mem_live" writable="1">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <method name="print"
+              c:identifier="gst_alloc_trace_print"
+              doc="Print the status of the given GstAllocTrace.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_flags"
+              c:identifier="gst_alloc_trace_set_flags"
+              doc="Enable the given features on the given GstAllocTrace object.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AllocTraceFlags" c:type="GstAllocTraceFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <bitfield name="AllocTraceFlags"
+              doc="Flags indicating which tracing feature to enable."
+              c:type="GstAllocTraceFlags">
+      <member name="live" value="1" c:identifier="GST_ALLOC_TRACE_LIVE"/>
+      <member name="mem_live"
+              value="2"
+              c:identifier="GST_ALLOC_TRACE_MEM_LIVE"/>
+    </bitfield>
+    <bitfield name="AssocFlags"
+              doc="that marks a place where one can randomly seek to.
+is one that marks a place where one can relatively seek to.
+Flags for an association entry."
+              c:type="GstAssocFlags">
+      <member name="none" value="0" c:identifier="GST_ASSOCIATION_FLAG_NONE"/>
+      <member name="key_unit"
+              value="1"
+              c:identifier="GST_ASSOCIATION_FLAG_KEY_UNIT"/>
+      <member name="delta_unit"
+              value="2"
+              c:identifier="GST_ASSOCIATION_FLAG_DELTA_UNIT"/>
+      <member name="last"
+              value="256"
+              c:identifier="GST_ASSOCIATION_FLAG_LAST"/>
+    </bitfield>
+    <constant name="BUFFER_COPY_ALL" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="BUFFER_OFFSET_NONE" value="-1">
+      <type name="int"/>
+    </constant>
+    <constant name="BUFFER_TRACE_NAME" value="GstBuffer">
+      <type name="utf8"/>
+    </constant>
+    <class name="Bin"
+           c:type="GstBin"
+           doc="The GstBin base class. Subclasses can access these fields provided
+the LOCK is taken."
+           parent="Element"
+           glib:type-name="GstBin"
+           glib:get-type="gst_bin_get_type"
+           glib:type-struct="BinClass">
+      <implements name="ChildProxy"/>
+      <constructor name="new"
+                   c:identifier="gst_bin_new"
+                   doc="Creates a new bin with the given name.">
+        <return-value transfer-ownership="full">
+          <type name="Bin" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="add_element">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove_element">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="handle_message">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add"
+              c:identifier="gst_bin_add"
+              doc="Adds the given element to the bin.  Sets the element&apos;s parent, and thus
+takes ownership of the element. An element can only be added to one bin.
+If the element&apos;s pads are linked to other pads, the pads will be unlinked
+before the element is added to the bin.
+MT safe.
+the bin does not want to accept the element.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="gst_bin_remove"
+              doc="Removes the element from the bin, unparenting it as well.
+Unparenting the element means that the element will be dereferenced,
+so if the bin holds the only reference to the element, the element
+will be freed in the process of removing it from the bin.  If you
+want the element to still exist after removing, you need to call
+gst_object_ref() before removing it from the bin.
+If the element&apos;s pads are linked to other pads, the pads will be unlinked
+before the element is removed from the bin.
+MT safe.
+the bin does not want to remove the element.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_by_name"
+              c:identifier="gst_bin_get_by_name"
+              doc="Gets the element with the given name from a bin. This
+function recurses into child bins.
+Returns NULL if no element with the given name is found in the bin.
+MT safe.  Caller owns returned reference.">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_by_name_recurse_up"
+              c:identifier="gst_bin_get_by_name_recurse_up"
+              doc="Gets the element with the given name from this bin. If the
+element is not found, a recursion is performed on the parent bin.
+Returns NULL if:
+- no element with the given name is found in the bin
+MT safe.  Caller owns returned reference.">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_by_interface"
+              c:identifier="gst_bin_get_by_interface"
+              doc="Looks for an element inside the bin that implements the given
+interface. If such an element is found, it returns the element.
+You can cast this element to the given interface afterwards.  If you want
+all elements that implement the interface, use
+gst_bin_iterate_all_by_interface(). This function recurses into child bins.
+MT safe.  Caller owns returned reference.">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="iface" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iterate_elements"
+              c:identifier="gst_bin_iterate_elements"
+              doc="Gets an iterator for the elements in this bin.
+Each element yielded by the iterator will have its refcount increased, so
+unref after use.
+MT safe.  Caller owns returned value.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_sorted"
+              c:identifier="gst_bin_iterate_sorted"
+              doc="Gets an iterator for the elements in this bin in topologically
+sorted order. This means that the elements are returned from
+the most downstream elements (sinks) to the sources.
+This function is used internally to perform the state changes
+of the bin elements and for clock selection.
+Each element yielded by the iterator will have its refcount increased, so
+unref after use.
+MT safe.  Caller owns returned value.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_recurse"
+              c:identifier="gst_bin_iterate_recurse"
+              doc="Gets an iterator for the elements in this bin.
+This iterator recurses into GstBin children.
+Each element yielded by the iterator will have its refcount increased, so
+unref after use.
+MT safe.  Caller owns returned value.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_sinks"
+              c:identifier="gst_bin_iterate_sinks"
+              doc="Gets an iterator for all elements in the bin that have the
+#GST_ELEMENT_IS_SINK flag set.
+Each element yielded by the iterator will have its refcount increased, so
+unref after use.
+MT safe.  Caller owns returned value.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_sources"
+              c:identifier="gst_bin_iterate_sources"
+              doc="Gets an iterator for all elements in the bin that have no sinkpads and have
+the #GST_ELEMENT_IS_SINK flag unset.
+Each element yielded by the iterator will have its refcount increased, so
+unref after use.
+MT safe.  Caller owns returned value.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_all_by_interface"
+              c:identifier="gst_bin_iterate_all_by_interface"
+              doc="Looks for all elements inside the bin that implements the given
+interface. You can safely cast all returned elements to the given interface.
+The function recurses inside child bins. The iterator will yield a series
+of #GstElement that should be unreffed after use.
+Each element yielded by the iterator will have its refcount increased, so
+unref after use.
+MT safe.  Caller owns returned value.
+implementing the given interface, or NULL">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="iface" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="recalculate_latency"
+              c:identifier="gst_bin_recalculate_latency"
+              doc="Query @bin for the current latency using and reconfigures this latency to all the
+elements with a LATENCY event.
+This method is typically called on the pipeline when a #GST_MESSAGE_LATENCY
+is posted on the bus.
+This function simply emits the &apos;do-latency&apos; signal so any custom latency
+calculations will be performed."
+              version="0.10.22.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="add_many"
+              c:identifier="gst_bin_add_many"
+              doc="Adds a NULL-terminated list of elements to a bin.  This function is
+equivalent to calling gst_bin_add() for each member of the list. The return
+value of each gst_bin_add() is ignored.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="element_1" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_many"
+              c:identifier="gst_bin_remove_many"
+              doc="Remove a list of elements from a bin. This function is equivalent
+to calling gst_bin_remove() with each member of the list.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="element_1" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_unlinked_pad"
+              c:identifier="gst_bin_find_unlinked_pad"
+              doc="Recursively looks for elements with an unlinked pad of the given
+direction within the specified bin and returns an unlinked pad
+if one is found, or NULL otherwise. If a pad is found, the caller
+owns a reference to it and should use gst_object_unref() on the
+pad when it is not needed any longer."
+              version="0.10.20">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_unconnected_pad"
+              c:identifier="gst_bin_find_unconnected_pad"
+              doc="Recursively looks for elements with an unlinked pad of the given
+direction within the specified bin and returns an unlinked pad
+if one is found, or NULL otherwise. If a pad is found, the caller
+owns a reference to it and should use gst_object_unref() on the
+pad when it is not needed any longer."
+              version="0.10.3"
+              deprecated="use gst_bin_find_unlinked_pad() instead.">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="async-handling" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="element">
+        <type name="Element" c:type="GstElement"/>
+      </field>
+      <field name="numchildren">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="children">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="children_cookie">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="child_bus">
+        <type name="Bus" c:type="GstBus*"/>
+      </field>
+      <field name="messages">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="polling">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="state_dirty">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="clock_dirty">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="provided_clock">
+        <type name="Clock" c:type="GstClock*"/>
+      </field>
+      <field name="clock_provider">
+        <type name="Element" c:type="GstElement*"/>
+      </field>
+      <field name="priv">
+        <type name="BinPrivate" c:type="GstBinPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+      <glib:signal name="do-latency"
+                   doc="Will be emitted when the bin needs to perform latency calculations. This
+signal is only emited for toplevel bins or when async-handling is
+enabled.
+Only one signal handler is invoked. If no signals are connected, the
+default handler is invoked, which will query and distribute the lowest
+possible latency to all sinks.
+Connect to this signal if the default latency calculations are not
+sufficient, like when you need different latencies for different sinks in
+the same pipeline."
+                   version="0.10.22">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="element-added"
+                   doc="Will be emitted after the element was added to the bin.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <type name="Element" c:type="GstElement"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="element-removed"
+                   doc="Will be emitted after the element was removed from the bin.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <type name="Element" c:type="GstElement"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="BinClass"
+            c:type="GstBinClass"
+            glib:is-gtype-struct-for="Bin"
+            doc="Subclasses can override the @add_element and @remove_element to
+update the list of children in the bin.
+The @handle_message method can be overridden to implement custom
+message handling.  @handle_message takes ownership of the message, just like
+#gst_element_post_message.">
+      <field name="parent_class">
+        <type name="ElementClass" c:type="GstElementClass"/>
+      </field>
+      <field name="pool">
+        <type name="GLib.ThreadPool" c:type="GThreadPool*"/>
+      </field>
+      <field name="element_added">
+        <callback name="element_added" c:type="element_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="bin" transfer-ownership="none">
+              <type name="Bin" c:type="GstBin*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="element_removed">
+        <callback name="element_removed" c:type="element_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="bin" transfer-ownership="none">
+              <type name="Bin" c:type="GstBin*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_element">
+        <callback name="add_element" c:type="add_element">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="bin" transfer-ownership="none">
+              <type name="Bin" c:type="GstBin*"/>
+            </parameter>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_element">
+        <callback name="remove_element" c:type="remove_element">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="bin" transfer-ownership="none">
+              <type name="Bin" c:type="GstBin*"/>
+            </parameter>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="handle_message">
+        <callback name="handle_message" c:type="handle_message">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="bin" transfer-ownership="none">
+              <type name="Bin" c:type="GstBin*"/>
+            </parameter>
+            <parameter name="message" transfer-ownership="none">
+              <type name="Message" c:type="GstMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="do_latency">
+        <callback name="do_latency" c:type="do_latency">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="bin" transfer-ownership="none">
+              <type name="Bin" c:type="GstBin*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="BinFlags"
+              doc="Derived classes can use this as first value in a list of flags.
+GstBinFlags are a set of flags specific to bins. Most are set/used
+internally. They can be checked using the GST_OBJECT_FLAG_IS_SET () macro,
+and (un)set using GST_OBJECT_FLAG_SET () and GST_OBJECT_FLAG_UNSET ()."
+              c:type="GstBinFlags">
+      <member name="bin_flag_last"
+              value="33554432"
+              c:identifier="GST_BIN_FLAG_LAST"/>
+    </bitfield>
+    <record name="BinPrivate" c:type="GstBinPrivate">
+    </record>
+    <record name="Buffer"
+            c:type="GstBuffer"
+            doc="timestamp is not known or relevant.
+when the duration is not known or relevant.
+For video frames, this is the frame number of this buffer.
+For audio samples, this is the offset of the first sample in this buffer.
+For file data or compressed data this is the byte offset of the first
+byte in this buffer.
+format as @offset.
+When the buffer is freed, this data will freed with @free_func.
+to g_free(). Since 0.10.22.
+The structure of a #GstBuffer. Use the associated macros to access the public
+variables.">
+      <field name="mini_object" writable="1">
+        <type name="MiniObject" c:type="GstMiniObject"/>
+      </field>
+      <field name="data" writable="1">
+        <type name="any" c:type="guint8*"/>
+      </field>
+      <field name="size" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="timestamp" writable="1">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="duration" writable="1">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="caps" writable="1">
+        <type name="Caps" c:type="GstCaps*"/>
+      </field>
+      <field name="offset" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="offset_end" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="malloc_data" writable="1">
+        <type name="any" c:type="guint8*"/>
+      </field>
+      <field name="free_func" writable="1">
+        <type name="GLib.FreeFunc" c:type="GFreeFunc"/>
+      </field>
+      <field name="parent" writable="1">
+        <type name="Buffer" c:type="GstBuffer*"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="any"/>
+        </array>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_buffer_new"
+                   doc="Creates a newly allocated buffer without any data.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_and_alloc"
+                   c:identifier="gst_buffer_new_and_alloc"
+                   doc="Creates a newly allocated buffer with data of the given size.
+The buffer memory is not cleared. If the requested amount of
+memory can&apos;t be allocated, the program will abort. Use
+gst_buffer_try_new_and_alloc() if you want to handle this case
+gracefully or have gotten the size to allocate from an untrusted
+source such as a media stream.
+Note that when @size == 0, the buffer data pointer will be NULL.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy_metadata"
+              c:identifier="gst_buffer_copy_metadata"
+              doc="Copies the metadata from @src into @dest. The data, size and mallocdata
+fields are not copied.
+all the metadata fields.
+This function is typically called from a custom buffer copy function after
+creating @dest and setting the data, size, mallocdata."
+              version="0.10.13">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="BufferCopyFlags" c:type="GstBufferCopyFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_metadata_writable"
+              c:identifier="gst_buffer_is_metadata_writable"
+              doc="Similar to gst_buffer_is_writable, but this only ensures that the
+refcount of the buffer is 1, indicating that the caller is the sole
+owner and can change the buffer metadata, such as caps and timestamps.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="make_metadata_writable"
+              c:identifier="gst_buffer_make_metadata_writable"
+              doc="Similar to gst_buffer_make_writable, but does not ensure that the buffer
+data array is writable. Instead, this just ensures that the returned buffer
+is solely owned by the caller, by creating a subbuffer of the original
+buffer if necessary.
+After calling this function, @buf should not be referenced anymore. The
+result of this function has guaranteed writable metadata.">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="get_caps"
+              c:identifier="gst_buffer_get_caps"
+              doc="Gets the media type of the buffer. This can be NULL if there
+is no media type attached to this buffer.
+Returns NULL if there were no caps on this buffer.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="set_caps"
+              c:identifier="gst_buffer_set_caps"
+              doc="Sets the media type on the buffer. The refcount of the caps will
+be increased and any previous caps on the buffer will be
+unreffed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_sub"
+              c:identifier="gst_buffer_create_sub"
+              doc="begins.
+Creates a sub-buffer from @parent at @offset and @size.
+This sub-buffer uses the actual memory space of the parent buffer.
+This function will copy the offset and timestamp fields when the
+offset is 0. If not, they will be set to #GST_CLOCK_TIME_NONE and
+#GST_BUFFER_OFFSET_NONE.
+If @offset equals 0 and @size equals the total size of @buffer, the
+duration and offset end fields are also copied. If not they will be set
+to #GST_CLOCK_TIME_NONE and #GST_BUFFER_OFFSET_NONE.
+MT safe.
+Returns NULL if the arguments were invalid.">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_span_fast"
+              c:identifier="gst_buffer_is_span_fast"
+              doc="Determines whether a gst_buffer_span() can be done without copying
+the contents, that is, whether the data areas are contiguous sub-buffers of
+the same buffer.
+MT safe.
+FALSE if a copy would be required.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf2" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="span"
+              c:identifier="gst_buffer_span"
+              doc="buffer should start.
+Creates a new buffer that consists of part of buf1 and buf2.
+Logically, buf1 and buf2 are concatenated into a single larger
+buffer, and a new buffer is created at the given offset inside
+this space, with a given length.
+If the two source buffers are children of the same larger buffer,
+and are contiguous, the new buffer will be a child of the shared
+parent, and thus no copying is necessary. you can use
+gst_buffer_is_span_fast() to determine if a memcpy will be needed.
+MT safe.
+Returns NULL if the arguments are invalid.">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="buf2" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="merge"
+              c:identifier="gst_buffer_merge"
+              doc="Create a new buffer that is the concatenation of the two source
+buffers.  The original source buffers will not be modified or
+unref&apos;d.  Make sure you unref the source buffers if they are not used
+anymore afterwards.
+If the buffers point to contiguous areas of memory, the buffer
+is created without copying the data.">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf2" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="join"
+              c:identifier="gst_buffer_join"
+              doc="Create a new buffer that is the concatenation of the two source
+buffers, and unrefs the original source buffers.
+If the buffers point to contiguous areas of memory, the buffer
+is created without copying the data.
+This is a convenience function for C programmers. See also
+gst_buffer_merge(), which does the same thing without
+unreffing the input parameters. Language bindings without
+explicit reference counting should not wrap this function.">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf2" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="stamp"
+              c:identifier="gst_buffer_stamp"
+              doc="Copies additional information (the timestamp, duration, and offset start
+and end) from one buffer to the other.
+This function does not copy any buffer flags or caps and is equivalent to
+gst_buffer_copy_metadata(@dest, @src, GST_BUFFER_COPY_TIMESTAMPS).
+control."
+              deprecated="use gst_buffer_copy_metadata() instead, it provides more">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="BufferClass" c:type="GstBufferClass">
+      <field name="mini_object_class" writable="1">
+        <type name="MiniObjectClass" c:type="GstMiniObjectClass"/>
+      </field>
+    </record>
+    <bitfield name="BufferCopyFlags"
+              doc="offset and offset_end should be copied
+A set of flags that can be provided to the gst_buffer_copy_metadata()
+function to specify which metadata fields should be copied."
+              version="0.10.13"
+              c:type="GstBufferCopyFlags">
+      <member name="flags" value="1" c:identifier="GST_BUFFER_COPY_FLAGS"/>
+      <member name="timestamps"
+              value="2"
+              c:identifier="GST_BUFFER_COPY_TIMESTAMPS"/>
+      <member name="caps" value="4" c:identifier="GST_BUFFER_COPY_CAPS"/>
+    </bitfield>
+    <bitfield name="BufferFlag"
+              doc="the buffer should not be modified. The metadata might still be modified.
+displayed.
+This typically occurs after a seek or a dropped buffer from a live or
+network source.
+stream and contains media neutral data (elements can switch to optimized code
+path that ignores the buffer content).
+A set of buffer flags used to describe properties of a #GstBuffer."
+              c:type="GstBufferFlag">
+      <member name="readonly"
+              value="1"
+              c:identifier="GST_BUFFER_FLAG_READONLY"/>
+      <member name="preroll"
+              value="16"
+              c:identifier="GST_BUFFER_FLAG_PREROLL"/>
+      <member name="discont"
+              value="32"
+              c:identifier="GST_BUFFER_FLAG_DISCONT"/>
+      <member name="in_caps"
+              value="64"
+              c:identifier="GST_BUFFER_FLAG_IN_CAPS"/>
+      <member name="gap" value="128" c:identifier="GST_BUFFER_FLAG_GAP"/>
+      <member name="delta_unit"
+              value="256"
+              c:identifier="GST_BUFFER_FLAG_DELTA_UNIT"/>
+      <member name="media1" value="512" c:identifier="GST_BUFFER_FLAG_MEDIA1"/>
+      <member name="media2"
+              value="1024"
+              c:identifier="GST_BUFFER_FLAG_MEDIA2"/>
+      <member name="media3"
+              value="2048"
+              c:identifier="GST_BUFFER_FLAG_MEDIA3"/>
+      <member name="last" value="4096" c:identifier="GST_BUFFER_FLAG_LAST"/>
+    </bitfield>
+    <record name="BufferList"
+            c:type="GstBufferList"
+            doc="Opaque list of grouped buffers."
+            version="0.10.24">
+      <constructor name="new"
+                   c:identifier="gst_buffer_list_new"
+                   doc="Creates a new, empty #GstBufferList. The caller is responsible for unreffing
+the returned #GstBufferList."
+                   version="0.10.24">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="BufferList" c:type="GstBufferList*"/>
+        </return-value>
+      </constructor>
+      <method name="n_groups"
+              c:identifier="gst_buffer_list_n_groups"
+              doc="Returns the number of groups in @list."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="foreach"
+              c:identifier="gst_buffer_list_foreach"
+              doc="Call @func with @data for each buffer in @list.
+of @func define if this function returns or if the remaining buffers in a
+group should be skipped."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="BufferListFunc" c:type="GstBufferListFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get"
+              c:identifier="gst_buffer_list_get"
+              doc="Get the buffer at @idx in @group.
+Note that this function is not efficient for iterating over the entire list.
+Use an iterator or gst_buffer_list_foreach() instead.
+buffer remains valid as long as @list is valid."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iterate"
+              c:identifier="gst_buffer_list_iterate"
+              doc="Iterate the buffers in @list. The owner of the iterator must also be the
+owner of a reference to @list while the returned iterator is in use.
+gst_buffer_list_iterator_free() after usage"
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="BufferListIterator" c:type="GstBufferListIterator*"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="BufferListClass" c:type="GstBufferListClass">
+    </record>
+    <callback name="BufferListDoFunction"
+              c:type="GstBufferListDoFunction"
+              doc="A function for accessing the last buffer returned by
+gst_buffer_list_iterator_next(). The function can leave @buffer in the list,
+replace @buffer in the list or remove @buffer from the list, depending on
+the return value. If the function returns NULL, @buffer will be removed from
+the list, otherwise @buffer will be replaced with the returned buffer.
+The last buffer returned by gst_buffer_list_iterator_next() will be replaced
+with the buffer returned from the function. The function takes ownership of
+unreffed. If NULL is returned, the buffer will be removed from the list. The
+list must be writable.
+from the list"
+              version="0.10.24">
+      <return-value transfer-ownership="full">
+        <type name="Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="BufferListFunc"
+              c:type="GstBufferListFunc"
+              doc="A function that will be called from gst_buffer_list_foreach(). The @buffer
+field will point to a the reference of the buffer at @idx in @group.
+When this function returns #GST_BUFFER_LIST_CONTINUE, the next buffer will be
+returned. When #GST_BUFFER_LIST_SKIP_GROUP is returned, all remaining buffers
+in the current group will be skipped and the first buffer of the next group
+is returned (if any). When GST_BUFFER_LIST_END is returned,
+gst_buffer_list_foreach() will return.
+When @buffer is set to NULL, the item will be removed from the bufferlist.
+When @buffer has been made writable, the new buffer reference can be assigned
+to @buffer. This function is responsible for unreffing the old buffer when
+removing or modifying."
+              version="0.10.24">
+      <return-value transfer-ownership="full">
+        <type name="BufferListItem" c:type="GstBufferListItem"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Buffer" c:type="GstBuffer**"/>
+        </parameter>
+        <parameter name="group" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="idx" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="BufferListItem"
+                 doc="The result of the #GstBufferListFunc."
+                 version="0.10.24"
+                 c:type="GstBufferListItem">
+      <member name="continue"
+              value="0"
+              c:identifier="GST_BUFFER_LIST_CONTINUE"/>
+      <member name="skip_group"
+              value="1"
+              c:identifier="GST_BUFFER_LIST_SKIP_GROUP"/>
+      <member name="end" value="2" c:identifier="GST_BUFFER_LIST_END"/>
+    </enumeration>
+    <record name="BufferListIterator"
+            c:type="GstBufferListIterator"
+            doc="Opaque iterator for a #GstBufferList."
+            version="0.10.24">
+      <method name="free"
+              c:identifier="gst_buffer_list_iterator_free"
+              doc="Free the iterator."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="n_buffers"
+              c:identifier="gst_buffer_list_iterator_n_buffers"
+              doc="Returns the number of buffers left to iterate in the current group. I.e. the
+number of calls that can be made to gst_buffer_list_iterator_next() before
+it returns NULL.
+This function will not move the implicit cursor or in any other way affect
+the state of the iterator @it."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="next"
+              c:identifier="gst_buffer_list_iterator_next"
+              doc="Returns the next buffer in the list iterated with @it. If the iterator is at
+the end of a group, NULL will be returned. This function may be called
+repeatedly to iterate through the current group.
+The caller will not get a new ref to the returned #GstBuffer and must not
+unref it."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="next_group"
+              c:identifier="gst_buffer_list_iterator_next_group"
+              doc="Advance the iterator @it to the first buffer in the next group. If the
+iterator is at the last group, FALSE will be returned. This function may be
+called repeatedly to iterate through the groups in a buffer list.
+the iterator was already at the last group"
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="add"
+              c:identifier="gst_buffer_list_iterator_add"
+              doc="Inserts @buffer into the #GstBufferList iterated with @it. The buffer is
+inserted into the current group, immediately before the buffer that would be
+returned by gst_buffer_list_iterator_next(). The buffer is inserted before
+the implicit cursor, a subsequent call to gst_buffer_list_iterator_next()
+will return the buffer after the inserted buffer, if any.
+This function takes ownership of @buffer."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_group"
+              c:identifier="gst_buffer_list_iterator_add_group"
+              doc="Inserts a new, empty group into the #GstBufferList iterated with @it. The
+group is inserted immediately before the group that would be returned by
+gst_buffer_list_iterator_next_group(). A subsequent call to
+gst_buffer_list_iterator_next_group() will advance the iterator to the group
+after the inserted group, if any."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="remove"
+              c:identifier="gst_buffer_list_iterator_remove"
+              doc="Removes the last buffer returned by gst_buffer_list_iterator_next() from
+the #GstBufferList iterated with @it. gst_buffer_list_iterator_next() must
+have been called on @it before this function is called. This function can
+only be called once per call to gst_buffer_list_iterator_next().
+The removed buffer is unreffed."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="steal"
+              c:identifier="gst_buffer_list_iterator_steal"
+              doc="Returns the last buffer returned by gst_buffer_list_iterator_next() without
+modifying the refcount of the buffer."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="take"
+              c:identifier="gst_buffer_list_iterator_take"
+              doc="Replaces the last buffer returned by gst_buffer_list_iterator_next() with
+this function is called. gst_buffer_list_iterator_remove() must not have been
+called since the last call to gst_buffer_list_iterator_next().
+This function unrefs the replaced buffer if it has not been stolen with
+gst_buffer_list_iterator_steal() and takes ownership of @buffer (i.e. the
+refcount of @buffer is not increased)."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="do"
+              c:identifier="gst_buffer_list_iterator_do"
+              doc="Calls the given function for the last buffer returned by
+gst_buffer_list_iterator_next(). gst_buffer_list_iterator_next() must have
+been called on @it before this function is called.
+gst_buffer_list_iterator_remove() and gst_buffer_list_iterator_steal() must
+not have been called since the last call to gst_buffer_list_iterator_next().
+See #GstBufferListDoFunction for more details."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="do_func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="BufferListDoFunction"
+                  c:type="GstBufferListDoFunction"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="merge_group"
+              c:identifier="gst_buffer_list_iterator_merge_group"
+              doc="Merge a buffer list group into a normal #GstBuffer by copying its metadata
+and memcpying its data into consecutive memory. All buffers in the current
+group after the implicit cursor will be merged into one new buffer. The
+metadata of the new buffer will be a copy of the metadata of the buffer that
+would be returned by gst_buffer_list_iterator_next(). If there is no buffer
+in the current group after the implicit cursor, NULL will be returned.
+This function will not move the implicit cursor or in any other way affect
+the state of the iterator @it or the list."
+              version="0.10.24">
+        <return-value transfer-ownership="full" doc="after usage, or NULL">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="BufferingMode"
+                 doc="The different types of buffering methods."
+                 c:type="GstBufferingMode">
+      <member name="stream" value="0" c:identifier="GST_BUFFERING_STREAM"/>
+      <member name="download" value="1" c:identifier="GST_BUFFERING_DOWNLOAD"/>
+      <member name="timeshift"
+              value="2"
+              c:identifier="GST_BUFFERING_TIMESHIFT"/>
+      <member name="live" value="3" c:identifier="GST_BUFFERING_LIVE"/>
+    </enumeration>
+    <class name="Bus"
+           c:type="GstBus"
+           doc="The opaque #GstBus data structure."
+           parent="Object"
+           glib:type-name="GstBus"
+           glib:get-type="gst_bus_get_type"
+           glib:type-struct="BusClass">
+      <constructor name="new"
+                   c:identifier="gst_bus_new"
+                   doc="Creates a new #GstBus instance.">
+        <return-value transfer-ownership="full">
+          <type name="Bus" c:type="GstBus*"/>
+        </return-value>
+      </constructor>
+      <method name="post"
+              c:identifier="gst_bus_post"
+              doc="Post a message on the given bus. Ownership of the message
+is taken by the bus.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="have_pending"
+              c:identifier="gst_bus_have_pending"
+              doc="Check if there are pending messages on the bus that
+should be handled.
+otherwise.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="peek"
+              c:identifier="gst_bus_peek"
+              doc="Peek the message on the top of the bus&apos; queue. The message will remain
+on the bus&apos; message queue. A reference is returned, and needs to be unreffed
+by the caller.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+      </method>
+      <method name="pop"
+              c:identifier="gst_bus_pop"
+              doc="Get a message from the bus.
+The message is taken from the bus and needs to be unreffed with
+gst_message_unref() after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+      </method>
+      <method name="pop_filtered"
+              c:identifier="gst_bus_pop_filtered"
+              doc="Get a message matching @type from the bus.  Will discard all messages on
+the bus that do not match @type and that have been posted before the first
+message that does match @type.  If there is no message matching @type on
+the bus, all messages will be discarded.
+the bus is empty or there is no message matching @type.
+The message is taken from the bus and needs to be unreffed with
+gst_message_unref() after usage.
+MT safe."
+              version="0.10.15">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="types" transfer-ownership="none">
+            <type name="MessageType" c:type="GstMessageType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="timed_pop"
+              c:identifier="gst_bus_timed_pop"
+              doc="Get a message from the bus, waiting up to the specified timeout.
+If @timeout is 0, this function behaves like gst_bus_pop(). If @timeout is
+#GST_CLOCK_TIME_NONE, this function will block forever until a message was
+posted on the bus.
+or NULL if the bus is empty after the timeout expired.
+The message is taken from the bus and needs to be unreffed with
+gst_message_unref() after usage.
+MT safe."
+              version="0.10.12">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="timed_pop_filtered"
+              c:identifier="gst_bus_timed_pop_filtered"
+              doc="Get a message from the bus whose type matches the message type mask @types,
+waiting up to the specified timeout (and discarding any messages that do not
+match the mask provided).
+If @timeout is 0, this function behaves like gst_bus_pop_filtered(). If
+matching message was posted on the bus.
+message was found on the bus until the timeout expired.
+The message is taken from the bus and needs to be unreffed with
+gst_message_unref() after usage.
+MT safe."
+              version="0.10.15">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="types" transfer-ownership="none">
+            <type name="MessageType" c:type="GstMessageType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_flushing"
+              c:identifier="gst_bus_set_flushing"
+              doc="If @flushing, flush out and unref any messages queued in the bus. Releases
+references to the message origin objects. Will flush future messages until
+gst_bus_set_flushing() sets @flushing to #FALSE.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flushing" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sync_handler"
+              c:identifier="gst_bus_set_sync_handler"
+              doc="Sets the synchronous handler on the bus. The function will be called
+every time a new message is posted on the bus. Note that the function
+will be called in the same thread context as the posting object. This
+function is usually only called by the creator of the bus. Applications
+should handle messages asynchronously using the gst_bus watch and poll
+functions.
+You cannot replace an existing sync_handler. You can pass NULL to this
+function, which will clear the existing handler.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="BusSyncHandler" c:type="GstBusSyncHandler"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_watch"
+              c:identifier="gst_bus_create_watch"
+              doc="Create watch for this bus. The GSource will be dispatched whenever
+a message is on the bus. After the GSource is dispatched, the
+message is popped off the bus and unreffed.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.Source" c:type="GSource*"/>
+        </return-value>
+      </method>
+      <method name="add_watch_full"
+              c:identifier="gst_bus_add_watch_full"
+              doc="Adds a bus watch to the default main context with the given @priority.
+This function is used to receive asynchronous messages in the main loop.
+There can only be a single bus watch per bus, you must remove it before you
+can set a new one.
+When @func is called, the message belongs to the caller; if you want to
+keep a copy of it, call gst_message_ref() before leaving @func.
+The watch can be removed using g_source_remove() or by returning FALSE
+from @func.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="priority" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="3"
+                     destroy="4">
+            <type name="BusFunc" c:type="GstBusFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_watch"
+              c:identifier="gst_bus_add_watch"
+              doc="Adds a bus watch to the default main context with the default priority.
+This function is used to receive asynchronous messages in the main loop.
+There can only be a single bus watch per bus, you must remove it before you
+can set a new one.
+The watch can be removed using g_source_remove() or by returning FALSE
+from @func.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="BusFunc" c:type="GstBusFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="poll"
+              c:identifier="gst_bus_poll"
+              doc="poll for.
+indefinitely.
+Poll the bus for messages. Will block while waiting for messages to come.
+You can specify a maximum time to poll with the @timeout parameter. If
+All messages not in @events will be popped off the bus and will be ignored.
+Because poll is implemented using the &quot;message&quot; signal enabled by
+gst_bus_add_signal_watch(), calling gst_bus_poll() will cause the &quot;message&quot;
+signal to be emitted for every message that poll sees. Thus a &quot;message&quot;
+signal handler will see the same messages that this function sees -- neither
+will steal messages from the other.
+This function will run a main loop from the default main context when
+polling.
+You should never use this function, since it is pure evil. This is
+especially true for GUI applications based on Gtk+ or Qt, but also for any
+other non-trivial application that uses the GLib main loop. As this function
+runs a GLib main loop, any callback attached to the default GLib main
+context may be invoked. This could be timeouts, GUI events, I/O events etc.;
+even if gst_bus_poll() is called with a 0 timeout. Any of these callbacks
+may do things you do not expect, e.g. destroy the main application window or
+some other resource; change other application state; display a dialog and
+run another main loop until the user clicks it away. In short, using this
+function may add a lot of complexity to your code through unexpected
+re-entrancy and unexpected changes to your application&apos;s state.
+For 0 timeouts use gst_bus_pop_filtered() instead of this function; for
+other short timeouts use gst_bus_timed_pop_filtered(); everything else is
+better handled by setting up an asynchronous bus watch and doing things
+from there.
+The message is taken from the bus and needs to be unreffed with
+gst_message_unref() after usage.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="events" transfer-ownership="none">
+            <type name="MessageType" c:type="GstMessageType"/>
+          </parameter>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="async_signal_func"
+              c:identifier="gst_bus_async_signal_func"
+              doc="A helper #GstBusFunc that can be used to convert all asynchronous messages
+into signals.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sync_signal_handler"
+              c:identifier="gst_bus_sync_signal_handler"
+              doc="A helper GstBusSyncHandler that can be used to convert all synchronous
+messages into signals.">
+        <return-value transfer-ownership="full">
+          <type name="BusSyncReply" c:type="GstBusSyncReply"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_signal_watch"
+              c:identifier="gst_bus_add_signal_watch"
+              doc="Adds a bus signal watch to the default main context with the default
+priority.
+After calling this statement, the bus will emit the &quot;message&quot; signal for each
+message posted on the bus.
+This function may be called multiple times. To clean up, the caller is
+responsible for calling gst_bus_remove_signal_watch() as many times as this
+function is called.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add_signal_watch_full"
+              c:identifier="gst_bus_add_signal_watch_full"
+              doc="Adds a bus signal watch to the default main context with the given priority.
+After calling this statement, the bus will emit the &quot;message&quot; signal for each
+message posted on the bus when the main loop is running.
+This function may be called multiple times. To clean up, the caller is
+responsible for calling gst_bus_remove_signal_watch() as many times as this
+function is called.
+There can only be a single bus watch per bus, you most remove all signal watch
+before you can set another type of watch.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="priority" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_signal_watch"
+              c:identifier="gst_bus_remove_signal_watch"
+              doc="Removes a signal watch previously added with gst_bus_add_signal_watch().
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="enable_sync_message_emission"
+              c:identifier="gst_bus_enable_sync_message_emission"
+              doc="Instructs GStreamer to emit the &quot;sync-message&quot; signal after running the bus&apos;s
+sync handler. This function is here so that code can ensure that they can
+synchronously receive messages without having to affect what the bin&apos;s sync
+handler is.
+This function may be called multiple times. To clean up, the caller is
+responsible for calling gst_bus_disable_sync_message_emission() as many times
+as this function is called.
+While this function looks similar to gst_bus_add_signal_watch(), it is not
+exactly the same -- this function enables &lt;emphasis&gt;synchronous&lt;/emphasis&gt; emission of
+signals when messages arrive; gst_bus_add_signal_watch() adds an idle callback
+to pop messages off the bus &lt;emphasis&gt;asynchronously&lt;/emphasis&gt;. The sync-message signal
+comes from the thread of whatever object posted the message; the &quot;message&quot;
+signal is marshalled to the main thread via the main loop.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="disable_sync_message_emission"
+              c:identifier="gst_bus_disable_sync_message_emission"
+              doc="gst_bus_enable_sync_message_emission()
+Instructs GStreamer to stop emitting the &quot;sync-message&quot; signal for this bus.
+See gst_bus_enable_sync_message_emission() for more information.
+In the event that multiple pieces of code have called
+gst_bus_enable_sync_message_emission(), the sync-message emissions will only
+be stopped after all calls to gst_bus_enable_sync_message_emission() were
+&quot;cancelled&quot; by calling this function. In this way the semantics are exactly
+the same as gst_object_ref() that which calls enable should also call
+disable.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="queue">
+        <type name="GLib.Queue" c:type="GQueue*"/>
+      </field>
+      <field name="queue_lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="sync_handler">
+        <type name="BusSyncHandler" c:type="GstBusSyncHandler"/>
+      </field>
+      <field name="sync_handler_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="signal_watch_id">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="num_signal_watchers">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="priv">
+        <type name="BusPrivate" c:type="GstBusPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+      <glib:signal name="message"
+                   doc="A message has been posted on the bus. This signal is emitted from a
+GSource added to the mainloop. this signal will only be emitted when
+there is a mainloop running.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="sync-message"
+                   doc="A message has been posted on the bus. This signal is emitted from the
+thread that posted the message so one has to be careful with locking.
+This signal will not be emitted by default, you have to set up
+gst_bus_sync_signal_handler() as a sync handler if you want this
+signal to be emitted when a message is posted on the bus, like this:
+&lt;programlisting&gt;
+gst_bus_set_sync_handler (bus, gst_bus_sync_signal_handler, yourdata);
+&lt;/programlisting&gt;">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="BusClass"
+            c:type="GstBusClass"
+            glib:is-gtype-struct-for="Bus">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="message">
+        <callback name="message" c:type="message">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="bus" transfer-ownership="none">
+              <type name="Bus" c:type="GstBus*"/>
+            </parameter>
+            <parameter name="message" transfer-ownership="none">
+              <type name="Message" c:type="GstMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="sync_message">
+        <callback name="sync_message" c:type="sync_message">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="bus" transfer-ownership="none">
+              <type name="Bus" c:type="GstBus*"/>
+            </parameter>
+            <parameter name="message" transfer-ownership="none">
+              <type name="Message" c:type="GstMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="BusFlags"
+              doc="The standard flags that a bus may have."
+              c:type="GstBusFlags">
+      <member name="flushing" value="16" c:identifier="GST_BUS_FLUSHING"/>
+      <member name="flag_last" value="32" c:identifier="GST_BUS_FLAG_LAST"/>
+    </bitfield>
+    <callback name="BusFunc"
+              c:type="GstBusFunc"
+              doc="Specifies the type of function passed to gst_bus_add_watch() or
+gst_bus_add_watch_full(), which is called from the mainloop when a message
+is available on the bus.
+The message passed to the function will be unreffed after execution of this
+function so it should not be freed in the function.
+Note that this function is used as a GSourceFunc which means that returning
+FALSE will remove the GSource from the mainloop.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="bus" transfer-ownership="none">
+          <type name="Bus" c:type="GstBus*"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <type name="Message" c:type="GstMessage*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="BusPrivate" c:type="GstBusPrivate">
+    </record>
+    <callback name="BusSyncHandler"
+              c:type="GstBusSyncHandler"
+              doc="Handler will be invoked synchronously, when a new message has been injected
+into the bus. This function is mostly used internally. Only one sync handler
+can be attached to a given bus.
+If the handler returns GST_BUS_DROP, it should unref the message, else the
+message should not be unreffed by the sync handler.">
+      <return-value transfer-ownership="full">
+        <type name="BusSyncReply" c:type="GstBusSyncReply"/>
+      </return-value>
+      <parameters>
+        <parameter name="bus" transfer-ownership="none">
+          <type name="Bus" c:type="GstBus*"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <type name="Message" c:type="GstMessage*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="BusSyncReply"
+                 doc="The result values for a GstBusSyncHandler."
+                 c:type="GstBusSyncReply">
+      <member name="drop" value="0" c:identifier="GST_BUS_DROP"/>
+      <member name="pass" value="1" c:identifier="GST_BUS_PASS"/>
+      <member name="async" value="2" c:identifier="GST_BUS_ASYNC"/>
+    </enumeration>
+    <constant name="CAN_INLINE" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="CLOCK_ENTRY_TRACE_NAME" value="GstClockEntry">
+      <type name="utf8"/>
+    </constant>
+    <constant name="CLOCK_TIME_NONE" value="-1">
+      <type name="int"/>
+    </constant>
+    <record name="Caps"
+            c:type="GstCaps"
+            doc="Object describing media types."
+            glib:type-name="GstCaps"
+            glib:get-type="gst_caps_get_type">
+      <field name="type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="refcount" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="CapsFlags" c:type="GstCapsFlags"/>
+      </field>
+      <field name="structs" writable="1">
+        <type name="GLib.PtrArray" c:type="GPtrArray*"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <constructor name="new_empty"
+                   c:identifier="gst_caps_new_empty"
+                   doc="Creates a new #GstCaps that is empty.  That is, the returned
+#GstCaps contains no media formats.
+Caller is responsible for unreffing the returned caps.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_any"
+                   c:identifier="gst_caps_new_any"
+                   doc="Creates a new #GstCaps that indicates that it is compatible with
+any media format.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_simple"
+                   c:identifier="gst_caps_new_simple"
+                   doc="Creates a new #GstCaps that contains one #GstStructure.  The
+structure is defined by the arguments, which have the same format
+as gst_structure_new().
+Caller is responsible for unreffing the returned caps.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="media_type" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_full"
+                   c:identifier="gst_caps_new_full"
+                   doc="Creates a new #GstCaps and adds all the structures listed as
+arguments.  The list must be NULL-terminated.  The structures
+are not copied; the returned #GstCaps owns the structures.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="struct1" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="ref"
+              c:identifier="gst_caps_ref"
+              doc="Add a reference to a #GstCaps object.
+From this point on, until the caller calls gst_caps_unref() or
+gst_caps_make_writable(), it is guaranteed that the caps object will not
+change. This means its structures won&apos;t change, etc. To use a #GstCaps
+object, you must always have a refcount on it -- either the one made
+implicitly by e.g. gst_caps_new_simple(), or via taking one explicitly with
+this function.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="copy"
+              c:identifier="gst_caps_copy"
+              doc="Creates a new #GstCaps as a copy of the old @caps. The new caps will have a
+refcount of 1, owned by the caller. The structures are copied as well.
+Note that this function is the semantic equivalent of a gst_caps_ref()
+followed by a gst_caps_make_writable(). If you only want to hold on to a
+reference to the data, you should use gst_caps_ref().
+When you are finished with the caps, call gst_caps_unref() on it.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="make_writable"
+              c:identifier="gst_caps_make_writable"
+              doc="Returns a writable copy of @caps.
+If there is only one reference count on @caps, the caller must be the owner,
+and so this function will return the caps object unchanged. If on the other
+hand there is more than one reference on the object, a new caps object will
+be returned. The caller&apos;s reference on @caps will be removed, and instead the
+caller will own a reference to the returned object.
+In short, this function unrefs the caps in the argument and refs the caps
+that it returns. Don&apos;t access the argument after calling this function. See">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gst_caps_unref"
+              doc="Unref a #GstCaps and and free all its structures and the
+structures&apos; values when the refcount reaches 0.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="append"
+              c:identifier="gst_caps_append"
+              doc="Appends the structures contained in @caps2 to @caps1. The structures in
+freed. If either caps is ANY, the resulting caps will be ANY.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="merge"
+              c:identifier="gst_caps_merge"
+              doc="Appends the structures contained in @caps2 to @caps1 if they are not yet
+expressed by @caps1. The structures in @caps2 are not copied -- they are
+transferred to @caps1, and then @caps2 is freed.
+If either caps is ANY, the resulting caps will be ANY."
+              version="0.10.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_structure"
+              c:identifier="gst_caps_append_structure"
+              doc="Appends @structure to @caps.  The structure is not copied; @caps
+becomes the owner of @structure.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_structure"
+              c:identifier="gst_caps_remove_structure"
+              doc="removes the stucture with the given index from the list of structures
+contained in @caps.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="merge_structure"
+              c:identifier="gst_caps_merge_structure"
+              doc="Appends @structure to @caps if its not already expressed by @caps.  The
+structure is not copied; @caps becomes the owner of @structure.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size"
+              c:identifier="gst_caps_get_size"
+              doc="Gets the number of structures contained in @caps.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_structure"
+              c:identifier="gst_caps_get_structure"
+              doc="Finds the structure in @caps that has the index @index, and
+returns it.
+non-const GstStructure *.  This is for programming convenience --
+the caller should be aware that structures inside a constant
+#GstCaps should not be modified. However, if you know the caps
+are writable, either because you have just copied them or made
+them writable with gst_caps_make_writable(), you may modify the
+structure returned in the usual way, e.g. with functions like
+gst_structure_set().
+You do not need to free or unref the structure returned, it
+belongs to the #GstCaps.">
+        <return-value transfer-ownership="full">
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy_nth"
+              c:identifier="gst_caps_copy_nth"
+              doc="Creates a new #GstCaps and appends a copy of the nth structure
+contained in @caps.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="nth" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="truncate"
+              c:identifier="gst_caps_truncate"
+              doc="Destructively discard all but the first structure from @caps. Useful when
+fixating. @caps must be writable.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_value"
+              c:identifier="gst_caps_set_value"
+              doc="Sets the given @field on all structures of @caps to the given @value.
+This is a convenience function for calling gst_structure_set_value() on
+all structures of @caps."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_simple"
+              c:identifier="gst_caps_set_simple"
+              doc="Sets fields in a #GstCaps.  The arguments must be passed in the same
+manner as gst_structure_set(), and be NULL-terminated.
+&lt;note&gt;Prior to GStreamer version 0.10.26, this function failed when
+of GStreamer, you may only call this function when GST_CAPS_IS_SIMPLE()
+is %TRUE for @caps.&lt;/note&gt;">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_any"
+              c:identifier="gst_caps_is_any"
+              doc="Determines if @caps represents any media format.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_empty"
+              c:identifier="gst_caps_is_empty"
+              doc="Determines if @caps represents no media formats.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_fixed"
+              c:identifier="gst_caps_is_fixed"
+              doc="Fixed #GstCaps describe exactly one format, that is, they have exactly
+one structure, and each field in the structure describes a fixed type.
+Examples of non-fixed types are GST_TYPE_INT_RANGE and GST_TYPE_LIST.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_always_compatible"
+              c:identifier="gst_caps_is_always_compatible"
+              doc="A given #GstCaps structure is always compatible with another if
+every media format that is in the first is also contained in the
+second.  That is, @caps1 is a subset of @caps2.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_subset"
+              c:identifier="gst_caps_is_subset"
+              doc="Checks if all caps represented by @subset are also represented by @superset.
+&lt;note&gt;This function does not work reliably if optional properties for caps
+are included on one caps and omitted on the other.&lt;/note&gt;">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="superset" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_equal"
+              c:identifier="gst_caps_is_equal"
+              doc="Checks if the given caps represent the same set of caps.
+&lt;note&gt;This function does not work reliably if optional properties for caps
+are included on one caps and omitted on the other.&lt;/note&gt;
+This function deals correctly with passing NULL for any of the caps.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_equal_fixed"
+              c:identifier="gst_caps_is_equal_fixed"
+              doc="Tests if two #GstCaps are equal.  This function only works on fixed
+#GstCaps.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_intersect"
+              c:identifier="gst_caps_can_intersect"
+              doc="Tries intersecting @caps1 and @caps2 and reports wheter the result would not
+be empty"
+              version="0.10.25">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="intersect"
+              c:identifier="gst_caps_intersect"
+              doc="Creates a new #GstCaps that contains all the formats that are common
+to both @caps1 and @caps2.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="subtract"
+              c:identifier="gst_caps_subtract"
+              doc="Subtracts the @subtrahend from the @minuend.
+&lt;note&gt;This function does not work reliably if optional properties for caps
+are included on one caps and omitted on the other.&lt;/note&gt;">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="subtrahend" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="union"
+              c:identifier="gst_caps_union"
+              doc="Creates a new #GstCaps that contains all the formats that are in
+either @caps1 and @caps2.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="normalize"
+              c:identifier="gst_caps_normalize"
+              doc="Creates a new #GstCaps that represents the same set of formats as">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="do_simplify"
+              c:identifier="gst_caps_do_simplify"
+              doc="Modifies the given @caps inplace into a representation that represents the
+same set of formats, but in a simpler form.  Component structures that are
+identical are merged.  Component structures that have values that can be
+merged are also merged.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="save_thyself"
+              c:identifier="gst_caps_save_thyself"
+              doc="Serializes a #GstCaps to XML and adds it as a child node of @parent.">
+        <return-value transfer-ownership="full">
+          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace"
+              c:identifier="gst_caps_replace"
+              doc="Replaces *caps with @newcaps.  Unrefs the #GstCaps in the location
+pointed to by @caps, if applicable, then modifies @caps to point to
+This function does not take any locks so you might want to lock
+the object owning @caps pointer.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="newcaps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_string"
+              c:identifier="gst_caps_to_string"
+              doc="Converts @caps to a string representation.  This string representation
+can be converted back to a #GstCaps by gst_caps_from_string().
+For debugging purposes its easier to do something like this:
+|[
+GST_LOG (&quot;caps are %&quot; GST_PTR_FORMAT, caps);
+]|
+This prints the caps in human readble form.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <bitfield name="CapsFlags"
+              doc="anything.
+Extra flags for a caps."
+              c:type="GstCapsFlags">
+      <member name="caps_flags_any"
+              value="1"
+              c:identifier="GST_CAPS_FLAGS_ANY"/>
+    </bitfield>
+    <interface name="ChildProxy"
+               c:type="GstChildProxy"
+               doc="Opaque #GstChildProxy data structure."
+               glib:type-name="GstChildProxy"
+               glib:get-type="gst_child_proxy_get_type"
+               glib:type-struct="ChildProxyInterface">
+      <prerequisite name="Object"/>
+      <virtual-method name="get_child_by_index" invoker="get_child_by_index">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="GstObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_children_count" invoker="get_children_count">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_child_by_name"
+              c:identifier="gst_child_proxy_get_child_by_name"
+              doc="Looks up a child element by the given name.
+Implementors can use #GstObject together with gst_object_get_name()
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="GstObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child_by_index"
+              c:identifier="gst_child_proxy_get_child_by_index"
+              doc="Fetches a child by its number.
+after usage.
+MT safe.">
+        <return-value transfer-ownership="full" doc="Unref">
+          <type name="Object" c:type="GstObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_children_count"
+              c:identifier="gst_child_proxy_get_children_count"
+              doc="Gets the number of child objects this parent contains.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <glib:signal name="child-added">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="child-removed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="ChildProxyInterface"
+            c:type="GstChildProxyInterface"
+            glib:is-gtype-struct-for="ChildProxy"
+            doc="#GstChildProxy interface.">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_child_by_index">
+        <callback name="get_child_by_index" c:type="get_child_by_index">
+          <return-value transfer-ownership="full">
+            <type name="Object" c:type="GstObject*"/>
+          </return-value>
+          <parameters>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="ChildProxy" c:type="GstChildProxy*"/>
+            </parameter>
+            <parameter name="index" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_children_count">
+        <callback name="get_children_count" c:type="get_children_count">
+          <return-value transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="ChildProxy" c:type="GstChildProxy*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="child_added">
+        <callback name="child_added" c:type="child_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="ChildProxy" c:type="GstChildProxy*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="child_removed">
+        <callback name="child_removed" c:type="child_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="ChildProxy" c:type="GstChildProxy*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <class name="Clock"
+           c:type="GstClock"
+           doc="#GstClock base structure. The values of this structure are
+protected for subclasses, use the methods to use the #GstClock."
+           parent="Object"
+           glib:type-name="GstClock"
+           glib:get-type="gst_clock_get_type"
+           glib:type-struct="ClockClass">
+      <function name="id_ref"
+                c:identifier="gst_clock_id_ref"
+                doc="Increase the refcount of given @id.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="ClockID" c:type="GstClockID"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_unref"
+                c:identifier="gst_clock_id_unref"
+                doc="Unref given @id. When the refcount reaches 0 the
+#GstClockID will be freed.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_compare_func"
+                c:identifier="gst_clock_id_compare_func">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="id1" transfer-ownership="none">
+            <type name="any" c:type="gconstpointer"/>
+          </parameter>
+          <parameter name="id2" transfer-ownership="none">
+            <type name="any" c:type="gconstpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_get_time" c:identifier="gst_clock_id_get_time">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_wait" c:identifier="gst_clock_id_wait">
+        <return-value transfer-ownership="full">
+          <type name="ClockReturn" c:type="GstClockReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+          <parameter name="jitter" transfer-ownership="none">
+            <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_wait_async"
+                c:identifier="gst_clock_id_wait_async"
+                doc="Register a callback on the given #GstClockID @id with the given
+function and user_data. When passing a #GstClockID with an invalid
+time to this function, the callback will be called immediately
+with  a time set to GST_CLOCK_TIME_NONE. The callback will
+be called when the time of @id has been reached.
+The callback @func can be invoked from any thread, either provided by the
+core or from a streaming thread. The application should be prepared for this.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="ClockReturn" c:type="GstClockReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="ClockCallback" c:type="GstClockCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_unschedule"
+                c:identifier="gst_clock_id_unschedule"
+                doc="Cancel an outstanding request with @id. This can either
+be an outstanding async notification or a pending sync notification.
+After this call, @id cannot be used anymore to receive sync or
+async notifications, you need to create a new #GstClockID.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="change_resolution">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_resolution" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="new_resolution" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_resolution" invoker="get_resolution">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_internal_time" invoker="get_internal_time">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="wait">
+        <return-value transfer-ownership="full">
+          <type name="ClockReturn" c:type="GstClockReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry" transfer-ownership="none">
+            <type name="ClockEntry" c:type="GstClockEntry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="wait_async">
+        <return-value transfer-ownership="full">
+          <type name="ClockReturn" c:type="GstClockReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry" transfer-ownership="none">
+            <type name="ClockEntry" c:type="GstClockEntry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unschedule">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry" transfer-ownership="none">
+            <type name="ClockEntry" c:type="GstClockEntry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="wait_jitter">
+        <return-value transfer-ownership="full">
+          <type name="ClockReturn" c:type="GstClockReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry" transfer-ownership="none">
+            <type name="ClockEntry" c:type="GstClockEntry*"/>
+          </parameter>
+          <parameter name="jitter" transfer-ownership="none">
+            <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_resolution" c:identifier="gst_clock_set_resolution">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="resolution" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_resolution" c:identifier="gst_clock_get_resolution">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="get_time" c:identifier="gst_clock_get_time">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="set_calibration" c:identifier="gst_clock_set_calibration">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="internal" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="external" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="rate_num" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="rate_denom" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_calibration" c:identifier="gst_clock_get_calibration">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="internal" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="external" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="rate_num" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="rate_denom" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_master" c:identifier="gst_clock_set_master">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="master" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_master" c:identifier="gst_clock_get_master">
+        <return-value transfer-ownership="full">
+          <type name="Clock" c:type="GstClock*"/>
+        </return-value>
+      </method>
+      <method name="add_observation" c:identifier="gst_clock_add_observation">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="slave" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="master" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="r_squared"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_internal_time"
+              c:identifier="gst_clock_get_internal_time">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="adjust_unlocked" c:identifier="gst_clock_adjust_unlocked">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="internal" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unadjust_unlocked"
+              c:identifier="gst_clock_unadjust_unlocked">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="external" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="new_single_shot_id"
+              c:identifier="gst_clock_new_single_shot_id">
+        <return-value transfer-ownership="full">
+          <type name="ClockID" c:type="GstClockID"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="new_periodic_id" c:identifier="gst_clock_new_periodic_id">
+        <return-value transfer-ownership="full">
+          <type name="ClockID" c:type="GstClockID"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_time" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="interval" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="stats" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="timeout" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </property>
+      <property name="window-size" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="window-threshold" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="slave_lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="internal_calibration">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="external_calibration">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="rate_numerator">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="rate_denominator">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="last_time">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="entries">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="entries_changed">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="resolution">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="stats">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="master">
+        <type name="Clock" c:type="GstClock*"/>
+      </field>
+      <field name="filling">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="window_size">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="window_threshold">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="time_index">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="timeout">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="times">
+        <type name="ClockTime" c:type="GstClockTime*"/>
+      </field>
+      <field name="clockid">
+        <type name="ClockID" c:type="GstClockID"/>
+      </field>
+      <union name="ABI" c:type="ABI">
+        <field name="priv" writable="1">
+          <type name="ClockPrivate" c:type="GstClockPrivate*"/>
+        </field>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="GstClockTime" fixed-size="4">
+            <type name="ClockTime"/>
+          </array>
+        </field>
+      </union>
+    </class>
+    <callback name="ClockCallback"
+              c:type="GstClockCallback"
+              doc="The function prototype of the callback.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="clock" transfer-ownership="none">
+          <type name="Clock" c:type="GstClock*"/>
+        </parameter>
+        <parameter name="time" transfer-ownership="none">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </parameter>
+        <parameter name="id" transfer-ownership="none">
+          <type name="ClockID" c:type="GstClockID"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   closure="3"
+                   doc="function">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="ClockClass"
+            c:type="GstClockClass"
+            glib:is-gtype-struct-for="Clock"
+            doc="be acceptable. The new resolution should be returned.
+implement @wait_jitter instead.
+GStreamer clock class. Override the vmethods to implement the clock
+functionality.">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="change_resolution">
+        <callback name="change_resolution" c:type="change_resolution">
+          <return-value transfer-ownership="full">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+            <parameter name="old_resolution" transfer-ownership="none">
+              <type name="ClockTime" c:type="GstClockTime"/>
+            </parameter>
+            <parameter name="new_resolution" transfer-ownership="none">
+              <type name="ClockTime" c:type="GstClockTime"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_resolution">
+        <callback name="get_resolution" c:type="get_resolution">
+          <return-value transfer-ownership="full">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_internal_time">
+        <callback name="get_internal_time" c:type="get_internal_time">
+          <return-value transfer-ownership="full">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="wait">
+        <callback name="wait" c:type="wait">
+          <return-value transfer-ownership="full">
+            <type name="ClockReturn" c:type="GstClockReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="ClockEntry" c:type="GstClockEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="wait_async">
+        <callback name="wait_async" c:type="wait_async">
+          <return-value transfer-ownership="full">
+            <type name="ClockReturn" c:type="GstClockReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="ClockEntry" c:type="GstClockEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unschedule">
+        <callback name="unschedule" c:type="unschedule">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="ClockEntry" c:type="GstClockEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="wait_jitter">
+        <callback name="wait_jitter" c:type="wait_jitter">
+          <return-value transfer-ownership="full">
+            <type name="ClockReturn" c:type="GstClockReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="ClockEntry" c:type="GstClockEntry*"/>
+            </parameter>
+            <parameter name="jitter" transfer-ownership="none">
+              <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="ClockEntry"
+            c:type="GstClockEntry"
+            doc="All pending timeouts or periodic notifies are converted into
+an entry.">
+      <field name="refcount" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="clock" writable="1">
+        <type name="Clock" c:type="GstClock*"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="ClockEntryType" c:type="GstClockEntryType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="interval" writable="1">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="status" writable="1">
+        <type name="ClockReturn" c:type="GstClockReturn"/>
+      </field>
+      <field name="func" writable="1">
+        <type name="ClockCallback" c:type="GstClockCallback"/>
+      </field>
+      <field name="user_data" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+    </record>
+    <enumeration name="ClockEntryType"
+                 doc="The type of the clock entry"
+                 c:type="GstClockEntryType">
+      <member name="single" value="0" c:identifier="GST_CLOCK_ENTRY_SINGLE"/>
+      <member name="periodic"
+              value="1"
+              c:identifier="GST_CLOCK_ENTRY_PERIODIC"/>
+    </enumeration>
+    <bitfield name="ClockFlags"
+              doc="The capabilities of this clock"
+              c:type="GstClockFlags">
+      <member name="can_do_single_sync"
+              value="16"
+              c:identifier="GST_CLOCK_FLAG_CAN_DO_SINGLE_SYNC"/>
+      <member name="can_do_single_async"
+              value="32"
+              c:identifier="GST_CLOCK_FLAG_CAN_DO_SINGLE_ASYNC"/>
+      <member name="can_do_periodic_sync"
+              value="64"
+              c:identifier="GST_CLOCK_FLAG_CAN_DO_PERIODIC_SYNC"/>
+      <member name="can_do_periodic_async"
+              value="128"
+              c:identifier="GST_CLOCK_FLAG_CAN_DO_PERIODIC_ASYNC"/>
+      <member name="can_set_resolution"
+              value="256"
+              c:identifier="GST_CLOCK_FLAG_CAN_SET_RESOLUTION"/>
+      <member name="can_set_master"
+              value="512"
+              c:identifier="GST_CLOCK_FLAG_CAN_SET_MASTER"/>
+      <member name="last" value="4096" c:identifier="GST_CLOCK_FLAG_LAST"/>
+    </bitfield>
+    <record name="ClockPrivate" c:type="GstClockPrivate">
+    </record>
+    <enumeration name="ClockReturn"
+                 doc="The return value of a clock operation."
+                 c:type="GstClockReturn">
+      <member name="ok" value="0" c:identifier="GST_CLOCK_OK"/>
+      <member name="early" value="1" c:identifier="GST_CLOCK_EARLY"/>
+      <member name="unscheduled"
+              value="2"
+              c:identifier="GST_CLOCK_UNSCHEDULED"/>
+      <member name="busy" value="3" c:identifier="GST_CLOCK_BUSY"/>
+      <member name="badtime" value="4" c:identifier="GST_CLOCK_BADTIME"/>
+      <member name="error" value="5" c:identifier="GST_CLOCK_ERROR"/>
+      <member name="unsupported"
+              value="6"
+              c:identifier="GST_CLOCK_UNSUPPORTED"/>
+    </enumeration>
+    <enumeration name="ClockType"
+                 doc="point
+The different kind of clocks."
+                 c:type="GstClockType">
+      <member name="realtime"
+              value="0"
+              c:identifier="GST_CLOCK_TYPE_REALTIME"/>
+      <member name="monotonic"
+              value="1"
+              c:identifier="GST_CLOCK_TYPE_MONOTONIC"/>
+    </enumeration>
+    <callback name="CopyFunction"
+              c:type="GstCopyFunction"
+              doc="A function to create a copy of some object or
+increase its reference count."
+              version="0.10.25">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="CoreError"
+                 doc="category.  Make sure you add a custom message to the error call.
+deciding where to go while developing code.
+this functionality yet.
+Core errors are errors inside the core GStreamer library."
+                 c:type="GstCoreError"
+                 glib:error-quark="gst_core_error_quark">
+      <member name="failed" value="1" c:identifier="GST_CORE_ERROR_FAILED"/>
+      <member name="too_lazy"
+              value="2"
+              c:identifier="GST_CORE_ERROR_TOO_LAZY"/>
+      <member name="not_implemented"
+              value="3"
+              c:identifier="GST_CORE_ERROR_NOT_IMPLEMENTED"/>
+      <member name="state_change"
+              value="4"
+              c:identifier="GST_CORE_ERROR_STATE_CHANGE"/>
+      <member name="pad" value="5" c:identifier="GST_CORE_ERROR_PAD"/>
+      <member name="thread" value="6" c:identifier="GST_CORE_ERROR_THREAD"/>
+      <member name="negotiation"
+              value="7"
+              c:identifier="GST_CORE_ERROR_NEGOTIATION"/>
+      <member name="event" value="8" c:identifier="GST_CORE_ERROR_EVENT"/>
+      <member name="seek" value="9" c:identifier="GST_CORE_ERROR_SEEK"/>
+      <member name="caps" value="10" c:identifier="GST_CORE_ERROR_CAPS"/>
+      <member name="tag" value="11" c:identifier="GST_CORE_ERROR_TAG"/>
+      <member name="missing_plugin"
+              value="12"
+              c:identifier="GST_CORE_ERROR_MISSING_PLUGIN"/>
+      <member name="clock" value="13" c:identifier="GST_CORE_ERROR_CLOCK"/>
+      <member name="disabled"
+              value="14"
+              c:identifier="GST_CORE_ERROR_DISABLED"/>
+      <member name="num_errors"
+              value="15"
+              c:identifier="GST_CORE_ERROR_NUM_ERRORS"/>
+    </enumeration>
+    <constant name="DEBUG_BG_MASK" value="240">
+      <type name="int"/>
+    </constant>
+    <constant name="DEBUG_FG_MASK" value="15">
+      <type name="int"/>
+    </constant>
+    <constant name="DEBUG_FORMAT_MASK" value="65280">
+      <type name="int"/>
+    </constant>
+    <glib:boxed c:type="GstDate"
+                glib:name="Date"
+                glib:type-name="GstDate"
+                glib:get-type="gst_date_get_type">
+    </glib:boxed>
+    <record name="DebugCategory"
+            c:type="GstDebugCategory"
+            doc="This is the struct that describes the categories. Once initialized with
+#GST_DEBUG_CATEGORY_INIT, its values can&apos;t be changed anymore.">
+      <field name="threshold" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="color" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <method name="free"
+              c:identifier="gst_debug_category_free"
+              doc="Removes and frees the category and all associated resources.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_threshold"
+              c:identifier="gst_debug_category_set_threshold"
+              doc="Sets the threshold of the category to the given level. Debug information will
+only be output if the threshold is lower or equal to the level of the
+debugging message.
+&lt;note&gt;&lt;para&gt;
+Do not use this function in production code, because other functions may
+change the threshold of categories as side effect. It is however a nice
+function to use when debugging (even from gdb).
+&lt;/para&gt;&lt;/note&gt;">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="level" transfer-ownership="none">
+            <type name="DebugLevel" c:type="GstDebugLevel"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reset_threshold"
+              c:identifier="gst_debug_category_reset_threshold"
+              doc="Resets the threshold of the category to the default level. Debug information
+will only be output if the threshold is lower or equal to the level of the
+debugging message.
+Use this function to set the threshold back to where it was after using
+gst_debug_category_set_threshold().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_threshold"
+              c:identifier="gst_debug_category_get_threshold"
+              doc="Returns the threshold of a #GstDebugCategory.">
+        <return-value transfer-ownership="full">
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </return-value>
+      </method>
+      <method name="get_name"
+              c:identifier="gst_debug_category_get_name"
+              doc="Returns the name of a debug category.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_color"
+              c:identifier="gst_debug_category_get_color"
+              doc="Returns the color of a debug category used when printing output in this
+category.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_description"
+              c:identifier="gst_debug_category_get_description"
+              doc="Returns the description of a debug category.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="DebugColorFlags"
+                 doc="These are some terminal style flags you can use when creating your
+debugging categories to make them stand out in debugging output."
+                 c:type="GstDebugColorFlags">
+      <member name="fg_black" value="0" c:identifier="GST_DEBUG_FG_BLACK"/>
+      <member name="fg_red" value="1" c:identifier="GST_DEBUG_FG_RED"/>
+      <member name="fg_green" value="2" c:identifier="GST_DEBUG_FG_GREEN"/>
+      <member name="fg_yellow" value="3" c:identifier="GST_DEBUG_FG_YELLOW"/>
+      <member name="fg_blue" value="4" c:identifier="GST_DEBUG_FG_BLUE"/>
+      <member name="fg_magenta" value="5" c:identifier="GST_DEBUG_FG_MAGENTA"/>
+      <member name="fg_cyan" value="6" c:identifier="GST_DEBUG_FG_CYAN"/>
+      <member name="fg_white" value="7" c:identifier="GST_DEBUG_FG_WHITE"/>
+      <member name="bg_black" value="0" c:identifier="GST_DEBUG_BG_BLACK"/>
+      <member name="bg_red" value="16" c:identifier="GST_DEBUG_BG_RED"/>
+      <member name="bg_green" value="32" c:identifier="GST_DEBUG_BG_GREEN"/>
+      <member name="bg_yellow" value="48" c:identifier="GST_DEBUG_BG_YELLOW"/>
+      <member name="bg_blue" value="64" c:identifier="GST_DEBUG_BG_BLUE"/>
+      <member name="bg_magenta"
+              value="80"
+              c:identifier="GST_DEBUG_BG_MAGENTA"/>
+      <member name="bg_cyan" value="96" c:identifier="GST_DEBUG_BG_CYAN"/>
+      <member name="bg_white" value="112" c:identifier="GST_DEBUG_BG_WHITE"/>
+      <member name="bold" value="256" c:identifier="GST_DEBUG_BOLD"/>
+      <member name="underline" value="512" c:identifier="GST_DEBUG_UNDERLINE"/>
+    </enumeration>
+    <callback name="DebugFuncPtr" c:type="GstDebugFuncPtr">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <bitfield name="DebugGraphDetails"
+              doc="Available details for pipeline graphs produced by GST_DEBUG_BIN_TO_DOT_FILE()
+and GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS()."
+              version="0.10.15"
+              c:type="GstDebugGraphDetails">
+      <member name="media_type"
+              value="1"
+              c:identifier="GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE"/>
+      <member name="caps_details"
+              value="2"
+              c:identifier="GST_DEBUG_GRAPH_SHOW_CAPS_DETAILS"/>
+      <member name="non_default_params"
+              value="4"
+              c:identifier="GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS"/>
+      <member name="states"
+              value="8"
+              c:identifier="GST_DEBUG_GRAPH_SHOW_STATES"/>
+      <member name="all" value="15" c:identifier="GST_DEBUG_GRAPH_SHOW_ALL"/>
+    </bitfield>
+    <enumeration name="DebugLevel"
+                 doc="debugging output.
+that stops the application from keeping working correctly.
+An examples is gst_element_error, which outputs a message with this priority.
+It does not mean that the application is terminating as with g_errror.
+that could lead to problems or weird behaviour later on. An example of this
+would be clocking issues (&quot;your computer is pretty slow&quot;) or broken input
+data (&quot;Can&apos;t synchronize to stream.&quot;)
+updated about what is happening.
+Examples where this should be used are when a typefind function has
+successfully determined the type of the stream or when an mp3 plugin detects
+the format to be used. (&quot;This file has mono sound.&quot;)
+happens that is not the expected default behavior.
+An example would be notifications about state changes or receiving/sending of
+events.
+useful to know. As a rule of thumb a pipeline that is iterating as expected
+should never output anzthing else but LOG messages.
+Examples for this are referencing/dereferencing of objects or cothread switches.
+in the executed code path is not fully implemented or handled yet. Note
+that this does not replace proper error handling in any way, the purpose
+of this message is to make it easier to spot incomplete/unfinished pieces
+data as memory dumps in the log. They will be displayed as hexdump with
+The level defines the importance of a debugging message. The more important a
+message is, the greater the probability that the debugging system outputs it."
+                 c:type="GstDebugLevel">
+      <member name="none" value="0" c:identifier="GST_LEVEL_NONE"/>
+      <member name="error" value="1" c:identifier="GST_LEVEL_ERROR"/>
+      <member name="warning" value="2" c:identifier="GST_LEVEL_WARNING"/>
+      <member name="info" value="3" c:identifier="GST_LEVEL_INFO"/>
+      <member name="debug" value="4" c:identifier="GST_LEVEL_DEBUG"/>
+      <member name="log" value="5" c:identifier="GST_LEVEL_LOG"/>
+      <member name="fixme" value="6" c:identifier="GST_LEVEL_FIXME"/>
+      <member name="memdump" value="9" c:identifier="GST_LEVEL_MEMDUMP"/>
+      <member name="count" value="10" c:identifier="GST_LEVEL_COUNT"/>
+    </enumeration>
+    <record name="DebugMessage" c:type="GstDebugMessage">
+      <method name="get"
+              c:identifier="gst_debug_message_get"
+              doc="Gets the string representation of a #GstDebugMessage. This function is used
+in debug handlers to extract the message.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <constant name="ERROR_SYSTEM" value="system error: %s">
+      <type name="utf8"/>
+    </constant>
+    <constant name="EVENT_TRACE_NAME" value="GstEvent">
+      <type name="utf8"/>
+    </constant>
+    <constant name="EVENT_TYPE_BOTH" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="EVENT_TYPE_SHIFT" value="4">
+      <type name="int"/>
+    </constant>
+    <class name="Element"
+           c:type="GstElement"
+           doc="gst_element_set_state() and gst_element_get_state()
+the element is in the correct state.
+#GST_STATE_VOID_PENDING if the element is in the correct state
+parent element or the application. A #GstPipeline has a bus of its own.
+element by the toplevel #GstPipeline.
+PLAYING. Subtracting @base_time from the current clock time in the PLAYING
+state will yield the running_time against the clock.
+GStreamer element abstract base class."
+           parent="Object"
+           abstract="1"
+           glib:type-name="GstElement"
+           glib:get-type="gst_element_get_type"
+           glib:type-struct="ElementClass">
+      <function name="register"
+                c:identifier="gst_element_register"
+                doc="element (note that passing NULL only works in GStreamer 0.10.13 and later)
+Create a new elementfactory capable of instantiating objects of the">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="plugin" transfer-ownership="none">
+            <type name="Plugin" c:type="GstPlugin*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="rank" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="make_from_uri"
+                c:identifier="gst_element_make_from_uri"
+                doc="Creates an element for handling the given URI.">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="URIType" c:type="GstURIType"/>
+          </parameter>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="elementname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="state_get_name"
+                c:identifier="gst_element_state_get_name"
+                doc="Gets a string representing the given state.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="State" c:type="GstState"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="state_change_return_get_name"
+                c:identifier="gst_element_state_change_return_get_name"
+                doc="Gets a string representing the given state change result."
+                version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="state_ret" transfer-ownership="none">
+            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="request_new_pad">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="templ" transfer-ownership="none">
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="release_pad">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_state" invoker="get_state">
+        <return-value transfer-ownership="full">
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+          <parameter name="pending" transfer-ownership="none">
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_state" invoker="set_state">
+        <return-value transfer-ownership="full">
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="State" c:type="GstState"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="change_state" invoker="change_state">
+        <return-value transfer-ownership="full">
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="transition" transfer-ownership="none">
+            <type name="StateChange" c:type="GstStateChange"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_bus" invoker="set_bus">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="bus" transfer-ownership="none">
+            <type name="Bus" c:type="GstBus*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="provide_clock" invoker="provide_clock">
+        <return-value transfer-ownership="full">
+          <type name="Clock" c:type="GstClock*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_clock" invoker="set_clock">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_index" invoker="get_index">
+        <return-value transfer-ownership="full">
+          <type name="Index" c:type="GstIndex*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_index" invoker="set_index">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <type name="Index" c:type="GstIndex*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="send_event" invoker="send_event">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_query_types" invoker="get_query_types">
+        <return-value transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="query" invoker="query">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <type name="Query" c:type="GstQuery*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="requires_clock"
+              c:identifier="gst_element_requires_clock"
+              doc="Query if the element requires a clock.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="provides_clock"
+              c:identifier="gst_element_provides_clock"
+              doc="Query if the element provides a clock. A #GstClock provided by an
+element can be used as the global #GstClock for the pipeline.
+An element that can provide a clock is only required to do so in the PAUSED
+state, this means when it is fully negotiated and has allocated the resources
+to operate the clock.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="provide_clock"
+              c:identifier="gst_element_provide_clock"
+              doc="Get the clock provided by the given element.
+&lt;note&gt;An element is only required to provide a clock in the PAUSED
+state. Some elements can provide a clock in other states.&lt;/note&gt;
+if no clock could be provided.  Unref after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Clock" c:type="GstClock*"/>
+        </return-value>
+      </method>
+      <method name="get_clock"
+              c:identifier="gst_element_get_clock"
+              doc="Gets the currently configured clock of the element. This is the clock as was
+last set with gst_element_set_clock().
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Clock" c:type="GstClock*"/>
+        </return-value>
+      </method>
+      <method name="set_clock"
+              c:identifier="gst_element_set_clock"
+              doc="Sets the clock for the element. This function increases the
+refcount on the clock. Any previously set clock on the object
+is unreffed.
+clock when it, for example, is not able to slave its internal clock to the
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_base_time"
+              c:identifier="gst_element_set_base_time"
+              doc="Set the base time of an element. See gst_element_get_base_time().
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_base_time"
+              c:identifier="gst_element_get_base_time"
+              doc="Returns the base time of the element. The base time is the
+absolute time of the clock when this element was last put to
+PLAYING. Subtracting the base time from the clock time gives
+the running time of the element.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="set_start_time"
+              c:identifier="gst_element_set_start_time"
+              doc="Set the start time of an element. The start time of the element is the
+running time of the element when it last went to the PAUSED state. In READY
+or after a flushing seek, it is set to 0.
+Toplevel elements like #GstPipeline will manage the start_time and
+base_time on its children. Setting the start_time to #GST_CLOCK_TIME_NONE
+on such a toplevel element will disable the distribution of the base_time to
+the children and can be useful if the application manages the base_time
+itself, for example if you want to synchronize capture from multiple
+pipelines, and you can also ensure that the pipelines have the same clock.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_start_time"
+              c:identifier="gst_element_get_start_time"
+              doc="Returns the start time of the element. The start time is the
+running time of the clock when this element was last put to PAUSED.
+Usually the start_time is managed by a toplevel element such as
+#GstPipeline.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="is_indexable"
+              c:identifier="gst_element_is_indexable"
+              doc="Queries if the element can be indexed.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_index"
+              c:identifier="gst_element_set_index"
+              doc="Set @index on the element. The refcount of the index
+will be increased, any previously set index is unreffed.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <type name="Index" c:type="GstIndex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_index"
+              c:identifier="gst_element_get_index"
+              doc="Gets the index from the element.
+element. unref after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Index" c:type="GstIndex*"/>
+        </return-value>
+      </method>
+      <method name="set_bus"
+              c:identifier="gst_element_set_bus"
+              doc="Sets the bus of the element. Increases the refcount on the bus.
+For internal use only, unless you&apos;re testing elements.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="bus" transfer-ownership="none">
+            <type name="Bus" c:type="GstBus*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bus"
+              c:identifier="gst_element_get_bus"
+              doc="Returns the bus of the element. Note that only a #GstPipeline will provide a
+bus for the application.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Bus" c:type="GstBus*"/>
+        </return-value>
+      </method>
+      <method name="add_pad"
+              c:identifier="gst_element_add_pad"
+              doc="Adds a pad (link point) to @element. @pad&apos;s parent will be set to @element;
+see gst_object_set_parent() for refcounting information.
+Pads are not automatically activated so elements should perform the needed
+steps to activate the pad in case this pad is added in the PAUSED or PLAYING
+state. See gst_pad_set_active() for more information about activating pads.
+The pad and the element should be unlocked when calling this function.
+This function will emit the #GstElement::pad-added signal on the element.
+a pad with the same name already existed or the pad already had another
+parent.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_pad"
+              c:identifier="gst_element_remove_pad"
+              doc="Removes @pad from @element. @pad will be destroyed if it has not been
+referenced elsewhere using gst_object_unparent().
+This function is used by plugin developers and should not be used
+by applications. Pads that were dynamically requested from elements
+with gst_element_get_request_pad() should be released with the
+gst_element_release_request_pad() function instead.
+Pads are not automatically deactivated so elements should perform the needed
+steps to deactivate the pad in case this pad is removed in the PAUSED or
+PLAYING state. See gst_pad_set_active() for more information about
+deactivating pads.
+The pad and the element should be unlocked when calling this function.
+This function will emit the #GstElement::pad-removed signal on the element.
+pad does not belong to the provided element.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="no_more_pads"
+              c:identifier="gst_element_no_more_pads"
+              doc="Use this function to signal that the element does not expect any more pads
+to show up in the current pipeline. This function should be called whenever
+pads have been added by the element itself. Elements with #GST_PAD_SOMETIMES
+pad templates use this in combination with autopluggers to figure out that
+the element is done initializing its pads.
+This function emits the #GstElement::no-more-pads signal.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_pad"
+              c:identifier="gst_element_get_pad"
+              doc="Retrieves a pad from @element by name. Tries gst_element_get_static_pad()
+first, then gst_element_get_request_pad().
+to the result pad should be released with gst_object_unref() in case of a static pad
+or gst_element_release_request_pad() in case of a request pad.
+Use gst_element_get_static_pad() or gst_element_get_request_pad() instead.
+depending on the type of the pad."
+              deprecated="This function is deprecated as it&apos;s unclear if the reference">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_static_pad"
+              c:identifier="gst_element_get_static_pad"
+              doc="Retrieves a pad from @element by name. This version only retrieves
+already-existing (i.e. &apos;static&apos;) pads.
+usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_request_pad"
+              c:identifier="gst_element_get_request_pad"
+              doc="Retrieves a pad from the element by name. This version only retrieves
+request pads. The pad should be released with
+gst_element_release_request_pad().">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="release_request_pad"
+              c:identifier="gst_element_release_request_pad"
+              doc="Makes the element free the previously requested pad as obtained
+with gst_element_get_request_pad().
+This does not unref the pad. If the pad was created by using
+gst_element_get_request_pad(), gst_element_release_request_pad() needs to be
+followed by gst_object_unref() to free the @pad.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iterate_pads"
+              c:identifier="gst_element_iterate_pads"
+              doc="Retrieves an iterattor of @element&apos;s pads. The iterator should
+be freed after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_src_pads"
+              c:identifier="gst_element_iterate_src_pads"
+              doc="Retrieves an iterator of @element&apos;s source pads.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_sink_pads"
+              c:identifier="gst_element_iterate_sink_pads"
+              doc="Retrieves an iterator of @element&apos;s sink pads.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="send_event"
+              c:identifier="gst_element_send_event"
+              doc="Sends an event to an element. If the element doesn&apos;t implement an
+event handler, the event will be pushed on a random linked sink pad for
+upstream events or a random linked source pad for downstream events.
+This function takes owership of the provided event so you should
+gst_event_ref() it if you want to reuse the event after this call.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="seek"
+              c:identifier="gst_element_seek"
+              doc="Sends a seek event to an element. See gst_event_new_seek() for the details of
+the parameters. The seek event is sent to the element using
+gst_element_send_event().
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="SeekFlags" c:type="GstSeekFlags"/>
+          </parameter>
+          <parameter name="cur_type" transfer-ownership="none">
+            <type name="SeekType" c:type="GstSeekType"/>
+          </parameter>
+          <parameter name="cur" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop_type" transfer-ownership="none">
+            <type name="SeekType" c:type="GstSeekType"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_query_types"
+              c:identifier="gst_element_get_query_types"
+              doc="Get an array of query types from the element.
+If the element doesn&apos;t implement a query types function,
+the query will be forwarded to the peer of a random linked sink pad.
+be freed or modified.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType*"/>
+        </return-value>
+      </method>
+      <method name="query"
+              c:identifier="gst_element_query"
+              doc="Performs a query on the given element.
+For elements that don&apos;t implement a query handler, this function
+forwards the query to a random srcpad or to the peer of a
+random linked sinkpad of this element.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <type name="Query" c:type="GstQuery*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="post_message"
+              c:identifier="gst_element_post_message"
+              doc="Post a message on the element&apos;s #GstBus. This function takes ownership of the
+message; if you want to access the message after this call, you should add an
+additional reference before calling.
+%FALSE if the element did not have a bus.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="message_full"
+              c:identifier="gst_element_message_full"
+              doc="default message connected to code, or %NULL
+default debugging information, or %NULL
+Post an error, warning or info message on the bus from inside an element.
+#GST_MESSAGE_INFO.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="MessageType" c:type="GstMessageType"/>
+          </parameter>
+          <parameter name="domain" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="code" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="file" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="function" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="line" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_locked_state"
+              c:identifier="gst_element_is_locked_state"
+              doc="Checks if the state of an element is locked.
+If the state of an element is locked, state changes of the parent don&apos;t
+affect the element.
+This way you can leave currently unused elements inside bins. Just lock their
+state before changing the state from #GST_STATE_NULL.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_locked_state"
+              c:identifier="gst_element_set_locked_state"
+              doc="Locks the state of an element, so state changes of the parent don&apos;t affect
+this element anymore.
+MT safe.
+or the elements state-locking needed no change.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="locked_state" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sync_state_with_parent"
+              c:identifier="gst_element_sync_state_with_parent"
+              doc="Tries to change the state of the element to the same as its parent.
+If this function returns FALSE, the state of element is undefined.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_state"
+              c:identifier="gst_element_get_state"
+              doc="Can be %NULL.
+state change or %GST_CLOCK_TIME_NONE for infinite timeout.
+Gets the state of the element.
+For elements that performed an ASYNC state change, as reported by
+gst_element_set_state(), this function will block up to the
+specified timeout value for the state change to complete.
+If the element completes the state change or goes into
+an error, this function returns immediately with a return value of
+%GST_STATE_CHANGE_SUCCESS or %GST_STATE_CHANGE_FAILURE respectively.
+For elements that did not return %GST_STATE_CHANGE_ASYNC, this function
+returns the current and pending state immediately.
+This function returns %GST_STATE_CHANGE_NO_PREROLL if the element
+successfully changed its state but is not able to provide data yet.
+This mostly happens for live sources that only produce data in
+%GST_STATE_PLAYING. While the state change return is equivalent to
+%GST_STATE_CHANGE_SUCCESS, it is returned to the application to signal that
+some sink elements might not be able to complete their state change because
+an element is not producing data to complete the preroll. When setting the
+element to playing, the preroll will complete and playback will start.
+and the last state change succeeded, %GST_STATE_CHANGE_ASYNC if the
+element is still performing a state change or
+%GST_STATE_CHANGE_FAILURE if the last state change failed.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="state"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="a pointer to #GstState to hold the state. Can be %NULL.">
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+          <parameter name="pending"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="a pointer to #GstState to hold the pending state.">
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_state"
+              c:identifier="gst_element_set_state"
+              doc="Sets the state of the element. This function will try to set the
+requested state by going through all the intermediary states and calling
+the class&apos;s state change function for each.
+This function can return #GST_STATE_CHANGE_ASYNC, in which case the
+element will perform the remainder of the state change asynchronously in
+another thread.
+An application can use gst_element_get_state() to wait for the completion
+of the state change or it can wait for a state change message on the bus.
+State changes to %GST_STATE_READY or %GST_STATE_NULL never return
+#GST_STATE_CHANGE_ASYNC.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="State" c:type="GstState"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="abort_state"
+              c:identifier="gst_element_abort_state"
+              doc="Abort the state change of the element. This function is used
+by elements that do asynchronous state changes and find out
+something is wrong.
+This function should be called with the STATE_LOCK held.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="change_state"
+              c:identifier="gst_element_change_state"
+              doc="Perform @transition on @element.
+This function must be called with STATE_LOCK held and is mainly used
+internally.">
+        <return-value transfer-ownership="full">
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="transition" transfer-ownership="none">
+            <type name="StateChange" c:type="GstStateChange"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="continue_state"
+              c:identifier="gst_element_continue_state"
+              doc="Commit the state change of the element and proceed to the next
+pending state if any. This function is used
+by elements that do asynchronous state changes.
+The core will normally call this method automatically when an
+element returned %GST_STATE_CHANGE_SUCCESS from the state change function.
+If after calling this method the element still has not reached
+the pending state, the next state change is performed.
+This method is used internally and should normally not be called by plugins
+or applications.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="ret" transfer-ownership="none">
+            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lost_state"
+              c:identifier="gst_element_lost_state"
+              doc="Brings the element to the lost state. This function calls
+gst_element_lost_state_full() with the new_base_time set to %TRUE.
+This function is used internally and should normally not be called from
+plugins or applications.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="lost_state_full"
+              c:identifier="gst_element_lost_state_full"
+              doc="Brings the element to the lost state. The current state of the
+element is copied to the pending state so that any call to
+gst_element_get_state() will return %GST_STATE_CHANGE_ASYNC.
+An ASYNC_START message is posted with indication to distribute a new
+base_time to the element when @new_base_time is %TRUE.
+If the element was PLAYING, it will go to PAUSED. The element
+will be restored to its PLAYING state by the parent pipeline when it
+prerolls again.
+This is mostly used for elements that lost their preroll buffer
+in the %GST_STATE_PAUSED or %GST_STATE_PLAYING state after a flush,
+they will go to their pending state again when a new preroll buffer is
+queued. This function can only be called when the element is currently
+not in error or an async state change.
+This function is used internally and should normally not be called from
+plugins or applications.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_base_time" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_factory"
+              c:identifier="gst_element_get_factory"
+              doc="Retrieves the factory that was used to create this element.
+no refcounting is needed.">
+        <return-value transfer-ownership="full">
+          <type name="ElementFactory" c:type="GstElementFactory*"/>
+        </return-value>
+      </method>
+      <method name="implements_interface"
+              c:identifier="gst_element_implements_interface"
+              doc="Test whether the given element implements a certain interface of type
+iface_type, and test whether it is supported for this specific instance.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iface_type"
+                     transfer-ownership="none"
+                     doc="type of the interface which we want to be implemented">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_all_pads"
+              c:identifier="gst_element_create_all_pads"
+              doc="Creates a pad for each pad template that is always available.
+This function is only useful during object intialization of
+subclasses of #GstElement.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_compatible_pad"
+              c:identifier="gst_element_get_compatible_pad"
+              doc="Looks for an unlinked pad to which the given pad can link. It is not
+guaranteed that linking the pads will work, though it should work in most
+cases.
+found. gst_object_unref() after usage.">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_compatible_pad_template"
+              c:identifier="gst_element_get_compatible_pad_template"
+              doc="Retrieves a pad template from @element that is compatible with @compattempl.
+Pads from compatible templates can be linked together.
+unreferencing is necessary.">
+        <return-value transfer-ownership="full">
+          <type name="PadTemplate" c:type="GstPadTemplate*"/>
+        </return-value>
+        <parameters>
+          <parameter name="compattempl" transfer-ownership="none">
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="link"
+              c:identifier="gst_element_link"
+              doc="Links @src to @dest. The link must be from source to
+destination; the other direction will not be tried. The function looks for
+existing pads that aren&apos;t linked yet. It will request new pads if necessary.
+Such pads need to be released manualy when unlinking.
+If multiple links are possible, only one is established.
+Make sure you have added your elements to a bin or pipeline with
+gst_bin_add() before trying to link them.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="link_many"
+              c:identifier="gst_element_link_many"
+              doc="Chain together a series of elements. Uses gst_element_link().
+Make sure you have added your elements to a bin or pipeline with
+gst_bin_add() before trying to link them.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="element_2" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="link_filtered"
+              c:identifier="gst_element_link_filtered"
+              doc="Links @src to @dest using the given caps as filtercaps.
+The link must be from source to
+destination; the other direction will not be tried. The function looks for
+existing pads that aren&apos;t linked yet. It will request new pads if necessary.
+If multiple links are possible, only one is established.
+Make sure you have added your elements to a bin or pipeline with
+gst_bin_add() before trying to link them.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter name="filter" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unlink"
+              c:identifier="gst_element_unlink"
+              doc="Unlinks all source pads of the source element with all sink pads
+of the sink element to which they are linked.
+If the link has been made using gst_element_link(), it could have created an
+requestpad, which has to be released using gst_element_release_request_pad().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unlink_many"
+              c:identifier="gst_element_unlink_many"
+              doc="Unlinks a series of elements. Uses gst_element_unlink().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="element_2" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="link_pads"
+              c:identifier="gst_element_link_pads"
+              doc="or NULL for any pad.
+Links the two named pads of the source and destination elements.
+Side effect is that if one of the pads has no parent, it becomes a
+child of the parent of the other element.  If they have different
+parents, the link fails.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="srcpadname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter name="destpadname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unlink_pads"
+              c:identifier="gst_element_unlink_pads"
+              doc="Unlinks the two named pads of the source and destination elements.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="srcpadname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter name="destpadname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="link_pads_filtered"
+              c:identifier="gst_element_link_pads_filtered"
+              doc="Links the two named pads of the source and destination elements. Side effect
+is that if one of the pads has no parent, it becomes a child of the parent of
+the other element. If they have different parents, the link fails. If @caps
+is not #NULL, makes sure that the caps of the link is a subset of @caps.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="srcpadname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter name="destpadname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="filter" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="seek_simple" c:identifier="gst_element_seek_simple">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="seek_flags" transfer-ownership="none">
+            <type name="SeekFlags" c:type="GstSeekFlags"/>
+          </parameter>
+          <parameter name="seek_pos" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_position"
+              c:identifier="gst_element_query_position"
+              doc="On return contains the #GstFormat used.
+Queries an element for the stream position.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="cur" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_duration"
+              c:identifier="gst_element_query_duration"
+              doc="On return contains the #GstFormat used.
+Queries an element for the total stream duration.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format"
+                     direction="inout"
+                     transfer-ownership="full"
+                     doc="a pointer to the #GstFormat asked for.">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="duration"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="A location in which to store the total duration, or NULL.">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_convert"
+              c:identifier="gst_element_query_convert"
+              doc="Queries an element to convert @src_val in @src_format to @dest_format.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="src_val" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="dest_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="dest_val" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="found_tags_for_pad"
+              c:identifier="gst_element_found_tags_for_pad"
+              doc="Posts a message to the bus that new tags were found and pushes the
+tags as event. Takes ownership of the @list.
+This is a utility method for elements. Applications should use the
+#GstTagSetter interface.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+          <parameter name="list" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="found_tags"
+              c:identifier="gst_element_found_tags"
+              doc="Posts a message to the bus that new tags were found, and pushes an event
+to all sourcepads. Takes ownership of the @list.
+This is a utility method for elements. Applications should use the
+#GstTagSetter interface.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="state_lock">
+        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
+      </field>
+      <field name="state_cond">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="state_cookie">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="current_state">
+        <type name="State" c:type="GstState"/>
+      </field>
+      <field name="next_state">
+        <type name="State" c:type="GstState"/>
+      </field>
+      <field name="pending_state">
+        <type name="State" c:type="GstState"/>
+      </field>
+      <field name="last_return">
+        <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+      </field>
+      <field name="bus">
+        <type name="Bus" c:type="GstBus*"/>
+      </field>
+      <field name="clock">
+        <type name="Clock" c:type="GstClock*"/>
+      </field>
+      <field name="base_time">
+        <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
+      </field>
+      <field name="numpads">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="pads">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="numsrcpads">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="srcpads">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="numsinkpads">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="sinkpads">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="pads_cookie">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="target_state" writable="1">
+            <type name="State" c:type="GstState"/>
+          </field>
+          <field name="start_time" writable="1">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+      <glib:signal name="no-more-pads"
+                   doc="This signals that the element will not generate more dynamic pads.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="pad-added"
+                   doc="a new #GstPad has been added to the element.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="pad-removed"
+                   doc="a #GstPad has been removed from the element">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ElementClass"
+            c:type="GstElementClass"
+            glib:is-gtype-struct-for="Element"
+            doc="GStreamer element class. Override the vmethods to implement the element
+functionality.">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="details">
+        <type name="ElementDetails" c:type="GstElementDetails"/>
+      </field>
+      <field name="elementfactory">
+        <type name="ElementFactory" c:type="GstElementFactory*"/>
+      </field>
+      <field name="padtemplates">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="numpadtemplates">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="pad_templ_cookie">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="pad_added">
+        <callback name="pad_added" c:type="pad_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pad_removed">
+        <callback name="pad_removed" c:type="pad_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="no_more_pads">
+        <callback name="no_more_pads" c:type="no_more_pads">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="request_new_pad">
+        <callback name="request_new_pad" c:type="request_new_pad">
+          <return-value transfer-ownership="full">
+            <type name="Pad" c:type="GstPad*"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="templ" transfer-ownership="none">
+              <type name="PadTemplate" c:type="GstPadTemplate*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="release_pad">
+        <callback name="release_pad" c:type="release_pad">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_state">
+        <callback name="get_state" c:type="get_state">
+          <return-value transfer-ownership="full">
+            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="state" transfer-ownership="none">
+              <type name="State" c:type="GstState*"/>
+            </parameter>
+            <parameter name="pending" transfer-ownership="none">
+              <type name="State" c:type="GstState*"/>
+            </parameter>
+            <parameter name="timeout" transfer-ownership="none">
+              <type name="ClockTime" c:type="GstClockTime"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_state">
+        <callback name="set_state" c:type="set_state">
+          <return-value transfer-ownership="full">
+            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="state" transfer-ownership="none">
+              <type name="State" c:type="GstState"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="change_state">
+        <callback name="change_state" c:type="change_state">
+          <return-value transfer-ownership="full">
+            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="transition" transfer-ownership="none">
+              <type name="StateChange" c:type="GstStateChange"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_bus">
+        <callback name="set_bus" c:type="set_bus">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="bus" transfer-ownership="none">
+              <type name="Bus" c:type="GstBus*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="provide_clock">
+        <callback name="provide_clock" c:type="provide_clock">
+          <return-value transfer-ownership="full">
+            <type name="Clock" c:type="GstClock*"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_clock">
+        <callback name="set_clock" c:type="set_clock">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_index">
+        <callback name="get_index" c:type="get_index">
+          <return-value transfer-ownership="full">
+            <type name="Index" c:type="GstIndex*"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_index">
+        <callback name="set_index" c:type="set_index">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="index" transfer-ownership="none">
+              <type name="Index" c:type="GstIndex*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="send_event">
+        <callback name="send_event" c:type="send_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Event" c:type="GstEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_query_types">
+        <callback name="get_query_types" c:type="get_query_types">
+          <return-value transfer-ownership="none">
+            <type name="QueryType" c:type="GstQueryType*"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query">
+        <callback name="query" c:type="query">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="query" transfer-ownership="none">
+              <type name="Query" c:type="GstQuery*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <method name="add_pad_template"
+              c:identifier="gst_element_class_add_pad_template"
+              doc="Adds a padtemplate to an element class. This is mainly used in the _base_init
+functions of classes.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="templ" transfer-ownership="none">
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pad_template"
+              c:identifier="gst_element_class_get_pad_template"
+              doc="Retrieves a padtemplate from @element_class with the given name.
+&lt;note&gt;If you use this function in the #GInstanceInitFunc of an object class
+that has subclasses, make sure to pass the g_class parameter of the
+#GInstanceInitFunc here.&lt;/note&gt;
+No unreferencing is necessary.">
+        <return-value transfer-ownership="full">
+          <type name="PadTemplate" c:type="GstPadTemplate*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pad_template_list"
+              c:identifier="gst_element_class_get_pad_template_list"
+              doc="Retrieves a list of the pad templates associated with @element_class. The
+list must not be modified by the calling code.
+&lt;note&gt;If you use this function in the #GInstanceInitFunc of an object class
+that has subclasses, make sure to pass the g_class parameter of the
+#GInstanceInitFunc here.&lt;/note&gt;">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="set_details"
+              c:identifier="gst_element_class_set_details"
+              doc="Sets the detailed information for a #GstElementClass.
+&lt;note&gt;This function is for use in _base_init functions only.&lt;/note&gt;
+The @details are copied."
+              deprecated="Use gst_element_class_set_details_simple() instead.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="details" transfer-ownership="none">
+            <type name="ElementDetails" c:type="GstElementDetails*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_details_simple"
+              c:identifier="gst_element_class_set_details_simple"
+              doc="separated with slashes (&apos;/&apos;). See draft-klass.txt of the design docs
+Sets the detailed information for a #GstElementClass. Simpler version of
+gst_element_class_set_details() that generates less linker overhead.
+&lt;note&gt;This function is for use in _base_init functions only.&lt;/note&gt;
+The detail parameter strings are copied into the #GstElementDetails for
+the element class."
+              version="0.10.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="longname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="classification" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="author"
+                     transfer-ownership="none"
+                     doc="Use \n to separate">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="install_std_props"
+              c:identifier="gst_element_class_install_std_props"
+              doc="in a NULL terminated
+further &apos;name&apos;, &apos;id&apos;, &apos;flags&apos; triplets and terminated by NULL.
+Adds a list of standardized properties with types to the @klass.
+the id is for the property switch in your get_prop method, and
+the flags determine readability / writeability.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="ElementDetails"
+            c:type="GstElementDetails"
+            doc="separated with slashes (&apos;/&apos;). See draft-klass.txt of the design docs
+for more details and common types
+This struct defines the public information about a #GstElement. It contains
+meta-data about the element that is mostly for the benefit of editors.
+The @klass member can be used by applications to filter elements based
+on functionality.">
+      <field name="longname" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="klass" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="author" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <class name="ElementFactory"
+           c:type="GstElementFactory"
+           doc="The opaque #GstElementFactory data structure."
+           parent="PluginFeature"
+           glib:type-name="GstElementFactory"
+           glib:get-type="gst_element_factory_get_type"
+           glib:type-struct="ElementFactoryClass">
+      <function name="find"
+                c:identifier="gst_element_factory_find"
+                doc="Search for an element factory of the given name. Refs the returned
+element factory; caller is responsible for unreffing.">
+        <return-value transfer-ownership="full">
+          <type name="ElementFactory" c:type="GstElementFactory*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="make"
+                c:identifier="gst_element_factory_make"
+                doc="Create a new element of the type defined by the given element factory.
+If name is NULL, then the element will receive a guaranteed unique name,
+consisting of the element factory name and a number.
+If name is given, it will be given the name supplied.">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="factoryname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_element_type"
+              c:identifier="gst_element_factory_get_element_type"
+              doc="Get the #GType for elements managed by this factory. The type can
+only be retrieved if the element factory is loaded, which can be
+assured with gst_plugin_feature_load().
+the factory is not loaded.">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="get_longname"
+              c:identifier="gst_element_factory_get_longname"
+              doc="Gets the longname for this factory">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_klass"
+              c:identifier="gst_element_factory_get_klass"
+              doc="Gets the class for this factory.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_description"
+              c:identifier="gst_element_factory_get_description"
+              doc="Gets the description for this factory.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_author"
+              c:identifier="gst_element_factory_get_author"
+              doc="Gets the author for this factory.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_num_pad_templates"
+              c:identifier="gst_element_factory_get_num_pad_templates"
+              doc="Gets the number of pad_templates in this factory.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_static_pad_templates"
+              c:identifier="gst_element_factory_get_static_pad_templates"
+              doc="Gets the #GList of #GstStaticPadTemplate for this factory.">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="get_uri_type"
+              c:identifier="gst_element_factory_get_uri_type"
+              doc="Gets the type of URIs the element supports or #GST_URI_UNKNOWN if none.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_uri_protocols"
+              c:identifier="gst_element_factory_get_uri_protocols"
+              doc="Gets a NULL-terminated array of protocols this element supports or NULL if
+no protocols are supported. You may not change the contents of the returned
+array, as it is still owned by the element factory. Use g_strdupv() to
+make a copy of the protocol string array if you need to.">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="has_interface"
+              c:identifier="gst_element_factory_has_interface"
+              doc="Check if @factory implements the interface with name @interfacename."
+              version="0.10.14">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="interfacename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create"
+              c:identifier="gst_element_factory_create"
+              doc="Create a new element of the type defined by the given elementfactory.
+It will be given the name supplied, since all elements require a name as
+their first argument.">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_src_caps"
+              c:identifier="gst_element_factory_can_src_caps"
+              doc="Checks if the factory can source the given capability.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_sink_caps"
+              c:identifier="gst_element_factory_can_sink_caps"
+              doc="Checks if the factory can sink the given capability.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent">
+        <type name="PluginFeature" c:type="GstPluginFeature"/>
+      </field>
+      <field name="type">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="details">
+        <type name="ElementDetails" c:type="GstElementDetails"/>
+      </field>
+      <field name="staticpadtemplates">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="numpadtemplates">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="uri_type">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="uri_protocols">
+        <type name="utf8" c:type="gchar**"/>
+      </field>
+      <field name="interfaces">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="ElementFactoryClass"
+            c:type="GstElementFactoryClass"
+            glib:is-gtype-struct-for="ElementFactory">
+      <field name="parent_class">
+        <type name="PluginFeatureClass" c:type="GstPluginFeatureClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="ElementFlags"
+              doc="gst_bin_remove() on a child already being removed immediately returns FALSE
+The standard flags that an element may have."
+              c:type="GstElementFlags">
+      <member name="locked_state"
+              value="16"
+              c:identifier="GST_ELEMENT_LOCKED_STATE"/>
+      <member name="is_sink" value="32" c:identifier="GST_ELEMENT_IS_SINK"/>
+      <member name="unparenting"
+              value="64"
+              c:identifier="GST_ELEMENT_UNPARENTING"/>
+      <member name="flag_last"
+              value="1048576"
+              c:identifier="GST_ELEMENT_FLAG_LAST"/>
+    </bitfield>
+    <record name="Event" c:type="GstEvent" doc="A #GstEvent.">
+      <field name="mini_object" writable="1">
+        <type name="MiniObject" c:type="GstMiniObject"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="EventType" c:type="GstEventType"/>
+      </field>
+      <field name="timestamp" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="src" writable="1">
+        <type name="Object" c:type="GstObject*"/>
+      </field>
+      <field name="structure" writable="1">
+        <type name="Structure" c:type="GstStructure*"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <field name="seqnum" writable="1">
+          <type name="uint32" c:type="guint32"/>
+        </field>
+        <field name="_gst_reserved" writable="1">
+          <type name="any" c:type="gpointer"/>
+        </field>
+      </union>
+      <constructor name="new_custom"
+                   c:identifier="gst_event_new_custom"
+                   doc="the structure.
+Create a new custom-typed event. This can be used for anything not
+handled by other event-specific functions to pass an event to another
+element.
+Make sure to allocate an event type with the #GST_EVENT_MAKE_TYPE macro,
+assigning a free number and filling in the correct direction and
+serialization flags.
+New custom events can also be created by subclassing the event type if
+needed.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="EventType" c:type="GstEventType"/>
+          </parameter>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_flush_start"
+                   c:identifier="gst_event_new_flush_start"
+                   doc="Allocate a new flush start event. The flush start event can be sent
+upstream and downstream and travels out-of-bounds with the dataflow.
+It marks pads as being flushing and will make them return
+#GST_FLOW_WRONG_STATE when used for data flow with gst_pad_push(),
+gst_pad_chain(), gst_pad_alloc_buffer(), gst_pad_get_range() and
+gst_pad_pull_range(). Any event (except a #GST_EVENT_FLUSH_STOP) received
+on a flushing pad will return %FALSE immediately.
+Elements should unlock any blocking functions and exit their streaming
+functions as fast as possible when this event is received.
+This event is typically generated after a seek to flush out all queued data
+in the pipeline so that the new media is played as soon as possible.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_flush_stop"
+                   c:identifier="gst_event_new_flush_stop"
+                   doc="Allocate a new flush stop event. The flush stop event can be sent
+upstream and downstream and travels serialized with the dataflow.
+It is typically sent after sending a FLUSH_START event to make the
+pads accept data again.
+Elements can process this event synchronized with the dataflow since
+the preceeding FLUSH_START event stopped the dataflow.
+This event is typically generated to complete a seek and to resume
+dataflow.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_eos"
+                   c:identifier="gst_event_new_eos"
+                   doc="Create a new EOS event. The eos event can only travel downstream
+synchronized with the buffer flow. Elements that receive the EOS
+event on a pad can return #GST_FLOW_UNEXPECTED as a #GstFlowReturn
+when data after the EOS event arrives.
+The EOS event will travel down to the sink elements in the pipeline
+which will then post the #GST_MESSAGE_EOS on the bus after they have
+finished playing any buffered data.
+When all sinks have posted an EOS message, an EOS message is
+forwarded to the application.
+The EOS event itself will not cause any state transitions of the pipeline.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_new_segment"
+                   c:identifier="gst_event_new_new_segment"
+                   doc="Allocate a new newsegment event with the given format/values tripplets
+This method calls gst_event_new_new_segment_full() passing a default
+value of 1.0 for applied_rate">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="update" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_new_segment_full"
+                   c:identifier="gst_event_new_new_segment_full"
+                   doc="Allocate a new newsegment event with the given format/values triplets.
+The newsegment event marks the range of buffers to be processed. All
+data not within the segment range is not to be processed. This can be
+used intelligently by plugins to apply more efficient methods of skipping
+unneeded data. The valid range is expressed with the @start and @stop
+values.
+The position value of the segment is used in conjunction with the start
+value to convert the buffer timestamps into the stream time. This is
+usually done in sinks to report the current stream_time.
+is a valid @stop given, it must be greater or equal the @start, including
+when the indicated playback @rate is &lt; 0.
+The @applied_rate value provides information about any rate adjustment that
+has already been made to the timestamps and content on the buffers of the
+stream. (@rate * @applied_rate) should always equal the rate that has been
+requested for playback. For example, if an element has an input segment
+with intended playback @rate of 2.0 and applied_rate of 1.0, it can adjust
+incoming timestamps and buffer content by half and output a newsegment event
+with @rate of 1.0 and @applied_rate of 2.0
+After a newsegment event, the buffer stream time is calculated with:
+position + (TIMESTAMP(buf) - start) * ABS (rate * applied_rate)"
+                   version="0.10.6">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="update" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="applied_rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_tag"
+                   c:identifier="gst_event_new_tag"
+                   doc="Generates a metadata tag event from the given @taglist.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="taglist" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_buffer_size"
+                   c:identifier="gst_event_new_buffer_size"
+                   doc="Create a new buffersize event. The event is sent downstream and notifies
+elements that they should provide a buffer of the specified dimensions.
+When the @async flag is set, a thread boundary is prefered.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="minsize" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="maxsize" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="async" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_qos"
+                   c:identifier="gst_event_new_qos"
+                   doc="Allocate a new qos event with the given values.
+The QOS event is generated in an element that wants an upstream
+element to either reduce or increase its rate because of
+high/low CPU load or other resource usage such as network performance.
+Typically sinks generate these events for each buffer they receive.
+element that generated the QoS event (usually the sink). The value is
+generally computed based on more long term statistics about the streams
+timestamps compared to the clock.
+A value &lt; 1.0 indicates that the upstream element is producing data faster
+than real-time. A value &gt; 1.0 indicates that the upstream element is not
+producing data fast enough. 1.0 is the ideal @proportion value. The
+proportion value can safely be used to lower or increase the quality of
+the element.
+buffer that caused the element to generate the QOS event. A negative value
+means that the buffer with @timestamp arrived in time. A positive value
+indicates how late the buffer with @timestamp was.
+to generate the QOS event. It is expressed in running time and thus an ever
+increasing value.
+The upstream element can use the @diff and @timestamp values to decide
+whether to process more buffers. For possitive @diff, all buffers with
+timestamp &lt;= @timestamp + @diff will certainly arrive late in the sink
+as well. A (negative) @diff value so that @timestamp + @diff would yield a
+result smaller than 0 is not allowed.
+The application can use general event probes to intercept the QoS
+event and implement custom application specific QoS handling.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="proportion" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="diff" transfer-ownership="none">
+            <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_seek"
+                   c:identifier="gst_event_new_seek"
+                   doc="Allocate a new seek event with the given parameters.
+The seek event configures playback of the pipeline between @start to @stop
+at the speed given in @rate, also called a playback segment.
+The @start and @stop values are expressed in @format.
+A @rate of 1.0 means normal playback rate, 2.0 means double speed.
+Negatives values means backwards playback. A value of 0.0 for the
+rate is not allowed and should be accomplished instead by PAUSING the
+pipeline.
+A pipeline has a default playback segment configured with a start
+position of 0, a stop position of -1 and a rate of 1.0. The currently
+configured playback segment can be queried with #GST_QUERY_SEGMENT.
+start and stop fields in playback segment. Adjustments can be made relative
+or absolute to the last configured values. A type of #GST_SEEK_TYPE_NONE
+means that the position should not be updated.
+When the rate is positive and @start has been updated, playback will start
+from the newly configured start position.
+For negative rates, playback will start from the newly configured stop
+position (if any). If the stop position if updated, it must be different from
+-1 for negative rates.
+It is not possible to seek relative to the current playback position, to do
+this, PAUSE the pipeline, query the current playback position with
+#GST_QUERY_POSITION and update the playback segment current position with a
+#GST_SEEK_TYPE_SET to the desired position.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="SeekFlags" c:type="GstSeekFlags"/>
+          </parameter>
+          <parameter name="start_type" transfer-ownership="none">
+            <type name="SeekType" c:type="GstSeekType"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop_type" transfer-ownership="none">
+            <type name="SeekType" c:type="GstSeekType"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_navigation"
+                   c:identifier="gst_event_new_navigation"
+                   doc="structure.
+Create a new navigation event from the given description.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_latency"
+                   c:identifier="gst_event_new_latency"
+                   doc="Create a new latency event. The event is sent upstream from the sinks and
+notifies elements that they should add an additional @latency to the
+running time before synchronising against the clock.
+The latency is mostly used in live sinks and is always expressed in
+the time format."
+                   version="0.10.12">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="latency" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_step"
+                   c:identifier="gst_event_new_step"
+                   doc="Create a new step event. The purpose of the step event is to instruct a sink
+to skip @amount (expressed in @format) of media. It can be used to implement
+stepping through the video frame by frame or for doing fast trick modes.
+A rate of &lt;= 0.0 is not allowed, pause the pipeline or reverse the playback
+direction of the pipeline to get the same effect.
+The @flush flag will clear any pending data in the pipeline before starting
+the step operation.
+The @intermediate flag instructs the pipeline that this step operation is
+part of a larger step operation."
+                   version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="amount" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="flush" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="intermediate" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_sink_message"
+                   c:identifier="gst_event_new_sink_message"
+                   doc="Create a new sink-message event. The purpose of the sink-message event is
+to instruct a sink to post the message contained in the event synchronized
+with the stream."
+                   version="0.10.26">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="msg" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_structure"
+              c:identifier="gst_event_get_structure"
+              doc="Access the structure of the event.
+owned by the event, which means that you should not free it and
+that the pointer becomes invalid when you free the event.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+      </method>
+      <method name="has_name"
+              c:identifier="gst_event_has_name"
+              doc="Checks if @event has the given @name. This function is usually used to
+check the name of a custom event."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_seqnum"
+              c:identifier="gst_event_get_seqnum"
+              doc="Retrieve the sequence number of a event.
+Events have ever-incrementing sequence numbers, which may also be set
+explicitly via gst_event_set_seqnum(). Sequence numbers are typically used to
+indicate that a event corresponds to some other set of events or messages,
+for example an EOS event corresponding to a SEEK event. It is considered good
+practice to make this correspondence when possible, though it is not
+required.
+Note that events and messages share the same sequence number incrementor;
+two events or messages will never not have the same sequence number unless
+that correspondence was made explicitly.
+MT safe."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="set_seqnum"
+              c:identifier="gst_event_set_seqnum"
+              doc="Set the sequence number of a event.
+This function might be called by the creator of a event to indicate that the
+event relates to other events or messages. See gst_event_get_seqnum() for
+more information.
+MT safe."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="seqnum" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_new_segment"
+              c:identifier="gst_event_parse_new_segment"
+              doc="Get the update flag, rate, format, start, stop and position in the
+newsegment event. In general, gst_event_parse_new_segment_full() should
+be used instead of this, to also retrieve the applied_rate value of the
+segment. See gst_event_new_new_segment_full() for a full description
+of the newsegment event.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="update" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="rate" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="start" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="stop" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="position" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_new_segment_full"
+              c:identifier="gst_event_parse_new_segment_full"
+              doc="Get the update, rate, applied_rate, format, start, stop and
+position in the newsegment event. See gst_event_new_new_segment_full()
+for a full description of the newsegment event."
+              version="0.10.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="update" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="rate" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="applied_rate"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="start" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="stop" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="position" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_tag"
+              c:identifier="gst_event_parse_tag"
+              doc="Parses a tag @event and stores the results in the given @taglist location.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="taglist" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_buffer_size"
+              c:identifier="gst_event_parse_buffer_size"
+              doc="Get the format, minsize, maxsize and async-flag in the buffersize event.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="minsize" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="maxsize" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="async" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_qos"
+              c:identifier="gst_event_parse_qos"
+              doc="Get the proportion, diff and timestamp in the qos event. See
+gst_event_new_qos() for more information about the different QoS values.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="proportion"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="diff" transfer-ownership="none">
+            <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_seek"
+              c:identifier="gst_event_parse_seek"
+              doc="Parses a seek @event and stores the results in the given result locations.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rate" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="SeekFlags" c:type="GstSeekFlags*"/>
+          </parameter>
+          <parameter name="start_type" transfer-ownership="none">
+            <type name="SeekType" c:type="GstSeekType*"/>
+          </parameter>
+          <parameter name="start" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="stop_type" transfer-ownership="none">
+            <type name="SeekType" c:type="GstSeekType*"/>
+          </parameter>
+          <parameter name="stop" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_latency"
+              c:identifier="gst_event_parse_latency"
+              doc="Get the latency in the latency event."
+              version="0.10.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="latency" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_step"
+              c:identifier="gst_event_parse_step"
+              doc="Parse the step event."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="amount" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="rate" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="flush" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="intermediate"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_sink_message"
+              c:identifier="gst_event_parse_sink_message"
+              doc="Parse the sink-message event. Unref @msg after usage."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msg" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage**"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="EventClass" c:type="GstEventClass">
+      <field name="mini_object_class" writable="1">
+        <type name="MiniObjectClass" c:type="GstMiniObjectClass"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="EventType"
+              doc="without a NEWSEGMENT event.
+send messages that should be emitted in sync with
+rendering.
+that the downstream elements are being starved of or
+flooded with data.
+user requests, such as mouse or keyboard movements,
+to upstream elements.
+data flow.
+In-band when travelling downstream.
+#GstEventType lists the standard event types that can be sent in a pipeline.
+The custom event types can be used for private messages between elements
+that can&apos;t be expressed using normal
+GStreamer buffer passing semantics. Custom events carry an arbitrary
+#GstStructure.
+Specific custom events are distinguished by the name of the structure."
+              c:type="GstEventType">
+      <member name="unknown" value="0" c:identifier="GST_EVENT_UNKNOWN"/>
+      <member name="flush_start"
+              value="19"
+              c:identifier="GST_EVENT_FLUSH_START"/>
+      <member name="flush_stop"
+              value="39"
+              c:identifier="GST_EVENT_FLUSH_STOP"/>
+      <member name="eos" value="86" c:identifier="GST_EVENT_EOS"/>
+      <member name="newsegment"
+              value="102"
+              c:identifier="GST_EVENT_NEWSEGMENT"/>
+      <member name="tag" value="118" c:identifier="GST_EVENT_TAG"/>
+      <member name="buffersize"
+              value="134"
+              c:identifier="GST_EVENT_BUFFERSIZE"/>
+      <member name="sink_message"
+              value="150"
+              c:identifier="GST_EVENT_SINK_MESSAGE"/>
+      <member name="qos" value="241" c:identifier="GST_EVENT_QOS"/>
+      <member name="seek" value="257" c:identifier="GST_EVENT_SEEK"/>
+      <member name="navigation"
+              value="273"
+              c:identifier="GST_EVENT_NAVIGATION"/>
+      <member name="latency" value="289" c:identifier="GST_EVENT_LATENCY"/>
+      <member name="step" value="305" c:identifier="GST_EVENT_STEP"/>
+      <member name="custom_upstream"
+              value="513"
+              c:identifier="GST_EVENT_CUSTOM_UPSTREAM"/>
+      <member name="custom_downstream"
+              value="518"
+              c:identifier="GST_EVENT_CUSTOM_DOWNSTREAM"/>
+      <member name="custom_downstream_oob"
+              value="514"
+              c:identifier="GST_EVENT_CUSTOM_DOWNSTREAM_OOB"/>
+      <member name="custom_both"
+              value="519"
+              c:identifier="GST_EVENT_CUSTOM_BOTH"/>
+      <member name="custom_both_oob"
+              value="515"
+              c:identifier="GST_EVENT_CUSTOM_BOTH_OOB"/>
+    </bitfield>
+    <bitfield name="EventTypeFlags"
+              doc="flow.
+#GstEventTypeFlags indicate the aspects of the different #GstEventType
+values. You can get the type flags of a #GstEventType with the
+gst_event_type_get_flags() function."
+              c:type="GstEventTypeFlags">
+      <member name="upstream"
+              value="1"
+              c:identifier="GST_EVENT_TYPE_UPSTREAM"/>
+      <member name="downstream"
+              value="2"
+              c:identifier="GST_EVENT_TYPE_DOWNSTREAM"/>
+      <member name="serialized"
+              value="4"
+              c:identifier="GST_EVENT_TYPE_SERIALIZED"/>
+    </bitfield>
+    <constant name="FOURCC_FORMAT" value="c%c%c%c">
+      <type name="utf8"/>
+    </constant>
+    <callback name="FilterFunc"
+              c:type="GstFilterFunc"
+              doc="Function prototype for a filter callback taht can be use in gst_filter_run().
+The function should apply its filtering to @obj. Additional data passed to
+gst_filter_run() are in @data.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="FlowReturn"
+                 doc="sent yet) (unused/unimplemented).
+this error should post an error message with more
+details.
+this (and higher) to define custom success
+codes. Since 0.10.7.
+custom success code to this to avoid compiler
+warnings). Since 0.10.29.
+this (and lower) to define custom error codes.
+Since 0.10.7.
+custom error code to this to avoid compiler
+warnings). Since 0.10.29.
+The result of passing data to a pad.
+Note that the custom return values should not be exposed outside of the
+element scope and are available since 0.10.7."
+                 c:type="GstFlowReturn">
+      <member name="custom_success_2"
+              value="102"
+              c:identifier="GST_FLOW_CUSTOM_SUCCESS_2"/>
+      <member name="custom_success_1"
+              value="101"
+              c:identifier="GST_FLOW_CUSTOM_SUCCESS_1"/>
+      <member name="custom_success"
+              value="100"
+              c:identifier="GST_FLOW_CUSTOM_SUCCESS"/>
+      <member name="resend" value="1" c:identifier="GST_FLOW_RESEND"/>
+      <member name="ok" value="0" c:identifier="GST_FLOW_OK"/>
+      <member name="not_linked" value="-1" c:identifier="GST_FLOW_NOT_LINKED"/>
+      <member name="wrong_state"
+              value="-2"
+              c:identifier="GST_FLOW_WRONG_STATE"/>
+      <member name="unexpected" value="-3" c:identifier="GST_FLOW_UNEXPECTED"/>
+      <member name="not_negotiated"
+              value="-4"
+              c:identifier="GST_FLOW_NOT_NEGOTIATED"/>
+      <member name="error" value="-5" c:identifier="GST_FLOW_ERROR"/>
+      <member name="not_supported"
+              value="-6"
+              c:identifier="GST_FLOW_NOT_SUPPORTED"/>
+      <member name="custom_error"
+              value="-100"
+              c:identifier="GST_FLOW_CUSTOM_ERROR"/>
+      <member name="custom_error_1"
+              value="-101"
+              c:identifier="GST_FLOW_CUSTOM_ERROR_1"/>
+      <member name="custom_error_2"
+              value="-102"
+              c:identifier="GST_FLOW_CUSTOM_ERROR_2"/>
+    </enumeration>
+    <enumeration name="Format"
+                 doc="samples for raw audio, frames/fields for raw video (some, but not all,
+elements support this; use @GST_FORMAT_TIME if you don&apos;t have a good
+reason to query for samples/frames)
+May 2009)
+this as of May 2009)
+Standard predefined formats"
+                 c:type="GstFormat">
+      <member name="undefined" value="0" c:identifier="GST_FORMAT_UNDEFINED"/>
+      <member name="default" value="1" c:identifier="GST_FORMAT_DEFAULT"/>
+      <member name="bytes" value="2" c:identifier="GST_FORMAT_BYTES"/>
+      <member name="time" value="3" c:identifier="GST_FORMAT_TIME"/>
+      <member name="buffers" value="4" c:identifier="GST_FORMAT_BUFFERS"/>
+      <member name="percent" value="5" c:identifier="GST_FORMAT_PERCENT"/>
+    </enumeration>
+    <record name="FormatDefinition"
+            c:type="GstFormatDefinition"
+            doc="A format definition">
+      <field name="value" writable="1">
+        <type name="Format" c:type="GstFormat"/>
+      </field>
+      <field name="nick" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="quark" writable="1">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </field>
+    </record>
+    <glib:boxed c:type="GstGError"
+                glib:name="GError"
+                glib:type-name="GstGError"
+                glib:get-type="gst_g_error_get_type">
+    </glib:boxed>
+    <class name="GhostPad"
+           c:type="GstGhostPad"
+           doc="Opaque #GstGhostPad structure."
+           parent="ProxyPad"
+           glib:type-name="GstGhostPad"
+           glib:get-type="gst_ghost_pad_get_type"
+           glib:type-struct="GhostPadClass">
+      <constructor name="new"
+                   c:identifier="gst_ghost_pad_new"
+                   doc="Create a new ghostpad with @target as the target. The direction will be taken
+from the target pad. @target must be unlinked.
+Will ref the target.">
+        <return-value transfer-ownership="full">
+          <type name="GhostPad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_no_target"
+                   c:identifier="gst_ghost_pad_new_no_target"
+                   doc="Create a new ghostpad without a target with the given direction.
+A target can be set on the ghostpad later with the
+gst_ghost_pad_set_target() function.
+The created ghostpad will not have a padtemplate.">
+        <return-value transfer-ownership="full">
+          <type name="GhostPad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="dir" transfer-ownership="none">
+            <type name="PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_template"
+                   c:identifier="gst_ghost_pad_new_from_template"
+                   doc="Create a new ghostpad with @target as the target. The direction will be taken
+from the target pad. The template used on the ghostpad will be @template.
+Will ref the target."
+                   version="0.10.10">
+        <return-value transfer-ownership="full">
+          <type name="GhostPad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+          <parameter name="templ" transfer-ownership="none">
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_no_target_from_template"
+                   c:identifier="gst_ghost_pad_new_no_target_from_template"
+                   doc="Create a new ghostpad based on @templ, without setting a target. The
+direction will be taken from the @templ."
+                   version="0.10.10">
+        <return-value transfer-ownership="full">
+          <type name="GhostPad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="templ" transfer-ownership="none">
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_target"
+              c:identifier="gst_ghost_pad_get_target"
+              doc="Get the target pad of @gpad. Unref target pad after usage.
+has no target set. Unref target pad after usage.">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+      </method>
+      <method name="set_target"
+              c:identifier="gst_ghost_pad_set_target"
+              doc="Set the new target of the ghostpad @gpad. Any existing target
+is unlinked and links to the new target are established. if @newtarget is
+NULL the target will be cleared.
+when the internal pads could not be linked.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="newtarget" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="construct"
+              c:identifier="gst_ghost_pad_construct"
+              doc="Finish initialization of a newly allocated ghost pad.
+This function is most useful in language bindings and when subclassing
+#GstGhostPad; plugin and application developers normally will not call this
+function. Call this function directly after a call to g_object_new
+(GST_TYPE_GHOST_PAD, &quot;direction&quot;, @dir, ..., NULL)."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <field name="pad">
+        <type name="ProxyPad" c:type="GstProxyPad"/>
+      </field>
+      <field name="priv">
+        <type name="GhostPadPrivate" c:type="GstGhostPadPrivate*"/>
+      </field>
+    </class>
+    <record name="GhostPadClass"
+            c:type="GstGhostPadClass"
+            glib:is-gtype-struct-for="GhostPad">
+      <field name="parent_class">
+        <type name="ProxyPadClass" c:type="GstProxyPadClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="GhostPadPrivate" c:type="GstGhostPadPrivate">
+    </record>
+    <constant name="INDEX_ID_INVALID" value="-1">
+      <type name="int"/>
+    </constant>
+    <interface name="ImplementsInterface"
+               c:type="GstImplementsInterface"
+               doc="Opaque #GstImplementsInterface structure."
+               glib:type-name="GstImplementsInterface"
+               glib:get-type="gst_implements_interface_get_type"
+               glib:type-struct="ImplementsInterfaceClass">
+      <prerequisite name="Element"/>
+      <virtual-method name="supported">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iface_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+    </interface>
+    <record name="ImplementsInterfaceClass"
+            c:type="GstImplementsInterfaceClass"
+            glib:is-gtype-struct-for="ImplementsInterface">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="supported">
+        <callback name="supported" c:type="supported">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="iface" transfer-ownership="none">
+              <type name="ImplementsInterface"
+                    c:type="GstImplementsInterface*"/>
+            </parameter>
+            <parameter name="iface_type" transfer-ownership="none">
+              <type name="GType" c:type="GType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <class name="Index"
+           c:type="GstIndex"
+           doc="Opaque #GstIndex structure."
+           parent="Object"
+           glib:type-name="GstIndex"
+           glib:get-type="gst_index_get_type"
+           glib:type-struct="IndexClass">
+      <constructor name="new"
+                   c:identifier="gst_index_new"
+                   doc="Create a new tileindex object">
+        <return-value transfer-ownership="full">
+          <type name="Index" c:type="GstIndex*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="get_writer_id">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="writer_id"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="writer_string" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="commit" invoker="commit">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="add_entry">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry" transfer-ownership="none">
+            <type name="IndexEntry" c:type="GstIndexEntry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_assoc_entry">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="method" transfer-ownership="none">
+            <type name="IndexLookupMethod" c:type="GstIndexLookupMethod"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AssocFlags" c:type="GstAssocFlags"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="func" transfer-ownership="none">
+            <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="7">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="commit"
+              c:identifier="gst_index_commit"
+              doc="Tell the index that the writer with the given id is done
+with this index and is not going to write any more entries
+to it.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_group"
+              c:identifier="gst_index_get_group"
+              doc="Get the id of the current group.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="new_group"
+              c:identifier="gst_index_new_group"
+              doc="Create a new group for the given index. It will be
+set as the current group.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_group"
+              c:identifier="gst_index_set_group"
+              doc="Set the current groupnumber to the given argument.
+did not exist.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="groupnum" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_certainty"
+              c:identifier="gst_index_set_certainty"
+              doc="Set the certainty of the given index.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="certainty" transfer-ownership="none">
+            <type name="IndexCertainty" c:type="GstIndexCertainty"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_certainty"
+              c:identifier="gst_index_get_certainty"
+              doc="Get the certainty of the given index.">
+        <return-value transfer-ownership="full">
+          <type name="IndexCertainty" c:type="GstIndexCertainty"/>
+        </return-value>
+      </method>
+      <method name="set_filter"
+              c:identifier="gst_index_set_filter"
+              doc="Lets the app register a custom filter function so that
+it can select what entries should be stored in the index.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="IndexFilter" c:type="GstIndexFilter"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_filter_full"
+              c:identifier="gst_index_set_filter_full"
+              doc="Lets the app register a custom filter function so that
+it can select what entries should be stored in the index.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="IndexFilter" c:type="GstIndexFilter"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="user_data_destroy"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_resolver"
+              c:identifier="gst_index_set_resolver"
+              doc="Lets the app register a custom function to map index
+ids to writer descriptions.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="resolver"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="IndexResolver" c:type="GstIndexResolver"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_resolver_full"
+              c:identifier="gst_index_set_resolver_full"
+              doc="Lets the app register a custom function to map index
+ids to writer descriptions."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="resolver"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="IndexResolver" c:type="GstIndexResolver"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="user_data_destroy"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_writer_id"
+              c:identifier="gst_index_get_writer_id"
+              doc="Before entries can be added to the index, a writer
+should obtain a unique id. The methods to add new entries
+to the index require this id as an argument.
+The application can implement a custom function to map the writer object
+to a string. That string will be used to register or look up an id
+in the index.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="writer" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="id" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_format"
+              c:identifier="gst_index_add_format"
+              doc="Adds a format entry into the index. This function is
+used to map dynamic GstFormat ids to their original
+format key.">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_associationv"
+              c:identifier="gst_index_add_associationv"
+              doc="Associate given format/value pairs with each other.">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AssocFlags" c:type="GstAssocFlags"/>
+          </parameter>
+          <parameter name="n" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="list" transfer-ownership="none">
+            <type name="IndexAssociation" c:type="GstIndexAssociation*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_association"
+              c:identifier="gst_index_add_association"
+              doc="Associate given format/value pairs with each other.
+Be sure to pass gint64 values to this functions varargs,
+you might want to use a gint64 cast to be sure.">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AssocFlags" c:type="GstAssocFlags"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_object"
+              c:identifier="gst_index_add_object"
+              doc="Add the given object to the index with the given key.
+This function is not yet implemented.">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_id"
+              c:identifier="gst_index_add_id"
+              doc="Add an id entry into the index.">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_assoc_entry"
+              c:identifier="gst_index_get_assoc_entry"
+              doc="Finds the given format/value in the index
+value was not found.">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="method" transfer-ownership="none">
+            <type name="IndexLookupMethod" c:type="GstIndexLookupMethod"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AssocFlags" c:type="GstAssocFlags"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_assoc_entry_full"
+              c:identifier="gst_index_get_assoc_entry_full"
+              doc="Finds the given format/value in the index with the given
+compare function and user_data.
+value was not found.">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="method" transfer-ownership="none">
+            <type name="IndexLookupMethod" c:type="GstIndexLookupMethod"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AssocFlags" c:type="GstAssocFlags"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="7">
+            <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="resolver" writable="1">
+        <type name="IndexResolver" c:type="GstIndexResolver"/>
+      </property>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="groups">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="curgroup">
+        <type name="IndexGroup" c:type="GstIndexGroup*"/>
+      </field>
+      <field name="maxgroup">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="method">
+        <type name="IndexResolverMethod" c:type="GstIndexResolverMethod"/>
+      </field>
+      <field name="resolver">
+        <type name="IndexResolver" c:type="GstIndexResolver"/>
+      </field>
+      <field name="resolver_user_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="filter">
+        <type name="IndexFilter" c:type="GstIndexFilter"/>
+      </field>
+      <field name="filter_user_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="filter_user_data_destroy">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <field name="writers">
+        <type name="GLib.HashTable" c:type="GHashTable*"/>
+      </field>
+      <field name="last_id">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="resolver_user_data_destroy">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+      <glib:signal name="entry-added">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="IndexEntry" c:type="GstIndexEntry"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="IndexAssociation"
+            c:type="GstIndexAssociation"
+            doc="An association in an entry.">
+      <field name="format" writable="1">
+        <type name="Format" c:type="GstFormat"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+    </record>
+    <enumeration name="IndexCertainty"
+                 doc="The certainty of a group in the index."
+                 c:type="GstIndexCertainty">
+      <member name="unknown" value="0" c:identifier="GST_INDEX_UNKNOWN"/>
+      <member name="certain" value="1" c:identifier="GST_INDEX_CERTAIN"/>
+      <member name="fuzzy" value="2" c:identifier="GST_INDEX_FUZZY"/>
+    </enumeration>
+    <record name="IndexClass"
+            c:type="GstIndexClass"
+            glib:is-gtype-struct-for="Index">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="get_writer_id">
+        <callback name="get_writer_id" c:type="get_writer_id">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="index" transfer-ownership="none">
+              <type name="Index" c:type="GstIndex*"/>
+            </parameter>
+            <parameter name="writer_id"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+            <parameter name="writer_string" transfer-ownership="full">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="commit">
+        <callback name="commit" c:type="commit">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="index" transfer-ownership="none">
+              <type name="Index" c:type="GstIndex*"/>
+            </parameter>
+            <parameter name="id" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_entry">
+        <callback name="add_entry" c:type="add_entry">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="index" transfer-ownership="none">
+              <type name="Index" c:type="GstIndex*"/>
+            </parameter>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="IndexEntry" c:type="GstIndexEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_assoc_entry">
+        <callback name="get_assoc_entry" c:type="get_assoc_entry">
+          <return-value transfer-ownership="full">
+            <type name="IndexEntry" c:type="GstIndexEntry*"/>
+          </return-value>
+          <parameters>
+            <parameter name="index" transfer-ownership="none">
+              <type name="Index" c:type="GstIndex*"/>
+            </parameter>
+            <parameter name="id" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="method" transfer-ownership="none">
+              <type name="IndexLookupMethod" c:type="GstIndexLookupMethod"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="AssocFlags" c:type="GstAssocFlags"/>
+            </parameter>
+            <parameter name="format" transfer-ownership="none">
+              <type name="Format" c:type="GstFormat"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="int64" c:type="gint64"/>
+            </parameter>
+            <parameter name="func" transfer-ownership="none">
+              <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="7">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="entry_added">
+        <callback name="entry_added" c:type="entry_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="index" transfer-ownership="none">
+              <type name="Index" c:type="GstIndex*"/>
+            </parameter>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="IndexEntry" c:type="GstIndexEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="IndexEntry"
+            c:type="GstIndexEntry"
+            doc="The basic element of an index."
+            glib:type-name="GstIndexEntry"
+            glib:get-type="gst_index_entry_get_type">
+      <field name="type" writable="1">
+        <type name="IndexEntryType" c:type="GstIndexEntryType"/>
+      </field>
+      <field name="id" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <union name="data" c:type="data">
+        <record name="id" c:type="id">
+          <field name="description" writable="1">
+            <type name="utf8" c:type="gchar*"/>
+          </field>
+        </record>
+        <record name="assoc" c:type="assoc">
+          <field name="nassocs" writable="1">
+            <type name="int" c:type="gint"/>
+          </field>
+          <field name="assocs" writable="1">
+            <type name="IndexAssociation" c:type="GstIndexAssociation*"/>
+          </field>
+          <field name="flags" writable="1">
+            <type name="AssocFlags" c:type="GstAssocFlags"/>
+          </field>
+        </record>
+        <record name="object" c:type="object">
+          <field name="key" writable="1">
+            <type name="utf8" c:type="gchar*"/>
+          </field>
+          <field name="type" writable="1">
+            <type name="GType" c:type="GType"/>
+          </field>
+          <field name="object" writable="1">
+            <type name="any" c:type="gpointer"/>
+          </field>
+        </record>
+        <record name="format" c:type="format">
+          <field name="format" writable="1">
+            <type name="Format" c:type="GstFormat"/>
+          </field>
+          <field name="key" writable="1">
+            <type name="utf8" c:type="gchar*"/>
+          </field>
+        </record>
+      </union>
+      <method name="copy"
+              c:identifier="gst_index_entry_copy"
+              doc="Copies an entry and returns the result.">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gst_index_entry_free"
+              doc="Free the memory used by the given entry.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="assoc_map"
+              c:identifier="gst_index_entry_assoc_map"
+              doc="Gets alternative formats associated with the indexentry.
+format.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="IndexEntryType"
+                 doc="The different types of entries in the index."
+                 c:type="GstIndexEntryType">
+      <member name="id" value="0" c:identifier="GST_INDEX_ENTRY_ID"/>
+      <member name="association"
+              value="1"
+              c:identifier="GST_INDEX_ENTRY_ASSOCIATION"/>
+      <member name="object" value="2" c:identifier="GST_INDEX_ENTRY_OBJECT"/>
+      <member name="format" value="3" c:identifier="GST_INDEX_ENTRY_FORMAT"/>
+    </enumeration>
+    <class name="IndexFactory"
+           c:type="GstIndexFactory"
+           doc="The GstIndexFactory object"
+           parent="PluginFeature"
+           glib:type-name="GstIndexFactory"
+           glib:get-type="gst_index_factory_get_type"
+           glib:type-struct="IndexFactoryClass">
+      <constructor name="new"
+                   c:identifier="gst_index_factory_new"
+                   doc="Create a new indexfactory with the given parameters">
+        <return-value transfer-ownership="full">
+          <type name="IndexFactory" c:type="GstIndexFactory*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="longdesc" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="find"
+                c:identifier="gst_index_factory_find"
+                doc="Search for an indexfactory of the given name.">
+        <return-value transfer-ownership="full">
+          <type name="IndexFactory" c:type="GstIndexFactory*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="make"
+                c:identifier="gst_index_factory_make"
+                doc="Create a new #GstIndex instance from the
+indexfactory with the given name.">
+        <return-value transfer-ownership="full">
+          <type name="Index" c:type="GstIndex*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="destroy"
+              c:identifier="gst_index_factory_destroy"
+              doc="Removes the index from the global list.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="create"
+              c:identifier="gst_index_factory_create"
+              doc="Create a new #GstIndex instance from the
+given indexfactory.">
+        <return-value transfer-ownership="full">
+          <type name="Index" c:type="GstIndex*"/>
+        </return-value>
+      </method>
+      <field name="feature">
+        <type name="PluginFeature" c:type="GstPluginFeature"/>
+      </field>
+      <field name="longdesc">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="type">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="IndexFactoryClass"
+            c:type="GstIndexFactoryClass"
+            glib:is-gtype-struct-for="IndexFactory">
+      <field name="parent">
+        <type name="PluginFeatureClass" c:type="GstPluginFeatureClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="IndexFilter"
+              c:type="GstIndexFilter"
+              doc="Function to filter out entries in the index.
+to the index, %FALSE otherwise.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="Index" c:type="GstIndex*"/>
+        </parameter>
+        <parameter name="entry" transfer-ownership="none">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="IndexFlags"
+              doc="Flags for this index"
+              c:type="GstIndexFlags">
+      <member name="writable" value="16" c:identifier="GST_INDEX_WRITABLE"/>
+      <member name="readable" value="32" c:identifier="GST_INDEX_READABLE"/>
+      <member name="flag_last"
+              value="4096"
+              c:identifier="GST_INDEX_FLAG_LAST"/>
+    </bitfield>
+    <record name="IndexGroup"
+            c:type="GstIndexGroup"
+            doc="A group of related entries in an index.">
+      <field name="groupnum" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="entries" writable="1">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="certainty" writable="1">
+        <type name="IndexCertainty" c:type="GstIndexCertainty"/>
+      </field>
+      <field name="peergroup" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+    </record>
+    <enumeration name="IndexLookupMethod"
+                 doc="Specify the method to find an index entry in the index."
+                 c:type="GstIndexLookupMethod">
+      <member name="exact" value="0" c:identifier="GST_INDEX_LOOKUP_EXACT"/>
+      <member name="before" value="1" c:identifier="GST_INDEX_LOOKUP_BEFORE"/>
+      <member name="after" value="2" c:identifier="GST_INDEX_LOOKUP_AFTER"/>
+    </enumeration>
+    <callback name="IndexResolver"
+              c:type="GstIndexResolver"
+              doc="Function to resolve ids to writer descriptions.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="Index" c:type="GstIndex*"/>
+        </parameter>
+        <parameter name="writer" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="writer_string" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="IndexResolverMethod"
+                 doc="The method used to resolve index writers"
+                 c:type="GstIndexResolverMethod">
+      <member name="custom"
+              value="0"
+              c:identifier="GST_INDEX_RESOLVER_CUSTOM"/>
+      <member name="gtype" value="1" c:identifier="GST_INDEX_RESOLVER_GTYPE"/>
+      <member name="path" value="2" c:identifier="GST_INDEX_RESOLVER_PATH"/>
+    </enumeration>
+    <record name="Iterator"
+            c:type="GstIterator"
+            doc="created.
+#GstIterator base structure. The values of this structure are
+protected for subclasses, use the methods to use the #GstIterator.">
+      <field name="next" writable="1">
+        <type name="IteratorNextFunction" c:type="GstIteratorNextFunction"/>
+      </field>
+      <field name="item" writable="1">
+        <type name="IteratorItemFunction" c:type="GstIteratorItemFunction"/>
+      </field>
+      <field name="resync" writable="1">
+        <type name="IteratorResyncFunction"
+              c:type="GstIteratorResyncFunction"/>
+      </field>
+      <field name="free" writable="1">
+        <type name="IteratorFreeFunction" c:type="GstIteratorFreeFunction"/>
+      </field>
+      <field name="pushed" writable="1">
+        <type name="Iterator" c:type="GstIterator*"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="lock" writable="1">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="cookie" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="master_cookie" writable="1">
+        <type name="any" c:type="guint32*"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_iterator_new"
+                   doc="iterator changed.
+Create a new iterator. This function is mainly used for objects
+implementing the next/resync/free function to iterate a data structure.
+For each item retrieved, the @item function is called with the lock
+held. The @free function is called when the iterator is freed.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="lock" transfer-ownership="none">
+            <type name="GLib.Mutex" c:type="GMutex*"/>
+          </parameter>
+          <parameter name="master_cookie"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="next" transfer-ownership="none" scope="call">
+            <type name="IteratorNextFunction"
+                  c:type="GstIteratorNextFunction"/>
+          </parameter>
+          <parameter name="item" transfer-ownership="none" scope="call">
+            <type name="IteratorItemFunction"
+                  c:type="GstIteratorItemFunction"/>
+          </parameter>
+          <parameter name="resync" transfer-ownership="none" scope="call">
+            <type name="IteratorResyncFunction"
+                  c:type="GstIteratorResyncFunction"/>
+          </parameter>
+          <parameter name="free" transfer-ownership="none" scope="call">
+            <type name="IteratorFreeFunction"
+                  c:type="GstIteratorFreeFunction"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_list"
+                   c:identifier="gst_iterator_new_list"
+                   doc="is changed.
+Create a new iterator designed for iterating @list.
+The list you iterate is usually part of a data structure @owner and is
+protected with @lock.
+The iterator will use @lock to retrieve the next item of the list and it
+will then call the @item function before releasing @lock again.
+The @item function usualy makes sure that the item remains alive while
+responsible for freeing/unreffing the item after usage as explained in
+gst_iterator_next().
+When a concurrent update to the list is performed, usually by @owner while
+holding @lock, @master_cookie will be updated. The iterator implementation
+will notice the update of the cookie and will return %GST_ITERATOR_RESYNC to
+the user of the iterator in the next call to gst_iterator_next().
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="lock" transfer-ownership="none">
+            <type name="GLib.Mutex" c:type="GMutex*"/>
+          </parameter>
+          <parameter name="master_cookie"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="list" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList**"/>
+          </parameter>
+          <parameter name="owner" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="item" transfer-ownership="none" scope="call">
+            <type name="IteratorItemFunction"
+                  c:type="GstIteratorItemFunction"/>
+          </parameter>
+          <parameter name="free" transfer-ownership="none" scope="call">
+            <type name="IteratorDisposeFunction"
+                  c:type="GstIteratorDisposeFunction"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_single"
+                   c:identifier="gst_iterator_new_single"
+                   doc="This #GstIterator is a convenient iterator for the common
+case where a #GstIterator needs to be returned but only
+a single object has to be considered. This happens often
+for the #GstPadIterIntLinkFunction."
+                   version="0.10.25">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="copy" transfer-ownership="none" scope="call">
+            <type name="CopyFunction" c:type="GstCopyFunction"/>
+          </parameter>
+          <parameter name="free" transfer-ownership="none" scope="call">
+            <type name="GLib.FreeFunc" c:type="GFreeFunc"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="next"
+              c:identifier="gst_iterator_next"
+              doc="Get the next item from the iterator in @elem.
+Only when this function returns %GST_ITERATOR_OK, @elem will contain a valid
+value. For iterators that return refcounted objects, the returned object
+will have its refcount increased and should therefore be unreffed after
+usage.
+When this function returns %GST_ITERATOR_DONE, no more elements can be
+retrieved from @it.
+A return value of %GST_ITERATOR_RESYNC indicates that the element list was
+concurrently updated. The user of @it should call gst_iterator_resync() to
+get the newly updated list.
+A return value of %GST_ITERATOR_ERROR indicates an unrecoverable fatal error.
+is a refcounted object.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="IteratorResult" c:type="GstIteratorResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="elem" transfer-ownership="none">
+            <type name="any" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="resync"
+              c:identifier="gst_iterator_resync"
+              doc="Resync the iterator. this function is mostly called
+after gst_iterator_next() returned %GST_ITERATOR_RESYNC.
+When an iterator was pushed on @it, it will automatically be popped again
+with this function.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gst_iterator_free"
+              doc="Free the iterator.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="push"
+              c:identifier="gst_iterator_push"
+              doc="Pushes @other iterator onto @it. All calls performed on @it are
+forwarded to @other. If @other returns %GST_ITERATOR_DONE, it is
+popped again and calls are handled by @it again.
+This function is mainly used by objects implementing the iterator
+next function to recurse into substructures.
+When gst_iterator_resync() is called on @it, @other will automatically be
+popped.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="other" transfer-ownership="none">
+            <type name="Iterator" c:type="GstIterator*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="filter"
+              c:identifier="gst_iterator_filter"
+              doc="Create a new iterator from an existing iterator. The new iterator
+will only return those elements that match the given compare function @func.
+in the iterator.
+When this iterator is freed, @it will also be freed.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="GLib.CompareFunc" c:type="GCompareFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fold"
+              c:identifier="gst_iterator_fold"
+              doc="Folds @func over the elements of @iter. That is to say, @func will be called
+as @func (object, @ret, @user_data) for each object in @it. The normal use
+of this procedure is to accumulate the results of operating on the objects in
+before @func is called, and it should be unrefed after use in @func.
+This procedure can be used (and is used internally) to implement the
+gst_iterator_foreach() and gst_iterator_find_custom() operations.
+The fold will proceed as long as @func returns TRUE. When the iterator has no
+more arguments, %GST_ITERATOR_DONE will be returned. If @func returns FALSE,
+the fold will stop, and %GST_ITERATOR_OK will be returned. Errors or resyncs
+will cause fold to return %GST_ITERATOR_ERROR or %GST_ITERATOR_RESYNC as
+appropriate.
+The iterator will not be freed.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="IteratorResult" c:type="GstIteratorResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" scope="call">
+            <type name="IteratorFoldFunction"
+                  c:type="GstIteratorFoldFunction"/>
+          </parameter>
+          <parameter name="ret" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach"
+              c:identifier="gst_iterator_foreach"
+              doc="Iterate over all element of @it and call the given function @func for
+each element.  As in gst_iterator_fold(), the refcount of a refcounted
+object will be increased before @func is called, and should be unrefed
+after use.
+freed.
+MT safe.">
+        <return-value transfer-ownership="full" doc="The iterator will not be">
+          <type name="IteratorResult" c:type="GstIteratorResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="GLib.Func" c:type="GFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_custom"
+              c:identifier="gst_iterator_find_custom"
+              doc="Find the first element in @it that matches the compare function @func.
+the refcount of a refcounted object will be increased before @func is
+called, and should be unrefed after use.
+The iterator will not be freed.
+This function will return NULL if an error or resync happened to
+the iterator.
+function or NULL when no element matched.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="GLib.CompareFunc" c:type="GCompareFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="IteratorDisposeFunction"
+              c:type="GstIteratorDisposeFunction"
+              doc="The function that will be called when a #GList iterator is freed. The
+owner of the #GList iterator can then clean up its resources.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="owner" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="IteratorFoldFunction"
+              c:type="GstIteratorFoldFunction"
+              doc="A function to be passed to gst_iterator_fold().">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="item" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="ret" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="IteratorFreeFunction"
+              c:type="GstIteratorFreeFunction"
+              doc="This function will be called when the iterator is freed.
+Implementors of a #GstIterator should implement this
+function and pass it to the constructor of the custom iterator.
+The function will be called with the iterator lock held.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="it" transfer-ownership="none">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="IteratorItem"
+                 doc="The result of a #GstIteratorItemFunction."
+                 c:type="GstIteratorItem">
+      <member name="skip" value="0" c:identifier="GST_ITERATOR_ITEM_SKIP"/>
+      <member name="pass" value="1" c:identifier="GST_ITERATOR_ITEM_PASS"/>
+      <member name="end" value="2" c:identifier="GST_ITERATOR_ITEM_END"/>
+    </enumeration>
+    <callback name="IteratorItemFunction"
+              c:type="GstIteratorItemFunction"
+              doc="The function that will be called after the next item of the iterator
+has been retrieved. This function will typically increase the refcount
+of the item or make a copy.
+Implementors of a #GstIterator should implement this
+function and pass it to the constructor of the custom iterator.
+The function will be called with the iterator lock held.">
+      <return-value transfer-ownership="full">
+        <type name="IteratorItem" c:type="GstIteratorItem"/>
+      </return-value>
+      <parameters>
+        <parameter name="it" transfer-ownership="none">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </parameter>
+        <parameter name="item" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="IteratorNextFunction"
+              c:type="GstIteratorNextFunction"
+              doc="The function that will be called when the next element of the iterator
+should be retrieved.
+Implementors of a #GstIterator should implement this
+function and pass it to the constructor of the custom iterator.
+The function will be called with the iterator lock held.">
+      <return-value transfer-ownership="full">
+        <type name="IteratorResult" c:type="GstIteratorResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="it" transfer-ownership="none">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </parameter>
+        <parameter name="result" transfer-ownership="none">
+          <type name="any" c:type="gpointer*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="IteratorResult"
+                 doc="The result of gst_iterator_next()."
+                 c:type="GstIteratorResult">
+      <member name="done" value="0" c:identifier="GST_ITERATOR_DONE"/>
+      <member name="ok" value="1" c:identifier="GST_ITERATOR_OK"/>
+      <member name="resync" value="2" c:identifier="GST_ITERATOR_RESYNC"/>
+      <member name="error" value="3" c:identifier="GST_ITERATOR_ERROR"/>
+    </enumeration>
+    <callback name="IteratorResyncFunction"
+              c:type="GstIteratorResyncFunction"
+              doc="This function will be called whenever a concurrent update happened
+to the iterated datastructure. The implementor of the iterator should
+restart the iterator from the beginning and clean up any state it might
+have.
+Implementors of a #GstIterator should implement this
+function and pass it to the constructor of the custom iterator.
+The function will be called with the iterator lock held.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="it" transfer-ownership="none">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="LICENSE_UNKNOWN" value="unknown">
+      <type name="utf8"/>
+    </constant>
+    <enumeration name="LibraryError"
+                 doc="category.  Make sure you add a custom message to the error call.
+deciding where to go while developing code.
+Library errors are for errors from the library being used by elements
+(initializing, finalizing, settings, ...)"
+                 c:type="GstLibraryError"
+                 glib:error-quark="gst_library_error_quark">
+      <member name="failed" value="1" c:identifier="GST_LIBRARY_ERROR_FAILED"/>
+      <member name="too_lazy"
+              value="2"
+              c:identifier="GST_LIBRARY_ERROR_TOO_LAZY"/>
+      <member name="init" value="3" c:identifier="GST_LIBRARY_ERROR_INIT"/>
+      <member name="shutdown"
+              value="4"
+              c:identifier="GST_LIBRARY_ERROR_SHUTDOWN"/>
+      <member name="settings"
+              value="5"
+              c:identifier="GST_LIBRARY_ERROR_SETTINGS"/>
+      <member name="encode" value="6" c:identifier="GST_LIBRARY_ERROR_ENCODE"/>
+      <member name="num_errors"
+              value="7"
+              c:identifier="GST_LIBRARY_ERROR_NUM_ERRORS"/>
+    </enumeration>
+    <callback name="LogFunction"
+              c:type="GstLogFunction"
+              doc="Function prototype for a logging function that can be registered with
+gst_debug_add_log_function().
+Use G_GNUC_NO_INSTRUMENT on that function.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="category" transfer-ownership="none">
+          <type name="DebugCategory" c:type="GstDebugCategory*"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+        <parameter name="file" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="function" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="line" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <type name="DebugMessage" c:type="GstDebugMessage*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="MESSAGE_TRACE_NAME" value="GstMessage">
+      <type name="utf8"/>
+    </constant>
+    <constant name="MSECOND" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="M_PI" value="3.14159265359">
+      <type name="double"/>
+    </constant>
+    <record name="Message" c:type="GstMessage" doc="A #GstMessage.">
+      <field name="mini_object" writable="1">
+        <type name="MiniObject" c:type="GstMiniObject"/>
+      </field>
+      <field name="lock" writable="1">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="cond" writable="1">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="MessageType" c:type="GstMessageType"/>
+      </field>
+      <field name="timestamp" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="src" writable="1">
+        <type name="Object" c:type="GstObject*"/>
+      </field>
+      <field name="structure" writable="1">
+        <type name="Structure" c:type="GstStructure*"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="seqnum" writable="1">
+            <type name="uint32" c:type="guint32"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+      <constructor name="new_eos"
+                   c:identifier="gst_message_new_eos"
+                   doc="Create a new eos message. This message is generated and posted in
+the sink elements of a GstBin. The bin will only forward the EOS
+message to the application if all sinks have posted an EOS message.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_error"
+                   c:identifier="gst_message_new_error"
+                   doc="Create a new error message. The message will copy @error and
+occured. The pipeline will probably (partially) stop. The application
+receiving this message should stop the pipeline.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none">
+            <type name="GLib.Error" c:type="GError*"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_warning"
+                   c:identifier="gst_message_new_warning"
+                   doc="Create a new warning message. The message will make copies of @error and
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none">
+            <type name="GLib.Error" c:type="GError*"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_info"
+                   c:identifier="gst_message_new_info"
+                   doc="Create a new info message. The message will make copies of @error and
+MT safe."
+                   version="0.10.12">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none">
+            <type name="GLib.Error" c:type="GError*"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_tag"
+                   c:identifier="gst_message_new_tag"
+                   doc="Create a new tag message. The message will take ownership of the tag list.
+The message is posted by elements that discovered a new taglist.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="tag_list" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_tag_full"
+                   c:identifier="gst_message_new_tag_full"
+                   doc="Create a new tag message. The message will take ownership of the tag list.
+The message is posted by elements that discovered a new taglist.
+MT safe."
+                   version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+          <parameter name="tag_list" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_buffering"
+                   c:identifier="gst_message_new_buffering"
+                   doc="Create a new buffering message. This message can be posted by an element that
+needs to buffer data before it can continue processing. @percent should be a
+value between 0 and 100. A value of 100 means that the buffering completed.
+When @percent is &lt; 100 the application should PAUSE a PLAYING pipeline. When
+The application must be prepared to receive BUFFERING messages in the
+PREROLLING state and may only set the pipeline to PLAYING after receiving a
+message with @percent set to 100, which can happen after the pipeline
+completed prerolling.
+MT safe."
+                   version="0.10.11">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="percent" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_state_changed"
+                   c:identifier="gst_message_new_state_changed"
+                   doc="Create a state change message. This message is posted whenever an element
+changed its state.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="oldstate" transfer-ownership="none">
+            <type name="State" c:type="GstState"/>
+          </parameter>
+          <parameter name="newstate" transfer-ownership="none" doc="state">
+            <type name="State" c:type="GstState"/>
+          </parameter>
+          <parameter name="pending" transfer-ownership="none" doc="state">
+            <type name="State" c:type="GstState"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_state_dirty"
+                   c:identifier="gst_message_new_state_dirty"
+                   doc="Create a state dirty message. This message is posted whenever an element
+changed its state asynchronously and is used internally to update the
+states of container objects.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_step_done"
+                   c:identifier="gst_message_new_step_done"
+                   doc="This message is posted by elements when they complete a part, when @intermediate set
+to TRUE, or a complete step operation.
+MT safe."
+                   version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="amount" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="flush" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="intermediate" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="eos" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_clock_provide"
+                   c:identifier="gst_message_new_clock_provide"
+                   doc="Create a clock provide message. This message is posted whenever an
+element is ready to provide a clock or lost its ability to provide
+a clock (maybe because it paused or became EOS).
+This message is mainly used internally to manage the clock
+selection.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+          <parameter name="ready" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_clock_lost"
+                   c:identifier="gst_message_new_clock_lost"
+                   doc="Create a clock lost message. This message is posted whenever the
+clock is not valid anymore.
+If this message is posted by the pipeline, the pipeline will
+select a new clock again when it goes to PLAYING. It might therefore
+be needed to set the pipeline to PAUSED and PLAYING again.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_new_clock"
+                   c:identifier="gst_message_new_new_clock"
+                   doc="Create a new clock message. This message is posted whenever the
+pipeline selectes a new clock for the pipeline.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_application"
+                   c:identifier="gst_message_new_application"
+                   doc="the structure.
+Create a new application-typed message. GStreamer will never create these
+messages; they are a gift from us to you. Enjoy.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_element"
+                   c:identifier="gst_message_new_element"
+                   doc="the structure.
+Create a new element-specific message. This is meant as a generic way of
+allowing one-way communication from an element to an application, for example
+&quot;the firewire cable was unplugged&quot;. The format of the message should be
+documented in the element&apos;s documentation. The structure field can be NULL.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_segment_start"
+                   c:identifier="gst_message_new_segment_start"
+                   doc="Create a new segment message. This message is posted by elements that
+start playback of a segment as a result of a segment seek. This message
+is not received by the application but is used for maintenance reasons in
+container elements.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_segment_done"
+                   c:identifier="gst_message_new_segment_done"
+                   doc="Create a new segment done message. This message is posted by elements that
+finish playback of a segment as a result of a segment seek. This message
+is received by the application after all elements that posted a segment_start
+have posted the segment_done.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_duration"
+                   c:identifier="gst_message_new_duration"
+                   doc="Create a new duration message. This message is posted by elements that
+know the duration of a stream in a specific format. This message
+is received by bins and is used to calculate the total duration of a
+pipeline. Elements may post a duration message with a duration of
+GST_CLOCK_TIME_NONE to indicate that the duration has changed and the
+cached duration should be discarded. The new duration can then be
+retrieved via a query.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_latency"
+                   c:identifier="gst_message_new_latency"
+                   doc="This message can be posted by elements when their latency requirements have
+changed.
+MT safe."
+                   version="0.10.12">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_async_start"
+                   c:identifier="gst_message_new_async_start"
+                   doc="This message is posted by elements when they start an ASYNC state change.
+PLAYING.
+MT safe."
+                   version="0.10.13">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="new_base_time" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_async_done"
+                   c:identifier="gst_message_new_async_done"
+                   doc="The message is posted when elements completed an ASYNC state change.
+MT safe."
+                   version="0.10.13">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_structure_change"
+                   c:identifier="gst_message_new_structure_change"
+                   doc="Create a new structure change message. This message is posted when the
+structure of a pipeline is in the process of being changed, for example
+when pads are linked or unlinked.
+MT safe."
+                   version="0.10.22.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="StructureChangeType" c:type="GstStructureChangeType"/>
+          </parameter>
+          <parameter name="owner" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter name="busy" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_stream_status"
+                   c:identifier="gst_message_new_stream_status"
+                   doc="Create a new stream status message. This message is posted when a streaming
+thread is created/destroyed or when the state changed.
+MT safe."
+                   version="0.10.24.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="StreamStatusType" c:type="GstStreamStatusType"/>
+          </parameter>
+          <parameter name="owner" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_request_state"
+                   c:identifier="gst_message_new_request_state"
+                   doc="This message can be posted by elements when they want to have their state
+changed. A typical use case would be an audio server that wants to pause the
+pipeline because a higher priority stream is being played.
+MT safe."
+                   version="0.10.23">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="state" transfer-ownership="none">
+            <type name="State" c:type="GstState"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_step_start"
+                   c:identifier="gst_message_new_step_start"
+                   doc="This message is posted by elements when they accept or activate a new step
+event for @amount in @format.
+queued it for execution in the streaming threads.
+is now ready to start executing the step in the streaming thread. After this
+message is emited, the application can queue a new step operation in the
+element.
+MT safe."
+                   version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="amount" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="flush" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="intermediate" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_qos"
+                   c:identifier="gst_message_new_qos"
+                   doc="A QOS message is posted on the bus whenever an element decides to drop a
+buffer because of QoS reasons or whenever it changes its processing strategy
+because of QoS reasons (quality adjustments such as processing at lower
+accuracy).
+This message can be posted by an element that performs synchronisation against the
+clock (live) or it could be dropped by an element that performs QoS because of QOS
+events received from a downstream element (!live).
+respective running-time, stream-time, timestamp and duration of the (dropped)
+buffer that generated the QoS event. Values can be left to
+GST_CLOCK_TIME_NONE when unknown.
+MT safe."
+                   version="0.10.29">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="live" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="running_time" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="stream_time" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_custom"
+                   c:identifier="gst_message_new_custom"
+                   doc="the structure.
+Create a new custom-typed message. This can be used for anything not
+handled by other message-specific functions to pass a message to the
+app. The structure field can be NULL.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="MessageType" c:type="GstMessageType"/>
+          </parameter>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_seqnum"
+              c:identifier="gst_message_get_seqnum"
+              doc="Retrieve the sequence number of a message.
+Messages have ever-incrementing sequence numbers, which may also be set
+explicitly via gst_message_set_seqnum(). Sequence numbers are typically used
+to indicate that a message corresponds to some other set of messages or
+events, for example a SEGMENT_DONE message corresponding to a SEEK event. It
+is considered good practice to make this correspondence when possible, though
+it is not required.
+Note that events and messages share the same sequence number incrementor;
+two events or messages will never not have the same sequence number unless
+that correspondence was made explicitly.
+MT safe."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="set_seqnum"
+              c:identifier="gst_message_set_seqnum"
+              doc="Set the sequence number of a message.
+This function might be called by the creator of a message to indicate that
+the message relates to other messages or events. See gst_message_get_seqnum()
+for more information.
+MT safe."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="seqnum" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_error"
+              c:identifier="gst_message_parse_error"
+              doc="Extracts the GError and debug string from the GstMessage. The values returned
+in the output arguments are copies; the caller must free them when done.
+Typical usage of this function might be:
+|[
+...
+switch (GST_MESSAGE_TYPE (msg)) {
+GError *err = NULL;
+gchar *dbg_info = NULL;
+gst_message_parse_error (msg, &amp;amp;err, &amp;amp;dbg_info);
+GST_OBJECT_NAME (msg-&gt;src), err-&gt;message);
+g_error_free (err);
+g_free (dbg_info);
+break;
+}
+...
+}
+...
+]|
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gerror" transfer-ownership="none">
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_warning"
+              c:identifier="gst_message_parse_warning"
+              doc="Extracts the GError and debug string from the GstMessage. The values returned
+in the output arguments are copies; the caller must free them when done.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gerror" transfer-ownership="none">
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_info"
+              c:identifier="gst_message_parse_info"
+              doc="Extracts the GError and debug string from the GstMessage. The values returned
+in the output arguments are copies; the caller must free them when done.
+MT safe."
+              version="0.10.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gerror" transfer-ownership="none">
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_tag"
+              c:identifier="gst_message_parse_tag"
+              doc="Extracts the tag list from the GstMessage. The tag list returned in the
+output argument is a copy; the caller must free it when done.
+Typical usage of this function might be:
+|[
+...
+switch (GST_MESSAGE_TYPE (msg)) {
+GstTagList *tags = NULL;
+gst_message_parse_tag (msg, &amp;amp;tags);
+g_print (&quot;Got tags from element %s\n&quot;, GST_OBJECT_NAME (msg-&gt;src));
+handle_tags (tags);
+gst_tag_list_free (tags);
+break;
+}
+...
+}
+...
+]|
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag_list" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_tag_full"
+              c:identifier="gst_message_parse_tag_full"
+              doc="Extracts the tag list from the GstMessage. The tag list returned in the
+output argument is a copy; the caller must free it when done.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad**"/>
+          </parameter>
+          <parameter name="tag_list" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_buffering"
+              c:identifier="gst_message_parse_buffering"
+              doc="Extracts the buffering percent from the GstMessage. see also
+gst_message_new_buffering().
+MT safe."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="percent" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_buffering_stats"
+              c:identifier="gst_message_set_buffering_stats"
+              doc="Configures the buffering stats values in @message."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="BufferingMode" c:type="GstBufferingMode"/>
+          </parameter>
+          <parameter name="avg_in" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="avg_out" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="buffering_left" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_buffering_stats"
+              c:identifier="gst_message_parse_buffering_stats"
+              doc="Extracts the buffering stats values from @message."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="BufferingMode" c:type="GstBufferingMode*"/>
+          </parameter>
+          <parameter name="avg_in" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="avg_out" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="buffering_left"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_state_changed"
+              c:identifier="gst_message_parse_state_changed"
+              doc="Extracts the old and new states from the GstMessage.
+Typical usage of this function might be:
+|[
+...
+switch (GST_MESSAGE_TYPE (msg)) {
+GstState old_state, new_state;
+gst_message_parse_state_changed (msg, &amp;amp;old_state, &amp;amp;new_state, NULL);
+g_print (&quot;Element %s changed state from %s to %s.\n&quot;,
+GST_OBJECT_NAME (msg-&gt;src),
+gst_element_state_get_name (old_state),
+gst_element_state_get_name (new_state));
+break;
+}
+...
+}
+...
+]|
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="oldstate" transfer-ownership="none">
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+          <parameter name="newstate"
+                     transfer-ownership="none"
+                     doc="state, or NULL">
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+          <parameter name="pending"
+                     transfer-ownership="none"
+                     doc="state, or NULL">
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_step_done"
+              c:identifier="gst_message_parse_step_done"
+              doc="Extract the values the step_done message.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="amount" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="rate" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="flush" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="intermediate"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="duration" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="eos" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_clock_provide"
+              c:identifier="gst_message_parse_clock_provide"
+              doc="Extracts the clock and ready flag from the GstMessage.
+The clock object returned remains valid until the message is freed.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock**"/>
+          </parameter>
+          <parameter name="ready" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_clock_lost"
+              c:identifier="gst_message_parse_clock_lost"
+              doc="Extracts the lost clock from the GstMessage.
+The clock object returned remains valid until the message is freed.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_new_clock"
+              c:identifier="gst_message_parse_new_clock"
+              doc="Extracts the new clock from the GstMessage.
+The clock object returned remains valid until the message is freed.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_segment_start"
+              c:identifier="gst_message_parse_segment_start"
+              doc="Extracts the position and format from the segment start message.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="position" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_segment_done"
+              c:identifier="gst_message_parse_segment_done"
+              doc="Extracts the position and format from the segment start message.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="position" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_duration"
+              c:identifier="gst_message_parse_duration"
+              doc="Extracts the duration and format from the duration message. The duration
+might be GST_CLOCK_TIME_NONE, which indicates that the duration has
+changed. Applications should always use a query to retrieve the duration
+of a pipeline.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="duration" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_async_start"
+              c:identifier="gst_message_parse_async_start"
+              doc="Extract the new_base_time from the async_start message.
+MT safe."
+              version="0.10.13">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_base_time"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_structure_change"
+              c:identifier="gst_message_parse_structure_change"
+              doc="completed
+Extracts the change type and completion status from the GstMessage.
+MT safe."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="StructureChangeType" c:type="GstStructureChangeType*"/>
+          </parameter>
+          <parameter name="owner" transfer-ownership="none">
+            <type name="Element" c:type="GstElement**"/>
+          </parameter>
+          <parameter name="busy" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_stream_status"
+              c:identifier="gst_message_parse_stream_status"
+              doc="Extracts the stream status type and owner the GstMessage. The returned
+owner remains valid for as long as the reference to @message is valid and
+should thus not be unreffed.
+MT safe."
+              version="0.10.24.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="StreamStatusType" c:type="GstStreamStatusType*"/>
+          </parameter>
+          <parameter name="owner" transfer-ownership="none">
+            <type name="Element" c:type="GstElement**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_stream_status_object"
+              c:identifier="gst_message_set_stream_status_object"
+              doc="Configures the object handling the streaming thread. This is usually a
+GstTask object but other objects might be added in the future."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_stream_status_object"
+              c:identifier="gst_message_get_stream_status_object"
+              doc="Extracts the object managing the streaming thread from @message.
+This object is usually of type GstTask but other types can be added in the
+future. The object remains valid as long as @message is valid."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+      </method>
+      <method name="parse_request_state"
+              c:identifier="gst_message_parse_request_state"
+              doc="Extract the requested state from the request_state message.
+MT safe."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_step_start"
+              c:identifier="gst_message_parse_step_start"
+              doc="Extract the values from step_start message.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="active" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="amount" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="rate" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="flush" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="intermediate"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_qos_values"
+              c:identifier="gst_message_set_qos_values"
+              doc="to get optimal quality.
+quality level of the element. The default maximum quality is 1000000.
+Set the QoS values that have been calculated/analysed from the QoS data
+MT safe."
+              version="0.10.29">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="jitter" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="proportion" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="quality" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_qos_stats"
+              c:identifier="gst_message_set_qos_stats"
+              doc="filters will use GST_FORMAT_BUFFERS (frames). Audio sinks and audio filters
+will likely use GST_FORMAT_DEFAULT (samples).
+change to READY or a flushing operation.
+or a flushing operation.
+Set the QoS stats representing the history of the current continuous pipeline
+playback period.
+When @format is @GST_FORMAT_UNDEFINED both @dropped and @processed are
+invalid. Values of -1 for either @processed or @dropped mean unknown values.
+MT safe."
+              version="0.10.29">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="processed" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="dropped" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_qos"
+              c:identifier="gst_message_parse_qos"
+              doc="Extract the timestamps and live status from the QoS message.
+The returned values give the running_time, stream_time, timestamp and
+duration of the dropped buffer. Values of GST_CLOCK_TIME_NONE mean unknown
+values.
+MT safe."
+              version="0.10.29">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="live" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="running_time"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="stream_time"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="timestamp"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="duration" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_qos_values"
+              c:identifier="gst_message_parse_qos_values"
+              doc="to get optimal quality.
+quality level of the element. The default maximum quality is 1000000.
+Extract the QoS values that have been calculated/analysed from the QoS data
+MT safe."
+              version="0.10.29">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="jitter" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="proportion"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="quality" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_qos_stats"
+              c:identifier="gst_message_parse_qos_stats"
+              doc="filters will use GST_FORMAT_BUFFERS (frames). Audio sinks and audio filters
+will likely use GST_FORMAT_DEFAULT (samples).
+change to READY or a flushing operation.
+or a flushing operation.
+Extract the QoS stats representing the history of the current continuous
+pipeline playback period.
+When @format is @GST_FORMAT_UNDEFINED both @dropped and @processed are
+invalid. Values of -1 for either @processed or @dropped mean unknown values.
+MT safe."
+              version="0.10.29">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="processed"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="dropped" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_structure"
+              c:identifier="gst_message_get_structure"
+              doc="Access the structure of the message.
+owned by the message, which means that you should not free it and
+that the pointer becomes invalid when you free the message.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="MessageClass" c:type="GstMessageClass">
+      <field name="mini_object_class" writable="1">
+        <type name="MiniObjectClass" c:type="GstMiniObjectClass"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="MessageType"
+              doc="only receive this message in the PLAYING state and every time it sets a
+pipeline to PLAYING that is in the EOS state. The application can perform a
+flushing seek in the pipeline, which will undo the EOS state again.
+message it should stop playback of the pipeline and not assume that more
+data will be played.
+receives a buffering message in the PLAYING state for a non-live pipeline it
+must PAUSE the pipeline until the buffering completes, when the percentage
+field in the message is 100%. For live pipelines, no action must be
+performed and the buffering percentage can be used to inform the user about
+the progress.
+This message is deprecated.
+a clock. This message is used internally and
+never forwarded to the application.
+unusable. The pipeline will select a new clock on
+the next PLAYING state change. The application
+should set the pipeline to PAUSED and back to
+PLAYING when this message is received.
+message is used internally and never forwarded to the application.
+stops, errors, etc..
+via an application-specific element.
+documentation
+message is used internally and never forwarded to the application.
+message is forwarded to the application after all elements that posted
+can get the new duration with a duration query.
+change. This message is not forwarded to the application but is used
+change. The application will only receive this message from the toplevel
+change state. This message is a suggestion to the application which can
+The different message types that are available."
+              c:type="GstMessageType">
+      <member name="unknown" value="0" c:identifier="GST_MESSAGE_UNKNOWN"/>
+      <member name="eos" value="1" c:identifier="GST_MESSAGE_EOS"/>
+      <member name="error" value="2" c:identifier="GST_MESSAGE_ERROR"/>
+      <member name="warning" value="4" c:identifier="GST_MESSAGE_WARNING"/>
+      <member name="info" value="8" c:identifier="GST_MESSAGE_INFO"/>
+      <member name="tag" value="16" c:identifier="GST_MESSAGE_TAG"/>
+      <member name="buffering"
+              value="32"
+              c:identifier="GST_MESSAGE_BUFFERING"/>
+      <member name="state_changed"
+              value="64"
+              c:identifier="GST_MESSAGE_STATE_CHANGED"/>
+      <member name="state_dirty"
+              value="128"
+              c:identifier="GST_MESSAGE_STATE_DIRTY"/>
+      <member name="step_done"
+              value="256"
+              c:identifier="GST_MESSAGE_STEP_DONE"/>
+      <member name="clock_provide"
+              value="512"
+              c:identifier="GST_MESSAGE_CLOCK_PROVIDE"/>
+      <member name="clock_lost"
+              value="1024"
+              c:identifier="GST_MESSAGE_CLOCK_LOST"/>
+      <member name="new_clock"
+              value="2048"
+              c:identifier="GST_MESSAGE_NEW_CLOCK"/>
+      <member name="structure_change"
+              value="4096"
+              c:identifier="GST_MESSAGE_STRUCTURE_CHANGE"/>
+      <member name="stream_status"
+              value="8192"
+              c:identifier="GST_MESSAGE_STREAM_STATUS"/>
+      <member name="application"
+              value="16384"
+              c:identifier="GST_MESSAGE_APPLICATION"/>
+      <member name="element" value="32768" c:identifier="GST_MESSAGE_ELEMENT"/>
+      <member name="segment_start"
+              value="65536"
+              c:identifier="GST_MESSAGE_SEGMENT_START"/>
+      <member name="segment_done"
+              value="131072"
+              c:identifier="GST_MESSAGE_SEGMENT_DONE"/>
+      <member name="duration"
+              value="262144"
+              c:identifier="GST_MESSAGE_DURATION"/>
+      <member name="latency"
+              value="524288"
+              c:identifier="GST_MESSAGE_LATENCY"/>
+      <member name="async_start"
+              value="1048576"
+              c:identifier="GST_MESSAGE_ASYNC_START"/>
+      <member name="async_done"
+              value="2097152"
+              c:identifier="GST_MESSAGE_ASYNC_DONE"/>
+      <member name="request_state"
+              value="4194304"
+              c:identifier="GST_MESSAGE_REQUEST_STATE"/>
+      <member name="step_start"
+              value="8388608"
+              c:identifier="GST_MESSAGE_STEP_START"/>
+      <member name="qos" value="16777216" c:identifier="GST_MESSAGE_QOS"/>
+      <member name="any" value="-1" c:identifier="GST_MESSAGE_ANY"/>
+    </bitfield>
+    <record name="MiniObject"
+            c:type="GstMiniObject"
+            doc="Base class for refcounted lightweight objects.">
+      <field name="instance" writable="1">
+        <type name="GObject.TypeInstance" c:type="GTypeInstance"/>
+      </field>
+      <field name="refcount" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_mini_object_new"
+                   doc="Creates a new mini-object of the desired type.
+MT safe">
+        <return-value transfer-ownership="full">
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="gst_mini_object_copy"
+              doc="Creates a copy of the mini-object.
+MT safe">
+        <return-value transfer-ownership="full">
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </return-value>
+      </method>
+      <method name="is_writable"
+              c:identifier="gst_mini_object_is_writable"
+              doc="Checks if a mini-object is writable.  A mini-object is writable
+if the reference count is one and the #GST_MINI_OBJECT_FLAG_READONLY
+flag is not set.  Modification of a mini-object should only be
+done after verifying that it is writable.
+MT safe">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="make_writable"
+              c:identifier="gst_mini_object_make_writable"
+              doc="Checks if a mini-object is writable.  If not, a writable copy is made and
+returned.  This gives away the reference to the original mini object,
+and returns a reference to the new object.
+MT safe">
+        <return-value transfer-ownership="full" doc="that is writable.">
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </return-value>
+      </method>
+      <method name="ref"
+              c:identifier="gst_mini_object_ref"
+              doc="Increase the reference count of the mini-object.
+Note that the refcount affects the writeability
+of @mini-object, see gst_mini_object_is_writable(). It is
+important to note that keeping additional references to
+GstMiniObject instances can potentially increase the number
+of memcpy operations in a pipeline, especially if the miniobject
+is a #GstBuffer.">
+        <return-value transfer-ownership="full">
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gst_mini_object_unref"
+              doc="Decreases the reference count of the mini-object, possibly freeing
+the mini-object.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="replace"
+              c:identifier="gst_mini_object_replace"
+              doc="Modifies a pointer to point to a new mini-object.  The modification
+is done atomically, and the reference counts are updated correctly.
+Either @newdata and the value pointed to by @olddata may be NULL.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="newdata" transfer-ownership="none">
+            <type name="MiniObject" c:type="GstMiniObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="MiniObjectClass" c:type="GstMiniObjectClass">
+      <field name="type_class" writable="1">
+        <type name="GObject.TypeClass" c:type="GTypeClass"/>
+      </field>
+      <field name="copy" writable="1">
+        <type name="MiniObjectCopyFunction"
+              c:type="GstMiniObjectCopyFunction"/>
+      </field>
+      <field name="finalize" writable="1">
+        <type name="MiniObjectFinalizeFunction"
+              c:type="GstMiniObjectFinalizeFunction"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+    </record>
+    <callback name="MiniObjectCopyFunction"
+              c:type="GstMiniObjectCopyFunction"
+              doc="Virtual function prototype for methods to create copies of instances.">
+      <return-value transfer-ownership="full">
+        <type name="MiniObject" c:type="GstMiniObject*"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="MiniObjectFinalizeFunction"
+              c:type="GstMiniObjectFinalizeFunction"
+              doc="Virtual function prototype for methods to free ressources used by
+mini-objects. Subclasses of the mini object are allowed to revive the
+passed object by doing a gst_mini_object_ref(). If the object is not
+revived after the finalize function, the memory associated with the
+object is freed.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="MiniObjectFlags"
+              doc="Flags for the padtemplate"
+              c:type="GstMiniObjectFlags">
+      <member name="readonly"
+              value="1"
+              c:identifier="GST_MINI_OBJECT_FLAG_READONLY"/>
+      <member name="last" value="16" c:identifier="GST_MINI_OBJECT_FLAG_LAST"/>
+    </bitfield>
+    <constant name="NSECOND" value="0">
+      <type name="int"/>
+    </constant>
+    <class name="Object"
+           c:type="GstObject"
+           doc="GStreamer base object class."
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GstObject"
+           glib:get-type="gst_object_get_type"
+           glib:type-struct="ObjectClass">
+      <function name="default_deep_notify"
+                c:identifier="gst_object_default_deep_notify"
+                doc="NULL to show all changes.
+A default deep_notify signal callback for an object. The user data
+should contain a pointer to an array of strings that should be excluded
+from the notify. The default handler will print the new value of the property
+using g_print.
+MT safe. This function grabs and releases @object&apos;s LOCK for getting its
+path string.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="orig" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+          <parameter name="excluded_props" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="ref"
+                c:identifier="gst_object_ref"
+                doc="Increments the reference count on @object. This function
+does not take the lock on @object because it relies on
+atomic refcounting.
+This object returns the input parameter to ease writing
+constructs like :
+result = gst_object_ref (object-&gt;parent);">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="unref"
+                c:identifier="gst_object_unref"
+                doc="Decrements the reference count on @object.  If reference count hits
+zero, destroy @object. This function does not take the lock
+on @object as it relies on atomic refcounting.
+The unref method should never be called with the LOCK held since
+this might deadlock the dispose function.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="ref_sink"
+                c:identifier="gst_object_ref_sink"
+                doc="Increase the reference count of @object, and possibly remove the floating
+reference, if @object has a floating reference.
+In other words, if the object is floating, then this call &quot;assumes ownership&quot;
+of the floating reference, converting it to a normal reference by clearing
+the floating flag while leaving the reference count unchanged. If the object
+is not floating, then this call adds a new normal reference increasing the
+reference count by one.
+MT safe. This function grabs and releases @object lock."
+                version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="sink"
+                c:identifier="gst_object_sink"
+                doc="If @object was floating, the #GST_OBJECT_FLOATING flag is removed
+and @object is unreffed. When @object was not floating,
+this function does nothing.
+Any newly created object has a refcount of 1 and is floating.
+This function should be used when creating a new object to
+symbolically &apos;take ownership&apos; of @object. This done by first doing a
+gst_object_ref() to keep a reference to @object and then gst_object_sink()
+to remove and unref any floating references to @object.
+Use gst_object_set_parent() to have this done for you.
+MT safe. This function grabs and releases @object lock.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="check_uniqueness"
+                c:identifier="gst_object_check_uniqueness"
+                doc="Checks to see if there is any object named @name in @list. This function
+does not do any locking of any kind. You might want to protect the
+provided list with the lock of the owner of the list. This function
+will lock each #GstObject in the list to compare the name, so be
+carefull when passing a list with a locked object.
+FALSE if it does.
+MT safe. Grabs and releases the LOCK of each object in the list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="save_thyself" invoker="save_thyself">
+        <return-value transfer-ownership="full">
+          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="restore_thyself" invoker="restore_thyself">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="self" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_name"
+              c:identifier="gst_object_set_name"
+              doc="Sets the name of @object, or gives @object a guaranteed unique
+name (if @name is NULL).
+This function makes a copy of the provided name, so the caller
+retains ownership of the name it sent.
+a parent cannot be renamed, this function returns FALSE in those
+cases.
+MT safe.  This function grabs and releases @object&apos;s LOCK.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_name"
+              c:identifier="gst_object_get_name"
+              doc="Returns a copy of the name of @object.
+Caller should g_free() the return value after usage.
+For a nameless object, this returns NULL, which you can safely g_free()
+as well.
+MT safe. This function grabs and releases @object&apos;s LOCK.">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_name_prefix"
+              c:identifier="gst_object_set_name_prefix"
+              doc="Sets the name prefix of @object to @name_prefix.
+This function makes a copy of the provided name prefix, so the caller
+retains ownership of the name prefix it sent.
+MT safe.  This function grabs and releases @object&apos;s LOCK.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name_prefix" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_name_prefix"
+              c:identifier="gst_object_get_name_prefix"
+              doc="Returns a copy of the name prefix of @object.
+Caller should g_free() the return value after usage.
+For a prefixless object, this returns NULL, which you can safely g_free()
+as well.
+MT safe. This function grabs and releases @object&apos;s LOCK.">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_parent"
+              c:identifier="gst_object_set_parent"
+              doc="Sets the parent of @object to @parent. The object&apos;s reference count will
+be incremented, and any floating reference will be removed (see gst_object_sink()).
+This function causes the parent-set signal to be emitted when the parent
+was successfully set.
+already had a parent or @object and @parent are the same.
+MT safe. Grabs and releases @object&apos;s LOCK.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_parent"
+              c:identifier="gst_object_get_parent"
+              doc="Returns the parent of @object. This function increases the refcount
+of the parent object so you should gst_object_unref() it after usage.
+parent. unref after usage.
+MT safe. Grabs and releases @object&apos;s LOCK.">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="GstObject*"/>
+        </return-value>
+      </method>
+      <method name="unparent"
+              c:identifier="gst_object_unparent"
+              doc="Clear the parent of @object, removing the associated reference.
+This function decreases the refcount of @object.
+MT safe. Grabs and releases @object&apos;s lock.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="has_ancestor"
+              c:identifier="gst_object_has_ancestor"
+              doc="Check if @object has an ancestor @ancestor somewhere up in
+the hierarchy.
+MT safe. Grabs and releases @object&apos;s locks.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="ancestor" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace"
+              c:identifier="gst_object_replace"
+              doc="Unrefs the #GstObject pointed to by @oldobj, refs @newobj and
+puts @newobj in *@oldobj. Be carefull when calling this
+function, it does not take any locks. You might want to lock
+the object owning @oldobj pointer before calling this
+function.
+Make sure not to LOCK @oldobj because it might be unreffed
+which could cause a deadlock when it is disposed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="newobj" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_path_string"
+              c:identifier="gst_object_get_path_string"
+              doc="Generates a string describing the path of @object in
+the object hierarchy. Only useful (or used) for debugging.
+g_free() the string after usage.
+MT safe. Grabs and releases the #GstObject&apos;s LOCK for all objects
+in the hierarchy.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="save_thyself"
+              c:identifier="gst_object_save_thyself"
+              doc="Saves @object into the parent XML node.">
+        <return-value transfer-ownership="full">
+          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="restore_thyself"
+              c:identifier="gst_object_restore_thyself"
+              doc="Restores @object with the data from the parent XML node.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="self" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="default_error"
+              c:identifier="gst_object_default_error"
+              doc="A default error function.
+The default handler will simply print the error string using g_print.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="error" transfer-ownership="none">
+            <type name="GLib.Error" c:type="GError*"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="name" writable="1" construct="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="refcount">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="name">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="name_prefix">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="parent">
+        <type name="Object" c:type="GstObject*"/>
+      </field>
+      <field name="flags">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="_gst_reserved">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <glib:signal name="deep-notify"
+                   doc="The deep notify signal is used to be notified of property changes. It is
+typically attached to the toplevel bin to receive notifications from all
+the elements contained in that bin.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="prop_object" transfer-ownership="none">
+            <type name="Object" c:type="GstObject"/>
+          </parameter>
+          <parameter name="prop" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParam"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="object-saved"
+                   doc="Trigered whenever a new object is saved to XML. You can connect to this
+signal to insert custom XML tags into the core XML.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xml_node" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="parent-set"
+                   doc="Emitted when the parent of an object is set.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Object" c:type="GstObject"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="parent-unset"
+                   doc="Emitted when the parent of an object is unset.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Object" c:type="GstObject"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ObjectClass"
+            c:type="GstObjectClass"
+            glib:is-gtype-struct-for="Object"
+            doc="GStreamer base object class.">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="path_string_separator">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="signal_object">
+        <type name="GObject.Object" c:type="GObject*"/>
+      </field>
+      <field name="lock">
+        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
+      </field>
+      <field name="parent_set">
+        <callback name="parent_set" c:type="parent_set">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parent_unset">
+        <callback name="parent_unset" c:type="parent_unset">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="object_saved">
+        <callback name="object_saved" c:type="object_saved">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="deep_notify">
+        <callback name="deep_notify" c:type="deep_notify">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="orig" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="save_thyself">
+        <callback name="save_thyself" c:type="save_thyself">
+          <return-value transfer-ownership="full">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="restore_thyself">
+        <callback name="restore_thyself" c:type="restore_thyself">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="self" transfer-ownership="none">
+              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="ObjectFlags"
+              doc="not assigned to a bin)
+The standard flags that an gstobject may have."
+              c:type="GstObjectFlags">
+      <member name="disposing" value="1" c:identifier="GST_OBJECT_DISPOSING"/>
+      <member name="floating" value="2" c:identifier="GST_OBJECT_FLOATING"/>
+      <member name="flag_last" value="16" c:identifier="GST_OBJECT_FLAG_LAST"/>
+    </bitfield>
+    <constant name="PARAM_CONTROLLABLE" value="2">
+      <type name="int"/>
+    </constant>
+    <constant name="PARAM_MUTABLE_PAUSED" value="8">
+      <type name="int"/>
+    </constant>
+    <constant name="PARAM_MUTABLE_PLAYING" value="16">
+      <type name="int"/>
+    </constant>
+    <constant name="PARAM_MUTABLE_READY" value="4">
+      <type name="int"/>
+    </constant>
+    <constant name="PARAM_USER_SHIFT" value="256">
+      <type name="int"/>
+    </constant>
+    <class name="Pad"
+           c:type="GstPad"
+           doc="the pad.
+the data used in streaming.
+The #GstPad structure. Use the functions to update the variables."
+           parent="Object"
+           glib:type-name="GstPad"
+           glib:get-type="gst_pad_get_type"
+           glib:type-struct="PadClass">
+      <constructor name="new"
+                   c:identifier="gst_pad_new"
+                   doc="Creates a new pad with the given name in the given direction.
+If name is NULL, a guaranteed unique name (across all pads)
+will be assigned.
+This function makes a copy of the name so you can safely free the name.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_template"
+                   c:identifier="gst_pad_new_from_template"
+                   doc="Creates a new pad with the given name from the given template.
+If name is NULL, a guaranteed unique name (across all pads)
+will be assigned.
+This function makes a copy of the name so you can safely free the name.">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="templ" transfer-ownership="none">
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_static_template"
+                   c:identifier="gst_pad_new_from_static_template"
+                   doc="Creates a new pad with the given name from the given static template.
+If name is NULL, a guaranteed unique name (across all pads)
+will be assigned.
+This function makes a copy of the name so you can safely free the name.">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="templ" transfer-ownership="none">
+            <type name="StaticPadTemplate" c:type="GstStaticPadTemplate*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="load_and_link"
+                c:identifier="gst_pad_load_and_link"
+                doc="Reads the pad definition from the XML node and links the given pad
+in the element to a pad of an element up in the hierarchy.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="self" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_direction"
+              c:identifier="gst_pad_get_direction"
+              doc="Gets the direction of the pad. The direction of the pad is
+decided at construction time so this function does not take
+the LOCK.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="PadDirection" c:type="GstPadDirection"/>
+        </return-value>
+      </method>
+      <method name="set_active"
+              c:identifier="gst_pad_set_active"
+              doc="Activates or deactivates the given pad.
+Normally called from within core state change functions.
+If @active, makes sure the pad is active. If it is already active, either in
+push or pull mode, just return. Otherwise dispatches to the pad&apos;s activate
+function to perform the actual activation.
+If not @active, checks the pad&apos;s current mode and calls
+gst_pad_activate_push() or gst_pad_activate_pull(), as appropriate, with a
+FALSE argument.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_active"
+              c:identifier="gst_pad_is_active"
+              doc="Query if a pad is active
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="activate_pull"
+              c:identifier="gst_pad_activate_pull"
+              doc="Activates or deactivates the given pad in pull mode via dispatching to the
+pad&apos;s activatepullfunc. For use from within pad activation functions only.
+When called on sink pads, will first proxy the call to the peer pad, which
+is expected to activate its internally linked pads from within its
+activate_pull function.
+If you don&apos;t know what this is, you probably don&apos;t want to call it.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="activate_push"
+              c:identifier="gst_pad_activate_push"
+              doc="Activates or deactivates the given pad in push mode via dispatching to the
+pad&apos;s activatepushfunc. For use from within pad activation functions only.
+If you don&apos;t know what this is, you probably don&apos;t want to call it.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blocked"
+              c:identifier="gst_pad_set_blocked"
+              doc="Blocks or unblocks the dataflow on a pad. This function is
+a shortcut for gst_pad_set_blocked_async() with a NULL
+callback.
+wrong parameters were passed or the pad was already in the requested state.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="blocked" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blocked_async"
+              c:identifier="gst_pad_set_blocked_async"
+              doc="operation succeeds
+Blocks or unblocks the dataflow on a pad. The provided callback
+is called when the operation succeeds; this happens right before the next
+attempt at pushing a buffer on the pad.
+This can take a while as the pad can only become blocked when real dataflow
+is happening.
+When the pipeline is stalled, for example in PAUSED, this can
+take an indeterminate amount of time.
+You can pass NULL as the callback to make this call block. Be careful with
+this blocking call as it might not return for reasons stated above.
+wrong parameters were passed or the pad was already in the requested state.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="blocked" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="3">
+            <type name="PadBlockCallback" c:type="GstPadBlockCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blocked_async_full"
+              c:identifier="gst_pad_set_blocked_async_full"
+              doc="operation succeeds
+Blocks or unblocks the dataflow on a pad. The provided callback
+is called when the operation succeeds; this happens right before the next
+attempt at pushing a buffer on the pad.
+This can take a while as the pad can only become blocked when real dataflow
+is happening.
+When the pipeline is stalled, for example in PAUSED, this can
+take an indeterminate amount of time.
+You can pass NULL as the callback to make this call block. Be careful with
+this blocking call as it might not return for reasons stated above.
+wrong parameters were passed or the pad was already in the requested state.
+MT safe."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="blocked" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="3"
+                     destroy="4">
+            <type name="PadBlockCallback" c:type="GstPadBlockCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy_data"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_blocked"
+              c:identifier="gst_pad_is_blocked"
+              doc="Checks if the pad is blocked or not. This function returns the
+last requested state of the pad. It is not certain that the pad
+is actually blocking at this point (see gst_pad_is_blocking()).
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_blocking"
+              c:identifier="gst_pad_is_blocking"
+              doc="Checks if the pad is blocking or not. This is a guaranteed state
+of whether the pad is actually blocking on a #GstBuffer or a #GstEvent.
+MT safe."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_element_private"
+              c:identifier="gst_pad_set_element_private"
+              doc="Set the given private data gpointer on the pad.
+This function can only be used by the element that owns the pad.
+No locking is performed in this function.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="priv" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_element_private"
+              c:identifier="gst_pad_get_element_private"
+              doc="Gets the private data of a pad.
+No locking is performed in this function.">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="get_pad_template"
+              c:identifier="gst_pad_get_pad_template"
+              doc="Gets the template for @pad.
+if this pad has no template.">
+        <return-value transfer-ownership="full">
+          <type name="PadTemplate" c:type="GstPadTemplate*"/>
+        </return-value>
+      </method>
+      <method name="set_bufferalloc_function"
+              c:identifier="gst_pad_set_bufferalloc_function"
+              doc="Sets the given bufferalloc function for the pad. Note that the
+bufferalloc function can only be set on sinkpads.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="bufalloc" transfer-ownership="none" scope="call">
+            <type name="PadBufferAllocFunction"
+                  c:type="GstPadBufferAllocFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="alloc_buffer"
+              c:identifier="gst_pad_alloc_buffer"
+              doc="Allocates a new, empty buffer optimized to push to pad @pad.  This
+function only works if @pad is a source pad and has a peer.
+A new, empty #GstBuffer will be put in the @buf argument.
+You need to check the caps of the buffer after performing this
+function and renegotiate to the format if needed. If the caps changed, it is
+possible that the buffer returned in @buf is not of the right size for the
+new format, @buf needs to be unreffed and reallocated if this is the case.
+result code other than #GST_FLOW_OK is an error and @buf should
+not be used.
+An error can occur if the pad is not connected or when the downstream
+peer elements cannot provide an acceptable buffer.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="alloc_buffer_and_set_caps"
+              c:identifier="gst_pad_alloc_buffer_and_set_caps"
+              doc="In addition to the function gst_pad_alloc_buffer(), this function
+automatically calls gst_pad_set_caps() when the caps of the
+newly allocated buffer are different from the @pad caps.
+After a renegotiation, the size of the new buffer returned in @buf could
+be of the wrong size for the new format and must be unreffed an reallocated
+in that case.
+result code other than #GST_FLOW_OK is an error and @buf should
+not be used.
+An error can occur if the pad is not connected or when the downstream
+peer elements cannot provide an acceptable buffer.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_activate_function"
+              c:identifier="gst_pad_set_activate_function"
+              doc="Sets the given activate function for @pad. The activate function will
+dispatch to gst_pad_activate_push() or gst_pad_activate_pull() to perform
+the actual activation. Only makes sense to set on sink pads.
+Call this function if your sink pad can start a pull-based task.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="activate" transfer-ownership="none" scope="call">
+            <type name="PadActivateFunction" c:type="GstPadActivateFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_activatepull_function"
+              c:identifier="gst_pad_set_activatepull_function"
+              doc="Sets the given activate_pull function for the pad. An activate_pull function
+prepares the element and any upstream connections for pulling. See XXX
+part-activation.txt for details.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="activatepull"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="PadActivateModeFunction"
+                  c:type="GstPadActivateModeFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_activatepush_function"
+              c:identifier="gst_pad_set_activatepush_function"
+              doc="Sets the given activate_push function for the pad. An activate_push function
+prepares the element for pushing. See XXX part-activation.txt for details.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="activatepush"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="PadActivateModeFunction"
+                  c:type="GstPadActivateModeFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_chain_function"
+              c:identifier="gst_pad_set_chain_function"
+              doc="Sets the given chain function for the pad. The chain function is called to
+process a #GstBuffer input buffer. see #GstPadChainFunction for more details.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="chain" transfer-ownership="none" scope="call">
+            <type name="PadChainFunction" c:type="GstPadChainFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_chain_list_function"
+              c:identifier="gst_pad_set_chain_list_function"
+              doc="Sets the given chain list function for the pad. The chainlist function is
+called to process a #GstBufferList input buffer list. See
+#GstPadChainListFunction for more details."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="chainlist" transfer-ownership="none" scope="call">
+            <type name="PadChainListFunction"
+                  c:type="GstPadChainListFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_getrange_function"
+              c:identifier="gst_pad_set_getrange_function"
+              doc="Sets the given getrange function for the pad. The getrange function is
+called to produce a new #GstBuffer to start the processing pipeline. see
+#GstPadGetRangeFunction for a description of the getrange function.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="get" transfer-ownership="none" scope="call">
+            <type name="PadGetRangeFunction" c:type="GstPadGetRangeFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_checkgetrange_function"
+              c:identifier="gst_pad_set_checkgetrange_function"
+              doc="Sets the given checkgetrange function for the pad. Implement this function
+on a pad if you dynamically support getrange based scheduling on the pad.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="check" transfer-ownership="none" scope="call">
+            <type name="PadCheckGetRangeFunction"
+                  c:type="GstPadCheckGetRangeFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_event_function"
+              c:identifier="gst_pad_set_event_function"
+              doc="Sets the given event handler for the pad.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none" scope="call">
+            <type name="PadEventFunction" c:type="GstPadEventFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_link_function"
+              c:identifier="gst_pad_set_link_function"
+              doc="Sets the given link function for the pad. It will be called when
+the pad is linked with another pad.
+The return value #GST_PAD_LINK_OK should be used when the connection can be
+made.
+The return value #GST_PAD_LINK_REFUSED should be used when the connection
+cannot be made for some reason.
+If @link is installed on a source pad, it should call the #GstPadLinkFunction
+of the peer sink pad, if present.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="link" transfer-ownership="none" scope="call">
+            <type name="PadLinkFunction" c:type="GstPadLinkFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_unlink_function"
+              c:identifier="gst_pad_set_unlink_function"
+              doc="Sets the given unlink function for the pad. It will be called
+when the pad is unlinked.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="unlink" transfer-ownership="none" scope="call">
+            <type name="PadUnlinkFunction" c:type="GstPadUnlinkFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_link"
+              c:identifier="gst_pad_can_link"
+              doc="Checks if the source pad and the sink pad are compatible so they can be
+linked.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="sinkpad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="link"
+              c:identifier="gst_pad_link"
+              doc="Links the source pad and the sink pad.
+what went wrong.
+MT Safe.">
+        <return-value transfer-ownership="full">
+          <type name="PadLinkReturn" c:type="GstPadLinkReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="sinkpad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unlink"
+              c:identifier="gst_pad_unlink"
+              doc="Unlinks the source pad from the sink pad. Will emit the #GstPad::unlinked
+signal on both pads.
+the pads were not linked together.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="sinkpad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_linked"
+              c:identifier="gst_pad_is_linked"
+              doc="Checks if a @pad is linked to another pad or not.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_peer"
+              c:identifier="gst_pad_get_peer"
+              doc="Gets the peer of @pad. This function refs the peer pad so
+you need to unref it after use.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+      </method>
+      <method name="set_getcaps_function"
+              c:identifier="gst_pad_set_getcaps_function"
+              doc="Sets the given getcaps function for the pad. @getcaps should return the
+allowable caps for a pad in the context of the element&apos;s state, its link to
+other elements, and the devices or files it has opened. These caps must be a
+subset of the pad template caps. In the NULL state with no links, @getcaps
+should ideally return the same caps as the pad template. In rare
+circumstances, an object property can affect the caps returned by @getcaps,
+but this is discouraged.
+You do not need to call this function if @pad&apos;s allowed caps are always the
+same as the pad template caps. This can only be true if the padtemplate
+has fixed simple caps.
+For most filters, the caps returned by @getcaps is directly affected by the
+allowed caps on other pads. For demuxers and decoders, the caps returned by
+the srcpad&apos;s getcaps function is directly related to the stream data. Again,
+helps with autoplugging.
+Note that the return value from @getcaps is owned by the caller, so the
+caller should unref the caps after usage.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="getcaps" transfer-ownership="none" scope="call">
+            <type name="PadGetCapsFunction" c:type="GstPadGetCapsFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_acceptcaps_function"
+              c:identifier="gst_pad_set_acceptcaps_function"
+              doc="Sets the given acceptcaps function for the pad.  The acceptcaps function
+will be called to check if the pad can accept the given caps. Setting the
+acceptcaps function to NULL restores the default behaviour of allowing
+any caps that matches the caps from gst_pad_get_caps.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="acceptcaps" transfer-ownership="none" scope="call">
+            <type name="PadAcceptCapsFunction"
+                  c:type="GstPadAcceptCapsFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fixatecaps_function"
+              c:identifier="gst_pad_set_fixatecaps_function"
+              doc="Sets the given fixatecaps function for the pad.  The fixatecaps function
+will be called whenever the default values for a GstCaps needs to be
+filled in.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fixatecaps" transfer-ownership="none" scope="call">
+            <type name="PadFixateCapsFunction"
+                  c:type="GstPadFixateCapsFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_setcaps_function"
+              c:identifier="gst_pad_set_setcaps_function"
+              doc="Sets the given setcaps function for the pad.  The setcaps function
+will be called whenever a buffer with a new media type is pushed or
+pulled from the pad. The pad/element needs to update its internal
+structures to process the new media type. If this new type is not
+acceptable, the setcaps function should return FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setcaps" transfer-ownership="none" scope="call">
+            <type name="PadSetCapsFunction" c:type="GstPadSetCapsFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pad_template_caps"
+              c:identifier="gst_pad_get_pad_template_caps"
+              doc="Gets the capabilities for @pad&apos;s template.
+reference on the caps, make a copy (see gst_caps_copy ()).">
+        <return-value transfer-ownership="none">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="get_caps_reffed"
+              c:identifier="gst_pad_get_caps_reffed"
+              doc="Gets the capabilities this pad can produce or consume. Preferred function if
+one only wants to read or intersect the caps."
+              version="0.10.26">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="get_caps"
+              c:identifier="gst_pad_get_caps"
+              doc="Gets the capabilities this pad can produce or consume.
+Note that this method doesn&apos;t necessarily return the caps set by
+gst_pad_set_caps() - use GST_PAD_CAPS() for that instead.
+gst_pad_get_caps returns all possible caps a pad can operate with, using
+the pad&apos;s get_caps function;
+this returns the pad template caps if not explicitly set.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="fixate_caps"
+              c:identifier="gst_pad_fixate_caps"
+              doc="Fixate a caps on the given pad. Modifies the caps in place, so you should
+make sure that the caps are actually writable (see gst_caps_make_writable()).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="accept_caps"
+              c:identifier="gst_pad_accept_caps"
+              doc="Check if the given pad accepts the caps.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_caps"
+              c:identifier="gst_pad_set_caps"
+              doc="Sets the capabilities of this pad. The caps must be fixed. Any previous
+caps on the pad will be unreffed. This function refs the caps so you should
+unref if as soon as you don&apos;t need it anymore.
+It is possible to set NULL caps, which will make the pad unnegotiated
+again.
+or bad parameters were provided to this function.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peer_get_caps_reffed"
+              c:identifier="gst_pad_peer_get_caps_reffed"
+              doc="Gets the capabilities of the peer connected to this pad. Preferred function
+if one only wants to read or intersect the caps."
+              version="0.10.26">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="peer_get_caps"
+              c:identifier="gst_pad_peer_get_caps"
+              doc="Gets the capabilities of the peer connected to this pad. Similar to
+gst_pad_get_caps().
+gst_caps_unref() to get rid of it. This function returns %NULL if there is
+no peer pad.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="peer_accept_caps"
+              c:identifier="gst_pad_peer_accept_caps"
+              doc="Check if the peer of @pad accepts @caps. If @pad has no peer, this function
+returns TRUE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_allowed_caps"
+              c:identifier="gst_pad_get_allowed_caps"
+              doc="Gets the capabilities of the allowed media types that can flow through
+The allowed capabilities is calculated as the intersection of the results of
+calling gst_pad_get_caps() on @pad and its peer. The caller owns a reference
+on the resulting caps.
+longer need it. This function returns NULL when @pad has no peer.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="get_negotiated_caps"
+              c:identifier="gst_pad_get_negotiated_caps"
+              doc="Gets the capabilities of the media type that currently flows through @pad
+and its peer.
+This function can be used on both src and sinkpads. Note that srcpads are
+always negotiated before sinkpads so it is possible that the negotiated caps
+on the srcpad do not match the negotiated caps of the peer.
+you no longer need it. This function returns NULL when the @pad has no
+peer or is not negotiated yet.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="push"
+              c:identifier="gst_pad_push"
+              doc="Pushes a buffer to the peer of @pad.
+This function will call an installed pad block before triggering any
+installed pad probes.
+If the caps on @buffer are different from the currently configured caps on
+gst_pad_set_setcaps_function()). In case of failure to renegotiate the new
+format, this function returns #GST_FLOW_NOT_NEGOTIATED.
+The function proceeds calling gst_pad_chain() on the peer pad and returns
+the value from that function. If @pad has no peer, #GST_FLOW_NOT_LINKED will
+be returned.
+In all cases, success or failure, the caller loses its reference to @buffer
+after calling this function.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push_list"
+              c:identifier="gst_pad_push_list"
+              doc="Pushes a buffer list to the peer of @pad.
+This function will call an installed pad block before triggering any
+installed pad probes.
+If the caps on the first buffer in the first group of @list are different
+from the currently configured caps on @pad, this function will call any
+installed setcaps function on @pad (see gst_pad_set_setcaps_function()). In
+case of failure to renegotiate the new format, this function returns
+#GST_FLOW_NOT_NEGOTIATED.
+If there are any probes installed on @pad every group of the buffer list
+will be merged into a normal #GstBuffer and pushed via gst_pad_push and the
+buffer list will be unreffed.
+The function proceeds calling the chain function on the peer pad and returns
+the value from that function. If @pad has no peer, #GST_FLOW_NOT_LINKED will
+be returned. If the peer pad does not have any installed chainlist function
+every group buffer of the list will be merged into a normal #GstBuffer and
+chained via gst_pad_chain().
+In all cases, success or failure, the caller loses its reference to @list
+after calling this function.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="BufferList" c:type="GstBufferList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="check_pull_range"
+              c:identifier="gst_pad_check_pull_range"
+              doc="Checks if a gst_pad_pull_range() can be performed on the peer
+source pad. This function is used by plugins that want to check
+if they can use random access on the peer source pad.
+The peer sourcepad can implement a custom #GstPadCheckGetRangeFunction
+if it needs to perform some logic to determine if pull_range is
+possible.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="pull_range"
+              c:identifier="gst_pad_pull_range"
+              doc="Pulls a @buffer from the peer pad.
+This function will first trigger the pad block signal if it was
+installed.
+When @pad is not linked #GST_FLOW_NOT_LINKED is returned else this
+function returns the result of gst_pad_get_range() on the peer pad.
+See gst_pad_get_range() for a list of return values and for the
+semantics of the arguments of this function.
+configured on @pad. Renegotiation within a running pull-mode pipeline is not
+supported.
+When this function returns #GST_FLOW_OK, @buffer will contain a valid
+#GstBuffer that should be freed with gst_buffer_unref() after usage.
+#GST_FLOW_OK is returned.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push_event"
+              c:identifier="gst_pad_push_event"
+              doc="Sends the event to the peer of the given pad. This function is
+mainly used by elements to send events to their peer
+elements.
+This function takes owership of the provided event so you should
+gst_event_ref() it if you want to reuse the event after this call.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="event_default"
+              c:identifier="gst_pad_event_default"
+              doc="Invokes the default event handler for the given pad. End-of-stream and
+discontinuity events are handled specially, and then the event is sent to all
+pads internally linked to @pad. Note that if there are many possible sink
+pads that are internally linked to @pad, only one will be sent an event.
+Multi-sinkpad elements should implement custom event handlers.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="chain"
+              c:identifier="gst_pad_chain"
+              doc="Chain a buffer to @pad.
+The function returns #GST_FLOW_WRONG_STATE if the pad was flushing.
+If the caps on @buffer are different from the current caps on @pad, this
+function will call any setcaps function (see gst_pad_set_setcaps_function())
+installed on @pad. If the new caps are not acceptable for @pad, this
+function returns #GST_FLOW_NOT_NEGOTIATED.
+The function proceeds calling the chain function installed on @pad (see
+gst_pad_set_chain_function()) and the return value of that function is
+returned to the caller. #GST_FLOW_NOT_SUPPORTED is returned if @pad has no
+chain function.
+In all cases, success or failure, the caller loses its reference to @buffer
+after calling this function.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="chain_list"
+              c:identifier="gst_pad_chain_list"
+              doc="Chain a bufferlist to @pad.
+The function returns #GST_FLOW_WRONG_STATE if the pad was flushing.
+If the caps on the first buffer of @list are different from the current
+caps on @pad, this function will call any setcaps function
+(see gst_pad_set_setcaps_function()) installed on @pad. If the new caps
+are not acceptable for @pad, this function returns #GST_FLOW_NOT_NEGOTIATED.
+The function proceeds calling the chainlist function installed on @pad (see
+gst_pad_set_chain_list_function()) and the return value of that function is
+returned to the caller. #GST_FLOW_NOT_SUPPORTED is returned if @pad has no
+chainlist function.
+In all cases, success or failure, the caller loses its reference to @list
+after calling this function.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="BufferList" c:type="GstBufferList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_range"
+              c:identifier="gst_pad_get_range"
+              doc="When @pad is flushing this function returns #GST_FLOW_WRONG_STATE
+immediatly.
+Calls the getrange function of @pad, see #GstPadGetRangeFunction for a
+description of a getrange function. If @pad has no getrange function
+installed (see gst_pad_set_getrange_function()) this function returns
+#GST_FLOW_NOT_SUPPORTED.
+This is a lowlevel function. Usualy gst_pad_pull_range() is used.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_event"
+              c:identifier="gst_pad_send_event"
+              doc="Sends the event to the pad. This function can be used
+by applications to send events in the pipeline.
+If @pad is a source pad, @event should be an upstream event. If @pad is a
+sink pad, @event should be a downstream event. For example, you would not
+send a #GST_EVENT_EOS on a src pad; EOS events only propagate downstream.
+Furthermore, some downstream events have to be serialized with data flow,
+like EOS, while some can travel out-of-band, like #GST_EVENT_FLUSH_START. If
+the event needs to be serialized with data flow, this function will take the
+pad&apos;s stream lock while calling its event function.
+To find out whether an event type is upstream, downstream, or downstream and
+serialized, see #GstEventTypeFlags, gst_event_type_get_flags(),
+#GST_EVENT_IS_UPSTREAM, #GST_EVENT_IS_DOWNSTREAM, and
+#GST_EVENT_IS_SERIALIZED. Note that in practice that an application or
+plugin doesn&apos;t need to bother itself with this information; the core handles
+all necessary locks and checks.
+This function takes owership of the provided event so you should
+gst_event_ref() it if you want to reuse the event after this call.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start_task"
+              c:identifier="gst_pad_start_task"
+              doc="Starts a task that repeatedly calls @func with @data. This function
+is mostly used in pad activation functions to start the dataflow.
+The #GST_PAD_STREAM_LOCK of @pad will automatically be acquired
+before @func is called.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="TaskFunction" c:type="GstTaskFunction"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pause_task"
+              c:identifier="gst_pad_pause_task"
+              doc="Pause the task of @pad. This function will also wait until the
+function executed by the task is finished if this function is not
+called from the task function.
+has no task.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="stop_task"
+              c:identifier="gst_pad_stop_task"
+              doc="Stop the task of @pad. This function will also make sure that the
+function executed by the task will effectively stop if not called
+from the GstTaskFunction.
+This function will deadlock if called from the GstTaskFunction of
+the task. Use gst_task_pause() instead.
+Regardless of whether the pad has a task, the stream lock is acquired and
+released so as to ensure that streaming through this pad has finished.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_internal_link_function"
+              c:identifier="gst_pad_set_internal_link_function"
+              doc="Sets the given internal link function for the pad."
+              deprecated="Use the thread-safe gst_pad_set_iterate_internal_links_function()">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="intlink" transfer-ownership="none" scope="call">
+            <type name="PadIntLinkFunction" c:type="GstPadIntLinkFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_internal_links"
+              c:identifier="gst_pad_get_internal_links"
+              doc="Gets a list of pads to which the given pad is linked to
+inside of the parent element.
+The caller must free this list after use.
+Not MT safe.
+could become invalid by the time the application accesses them. It&apos;s also
+possible that the list changes while handling the pads, which the caller of
+this function is unable to know. Use the thread-safe
+gst_pad_iterate_internal_links() instead."
+              deprecated="This function does not ref the pads in the list so that they">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="get_internal_links_default"
+              c:identifier="gst_pad_get_internal_links_default"
+              doc="Gets a list of pads to which the given pad is linked to
+inside of the parent element.
+This is the default handler, and thus returns a list of all of the
+pads inside the parent element with opposite direction.
+The caller must free this list after use with g_list_free().
+Not MT safe.
+could become invalid by the time the application accesses them. It&apos;s also
+possible that the list changes while handling the pads, which the caller of
+this function is unable to know. Use the thread-safe
+gst_pad_iterate_internal_links_default() instead."
+              deprecated="This function does not ref the pads in the list so that they">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="set_iterate_internal_links_function"
+              c:identifier="gst_pad_set_iterate_internal_links_function"
+              doc="Sets the given internal link iterator function for the pad."
+              version="0.10.21">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iterintlink" transfer-ownership="none" scope="call">
+            <type name="PadIterIntLinkFunction"
+                  c:type="GstPadIterIntLinkFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iterate_internal_links"
+              c:identifier="gst_pad_iterate_internal_links"
+              doc="Gets an iterator for the pads to which the given pad is linked to inside
+of the parent element.
+Each #GstPad element yielded by the iterator will have its refcount increased,
+so unref after use.
+iterator function configured. Use gst_iterator_free() after usage."
+              version="0.10.21">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_internal_links_default"
+              c:identifier="gst_pad_iterate_internal_links_default"
+              doc="Iterate the list of pads to which the given pad is linked to inside of
+the parent element.
+This is the default handler, and thus returns an iterator of all of the
+pads inside the parent element with opposite direction.
+The caller must free this iterator after use with gst_iterator_free().
+returned pad with gst_object_unref()."
+              version="0.10.21">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="set_query_type_function"
+              c:identifier="gst_pad_set_query_type_function"
+              doc="Set the given query type function for the pad.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type_func" transfer-ownership="none" scope="call">
+            <type name="PadQueryTypeFunction"
+                  c:type="GstPadQueryTypeFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_query_types"
+              c:identifier="gst_pad_get_query_types"
+              doc="Get an array of supported queries that can be performed
+on this pad.">
+        <return-value transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType*"/>
+        </return-value>
+      </method>
+      <method name="get_query_types_default"
+              c:identifier="gst_pad_get_query_types_default"
+              doc="Invoke the default dispatcher for the query types on
+the pad.
+internally-linked pads has a query types function.">
+        <return-value transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType*"/>
+        </return-value>
+      </method>
+      <method name="query"
+              c:identifier="gst_pad_query"
+              doc="Dispatches a query to a pad. The query should have been allocated by the
+caller via one of the type-specific allocation functions in gstquery.h. The
+element is responsible for filling the query with an appropriate response,
+which should then be parsed with a type-specific query parsing function.
+Again, the caller is responsible for both the allocation and deallocation of
+the query structure.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <type name="Query" c:type="GstQuery*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peer_query"
+              c:identifier="gst_pad_peer_query"
+              doc="Performs gst_pad_query() on the peer of @pad.
+The caller is responsible for both the allocation and deallocation of
+the query structure.
+if @pad has no peer."
+              version="0.10.15">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <type name="Query" c:type="GstQuery*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_query_function"
+              c:identifier="gst_pad_set_query_function"
+              doc="Set the given query function for the pad.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none" scope="call">
+            <type name="PadQueryFunction" c:type="GstPadQueryFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_default"
+              c:identifier="gst_pad_query_default"
+              doc="Invokes the default query handler for the given pad.
+The query is sent to all pads internally linked to @pad. Note that
+if there are many possible sink pads that are internally linked to
+Multi-sinkpad elements should implement custom query handlers.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <type name="Query" c:type="GstQuery*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dispatcher"
+              c:identifier="gst_pad_dispatcher"
+              doc="Invokes the given dispatcher function on each respective peer of
+all pads that are internally linked to the given pad.
+The GstPadDispatcherFunction should return TRUE when no further pads
+need to be processed.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dispatch"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="PadDispatcherFunction"
+                  c:type="GstPadDispatcherFunction"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="use_fixed_caps"
+              c:identifier="gst_pad_use_fixed_caps"
+              doc="A helper function you can use that sets the
+pad. This way the function will always return the negotiated caps
+or in case the pad is not negotiated, the padtemplate caps.
+Use this function on a pad that, once gst_pad_set_caps() has been called
+on it, cannot be renegotiated to something else.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_fixed_caps_func"
+              c:identifier="gst_pad_get_fixed_caps_func"
+              doc="A helper function you can use as a GetCaps function that
+will return the currently negotiated caps or the padtemplate
+when NULL.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="proxy_getcaps"
+              c:identifier="gst_pad_proxy_getcaps"
+              doc="Calls gst_pad_get_allowed_caps() for every other pad belonging to the
+same element as @pad, and returns the intersection of the results.
+This function is useful as a default getcaps function for an element
+that can handle any stream format, but requires all its pads to have
+the same caps.  Two such elements are tee and adder.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="proxy_setcaps" c:identifier="gst_pad_proxy_setcaps">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_parent_element"
+              c:identifier="gst_pad_get_parent_element"
+              doc="Gets the parent of @pad, cast to a #GstElement. If a @pad has no parent or
+its parent is not an element, return NULL.
+unref when you&apos;re finished with it.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+      </method>
+      <method name="query_position"
+              c:identifier="gst_pad_query_position"
+              doc="On return contains the #GstFormat used.
+Queries a pad for the stream position.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format"
+                     direction="inout"
+                     transfer-ownership="full"
+                     doc="a pointer to the #GstFormat asked for.">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="cur"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="A location in which to store the current position, or NULL.">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_duration"
+              c:identifier="gst_pad_query_duration"
+              doc="On return contains the #GstFormat used.
+Queries a pad for the total stream duration.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="duration" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_convert"
+              c:identifier="gst_pad_query_convert"
+              doc="Queries a pad to convert @src_val in @src_format to @dest_format.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="src_val" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="dest_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="dest_val" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_peer_position"
+              c:identifier="gst_pad_query_peer_position"
+              doc="Must be a sink pad.
+On return contains the #GstFormat used.
+Queries the peer of a given sink pad for the stream position.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="cur" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_peer_duration"
+              c:identifier="gst_pad_query_peer_duration"
+              doc="Must be a sink pad.
+On return contains the #GstFormat used.
+Queries the peer pad of a given sink pad for the total stream duration.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="duration" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_peer_convert"
+              c:identifier="gst_pad_query_peer_convert"
+              doc="Must be a sink pad.
+Queries the peer pad of a given sink pad to convert @src_val in @src_format
+to @dest_format.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="src_val" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="dest_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="dest_val" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_data_probe"
+              c:identifier="gst_pad_add_data_probe"
+              doc="Adds a &quot;data probe&quot; to a pad. This function will be called whenever data
+passes through a pad. In this case data means both events and buffers. The
+probe will be called with the data as an argument, meaning @handler should
+have the same callback signature as the #GstPad::have-data signal.
+Note that the data will have a reference count greater than 1, so it will
+be immutable -- you must not change it.
+For source pads, the probe will be called after the blocking function, if any
+(see gst_pad_set_blocked_async()), but before looking up the peer to chain
+to. For sink pads, the probe function will be called before configuring the
+sink with new caps, if any, and before calling the pad&apos;s chain function.
+Your data probe should return TRUE to let the data continue to flow, or FALSE
+to drop it. Dropping data is rarely useful, but occasionally comes in handy
+with events.
+Although probes are implemented internally by connecting @handler to the
+have-data signal on the pad, if you want to remove a probe it is insufficient
+to only call g_signal_handler_disconnect on the returned handler id. To
+remove a probe, use the appropriate function, such as
+gst_pad_remove_data_probe().">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_data_probe_full"
+              c:identifier="gst_pad_add_data_probe_full"
+              doc="Adds a &quot;data probe&quot; to a pad. This function will be called whenever data
+passes through a pad. In this case data means both events and buffers. The
+probe will be called with the data as an argument, meaning @handler should
+have the same callback signature as the #GstPad::have-data signal.
+Note that the data will have a reference count greater than 1, so it will
+be immutable -- you must not change it.
+For source pads, the probe will be called after the blocking function, if any
+(see gst_pad_set_blocked_async()), but before looking up the peer to chain
+to. For sink pads, the probe function will be called before configuring the
+sink with new caps, if any, and before calling the pad&apos;s chain function.
+Your data probe should return TRUE to let the data continue to flow, or FALSE
+to drop it. Dropping data is rarely useful, but occasionally comes in handy
+with events.
+Although probes are implemented internally by connecting @handler to the
+have-data signal on the pad, if you want to remove a probe it is insufficient
+to only call g_signal_handler_disconnect on the returned handler id. To
+remove a probe, use the appropriate function, such as
+gst_pad_remove_data_probe().
+The @notify function is called when the probe is disconnected and usually
+used to free @data."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_data_probe"
+              c:identifier="gst_pad_remove_data_probe"
+              doc="Removes a data probe from @pad.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_event_probe"
+              c:identifier="gst_pad_add_event_probe"
+              doc="Adds a probe that will be called for all events passing through a pad. See
+gst_pad_add_data_probe() for more information.">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_event_probe_full"
+              c:identifier="gst_pad_add_event_probe_full"
+              doc="Adds a probe that will be called for all events passing through a pad. See
+gst_pad_add_data_probe() for more information.
+The @notify function is called when the probe is disconnected and usually
+used to free @data."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_event_probe"
+              c:identifier="gst_pad_remove_event_probe"
+              doc="Removes an event probe from @pad.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_buffer_probe"
+              c:identifier="gst_pad_add_buffer_probe"
+              doc="Adds a probe that will be called for all buffers passing through a pad. See
+gst_pad_add_data_probe() for more information.">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_buffer_probe_full"
+              c:identifier="gst_pad_add_buffer_probe_full"
+              doc="Adds a probe that will be called for all buffers passing through a pad. See
+gst_pad_add_data_probe() for more information.
+The @notify function is called when the probe is disconnected and usually
+used to free @data."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_buffer_probe"
+              c:identifier="gst_pad_remove_buffer_probe"
+              doc="Removes a buffer probe from @pad.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="caps">
+        <type name="Caps" c:type="GstCaps"/>
+      </property>
+      <property name="direction" writable="1" construct-only="1">
+        <type name="PadDirection" c:type="GstPadDirection"/>
+      </property>
+      <property name="template" writable="1">
+        <type name="PadTemplate" c:type="GstPadTemplate"/>
+      </property>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="element_private">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="padtemplate">
+        <type name="PadTemplate" c:type="GstPadTemplate*"/>
+      </field>
+      <field name="direction">
+        <type name="PadDirection" c:type="GstPadDirection"/>
+      </field>
+      <field name="stream_rec_lock">
+        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
+      </field>
+      <field name="task">
+        <type name="Task" c:type="GstTask*"/>
+      </field>
+      <field name="preroll_lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="preroll_cond">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="block_cond">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="block_callback">
+        <type name="PadBlockCallback" c:type="GstPadBlockCallback"/>
+      </field>
+      <field name="block_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="caps">
+        <type name="Caps" c:type="GstCaps*"/>
+      </field>
+      <field name="getcapsfunc">
+        <type name="PadGetCapsFunction" c:type="GstPadGetCapsFunction"/>
+      </field>
+      <field name="setcapsfunc">
+        <type name="PadSetCapsFunction" c:type="GstPadSetCapsFunction"/>
+      </field>
+      <field name="acceptcapsfunc">
+        <type name="PadAcceptCapsFunction" c:type="GstPadAcceptCapsFunction"/>
+      </field>
+      <field name="fixatecapsfunc">
+        <type name="PadFixateCapsFunction" c:type="GstPadFixateCapsFunction"/>
+      </field>
+      <field name="activatefunc">
+        <type name="PadActivateFunction" c:type="GstPadActivateFunction"/>
+      </field>
+      <field name="activatepushfunc">
+        <type name="PadActivateModeFunction"
+              c:type="GstPadActivateModeFunction"/>
+      </field>
+      <field name="activatepullfunc">
+        <type name="PadActivateModeFunction"
+              c:type="GstPadActivateModeFunction"/>
+      </field>
+      <field name="linkfunc">
+        <type name="PadLinkFunction" c:type="GstPadLinkFunction"/>
+      </field>
+      <field name="unlinkfunc">
+        <type name="PadUnlinkFunction" c:type="GstPadUnlinkFunction"/>
+      </field>
+      <field name="peer">
+        <type name="Pad" c:type="GstPad*"/>
+      </field>
+      <field name="sched_private">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="chainfunc">
+        <type name="PadChainFunction" c:type="GstPadChainFunction"/>
+      </field>
+      <field name="checkgetrangefunc">
+        <type name="PadCheckGetRangeFunction"
+              c:type="GstPadCheckGetRangeFunction"/>
+      </field>
+      <field name="getrangefunc">
+        <type name="PadGetRangeFunction" c:type="GstPadGetRangeFunction"/>
+      </field>
+      <field name="eventfunc">
+        <type name="PadEventFunction" c:type="GstPadEventFunction"/>
+      </field>
+      <field name="mode">
+        <type name="ActivateMode" c:type="GstActivateMode"/>
+      </field>
+      <field name="querytypefunc">
+        <type name="PadQueryTypeFunction" c:type="GstPadQueryTypeFunction"/>
+      </field>
+      <field name="queryfunc">
+        <type name="PadQueryFunction" c:type="GstPadQueryFunction"/>
+      </field>
+      <field name="intlinkfunc">
+        <type name="PadIntLinkFunction" c:type="GstPadIntLinkFunction"/>
+      </field>
+      <field name="bufferallocfunc">
+        <type name="PadBufferAllocFunction"
+              c:type="GstPadBufferAllocFunction"/>
+      </field>
+      <field name="do_buffer_signals">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="do_event_signals">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="iterintlinkfunc">
+        <type name="PadIterIntLinkFunction"
+              c:type="GstPadIterIntLinkFunction"/>
+      </field>
+      <field name="block_destroy_data">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="block_callback_called" writable="1">
+            <type name="boolean" c:type="gboolean"/>
+          </field>
+          <field name="priv" writable="1">
+            <type name="PadPrivate" c:type="GstPadPrivate*"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+      <glib:signal name="have-data"
+                   doc="Signals that new data is available on the pad. This signal is used
+internally for implementing pad probes.
+See gst_pad_add_*_probe functions.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="mini_obj" transfer-ownership="none">
+            <type name="MiniObject" c:type="GstMiniObject"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="linked"
+                   doc="Signals that a pad has been linked to the peer pad.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="peer" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="request-link"
+                   doc="Signals that a pad connection has been requested.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unlinked"
+                   doc="Signals that a pad has been unlinked from the peer pad.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="peer" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <callback name="PadAcceptCapsFunction"
+              c:type="GstPadAcceptCapsFunction"
+              doc="Check if @pad can accept @caps. By default this function will see if @caps
+intersect with the result from gst_pad_get_caps() by can be overridden to
+perform extra checks.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadActivateFunction"
+              c:type="GstPadActivateFunction"
+              doc="This function is called when the pad is activated during the element
+READY to PAUSED state change. By default this function will call the
+activate function that puts the pad in push mode but elements can
+override this function to activate the pad in pull mode if they wish.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadActivateModeFunction"
+              c:type="GstPadActivateModeFunction"
+              doc="The prototype of the push and pull activate functions.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="active" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadBlockCallback"
+              c:type="GstPadBlockCallback"
+              doc="Callback used by gst_pad_set_blocked_async(). Gets called when the blocking
+operation succeeds.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="blocked" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadBufferAllocFunction"
+              c:type="GstPadBufferAllocFunction"
+              doc="Ask the sinkpad @pad to allocate a buffer with @offset, @size and @caps.
+The result will be stored in @buf.
+The purpose of this function is to allocate a buffer that is optimal to
+be processed by @pad. The function is mostly overridden by elements that can
+provide a hardware buffer in order to avoid additional memcpy operations.
+The function can return a buffer that has caps different from the requested
+new caps.
+If a format change was requested, the returned buffer will be one to hold
+the data of said new caps, so its size might be different from the requested
+When this function returns anything else than #GST_FLOW_OK, the buffer allocation
+failed and @buf does not contain valid data. If the function returns #GST_FLOW_OK and
+the @buf is NULL, a #GstBuffer will be created with @caps, @offset and @size.
+By default this function returns a new buffer of @size and with @caps containing
+purely malloced data. The buffer should be freed with gst_buffer_unref()
+after usage.
+value means @buf does not hold a valid buffer.">
+      <return-value transfer-ownership="full">
+        <type name="FlowReturn" c:type="GstFlowReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Buffer" c:type="GstBuffer**"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadChainFunction"
+              c:type="GstPadChainFunction"
+              doc="A function that will be called on sinkpads when chaining buffers.
+The function typically processes the data contained in the buffer and
+either consumes the data or passes it on to the internally linked pad(s).
+The implementer of this function receives a refcount to @buffer and should
+gst_buffer_unref() when the buffer is no longer needed.
+When a chain function detects an error in the data stream, it must post an
+error on the bus and return an appropriate #GstFlowReturn value.">
+      <return-value transfer-ownership="full">
+        <type name="FlowReturn" c:type="GstFlowReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadChainListFunction"
+              c:type="GstPadChainListFunction"
+              doc="A function that will be called on sinkpads when chaining buffer lists.
+The function typically processes the data contained in the buffer list and
+either consumes the data or passes it on to the internally linked pad(s).
+The implementer of this function receives a refcount to @list and
+should gst_buffer_list_unref() when the list is no longer needed.
+When a chainlist function detects an error in the data stream, it must
+post an error on the bus and return an appropriate #GstFlowReturn value.">
+      <return-value transfer-ownership="full">
+        <type name="FlowReturn" c:type="GstFlowReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="list" transfer-ownership="none">
+          <type name="BufferList" c:type="GstBufferList*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadCheckGetRangeFunction"
+              c:type="GstPadCheckGetRangeFunction"
+              doc="Check if @pad can be activated in pull mode.
+This function will be deprecated after 0.10; use the seeking query to check
+if a pad can support random access.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="PadClass"
+            c:type="GstPadClass"
+            glib:is-gtype-struct-for="Pad">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="linked">
+        <callback name="linked" c:type="linked">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+            <parameter name="peer" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unlinked">
+        <callback name="unlinked" c:type="unlinked">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+            <parameter name="peer" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="request_link">
+        <callback name="request_link" c:type="request_link">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="have_data">
+        <callback name="have_data" c:type="have_data">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="MiniObject" c:type="GstMiniObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="PadDirection"
+                 doc="The direction of a pad."
+                 c:type="GstPadDirection">
+      <member name="unknown" value="0" c:identifier="GST_PAD_UNKNOWN"/>
+      <member name="src" value="1" c:identifier="GST_PAD_SRC"/>
+      <member name="sink" value="2" c:identifier="GST_PAD_SINK"/>
+    </enumeration>
+    <callback name="PadDispatcherFunction"
+              c:type="GstPadDispatcherFunction"
+              doc="A dispatcher function is called for all internally linked pads, see
+gst_pad_dispatcher().">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadEventFunction"
+              c:type="GstPadEventFunction"
+              doc="Function signature to handle an event for the pad.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Event" c:type="GstEvent*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadFixateCapsFunction"
+              c:type="GstPadFixateCapsFunction"
+              doc="Given possibly unfixed caps @caps, let @pad use its default prefered
+format to make a fixed caps. @caps should be writable. By default this
+function will pick the first value of any ranges or lists in the caps but
+elements can override this function to perform other behaviour.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="PadFlags" doc="Pad state flags" c:type="GstPadFlags">
+      <member name="blocked" value="16" c:identifier="GST_PAD_BLOCKED"/>
+      <member name="flushing" value="32" c:identifier="GST_PAD_FLUSHING"/>
+      <member name="in_getcaps" value="64" c:identifier="GST_PAD_IN_GETCAPS"/>
+      <member name="in_setcaps" value="128" c:identifier="GST_PAD_IN_SETCAPS"/>
+      <member name="blocking" value="256" c:identifier="GST_PAD_BLOCKING"/>
+      <member name="flag_last" value="4096" c:identifier="GST_PAD_FLAG_LAST"/>
+    </bitfield>
+    <callback name="PadGetCapsFunction"
+              c:type="GstPadGetCapsFunction"
+              doc="Returns a copy of the capabilities of the specified pad. By default this
+function will return the pad template capabilities, but can optionally
+be overridden by elements.">
+      <return-value transfer-ownership="full">
+        <type name="Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadGetRangeFunction"
+              c:type="GstPadGetRangeFunction"
+              doc="This function will be called on source pads when a peer element
+request a buffer at the specified @offset and @length. If this function
+returns #GST_FLOW_OK, the result buffer will be stored in @buffer. The
+contents of @buffer is invalid for any other return value.
+This function is installed on a source pad with
+gst_pad_set_getrange_function() and can only be called on source pads after
+they are successfully activated with gst_pad_activate_pull().
+between 0 and the length in bytes of the data available on @pad. The
+length (duration in bytes) can be retrieved with a #GST_QUERY_DURATION or with a
+#GST_QUERY_SEEKING.
+Any @offset larger or equal than the length will make the function return
+#GST_FLOW_UNEXPECTED, which corresponds to EOS. In this case @buffer does not
+contain a valid buffer.
+The buffer size of @buffer might be smaller than @length when @offset is near
+the end of the stream.
+It is allowed to call this function with a 0 @length and valid @offset, in
+which case @buffer will contain a 0-sized buffer and the function returns
+#GST_FLOW_OK.
+When this function is called with a -1 @offset, the sequentially next buffer
+of length @length in the stream is returned.
+When this function is called with a -1 @length, a buffer with a default
+optimal length is returned in @buffer. The length might depend on the value
+of @offset.">
+      <return-value transfer-ownership="full">
+        <type name="FlowReturn" c:type="GstFlowReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Buffer" c:type="GstBuffer**"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadIntLinkFunction"
+              c:type="GstPadIntLinkFunction"
+              doc="The signature of the internal pad link function.
+the inside of the parent element.
+The caller must call g_list_free() on it after use."
+              deprecated="use the threadsafe #GstPadIterIntLinkFunction instead.">
+      <return-value transfer-ownership="full">
+        <type name="GLib.List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadIterIntLinkFunction"
+              c:type="GstPadIterIntLinkFunction"
+              doc="The signature of the internal pad link iterator function.
+linked to the given pad on the inside of the parent element.
+the caller must call gst_iterator_free() after usage.
+Since 0.10.21">
+      <return-value transfer-ownership="full">
+        <type name="Iterator" c:type="GstIterator*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadLinkFunction" c:type="GstPadLinkFunction">
+      <return-value transfer-ownership="full">
+        <type name="PadLinkReturn" c:type="GstPadLinkReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="peer" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="PadLinkReturn"
+                 doc="Result values from gst_pad_link and friends."
+                 c:type="GstPadLinkReturn">
+      <member name="ok" value="0" c:identifier="GST_PAD_LINK_OK"/>
+      <member name="wrong_hierarchy"
+              value="-1"
+              c:identifier="GST_PAD_LINK_WRONG_HIERARCHY"/>
+      <member name="was_linked"
+              value="-2"
+              c:identifier="GST_PAD_LINK_WAS_LINKED"/>
+      <member name="wrong_direction"
+              value="-3"
+              c:identifier="GST_PAD_LINK_WRONG_DIRECTION"/>
+      <member name="noformat" value="-4" c:identifier="GST_PAD_LINK_NOFORMAT"/>
+      <member name="nosched" value="-5" c:identifier="GST_PAD_LINK_NOSCHED"/>
+      <member name="refused" value="-6" c:identifier="GST_PAD_LINK_REFUSED"/>
+    </enumeration>
+    <enumeration name="PadPresence"
+                 doc="gst_element_get_request_pad().
+Indicates when this pad will become available."
+                 c:type="GstPadPresence">
+      <member name="always" value="0" c:identifier="GST_PAD_ALWAYS"/>
+      <member name="sometimes" value="1" c:identifier="GST_PAD_SOMETIMES"/>
+      <member name="request" value="2" c:identifier="GST_PAD_REQUEST"/>
+    </enumeration>
+    <record name="PadPrivate" c:type="GstPadPrivate">
+    </record>
+    <callback name="PadQueryFunction"
+              c:type="GstPadQueryFunction"
+              doc="The signature of the query function.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="query" transfer-ownership="none">
+          <type name="Query" c:type="GstQuery*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadQueryTypeFunction"
+              c:type="GstPadQueryTypeFunction"
+              doc="The signature of the query types function.">
+      <return-value transfer-ownership="none">
+        <type name="QueryType" c:type="GstQueryType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadSetCapsFunction"
+              c:type="GstPadSetCapsFunction"
+              doc="Set @caps on @pad. By default this function updates the caps of the
+pad but the function can be overriden by elements to perform extra
+actions or verifications.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="PadTemplate"
+           c:type="GstPadTemplate"
+           doc="The padtemplate object."
+           parent="Object"
+           glib:type-name="GstPadTemplate"
+           glib:get-type="gst_pad_template_get_type"
+           glib:type-struct="PadTemplateClass">
+      <constructor name="new"
+                   c:identifier="gst_pad_template_new"
+                   doc="Creates a new pad template with a name according to the given template
+and with the given arguments. This functions takes ownership of the provided
+caps, so be sure to not use them afterwards.">
+        <return-value transfer-ownership="full">
+          <type name="PadTemplate" c:type="GstPadTemplate*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name_template" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+          <parameter name="presence" transfer-ownership="none">
+            <type name="PadPresence" c:type="GstPadPresence"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_caps"
+              c:identifier="gst_pad_template_get_caps"
+              doc="Gets the capabilities of the pad template.
+the caps, take a ref (see gst_caps_ref ()).">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="pad_created"
+              c:identifier="gst_pad_template_pad_created"
+              doc="Emit the pad-created signal for this template when created by this pad.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="caps" writable="1" construct-only="1">
+        <type name="Caps" c:type="GstCaps"/>
+      </property>
+      <property name="direction" writable="1" construct-only="1">
+        <type name="PadDirection" c:type="GstPadDirection"/>
+      </property>
+      <property name="name-template" writable="1" construct-only="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="presence" writable="1" construct-only="1">
+        <type name="PadPresence" c:type="GstPadPresence"/>
+      </property>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="name_template">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="direction">
+        <type name="PadDirection" c:type="GstPadDirection"/>
+      </field>
+      <field name="presence">
+        <type name="PadPresence" c:type="GstPadPresence"/>
+      </field>
+      <field name="caps">
+        <type name="Caps" c:type="GstCaps*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <glib:signal name="pad-created"
+                   doc="This signal is fired when an element creates a pad from this template.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="PadTemplateClass"
+            c:type="GstPadTemplateClass"
+            glib:is-gtype-struct-for="PadTemplate">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="pad_created">
+        <callback name="pad_created" c:type="pad_created">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="templ" transfer-ownership="none">
+              <type name="PadTemplate" c:type="GstPadTemplate*"/>
+            </parameter>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="PadTemplateFlags"
+              doc="Flags for the padtemplate"
+              c:type="GstPadTemplateFlags">
+      <member name="fixed" value="16" c:identifier="GST_PAD_TEMPLATE_FIXED"/>
+      <member name="flag_last"
+              value="256"
+              c:identifier="GST_PAD_TEMPLATE_FLAG_LAST"/>
+    </bitfield>
+    <callback name="PadUnlinkFunction" c:type="GstPadUnlinkFunction">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="ParamSpecFraction"
+            c:type="GstParamSpecFraction"
+            doc="A GParamSpec derived structure that contains the meta data for fractional
+properties.">
+      <field name="parent_instance" writable="1">
+        <type name="GObject.ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="min_num" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="min_den" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="max_num" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="max_den" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="def_num" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="def_den" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+    </record>
+    <record name="ParamSpecMiniObject"
+            c:type="GstParamSpecMiniObject"
+            doc="A %GParamSpec derived structure that contains the meta data
+for %GstMiniObject properties.">
+      <field name="parent_instance" writable="1">
+        <type name="GObject.ParamSpec" c:type="GParamSpec"/>
+      </field>
+    </record>
+    <record name="ParseContext"
+            c:type="GstParseContext"
+            doc="Opaque structure."
+            version="0.10.20">
+      <constructor name="new"
+                   c:identifier="gst_parse_context_new"
+                   doc="Allocates a parse context for use with gst_parse_launch_full() or
+gst_parse_launchv_full().
+when no longer needed."
+                   version="0.10.20">
+        <return-value transfer-ownership="full">
+          <type name="ParseContext" c:type="GstParseContext*"/>
+        </return-value>
+      </constructor>
+      <method name="get_missing_elements"
+              c:identifier="gst_parse_context_get_missing_elements"
+              doc="Retrieve missing elements from a previous run of gst_parse_launch_full()
+or gst_parse_launchv_full(). Will only return results if an error code
+of %GST_PARSE_ERROR_NO_SUCH_ELEMENT was returned.
+missing elements. Free with g_strfreev() when no longer needed."
+              version="0.10.20">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gst_parse_context_free"
+              doc="Frees a parse context previously allocated with gst_parse_context_new()."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="ParseError"
+                 doc="The different parsing errors that can occur."
+                 c:type="GstParseError"
+                 glib:error-quark="gst_parse_error_quark">
+      <member name="syntax" value="0" c:identifier="GST_PARSE_ERROR_SYNTAX"/>
+      <member name="no_such_element"
+              value="1"
+              c:identifier="GST_PARSE_ERROR_NO_SUCH_ELEMENT"/>
+      <member name="no_such_property"
+              value="2"
+              c:identifier="GST_PARSE_ERROR_NO_SUCH_PROPERTY"/>
+      <member name="link" value="3" c:identifier="GST_PARSE_ERROR_LINK"/>
+      <member name="could_not_set_property"
+              value="4"
+              c:identifier="GST_PARSE_ERROR_COULD_NOT_SET_PROPERTY"/>
+      <member name="empty_bin"
+              value="5"
+              c:identifier="GST_PARSE_ERROR_EMPTY_BIN"/>
+      <member name="empty" value="6" c:identifier="GST_PARSE_ERROR_EMPTY"/>
+    </enumeration>
+    <bitfield name="ParseFlags"
+              doc="(default behaviour is to return partially constructed bins or elements
+in some cases)
+Parsing options."
+              version="0.10.20"
+              c:type="GstParseFlags">
+      <member name="none" value="0" c:identifier="GST_PARSE_FLAG_NONE"/>
+      <member name="fatal_errors"
+              value="1"
+              c:identifier="GST_PARSE_FLAG_FATAL_ERRORS"/>
+    </bitfield>
+    <class name="Pipeline"
+           c:type="GstPipeline"
+           doc="GST_PIPELINE_FLAG_FIXED_CLOCK is set.
+property would be the running_time, the total time spent in the
+PLAYING state without being flushed. (deprecated, use the start_time
+on GstElement).
+when setting elements to PLAYING.
+The #GstPipeline structure."
+           parent="Bin"
+           glib:type-name="GstPipeline"
+           glib:get-type="gst_pipeline_get_type"
+           glib:type-struct="PipelineClass">
+      <implements name="ChildProxy"/>
+      <constructor name="new"
+                   c:identifier="gst_pipeline_new"
+                   doc="Create a new pipeline with the given name.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Pipeline" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_bus"
+              c:identifier="gst_pipeline_get_bus"
+              doc="Gets the #GstBus of @pipeline. The bus allows applications to receive
+#GstMessage packets.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Bus" c:type="GstBus*"/>
+        </return-value>
+      </method>
+      <method name="set_new_stream_time"
+              c:identifier="gst_pipeline_set_new_stream_time"
+              doc="Set the new start time of @pipeline to @time. The start time is used to
+set the base time on the elements (see gst_element_set_base_time())
+in the PAUSED-&gt;PLAYING state transition.
+Setting @time to #GST_CLOCK_TIME_NONE will disable the pipeline&apos;s management
+of element base time. The application will then be responsible for
+performing base time distribution. This is sometimes useful if you want to
+synchronize capture from multiple pipelines, and you can also ensure that the
+pipelines have the same clock.
+MT safe.
+gst_element_set_start_time()."
+              deprecated="This function has the wrong name and is equivalent to">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_last_stream_time"
+              c:identifier="gst_pipeline_get_last_stream_time"
+              doc="Gets the last running time of @pipeline. If the pipeline is PLAYING,
+the returned time is the running time used to configure the element&apos;s
+base time in the PAUSED-&gt;PLAYING state. If the pipeline is PAUSED, the
+returned time is the running time when the pipeline was paused.
+This function returns #GST_CLOCK_TIME_NONE if the pipeline was
+configured to not handle the management of the element&apos;s base time
+(see gst_pipeline_set_new_stream_time()).
+MT safe.
+gst_element_get_start_time()."
+              deprecated="This function has the wrong name and is equivalent to">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="use_clock"
+              c:identifier="gst_pipeline_use_clock"
+              doc="Force @pipeline to use the given @clock. The pipeline will
+always use the given clock even if new clock providers are added
+to this pipeline.
+If @clock is NULL all clocking will be disabled which will make
+the pipeline run as fast as possible.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_clock"
+              c:identifier="gst_pipeline_set_clock"
+              doc="Set the clock for @pipeline. The clock will be distributed
+to all the elements managed by the pipeline.
+some element did not accept the clock.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_clock"
+              c:identifier="gst_pipeline_get_clock"
+              doc="Gets the current clock used by @pipeline.">
+        <return-value transfer-ownership="full">
+          <type name="Clock" c:type="GstClock*"/>
+        </return-value>
+      </method>
+      <method name="auto_clock"
+              c:identifier="gst_pipeline_auto_clock"
+              doc="Let @pipeline select a clock automatically. This is the default
+behaviour.
+Use this function if you previous forced a fixed clock with
+gst_pipeline_use_clock() and want to restore the default
+pipeline clock selection algorithm.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_delay"
+              c:identifier="gst_pipeline_set_delay"
+              doc="Set the expected delay needed for all elements to perform the
+PAUSED to PLAYING state change. @delay will be added to the
+base time of the elements so that they wait an additional @delay
+amount of time before starting to process buffers and cannot be
+#GST_CLOCK_TIME_NONE.
+This option is used for tuning purposes and should normally not be
+used.
+MT safe."
+              version="0.10.5">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="delay" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_delay"
+              c:identifier="gst_pipeline_get_delay"
+              doc="Get the configured delay (see gst_pipeline_set_delay()).
+MT safe."
+              version="0.10.5">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="set_auto_flush_bus"
+              c:identifier="gst_pipeline_set_auto_flush_bus"
+              doc="the pipeline goes from READY to NULL state
+Usually, when a pipeline goes from READY to NULL state, it automatically
+flushes all pending messages on the bus, which is done for refcounting
+purposes, to break circular references.
+This means that applications that update state using (async) bus messages
+(e.g. do certain things when a pipeline goes from PAUSED to READY) might
+not get to see messages when the pipeline is shut down, because they might
+be flushed before they can be dispatched in the main thread. This behaviour
+can be disabled using this function.
+It is important that all messages on the bus are handled when the
+automatic flushing is disabled else memory leaks will be introduced.
+MT safe."
+              version="0.10.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="auto_flush" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_auto_flush_bus"
+              c:identifier="gst_pipeline_get_auto_flush_bus"
+              doc="Check if @pipeline will automatically flush messages when going to
+the NULL state.
+going from READY to NULL state or not.
+MT safe."
+              version="0.10.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="auto-flush-bus"
+                version="0.10.4"
+                writable="1"
+                doc="Whether or not to automatically flush all messages on the
+pipeline&apos;s bus when going from READY to NULL state. Please see
+gst_pipeline_set_auto_flush_bus() for more information on this option.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="delay" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </property>
+      <field name="bin">
+        <type name="Bin" c:type="GstBin"/>
+      </field>
+      <field name="fixed_clock">
+        <type name="Clock" c:type="GstClock*"/>
+      </field>
+      <field name="stream_time">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="delay">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="priv">
+        <type name="PipelinePrivate" c:type="GstPipelinePrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="PipelineClass"
+            c:type="GstPipelineClass"
+            glib:is-gtype-struct-for="Pipeline">
+      <field name="parent_class">
+        <type name="BinClass" c:type="GstBinClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="PipelineFlags"
+              doc="Pipeline flags"
+              c:type="GstPipelineFlags">
+      <member name="fixed_clock"
+              value="33554432"
+              c:identifier="GST_PIPELINE_FLAG_FIXED_CLOCK"/>
+      <member name="last"
+              value="536870912"
+              c:identifier="GST_PIPELINE_FLAG_LAST"/>
+    </bitfield>
+    <record name="PipelinePrivate" c:type="GstPipelinePrivate">
+    </record>
+    <class name="Plugin"
+           c:type="GstPlugin"
+           doc="The plugin object"
+           parent="Object"
+           glib:type-name="GstPlugin"
+           glib:get-type="gst_plugin_get_type"
+           glib:type-struct="PluginClass">
+      <function name="register_static"
+                c:identifier="gst_plugin_register_static"
+                doc="plugin was compiled for, you can just use GST_VERSION_MAJOR here
+plugin was compiled for, you can just use GST_VERSION_MINOR here
+library-specific namespace prefix in order to avoid name conflicts in
+case a similar plugin with the same name ever gets added to GStreamer)
+(see #GstPluginDesc above) or the plugin will not be registered.
+Registers a static plugin, ie. a plugin which is private to an application
+or library and contained within the application or library (as opposed to
+being shipped as a separate module file).
+You must make sure that GStreamer has been initialised (with gst_init() or
+via gst_init_get_option_group()) before calling this function."
+                version="0.10.16">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="major_version" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="minor_version" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="init_func" transfer-ownership="none" scope="call">
+            <type name="PluginInitFunc" c:type="GstPluginInitFunc"/>
+          </parameter>
+          <parameter name="version" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="license" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="source" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="package" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="origin" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="register_static_full"
+                c:identifier="gst_plugin_register_static_full"
+                doc="plugin was compiled for, you can just use GST_VERSION_MAJOR here
+plugin was compiled for, you can just use GST_VERSION_MINOR here
+library-specific namespace prefix in order to avoid name conflicts in
+case a similar plugin with the same name ever gets added to GStreamer)
+(see #GstPluginDesc above) or the plugin will not be registered.
+Registers a static plugin, ie. a plugin which is private to an application
+or library and contained within the application or library (as opposed to
+being shipped as a separate module file) with a #GstPluginInitFullFunc
+which allows user data to be passed to the callback function (useful
+for bindings).
+You must make sure that GStreamer has been initialised (with gst_init() or
+via gst_init_get_option_group()) before calling this function."
+                version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="major_version" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="minor_version" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="init_full_func"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="PluginInitFullFunc" c:type="GstPluginInitFullFunc"/>
+          </parameter>
+          <parameter name="version" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="license" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="source" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="package" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="origin" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="load_file"
+                c:identifier="gst_plugin_load_file"
+                doc="Loads the given plugin and refs it.  Caller needs to unref after use.
+newly-loaded GstPlugin, or NULL if an error occurred."
+                throws="1">
+        <return-value transfer-ownership="full">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="load_by_name"
+                c:identifier="gst_plugin_load_by_name"
+                doc="Load the named plugin. Refs the plugin.">
+        <return-value transfer-ownership="full">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="list_free"
+                c:identifier="gst_plugin_list_free"
+                doc="Unrefs each member of @list, then frees the list.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_name"
+              c:identifier="gst_plugin_get_name"
+              doc="Get the short name of the plugin">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_description"
+              c:identifier="gst_plugin_get_description"
+              doc="Get the long descriptive name of the plugin">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_filename"
+              c:identifier="gst_plugin_get_filename"
+              doc="get the filename of the plugin">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_version"
+              c:identifier="gst_plugin_get_version"
+              doc="get the version of the plugin">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_license"
+              c:identifier="gst_plugin_get_license"
+              doc="get the license of the plugin">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_source"
+              c:identifier="gst_plugin_get_source"
+              doc="get the source module the plugin belongs to.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_package"
+              c:identifier="gst_plugin_get_package"
+              doc="get the package the plugin belongs to.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_origin"
+              c:identifier="gst_plugin_get_origin"
+              doc="get the URL where the plugin comes from">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_cache_data"
+              c:identifier="gst_plugin_get_cache_data"
+              doc="Gets the plugin specific data cache. If it is %NULL there is no cached data
+stored. This is the case when the registry is getting rebuilt."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+      </method>
+      <method name="set_cache_data"
+              c:identifier="gst_plugin_set_cache_data"
+              doc="Adds plugin specific data to cache. Passes the ownership of the structure to
+the @plugin.
+The cache is flushed every time the registry is rebuilt."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cache_data" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_module"
+              c:identifier="gst_plugin_get_module"
+              doc="Gets the #GModule of the plugin. If the plugin isn&apos;t loaded yet, NULL is
+returned.
+loaded yet.">
+        <return-value transfer-ownership="full">
+          <type name="GModule.Module" c:type="GModule*"/>
+        </return-value>
+      </method>
+      <method name="is_loaded"
+              c:identifier="gst_plugin_is_loaded"
+              doc="queries if the plugin is loaded into memory">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="name_filter"
+              c:identifier="gst_plugin_name_filter"
+              doc="A standard filter that returns TRUE when the plugin is of the
+given name.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load"
+              c:identifier="gst_plugin_load"
+              doc="Loads @plugin. Note that the *return value* is the loaded plugin; @plugin is
+untouched. The normal use pattern of this function goes like this:
+&lt;programlisting&gt;
+GstPlugin *loaded_plugin;
+loaded_plugin = gst_plugin_load (plugin);
+// presumably, we&apos;re no longer interested in the potentially-unloaded plugin
+gst_object_unref (plugin);
+plugin = loaded_plugin;
+&lt;/programlisting&gt;">
+        <return-value transfer-ownership="full">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </return-value>
+      </method>
+      <method name="add_dependency"
+              c:identifier="gst_plugin_add_dependency"
+              doc="feature set of the plugin (e.g. an environment variable containing
+paths where to look for additional modules/plugins of a library),
+or NULL. Environment variable names may be followed by a path component
+which will be added to the content of the environment variable, e.g.
+&quot;HOME/.mystuff/plugins&quot;.
+may be.
+depending on @flags) to be used in combination with the paths from
+Make GStreamer aware of external dependencies which affect the feature
+set of this plugin (ie. the elements or typefinders associated with it).
+GStreamer will re-inspect plugins with external dependencies whenever any
+of the external dependencies change. This is useful for plugins which wrap
+other plugin systems, e.g. a plugin which wraps a plugin-based visualisation
+library and makes visualisations available as GStreamer elements, or a
+codec loader which exposes elements and/or caps dependent on what external
+codec libraries are currently installed."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="env_vars" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="paths" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="names" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="PluginDependencyFlags"
+                  c:type="GstPluginDependencyFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_dependency_simple"
+              c:identifier="gst_plugin_add_dependency_simple"
+              doc="or NULL. Environment variable names may be followed by a path component
+which will be added to the content of the environment variable, e.g.
+&quot;HOME/.mystuff/plugins:MYSTUFF_PLUGINS_PATH&quot;
+or NULL
+Make GStreamer aware of external dependencies which affect the feature
+set of this plugin (ie. the elements or typefinders associated with it).
+GStreamer will re-inspect plugins with external dependencies whenever any
+of the external dependencies change. This is useful for plugins which wrap
+other plugin systems, e.g. a plugin which wraps a plugin-based visualisation
+library and makes visualisations available as GStreamer elements, or a
+codec loader which exposes elements and/or caps dependent on what external
+codec libraries are currently installed.
+Convenience wrapper function for gst_plugin_add_dependency() which
+takes simple strings as arguments instead of string arrays, with multiple
+arguments separated by predefined delimiters (see above)."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="env_vars" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="paths" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="names" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="PluginDependencyFlags"
+                  c:type="GstPluginDependencyFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="desc">
+        <type name="PluginDesc" c:type="GstPluginDesc"/>
+      </field>
+      <field name="orig_desc">
+        <type name="PluginDesc" c:type="GstPluginDesc*"/>
+      </field>
+      <field name="flags">
+        <type name="uint" c:type="unsigned"/>
+      </field>
+      <field name="filename">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="basename">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="module">
+        <type name="GModule.Module" c:type="GModule*"/>
+      </field>
+      <field name="file_size">
+        <type name="size_t" c:type="off_t"/>
+      </field>
+      <field name="file_mtime">
+        <type name="time_t" c:type="time_t"/>
+      </field>
+      <field name="registered">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="priv">
+        <type name="PluginPrivate" c:type="GstPluginPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="PluginClass"
+            c:type="GstPluginClass"
+            glib:is-gtype-struct-for="Plugin">
+      <field name="object_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="PluginDependencyFlags"
+              doc="argument only if none of the environment variables is set
+filename argument as filter suffix and check all matching files in
+the directory
+Flags used in connection with gst_plugin_add_dependency()."
+              version="0.10.22"
+              c:type="GstPluginDependencyFlags">
+      <member name="none"
+              value="0"
+              c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_NONE"/>
+      <member name="recurse"
+              value="1"
+              c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_RECURSE"/>
+      <member name="paths_are_default_only"
+              value="2"
+              c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_DEFAULT_ONLY"/>
+      <member name="file_name_is_suffix"
+              value="4"
+              c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX"/>
+    </bitfield>
+    <record name="PluginDesc"
+            c:type="GstPluginDesc"
+            doc="A plugin should export a variable of this type called plugin_desc. The plugin
+loader will use the data provided there to initialize the plugin.
+BSD, MIT/X11, Proprietary, unknown.">
+      <field name="major_version" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="minor_version" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="plugin_init" writable="1">
+        <type name="PluginInitFunc" c:type="GstPluginInitFunc"/>
+      </field>
+      <field name="version" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="license" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="package" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="origin" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="PluginError"
+                 doc="The plugin loading errors"
+                 c:type="GstPluginError"
+                 glib:error-quark="gst_plugin_error_quark">
+      <member name="module" value="0" c:identifier="GST_PLUGIN_ERROR_MODULE"/>
+      <member name="dependencies"
+              value="1"
+              c:identifier="GST_PLUGIN_ERROR_DEPENDENCIES"/>
+      <member name="name_mismatch"
+              value="2"
+              c:identifier="GST_PLUGIN_ERROR_NAME_MISMATCH"/>
+    </enumeration>
+    <class name="PluginFeature"
+           c:type="GstPluginFeature"
+           doc="Opaque #GstPluginFeature structure."
+           parent="Object"
+           abstract="1"
+           glib:type-name="GstPluginFeature"
+           glib:get-type="gst_plugin_feature_get_type"
+           glib:type-struct="PluginFeatureClass">
+      <function name="list_free"
+                c:identifier="gst_plugin_feature_list_free"
+                doc="Unrefs each member of @list, then frees the list.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="list_copy"
+                c:identifier="gst_plugin_feature_list_copy"
+                doc="Copies the list of features. Caller should call @gst_plugin_feature_list_free
+when done with the list."
+                version="0.10.26">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="load"
+              c:identifier="gst_plugin_feature_load"
+              doc="Loads the plugin containing @feature if it&apos;s not already loaded. @feature is
+unaffected; use the return value instead.
+Normally this function is used like this:
+|[
+GstPluginFeature *loaded_feature;
+loaded_feature = gst_plugin_feature_load (feature);
+// presumably, we&apos;re no longer interested in the potentially-unloaded feature
+gst_object_unref (feature);
+feature = loaded_feature;
+]|">
+        <return-value transfer-ownership="full">
+          <type name="PluginFeature" c:type="GstPluginFeature*"/>
+        </return-value>
+      </method>
+      <method name="type_name_filter"
+              c:identifier="gst_plugin_feature_type_name_filter"
+              doc="Compares type and name of plugin feature. Can be used with gst_filter_run().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="TypeNameData" c:type="GstTypeNameData*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_rank"
+              c:identifier="gst_plugin_feature_set_rank"
+              doc="Specifies a rank for a plugin feature, so that autoplugging uses
+the most appropriate feature.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rank" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_name"
+              c:identifier="gst_plugin_feature_set_name"
+              doc="Sets the name of a plugin feature. The name uniquely identifies a feature
+within all features of the same type. Renaming a plugin feature is not
+allowed. A copy is made of the name so you should free the supplied @name
+after calling this function.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_rank"
+              c:identifier="gst_plugin_feature_get_rank"
+              doc="Gets the rank of a plugin feature.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_name"
+              c:identifier="gst_plugin_feature_get_name"
+              doc="Gets the name of a plugin feature.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="check_version"
+              c:identifier="gst_plugin_feature_check_version"
+              doc="Checks whether the given plugin feature is at least
+the required version
+the required version, otherwise #FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_major" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="min_minor" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="min_micro" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="loaded">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="name">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="rank">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="plugin_name">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="PluginFeatureClass"
+            c:type="GstPluginFeatureClass"
+            glib:is-gtype-struct-for="PluginFeature">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="PluginFeatureFilter"
+              c:type="GstPluginFeatureFilter"
+              doc="gst_registry_feature_filter()
+A function that can be used with e.g. gst_registry_feature_filter()
+to get a list of pluginfeature that match certain criteria.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="feature" transfer-ownership="none">
+          <type name="PluginFeature" c:type="GstPluginFeature*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PluginFilter"
+              c:type="GstPluginFilter"
+              doc="A function that can be used with e.g. gst_registry_plugin_filter()
+to get a list of plugins that match certain criteria.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin" transfer-ownership="none">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="PluginFlags"
+              doc="The plugin loading state"
+              c:type="GstPluginFlags">
+      <member name="cached" value="1" c:identifier="GST_PLUGIN_FLAG_CACHED"/>
+      <member name="blacklisted"
+              value="2"
+              c:identifier="GST_PLUGIN_FLAG_BLACKLISTED"/>
+    </bitfield>
+    <callback name="PluginInitFullFunc"
+              c:type="GstPluginInitFullFunc"
+              doc="A plugin should provide a pointer to a function of either #GstPluginInitFunc
+or this type in the plugin_desc struct.
+The function will be called by the loader at startup. One would then
+register each #GstPluginFeature. This version allows
+user data to be passed to init function (useful for bindings)."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin" transfer-ownership="none">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PluginInitFunc"
+              c:type="GstPluginInitFunc"
+              doc="A plugin should provide a pointer to a function of this type in the
+plugin_desc struct.
+This function will be called by the loader at startup. One would then
+register each #GstPluginFeature.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin" transfer-ownership="none">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="PluginPrivate" c:type="GstPluginPrivate">
+    </record>
+    <record name="Poll"
+            c:type="GstPoll"
+            doc="A set of file/network descriptors.">
+      <constructor name="new"
+                   c:identifier="gst_poll_new"
+                   doc="Create a new file descriptor set. If @controllable, it
+is possible to restart or flush a call to gst_poll_wait() with
+gst_poll_restart() and gst_poll_set_flushing() respectively.
+gst_poll_free()."
+                   version="0.10.18">
+        <return-value transfer-ownership="full">
+          <type name="Poll" c:type="GstPoll*"/>
+        </return-value>
+        <parameters>
+          <parameter name="controllable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_timer"
+                   c:identifier="gst_poll_new_timer"
+                   doc="Create a new poll object that can be used for scheduling cancellable
+timeouts.
+A timeout is performed with gst_poll_wait(). Multiple timeouts can be
+performed from different threads.
+gst_poll_free()."
+                   version="0.10.23">
+        <return-value transfer-ownership="full">
+          <type name="Poll" c:type="GstPoll*"/>
+        </return-value>
+      </constructor>
+      <method name="free"
+              c:identifier="gst_poll_free"
+              doc="Free a file descriptor set."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add_fd"
+              c:identifier="gst_poll_add_fd"
+              doc="Add a file descriptor to the file descriptor set."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_fd"
+              c:identifier="gst_poll_remove_fd"
+              doc="Remove a file descriptor from the file descriptor set."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_ctl_write"
+              c:identifier="gst_poll_fd_ctl_write"
+              doc="Control whether the descriptor @fd in @set will be monitored for
+writability."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+          <parameter name="active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_ctl_read"
+              c:identifier="gst_poll_fd_ctl_read"
+              doc="Control whether the descriptor @fd in @set will be monitored for
+readability."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+          <parameter name="active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_ignored"
+              c:identifier="gst_poll_fd_ignored"
+              doc="Mark @fd as ignored so that the next call to gst_poll_wait() will yield
+the same result for @fd as last time. This function must be called if no
+operation (read/write/recv/send/etc.) will be performed on @fd before
+the next call to gst_poll_wait().
+The reason why this is needed is because the underlying implementation
+might not allow querying the fd more than once between calls to one of
+the re-enabling operations."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_has_closed"
+              c:identifier="gst_poll_fd_has_closed"
+              doc="Check if @fd in @set has closed the connection."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_has_error"
+              c:identifier="gst_poll_fd_has_error"
+              doc="Check if @fd in @set has an error."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_can_read"
+              c:identifier="gst_poll_fd_can_read"
+              doc="Check if @fd in @set has data to be read."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_can_write"
+              c:identifier="gst_poll_fd_can_write"
+              doc="Check if @fd in @set can be used for writing."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wait"
+              c:identifier="gst_poll_wait"
+              doc="Wait for activity on the file descriptors in @set. This function waits up to
+the specified @timeout.  A timeout of #GST_CLOCK_TIME_NONE waits forever.
+For #GstPoll objects created with gst_poll_new(), this function can only be
+called from a single thread at a time.  If called from multiple threads,
+-1 will be returned with errno set to EPERM.
+This is not true for timer #GstPoll objects created with
+gst_poll_new_timer(), where it is allowed to have multiple threads waiting
+simultaneously.
+activity was detected after @timeout. If an error occurs, -1 is returned
+and errno is set."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_controllable"
+              c:identifier="gst_poll_set_controllable"
+              doc="When @controllable is %TRUE, this function ensures that future calls to
+gst_poll_wait() will be affected by gst_poll_restart() and
+gst_poll_set_flushing()."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="controllable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="restart"
+              c:identifier="gst_poll_restart"
+              doc="Restart any gst_poll_wait() that is in progress. This function is typically
+used after adding or removing descriptors to @set.
+If @set is not controllable, then this call will have no effect."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_flushing"
+              c:identifier="gst_poll_set_flushing"
+              doc="When @flushing is %TRUE, this function ensures that current and future calls
+to gst_poll_wait() will return -1, with errno set to EBUSY.
+Unsetting the flushing state will restore normal operation of @set."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flushing" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="write_control"
+              c:identifier="gst_poll_write_control"
+              doc="Write a byte to the control socket of the controllable @set.
+This function is mostly useful for timer #GstPoll objects created with
+gst_poll_new_timer().
+It will make any current and future gst_poll_wait() function return with
+1, meaning the control socket is set. After an equal amount of calls to
+gst_poll_read_control() have been performed, calls to gst_poll_wait() will
+block again until their timeout expired.
+byte could not be written."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="read_control"
+              c:identifier="gst_poll_read_control"
+              doc="Read a byte from the control socket of the controllable @set.
+This function is mostly useful for timer #GstPoll objects created with
+gst_poll_new_timer().
+was no byte to read."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="PollFD" c:type="GstPollFD" doc="A file descriptor object.">
+      <field name="fd" writable="1">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="idx" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <method name="init"
+              c:identifier="gst_poll_fd_init"
+              doc="Initializes @fd. Alternatively you can initialize it with
+#GST_POLL_FD_INIT."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <interface name="Preset"
+               c:type="GstPreset"
+               doc="Opaque #GstPreset data structure."
+               glib:type-name="GstPreset"
+               glib:get-type="gst_preset_get_type"
+               glib:type-struct="PresetInterface">
+      <virtual-method name="get_preset_names" invoker="get_preset_names">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_property_names" invoker="get_property_names">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="load_preset" invoker="load_preset">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="save_preset" invoker="save_preset">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="rename_preset" invoker="rename_preset">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="new_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="delete_preset" invoker="delete_preset">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_meta" invoker="set_meta">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_meta" invoker="get_meta">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_preset_names"
+              c:identifier="gst_preset_get_preset_names"
+              doc="Get a copy of preset names as a NULL terminated string array."
+              version="0.10.20">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_property_names"
+              c:identifier="gst_preset_get_property_names"
+              doc="Get a the names of the GObject properties that can be used for presets."
+              version="0.10.20">
+        <return-value transfer-ownership="full" doc="after use.">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="load_preset"
+              c:identifier="gst_preset_load_preset"
+              doc="Load the given preset."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="save_preset"
+              c:identifier="gst_preset_save_preset"
+              doc="Save the current object settings as a preset under the given name. If there
+is already a preset by this @name it will be overwritten."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="rename_preset"
+              c:identifier="gst_preset_rename_preset"
+              doc="Renames a preset. If there is already a preset by the @new_name it will be
+overwritten."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="new_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_preset"
+              c:identifier="gst_preset_delete_preset"
+              doc="Delete the given preset."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_meta"
+              c:identifier="gst_preset_set_meta"
+              doc="Sets a new @value for an existing meta data item or adds a new item. Meta
+data @tag names can be something like e.g. &quot;comment&quot;. Supplying %NULL for the"
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_meta"
+              c:identifier="gst_preset_get_meta"
+              doc="Gets the @value for an existing meta data @tag. Meta data @tag names can be
+something like e.g. &quot;comment&quot;. Returned values need to be released when done.
+or no value for the given @tag"
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="PresetInterface"
+            c:type="GstPresetInterface"
+            glib:is-gtype-struct-for="Preset"
+            doc="#GstPreset interface.">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_preset_names">
+        <callback name="get_preset_names" c:type="get_preset_names">
+          <return-value transfer-ownership="full">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_property_names">
+        <callback name="get_property_names" c:type="get_property_names">
+          <return-value transfer-ownership="full">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="load_preset">
+        <callback name="load_preset" c:type="load_preset">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="save_preset">
+        <callback name="save_preset" c:type="save_preset">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="rename_preset">
+        <callback name="rename_preset" c:type="rename_preset">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+            <parameter name="old_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="new_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delete_preset">
+        <callback name="delete_preset" c:type="delete_preset">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_meta">
+        <callback name="set_meta" c:type="set_meta">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="tag" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_meta">
+        <callback name="get_meta" c:type="get_meta">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="tag" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <array c:type="gchar**">
+                <type name="utf8"/>
+              </array>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <class name="ProxyPad"
+           c:type="GstProxyPad"
+           parent="Pad"
+           glib:type-name="GstProxyPad"
+           glib:get-type="gst_proxy_pad_get_type"
+           glib:type-struct="ProxyPadClass">
+      <field name="pad">
+        <type name="Pad" c:type="GstPad"/>
+      </field>
+      <field name="priv">
+        <type name="ProxyPadPrivate" c:type="GstProxyPadPrivate*"/>
+      </field>
+    </class>
+    <record name="ProxyPadClass"
+            c:type="GstProxyPadClass"
+            glib:is-gtype-struct-for="ProxyPad">
+      <field name="parent_class">
+        <type name="PadClass" c:type="GstPadClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="1">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="ProxyPadPrivate" c:type="GstProxyPadPrivate">
+    </record>
+    <record name="Query" c:type="GstQuery" doc="The #GstQuery structure.">
+      <field name="mini_object" writable="1">
+        <type name="MiniObject" c:type="GstMiniObject"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="QueryType" c:type="GstQueryType"/>
+      </field>
+      <field name="structure" writable="1">
+        <type name="Structure" c:type="GstStructure*"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <constructor name="new_position"
+                   c:identifier="gst_query_new_position"
+                   doc="Constructs a new query stream position query object. Use gst_query_unref()
+when done with it. A position query is used to query the current position
+of playback in the streams, in some format.">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_duration"
+                   c:identifier="gst_query_new_duration"
+                   doc="Constructs a new stream duration query object to query in the given format.
+Use gst_query_unref() when done with it. A duration query will give the
+total length of the stream.">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_latency"
+                   c:identifier="gst_query_new_latency"
+                   doc="Constructs a new latency query object.
+Use gst_query_unref() when done with it. A latency query is usually performed
+by sinks to compensate for additional latency introduced by elements in the
+pipeline."
+                   version="0.10.12">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_convert"
+                   c:identifier="gst_query_new_convert"
+                   doc="Constructs a new convert query object. Use gst_query_unref()
+when done with it. A convert query is used to ask for a conversion between
+one format and another.">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="dest_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_segment"
+                   c:identifier="gst_query_new_segment"
+                   doc="Constructs a new segment query object. Use gst_query_unref()
+when done with it. A segment query is used to discover information about the
+currently configured segment for playback.">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_application"
+                   c:identifier="gst_query_new_application"
+                   doc="Constructs a new custom application query object. Use gst_query_unref()
+when done with it.">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="QueryType" c:type="GstQueryType"/>
+          </parameter>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_seeking"
+                   c:identifier="gst_query_new_seeking"
+                   doc="Constructs a new query object for querying seeking properties of
+the stream.">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_formats"
+                   c:identifier="gst_query_new_formats"
+                   doc="Constructs a new query object for querying formats of
+the stream."
+                   version="0.10.4">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_buffering" c:identifier="gst_query_new_buffering">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_uri"
+                   c:identifier="gst_query_new_uri"
+                   doc="Constructs a new query URI query object. Use gst_query_unref()
+when done with it. An URI query is used to query the current URI
+that is used by the source or sink."
+                   version="0.10.22">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+      </constructor>
+      <method name="set_position"
+              c:identifier="gst_query_set_position"
+              doc="Answer a position query by setting the requested value in the given format.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="cur" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_position"
+              c:identifier="gst_query_parse_position"
+              doc="Parse a position query, writing the format into @format, and the position
+into @cur, if the respective parameters are non-NULL.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="cur" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_duration"
+              c:identifier="gst_query_set_duration"
+              doc="Answer a duration query by setting the requested value in the given format.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_duration"
+              c:identifier="gst_query_parse_duration"
+              doc="Parse a duration query answer. Write the format of the duration into @format,
+and the value into @duration, if the respective variables are non-NULL.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="duration" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_latency"
+              c:identifier="gst_query_set_latency"
+              doc="Answer a latency query by setting the requested values in the given format."
+              version="0.10.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="live" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="min_latency" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="max_latency" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_latency"
+              c:identifier="gst_query_parse_latency"
+              doc="Parse a latency query answer."
+              version="0.10.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="live" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="min_latency" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="max_latency" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_convert"
+              c:identifier="gst_query_set_convert"
+              doc="Answer a convert query by setting the requested values.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="src_value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="dest_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="dest_value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_convert"
+              c:identifier="gst_query_parse_convert"
+              doc="Parse a convert query answer. Any of @src_format, @src_value, @dest_format,
+and @dest_value may be NULL, in which case that value is omitted.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="src_value"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="dest_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="dest_value"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_segment"
+              c:identifier="gst_query_set_segment"
+              doc="Answer a segment query by setting the requested values. The normal
+playback segment of a pipeline is 0 to duration at the default rate of
+1.0. If a seek was performed on the pipeline to play a different
+segment, this query will return the range specified in the last seek.
+playback range start and stop values expressed in @format.
+The values are always between 0 and the duration of the media and
+negative rates, playback will actually happen from @stop_value to">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start_value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop_value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_segment"
+              c:identifier="gst_query_parse_segment"
+              doc="Parse a segment query answer. Any of @rate, @format, @start_value, and
+See gst_query_set_segment() for an explanation of the function arguments.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rate" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="start_value"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="stop_value"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_structure"
+              c:identifier="gst_query_get_structure"
+              doc="Get the structure of a query.
+by the query and will therefore be freed when the query is unreffed.">
+        <return-value transfer-ownership="full">
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+      </method>
+      <method name="set_seeking"
+              c:identifier="gst_query_set_seeking"
+              doc="Set the seeking query result fields in @query.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="seekable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="segment_start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="segment_end" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_seeking"
+              c:identifier="gst_query_parse_seeking"
+              doc="Parse a seeking query, writing the format into @format, and
+other results into the passed parameters, if the respective parameters
+are non-NULL">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="seekable" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="segment_start"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="segment_end"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_formats"
+              c:identifier="gst_query_set_formats"
+              doc="Set the formats query result fields in @query. The number of formats passed
+must be equal to @n_formats.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_formats" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_formatsv"
+              c:identifier="gst_query_set_formatsv"
+              doc="Set the formats query result fields in @query. The number of formats passed
+in the @formats array must be equal to @n_formats."
+              version="0.10.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_formats" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="formats" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_formats_length"
+              c:identifier="gst_query_parse_formats_length"
+              doc="Parse the number of formats in the formats @query."
+              version="0.10.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_formats"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_formats_nth"
+              c:identifier="gst_query_parse_formats_nth"
+              doc="Parse the format query and retrieve the @nth format from it into
+set to GST_FORMAT_UNDEFINED."
+              version="0.10.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="nth" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_buffering_percent"
+              c:identifier="gst_query_set_buffering_percent">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="busy" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="percent" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_buffering_percent"
+              c:identifier="gst_query_parse_buffering_percent">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="busy" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="percent" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_buffering_stats"
+              c:identifier="gst_query_set_buffering_stats"
+              doc="Configures the buffering stats values in @query."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="BufferingMode" c:type="GstBufferingMode"/>
+          </parameter>
+          <parameter name="avg_in" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="avg_out" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="buffering_left" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_buffering_stats"
+              c:identifier="gst_query_parse_buffering_stats"
+              doc="Extracts the buffering stats values from @query."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="BufferingMode" c:type="GstBufferingMode*"/>
+          </parameter>
+          <parameter name="avg_in" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="avg_out" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="buffering_left"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_buffering_range"
+              c:identifier="gst_query_set_buffering_range"
+              doc="Set the available query result fields in @query."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="estimated_total" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_buffering_range"
+              c:identifier="gst_query_parse_buffering_range"
+              doc="Parse an available query, writing the format into @format, and
+other results into the passed parameters, if the respective parameters
+are non-NULL"
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="start" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="stop" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="estimated_total"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_uri"
+              c:identifier="gst_query_parse_uri"
+              doc="Parse an URI query, writing the URI into @uri as a newly
+allocated string, if the respective parameters are non-NULL.
+Free the string with g_free() after usage."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_uri"
+              c:identifier="gst_query_set_uri"
+              doc="Answer a URI query by setting the requested URI."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="QueryClass" c:type="GstQueryClass">
+      <field name="mini_object_class" writable="1">
+        <type name="MiniObjectClass" c:type="GstMiniObjectClass"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="QueryType"
+                 doc="0.10.20.
+0.10.22.
+Standard predefined Query types"
+                 c:type="GstQueryType">
+      <member name="none" value="0" c:identifier="GST_QUERY_NONE"/>
+      <member name="position" value="1" c:identifier="GST_QUERY_POSITION"/>
+      <member name="duration" value="2" c:identifier="GST_QUERY_DURATION"/>
+      <member name="latency" value="3" c:identifier="GST_QUERY_LATENCY"/>
+      <member name="jitter" value="4" c:identifier="GST_QUERY_JITTER"/>
+      <member name="rate" value="5" c:identifier="GST_QUERY_RATE"/>
+      <member name="seeking" value="6" c:identifier="GST_QUERY_SEEKING"/>
+      <member name="segment" value="7" c:identifier="GST_QUERY_SEGMENT"/>
+      <member name="convert" value="8" c:identifier="GST_QUERY_CONVERT"/>
+      <member name="formats" value="9" c:identifier="GST_QUERY_FORMATS"/>
+      <member name="buffering" value="10" c:identifier="GST_QUERY_BUFFERING"/>
+      <member name="custom" value="11" c:identifier="GST_QUERY_CUSTOM"/>
+      <member name="uri" value="12" c:identifier="GST_QUERY_URI"/>
+    </enumeration>
+    <record name="QueryTypeDefinition"
+            c:type="GstQueryTypeDefinition"
+            doc="A Query Type definition">
+      <field name="value" writable="1">
+        <type name="QueryType" c:type="GstQueryType"/>
+      </field>
+      <field name="nick" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="quark" writable="1">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </field>
+    </record>
+    <enumeration name="Rank"
+                 doc="Element priority ranks. Defines the order in which the autoplugger (or
+similar rank-picking mechanisms, such as e.g. gst_element_make_from_uri())
+will choose this element over an alternative one with the same function.
+These constants serve as a rough guidance for defining the rank of a
+#GstPluginFeature. Any value is valid, including values bigger than"
+                 c:type="GstRank">
+      <member name="none" value="0" c:identifier="GST_RANK_NONE"/>
+      <member name="marginal" value="64" c:identifier="GST_RANK_MARGINAL"/>
+      <member name="secondary" value="128" c:identifier="GST_RANK_SECONDARY"/>
+      <member name="primary" value="256" c:identifier="GST_RANK_PRIMARY"/>
+    </enumeration>
+    <class name="Registry"
+           c:type="GstRegistry"
+           doc="Opaque #GstRegistry structure."
+           parent="Object"
+           glib:type-name="GstRegistry"
+           glib:get-type="gst_registry_get_type"
+           glib:type-struct="RegistryClass">
+      <function name="get_default"
+                c:identifier="gst_registry_get_default"
+                doc="Retrieves the default registry. The caller does not own a reference on the
+registry, as it is alive as long as GStreamer is initialized.">
+        <return-value transfer-ownership="full">
+          <type name="Registry" c:type="GstRegistry*"/>
+        </return-value>
+      </function>
+      <function name="fork_is_enabled"
+                c:identifier="gst_registry_fork_is_enabled"
+                doc="By default GStreamer will perform scanning and rebuilding of the
+registry file using a helper child process.
+Applications might want to disable this behaviour with the
+gst_registry_fork_set_enabled() function, in which case new plugins
+are scanned (and loaded) into the application process.
+rebuilding the registry."
+                version="0.10.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </function>
+      <function name="fork_set_enabled"
+                c:identifier="gst_registry_fork_set_enabled"
+                doc="Applications might want to disable/enable spawning of a child helper process
+when rebuilding the registry. See gst_registry_fork_is_enabled() for more
+information."
+                version="0.10.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enabled" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="scan_path"
+              c:identifier="gst_registry_scan_path"
+              doc="Scan the given path for plugins to add to the registry. The syntax of the
+path is specific to the registry.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_path"
+              c:identifier="gst_registry_add_path"
+              doc="Add the given path to the registry. The syntax of the
+path is specific to the registry. If the path has already been
+added, do nothing.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_path_list"
+              c:identifier="gst_registry_get_path_list"
+              doc="Get the list of paths for the given registry.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="add_plugin"
+              c:identifier="gst_registry_add_plugin"
+              doc="Add the plugin to the registry. The plugin-added signal will be emitted.
+This function will sink @plugin.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="plugin" transfer-ownership="none">
+            <type name="Plugin" c:type="GstPlugin*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_plugin"
+              c:identifier="gst_registry_remove_plugin"
+              doc="Remove the plugin from the registry.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="plugin" transfer-ownership="none">
+            <type name="Plugin" c:type="GstPlugin*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_feature"
+              c:identifier="gst_registry_add_feature"
+              doc="Add the feature to the registry. The feature-added signal will be emitted.
+This function sinks @feature.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="feature" transfer-ownership="none">
+            <type name="PluginFeature" c:type="GstPluginFeature*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_feature"
+              c:identifier="gst_registry_remove_feature"
+              doc="Remove the feature from the registry.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="feature" transfer-ownership="none">
+            <type name="PluginFeature" c:type="GstPluginFeature*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_plugin_list"
+              c:identifier="gst_registry_get_plugin_list"
+              doc="Get a copy of all plugins registered in the given registry. The refcount
+of each element in the list in incremented.
+MT safe.">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="plugin_filter"
+              c:identifier="gst_registry_plugin_filter"
+              doc="Runs a filter against all plugins in the registry and returns a #GList with
+the results. If the first flag is set, only the first match is
+returned (as a list with a single object).
+Every plugin is reffed; use gst_plugin_list_free() after use, which
+will unref again.
+MT safe.">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter" transfer-ownership="none" scope="call">
+            <type name="PluginFilter" c:type="GstPluginFilter"/>
+          </parameter>
+          <parameter name="first" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="feature_filter"
+              c:identifier="gst_registry_feature_filter"
+              doc="Runs a filter against all features of the plugins in the registry
+and returns a GList with the results.
+If the first flag is set, only the first match is
+returned (as a list with a single object).
+after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter" transfer-ownership="none" scope="call">
+            <type name="PluginFeatureFilter" c:type="GstPluginFeatureFilter"/>
+          </parameter>
+          <parameter name="first" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_feature_list"
+              c:identifier="gst_registry_get_feature_list"
+              doc="Retrieves a #GList of #GstPluginFeature of @type.
+gst_plugin_feature_list_free() after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_feature_list_by_plugin"
+              c:identifier="gst_registry_get_feature_list_by_plugin"
+              doc="Retrieves a #GList of features of the plugin with name @name.
+after usage.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_feature_list_cookie"
+              c:identifier="gst_registry_get_feature_list_cookie"
+              doc="Returns the registrys feature list cookie. This changes
+every time a feature is added or removed from the registry."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="find_plugin"
+              c:identifier="gst_registry_find_plugin"
+              doc="Find the plugin with the given name in the registry.
+The plugin will be reffed; caller is responsible for unreffing.
+gst_object_unref() after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_feature"
+              c:identifier="gst_registry_find_feature"
+              doc="Find the pluginfeature with the given name and type in the registry.
+if the plugin was not found. gst_object_unref() after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="PluginFeature" c:type="GstPluginFeature*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup"
+              c:identifier="gst_registry_lookup"
+              doc="Look up a plugin in the given registry with the given filename.
+If found, plugin is reffed.
+after usage.">
+        <return-value transfer-ownership="full">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_feature"
+              c:identifier="gst_registry_lookup_feature"
+              doc="Find a #GstPluginFeature with @name in @registry.
+gst_object_unref() after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="PluginFeature" c:type="GstPluginFeature*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="xml_read_cache" c:identifier="gst_registry_xml_read_cache">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="location" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="xml_write_cache"
+              c:identifier="gst_registry_xml_write_cache">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="location" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="plugins">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="features">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="paths">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="cache_file">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="feature_hash">
+        <type name="GLib.HashTable" c:type="GHashTable*"/>
+      </field>
+      <field name="basename_hash">
+        <type name="GLib.HashTable" c:type="GHashTable*"/>
+      </field>
+      <field name="priv">
+        <type name="RegistryPrivate" c:type="GstRegistryPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="1">
+          <type name="any"/>
+        </array>
+      </field>
+      <glib:signal name="feature-added"
+                   doc="Signals that a feature has been added to the registry (possibly
+replacing a previously-added one by the same name)">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="feature" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="plugin-added"
+                   doc="Signals that a plugin has been added to the registry (possibly
+replacing a previously-added one by the same name)">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="plugin" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="RegistryClass"
+            c:type="GstRegistryClass"
+            glib:is-gtype-struct-for="Registry">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="plugin_added">
+        <callback name="plugin_added" c:type="plugin_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="registry" transfer-ownership="none">
+              <type name="Registry" c:type="GstRegistry*"/>
+            </parameter>
+            <parameter name="plugin" transfer-ownership="none">
+              <type name="Plugin" c:type="GstPlugin*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="feature_added">
+        <callback name="feature_added" c:type="feature_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="registry" transfer-ownership="none">
+              <type name="Registry" c:type="GstRegistry*"/>
+            </parameter>
+            <parameter name="feature" transfer-ownership="none">
+              <type name="PluginFeature" c:type="GstPluginFeature*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="RegistryPrivate" c:type="GstRegistryPrivate">
+    </record>
+    <enumeration name="ResourceError"
+                 doc="category.  Make sure you add a custom message to the error call.
+deciding where to go while developing code.
+both reading and writing, or either (but unspecified which).
+Resource errors are for any resource used by an element:
+memory, files, network connections, process space, ...
+They&apos;re typically used by source and sink elements."
+                 c:type="GstResourceError"
+                 glib:error-quark="gst_resource_error_quark">
+      <member name="failed"
+              value="1"
+              c:identifier="GST_RESOURCE_ERROR_FAILED"/>
+      <member name="too_lazy"
+              value="2"
+              c:identifier="GST_RESOURCE_ERROR_TOO_LAZY"/>
+      <member name="not_found"
+              value="3"
+              c:identifier="GST_RESOURCE_ERROR_NOT_FOUND"/>
+      <member name="busy" value="4" c:identifier="GST_RESOURCE_ERROR_BUSY"/>
+      <member name="open_read"
+              value="5"
+              c:identifier="GST_RESOURCE_ERROR_OPEN_READ"/>
+      <member name="open_write"
+              value="6"
+              c:identifier="GST_RESOURCE_ERROR_OPEN_WRITE"/>
+      <member name="open_read_write"
+              value="7"
+              c:identifier="GST_RESOURCE_ERROR_OPEN_READ_WRITE"/>
+      <member name="close" value="8" c:identifier="GST_RESOURCE_ERROR_CLOSE"/>
+      <member name="read" value="9" c:identifier="GST_RESOURCE_ERROR_READ"/>
+      <member name="write" value="10" c:identifier="GST_RESOURCE_ERROR_WRITE"/>
+      <member name="seek" value="11" c:identifier="GST_RESOURCE_ERROR_SEEK"/>
+      <member name="sync" value="12" c:identifier="GST_RESOURCE_ERROR_SYNC"/>
+      <member name="settings"
+              value="13"
+              c:identifier="GST_RESOURCE_ERROR_SETTINGS"/>
+      <member name="no_space_left"
+              value="14"
+              c:identifier="GST_RESOURCE_ERROR_NO_SPACE_LEFT"/>
+      <member name="num_errors"
+              value="15"
+              c:identifier="GST_RESOURCE_ERROR_NUM_ERRORS"/>
+    </enumeration>
+    <constant name="SECOND" value="0">
+      <type name="int"/>
+    </constant>
+    <enumeration name="SearchMode"
+                 doc="The different search modes."
+                 version="0.10.23"
+                 c:type="GstSearchMode">
+      <member name="exact" value="0" c:identifier="GST_SEARCH_MODE_EXACT"/>
+      <member name="before" value="1" c:identifier="GST_SEARCH_MODE_BEFORE"/>
+      <member name="after" value="2" c:identifier="GST_SEARCH_MODE_AFTER"/>
+    </enumeration>
+    <bitfield name="SeekFlags"
+              doc="be considerably slower for some formats.
+faster but less accurate.
+elements to skip frames instead of generating all
+frames. Since 0.10.22.
+Flags to be used with gst_element_seek() or gst_event_new_seek(). All flags
+can be used together.
+A non flushing seek might take some time to perform as the currently
+playing data in the pipeline will not be cleared.
+An accurate seek might be slower for formats that don&apos;t have any indexes
+or timestamp markers in the stream. Specifying this flag might require a
+complete scan of the file in those cases.
+no EOS will be emmited by the element that performed the seek, but a
+#GST_MESSAGE_SEGMENT_DONE message will be posted on the bus by the element.
+When this message is posted, it is possible to send a new seek event to
+continue playback. With this seek method it is possible to perform seemless
+looping or simple linear editing.
+When doing fast forward (rate &gt; 1.0) or fast reverse (rate &lt; -1.0) trickmode
+playback, the @GST_SEEK_FLAG_SKIP flag can be used to instruct decoders
+and demuxers to adjust the playback rate by skipping frames. This can improve
+performance and decrease CPU usage because not all frames need to be decoded."
+              c:type="GstSeekFlags">
+      <member name="none" value="0" c:identifier="GST_SEEK_FLAG_NONE"/>
+      <member name="flush" value="1" c:identifier="GST_SEEK_FLAG_FLUSH"/>
+      <member name="accurate" value="2" c:identifier="GST_SEEK_FLAG_ACCURATE"/>
+      <member name="key_unit" value="4" c:identifier="GST_SEEK_FLAG_KEY_UNIT"/>
+      <member name="segment" value="8" c:identifier="GST_SEEK_FLAG_SEGMENT"/>
+      <member name="skip" value="16" c:identifier="GST_SEEK_FLAG_SKIP"/>
+    </bitfield>
+    <enumeration name="SeekType"
+                 doc="can&apos;t be used to seek relative to the current playback position - do a
+position query, calculate the desired position and then do an absolute
+position seek instead if that&apos;s what you want to do.
+The different types of seek events. When constructing a seek event with
+gst_event_new_seek(), a format, a seek method and optional flags are to
+be provided. The seek event is then inserted into the graph with
+gst_pad_send_event() or gst_element_send_event()."
+                 c:type="GstSeekType">
+      <member name="none" value="0" c:identifier="GST_SEEK_TYPE_NONE"/>
+      <member name="cur" value="1" c:identifier="GST_SEEK_TYPE_CUR"/>
+      <member name="set" value="2" c:identifier="GST_SEEK_TYPE_SET"/>
+      <member name="end" value="3" c:identifier="GST_SEEK_TYPE_END"/>
+    </enumeration>
+    <record name="Segment"
+            c:type="GstSegment"
+            doc="A helper structure that holds the configured region of
+interest in a media file."
+            glib:type-name="GstSegment"
+            glib:get-type="gst_segment_get_type">
+      <field name="rate" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="abs_rate" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="format" writable="1">
+        <type name="Format" c:type="GstFormat"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="SeekFlags" c:type="GstSeekFlags"/>
+      </field>
+      <field name="start" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="stop" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="accum" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="last_stop" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="duration" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="applied_rate" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="guint8" fixed-size="0">
+          <type name="uint8"/>
+        </array>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_segment_new"
+                   doc="Allocate a new #GstSegment structure and initialize it using
+gst_segment_init().">
+        <return-value transfer-ownership="full">
+          <type name="Segment" c:type="GstSegment*"/>
+        </return-value>
+      </constructor>
+      <method name="copy"
+              c:identifier="gst_segment_copy"
+              doc="Create a copy of given @segment."
+              version="0.10.20">
+        <return-value transfer-ownership="full">
+          <type name="Segment" c:type="GstSegment*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gst_segment_free"
+              doc="Free the allocated segment @segment.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="init"
+              c:identifier="gst_segment_init"
+              doc="The start/last_stop positions are set to 0 and the stop/duration
+fields are set to -1 (unknown). The default rate of 1.0 and no
+flags are set.
+Initialize @segment to its default values.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_duration"
+              c:identifier="gst_segment_set_duration"
+              doc="Set the duration of the segment to @duration. This function is mainly
+used by elements that perform seeking and know the total duration of the
+segment.
+This field should be set to allow seeking requests relative to the
+duration.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_last_stop"
+              c:identifier="gst_segment_set_last_stop"
+              doc="Set the last observed stop position in the segment to @position.
+This field should be set to allow seeking requests relative to the
+current playing position.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_seek"
+              c:identifier="gst_segment_set_seek"
+              doc="Update the segment structure with the field values of a seek event (see
+gst_event_new_seek()).
+After calling this method, the segment field last_stop and time will
+contain the requested new position in the segment. The new requested
+position in the segment depends on @rate and @start_type and @stop_type.
+For positive @rate, the new position in the segment is the new @segment
+start field when it was updated with a @start_type different from
+#GST_SEEK_TYPE_NONE. If no update was performed on @segment start position
+(#GST_SEEK_TYPE_NONE), @start is ignored and @segment last_stop is
+unmodified.
+For negative @rate, the new position in the segment is the new @segment
+stop field when it was updated with a @stop_type different from
+#GST_SEEK_TYPE_NONE. If no stop was previously configured in the segment, the
+duration of the segment will be used to update the stop position.
+If no update was performed on @segment stop position (#GST_SEEK_TYPE_NONE),
+The applied rate of the segment will be set to 1.0 by default.
+If the caller can apply a rate change, it should update @segment
+rate and applied_rate after calling this function.
+last_stop field. This field can be FALSE if, for example, only the @rate
+has been changed but not the playback position.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="SeekFlags" c:type="GstSeekFlags"/>
+          </parameter>
+          <parameter name="start_type" transfer-ownership="none">
+            <type name="SeekType" c:type="GstSeekType"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop_type" transfer-ownership="none">
+            <type name="SeekType" c:type="GstSeekType"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="update" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_newsegment"
+              c:identifier="gst_segment_set_newsegment"
+              doc="Update the segment structure with the field values of a new segment event and
+with a default applied_rate of 1.0."
+              version="0.10.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="update" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="time" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_newsegment_full"
+              c:identifier="gst_segment_set_newsegment_full"
+              doc="Update the segment structure with the field values of a new segment event.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="update" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="applied_rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="time" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_stream_time"
+              c:identifier="gst_segment_to_stream_time"
+              doc="Translate @position to stream time using the currently configured
+segment. The @position value must be between @segment start and
+stop value.
+This function is typically used by elements that need to operate on
+the stream time of the buffers it receives, such as effect plugins.
+In those use cases, @position is typically the buffer timestamp or
+clock time that one wants to convert to the stream time.
+The stream time is always between 0 and the total duration of the
+media stream.
+was given.">
+        <return-value transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_running_time"
+              c:identifier="gst_segment_to_running_time"
+              doc="Translate @position to the total running time using the currently configured
+and previously accumulated segments. Position is a value between @segment
+start and stop time.
+This function is typically used by elements that need to synchronize to the
+global clock in a pipeline. The runnning time is a constantly increasing value
+starting from 0. When gst_segment_init() is called, this value will reset to
+0.
+This function returns -1 if the position is outside of @segment start and stop.
+was given.">
+        <return-value transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_position"
+              c:identifier="gst_segment_to_position"
+              doc="Convert @running_time into a position in the segment so that
+gst_segment_to_running_time() with that position returns @running_time.
+-1 when @running_time is -1 or when it is not inside @segment."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="running_time" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clip"
+              c:identifier="gst_segment_clip"
+              doc="Clip the given @start and @stop values to the segment boundaries given
+in @segment. @start and @stop are compared and clipped to @segment
+start and stop values.
+If the function returns FALSE, @start and @stop are known to fall
+outside of @segment and @clip_start and @clip_stop are not updated.
+When the function returns TRUE, @clip_start and @clip_stop will be
+updated. If @clip_start or @clip_stop are different from @start or @stop
+respectively, the region fell partially in the segment.
+Note that when @stop is -1, @clip_stop will be set to the end of the
+segment. Depending on the use case, this may or may not be what you want.
+completely in @segment, FALSE if the values are completely outside
+of the segment.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="clip_start"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="clip_stop"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_running_time"
+              c:identifier="gst_segment_set_running_time"
+              doc="Adjust the start/stop and accum values of @segment such that the next valid
+buffer will be one with @running_time.
+returned, @running_time is -1 or not in @segment."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="running_time" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="State"
+                 doc="process data. Sink elements however only accept one
+buffer and then block.
+the data is flowing.
+The possible states an element can be in. States can be changed using
+gst_element_set_state() and checked using gst_element_get_state()."
+                 c:type="GstState">
+      <member name="void_pending"
+              value="0"
+              c:identifier="GST_STATE_VOID_PENDING"/>
+      <member name="null" value="1" c:identifier="GST_STATE_NULL"/>
+      <member name="ready" value="2" c:identifier="GST_STATE_READY"/>
+      <member name="paused" value="3" c:identifier="GST_STATE_PAUSED"/>
+      <member name="playing" value="4" c:identifier="GST_STATE_PLAYING"/>
+    </enumeration>
+    <bitfield name="StateChange"
+              doc="&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+The element must check if the resources it needs are available. Device
+sinks and -sources typically try to probe the device to constrain their
+caps.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+The element opens the device (in case feature need to be probed).
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+The element pads are activated in order to receive data in PAUSED.
+Streaming threads are started.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Some elements might need to return ASYNC and complete the state change
+when they have enough information. It is a requirement for sinks to
+return ASYNC and complete the state change when they receive the first
+buffer or EOS event (preroll). Sinks also block the dataflow when in
+PAUSED.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+A pipeline resets the running_time to 0.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Live sources return NO_PREROLL and don&apos;t generate data.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+Most elements ignore this state change.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+The pipeline selects a clock and distributes this to all the children
+before setting them to PLAYING. This means that it is only alowed to
+synchronize on the clock in the PLAYING state.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+The pipeline uses the clock and the running_time to calculate the
+base_time. The base_time is distributed to all children when performing
+the state change.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Sink elements stop blocking on the preroll buffer or event and start
+rendering the data.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Sinks can post the EOS message in the PLAYING state. It is not allowed to
+post EOS when not in the PLAYING state.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+While streaming in PAUSED or PLAYING elements can create and remove
+sometimes pads.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Live sources start generating data and return SUCCESS.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+Most elements ignore this state change.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+The pipeline calculates the running_time based on the last selected clock
+and the base_time. It stores this information to continue playback when
+going back to the PLAYING state.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Sinks unblock any clock wait calls.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+When a sink does not have a pending buffer to play, it returns ASYNC from
+this state change and completes the state change when it receives a new
+buffer or an EOS event.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Any queued EOS messages are removed since they will be reposted when going
+back to the PLAYING state. The EOS messages are queued in GstBins.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Live sources stop generating data and return NO_PREROLL.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+Sinks unblock any waits in the preroll.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Elements unblock any waits on devices
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Chain or get_range functions return WRONG_STATE.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+The element pads are deactivated so that streaming becomes impossible and
+all streaming threads are stopped.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+The sink forgets all negotiated formats
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Elements remove all sometimes pads
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+Elements close devices
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Elements reset any internal state.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+These are the different state changes an element goes through.
+%GST_STATE_NULL &amp;rArr; %GST_STATE_PLAYING is called an upwards state change
+and %GST_STATE_PLAYING &amp;rArr; %GST_STATE_NULL a downwards state change."
+              c:type="GstStateChange">
+      <member name="null_to_ready"
+              value="10"
+              c:identifier="GST_STATE_CHANGE_NULL_TO_READY"/>
+      <member name="ready_to_paused"
+              value="19"
+              c:identifier="GST_STATE_CHANGE_READY_TO_PAUSED"/>
+      <member name="paused_to_playing"
+              value="28"
+              c:identifier="GST_STATE_CHANGE_PAUSED_TO_PLAYING"/>
+      <member name="playing_to_paused"
+              value="35"
+              c:identifier="GST_STATE_CHANGE_PLAYING_TO_PAUSED"/>
+      <member name="paused_to_ready"
+              value="26"
+              c:identifier="GST_STATE_CHANGE_PAUSED_TO_READY"/>
+      <member name="ready_to_null"
+              value="17"
+              c:identifier="GST_STATE_CHANGE_READY_TO_NULL"/>
+    </bitfield>
+    <enumeration name="StateChangeReturn"
+                 doc="cannot produce data in %GST_STATE_PAUSED.
+This typically happens with live sources.
+The possible return values from a state change function. Only"
+                 c:type="GstStateChangeReturn">
+      <member name="failure"
+              value="0"
+              c:identifier="GST_STATE_CHANGE_FAILURE"/>
+      <member name="success"
+              value="1"
+              c:identifier="GST_STATE_CHANGE_SUCCESS"/>
+      <member name="async" value="2" c:identifier="GST_STATE_CHANGE_ASYNC"/>
+      <member name="no_preroll"
+              value="3"
+              c:identifier="GST_STATE_CHANGE_NO_PREROLL"/>
+    </enumeration>
+    <record name="StaticCaps"
+            c:type="GstStaticCaps"
+            doc="Datastructure to initialize #GstCaps from a string description usually
+used in conjunction with GST_STATIC_CAPS() and gst_static_caps_get() to
+instantiate a #GstCaps.">
+      <field name="caps" writable="1">
+        <type name="Caps" c:type="GstCaps"/>
+      </field>
+      <field name="string" writable="1">
+        <type name="utf8" c:type="char*"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <method name="get"
+              c:identifier="gst_static_caps_get"
+              doc="Converts a #GstStaticCaps to a #GstCaps.
+core holds an additional ref to the returned caps,
+use gst_caps_make_writable() on the returned caps to modify it.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="StaticPadTemplate" c:type="GstStaticPadTemplate">
+      <field name="name_template" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="direction" writable="1">
+        <type name="PadDirection" c:type="GstPadDirection"/>
+      </field>
+      <field name="presence" writable="1">
+        <type name="PadPresence" c:type="GstPadPresence"/>
+      </field>
+      <field name="static_caps" writable="1">
+        <type name="StaticCaps" c:type="GstStaticCaps"/>
+      </field>
+      <method name="get"
+              c:identifier="gst_static_pad_template_get"
+              doc="Converts a #GstStaticPadTemplate into a #GstPadTemplate.">
+        <return-value transfer-ownership="full">
+          <type name="PadTemplate" c:type="GstPadTemplate*"/>
+        </return-value>
+      </method>
+      <method name="get_caps"
+              c:identifier="gst_static_pad_template_get_caps"
+              doc="Gets the capabilities of the static pad template.
+Unref after usage. Since the core holds an additional
+ref to the returned caps, use gst_caps_make_writable()
+on the returned caps to modify it.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="StreamError"
+                 doc="category.  Make sure you add a custom message to the error call.
+deciding where to go while developing code.
+this functionality yet.
+stream&apos;s type.
+of stream.
+stream&apos;s type.
+(for example, wrong caps).
+Stream errors are for anything related to the stream being processed:
+format errors, media type errors, ...
+They&apos;re typically used by decoders, demuxers, converters, ..."
+                 c:type="GstStreamError"
+                 glib:error-quark="gst_stream_error_quark">
+      <member name="failed" value="1" c:identifier="GST_STREAM_ERROR_FAILED"/>
+      <member name="too_lazy"
+              value="2"
+              c:identifier="GST_STREAM_ERROR_TOO_LAZY"/>
+      <member name="not_implemented"
+              value="3"
+              c:identifier="GST_STREAM_ERROR_NOT_IMPLEMENTED"/>
+      <member name="type_not_found"
+              value="4"
+              c:identifier="GST_STREAM_ERROR_TYPE_NOT_FOUND"/>
+      <member name="wrong_type"
+              value="5"
+              c:identifier="GST_STREAM_ERROR_WRONG_TYPE"/>
+      <member name="codec_not_found"
+              value="6"
+              c:identifier="GST_STREAM_ERROR_CODEC_NOT_FOUND"/>
+      <member name="decode" value="7" c:identifier="GST_STREAM_ERROR_DECODE"/>
+      <member name="encode" value="8" c:identifier="GST_STREAM_ERROR_ENCODE"/>
+      <member name="demux" value="9" c:identifier="GST_STREAM_ERROR_DEMUX"/>
+      <member name="mux" value="10" c:identifier="GST_STREAM_ERROR_MUX"/>
+      <member name="format" value="11" c:identifier="GST_STREAM_ERROR_FORMAT"/>
+      <member name="decrypt"
+              value="12"
+              c:identifier="GST_STREAM_ERROR_DECRYPT"/>
+      <member name="decrypt_nokey"
+              value="13"
+              c:identifier="GST_STREAM_ERROR_DECRYPT_NOKEY"/>
+      <member name="num_errors"
+              value="14"
+              c:identifier="GST_STREAM_ERROR_NUM_ERRORS"/>
+    </enumeration>
+    <enumeration name="StreamStatusType"
+                 doc="The type of a %GST_MESSAGE_STREAM_STATUS. The stream status messages inform the
+application of new streaming threads and their status."
+                 version="0.10.24"
+                 c:type="GstStreamStatusType">
+      <member name="create"
+              value="0"
+              c:identifier="GST_STREAM_STATUS_TYPE_CREATE"/>
+      <member name="enter"
+              value="1"
+              c:identifier="GST_STREAM_STATUS_TYPE_ENTER"/>
+      <member name="leave"
+              value="2"
+              c:identifier="GST_STREAM_STATUS_TYPE_LEAVE"/>
+      <member name="destroy"
+              value="3"
+              c:identifier="GST_STREAM_STATUS_TYPE_DESTROY"/>
+      <member name="start"
+              value="8"
+              c:identifier="GST_STREAM_STATUS_TYPE_START"/>
+      <member name="pause"
+              value="9"
+              c:identifier="GST_STREAM_STATUS_TYPE_PAUSE"/>
+      <member name="stop"
+              value="10"
+              c:identifier="GST_STREAM_STATUS_TYPE_STOP"/>
+    </enumeration>
+    <record name="Structure"
+            c:type="GstStructure"
+            doc="The GstStructure object. Most fields are private."
+            glib:type-name="GstStructure"
+            glib:get-type="gst_structure_get_type">
+      <field name="type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="name" writable="1">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </field>
+      <field name="parent_refcount" writable="1">
+        <type name="any" c:type="gint*"/>
+      </field>
+      <field name="fields" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_structure_new"
+                   doc="Creates a new #GstStructure with the given name.  Parses the
+list of variable arguments and sets fields to the values listed.
+Variable arguments should be passed as field name, field type,
+and value.  Last variable argument should be NULL.">
+        <return-value transfer-ownership="full">
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="firstfield" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="gst_structure_copy"
+              doc="Duplicates a #GstStructure and all its fields and values.">
+        <return-value transfer-ownership="full">
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+      </method>
+      <method name="set_parent_refcount"
+              c:identifier="gst_structure_set_parent_refcount"
+              doc="Sets the parent_refcount field of #GstStructure. This field is used to
+determine whether a structure is mutable or not. This function should only be
+called by code implementing parent objects of #GstStructure, as described in
+the MT Refcounting section of the design documents.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="refcount" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free"
+              c:identifier="gst_structure_free"
+              doc="Frees a #GstStructure and all its fields and values. The structure must not
+have a parent when this function is called.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_name"
+              c:identifier="gst_structure_get_name"
+              doc="Get the name of @structure as a string.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_name_id"
+              c:identifier="gst_structure_get_name_id"
+              doc="Get the name of @structure as a GQuark.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </method>
+      <method name="has_name"
+              c:identifier="gst_structure_has_name"
+              doc="Checks if the structure has the given name">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_name"
+              c:identifier="gst_structure_set_name"
+              doc="Sets the name of the structure to the given @name.  The string
+provided is copied before being used. It must not be empty, start with a
+letter and can be followed by letters, numbers and any of &quot;/-_.:&quot;.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_set_value"
+              c:identifier="gst_structure_id_set_value"
+              doc="Sets the field with the given GQuark @field to @value.  If the field
+does not exist, it is created.  If the field exists, the previous
+value is replaced and freed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value"
+              c:identifier="gst_structure_set_value"
+              doc="Sets the field with the given name @field to @value.  If the field
+does not exist, it is created.  If the field exists, the previous
+value is replaced and freed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set"
+              c:identifier="gst_structure_set"
+              doc="Parses the variable arguments and sets fields accordingly.
+Variable arguments should be in the form field name, field type
+(as a GType), value(s).  The last variable argument should be NULL.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_set"
+              c:identifier="gst_structure_id_set"
+              doc="Identical to gst_structure_set, except that field names are
+passed using the GQuark for the field name. This allows more efficient
+setting of the structure if the caller already knows the associated
+quark values.
+The last variable argument must be NULL."
+              version="0.10.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get"
+              c:identifier="gst_structure_get"
+              doc="Parses the variable arguments and reads fields from @structure accordingly.
+Variable arguments should be in the form field name, field type
+(as a GType), pointer(s) to a variable(s) to hold the return value(s).
+The last variable argument should be NULL.
+For refcounted (mini)objects you will acquire your own reference which
+you must release with a suitable _unref() when no longer needed. For
+strings and boxed types you will acquire a copy which you will need to
+release with either g_free() or the suiteable function for the boxed type.
+because the field requested did not exist, or was of a type other
+than the type specified), otherwise TRUE."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_get"
+              c:identifier="gst_structure_id_get"
+              doc="Parses the variable arguments and reads fields from @structure accordingly.
+Variable arguments should be in the form field id quark, field type
+(as a GType), pointer(s) to a variable(s) to hold the return value(s).
+The last variable argument should be NULL (technically it should be a
+0 quark, but we require NULL so compilers that support it can check for
+the NULL terminator and warn if it&apos;s not there).
+This function is just like gst_structure_get() only that it is slightly
+more efficient since it saves the string-to-quark lookup in the global
+quark hashtable.
+For refcounted (mini)objects you will acquire your own reference which
+you must release with a suitable _unref() when no longer needed. For
+strings and boxed types you will acquire a copy which you will need to
+release with either g_free() or the suiteable function for the boxed type.
+because the field requested did not exist, or was of a type other
+than the type specified), otherwise TRUE."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_field_id" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_get_value"
+              c:identifier="gst_structure_id_get_value"
+              doc="Get the value of the field with GQuark @field.
+identifier.">
+        <return-value transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value"
+              c:identifier="gst_structure_get_value"
+              doc="Get the value of the field with name @fieldname.">
+        <return-value transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_field"
+              c:identifier="gst_structure_remove_field"
+              doc="Removes the field with the given name.  If the field with the given
+name does not exist, the structure is unchanged.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_fields"
+              c:identifier="gst_structure_remove_fields"
+              doc="Removes the fields with the given names. If a field does not exist, the
+argument is ignored.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_all_fields"
+              c:identifier="gst_structure_remove_all_fields"
+              doc="Removes all fields in a GstStructure.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_field_type"
+              c:identifier="gst_structure_get_field_type"
+              doc="Finds the field with the given name, and returns the type of the
+value it contains.  If the field is not found, G_TYPE_INVALID is
+returned.">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach"
+              c:identifier="gst_structure_foreach"
+              doc="Calls the provided function once for each field in the #GstStructure. The
+function must not modify the fields. Also see gst_structure_map_in_place().
+FALSE otherwise.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="StructureForeachFunc"
+                  c:type="GstStructureForeachFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="map_in_place"
+              c:identifier="gst_structure_map_in_place"
+              doc="Calls the provided function once for each field in the #GstStructure. In
+contrast to gst_structure_foreach(), the function may modify but not delete the
+fields. The structure must be mutable.
+FALSE otherwise.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="StructureMapFunc" c:type="GstStructureMapFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="n_fields"
+              c:identifier="gst_structure_n_fields"
+              doc="Get the number of fields in the structure.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="nth_field_name"
+              c:identifier="gst_structure_nth_field_name"
+              doc="Get the name of the given field number, counting from 0 onwards.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_has_field"
+              c:identifier="gst_structure_id_has_field"
+              doc="Check if @structure contains a field named @field."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_has_field_typed"
+              c:identifier="gst_structure_id_has_field_typed"
+              doc="Check if @structure contains a field named @field and with GType @type."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_field"
+              c:identifier="gst_structure_has_field"
+              doc="Check if @structure contains a field named @fieldname.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_field_typed"
+              c:identifier="gst_structure_has_field_typed"
+              doc="Check if @structure contains a field named @fieldname and with GType @type.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean"
+              c:identifier="gst_structure_get_boolean"
+              doc="Sets the boolean pointed to by @value corresponding to the value of the
+given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+with @fieldname or the existing field did not contain a boolean, this
+function returns FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int"
+              c:identifier="gst_structure_get_int"
+              doc="Sets the int pointed to by @value corresponding to the value of the
+given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+with @fieldname or the existing field did not contain an int, this function
+returns %FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint"
+              c:identifier="gst_structure_get_uint"
+              doc="Sets the uint pointed to by @value corresponding to the value of the
+given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+with @fieldname or the existing field did not contain a uint, this function
+returns %FALSE."
+              version="0.10.15">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fourcc"
+              c:identifier="gst_structure_get_fourcc"
+              doc="Sets the Fourcc pointed to by @value corresponding to the value of the
+given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+with @fieldname or the existing field did not contain a fourcc, this function
+returns FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double"
+              c:identifier="gst_structure_get_double"
+              doc="Sets the double pointed to by @value corresponding to the value of the
+given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+with @fieldname or the existing field did not contain a double, this
+function returns FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_date"
+              c:identifier="gst_structure_get_date"
+              doc="Sets the date pointed to by @value corresponding to the date of the
+given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+On success @value will point to a newly-allocated copy of the date which
+inconsistent with e.g. gst_structure_get_string() which doesn&apos;t return a
+copy of the string).
+with @fieldname or the existing field did not contain a data, this function
+returns FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GLib.Date" c:type="GDate**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_clock_time"
+              c:identifier="gst_structure_get_clock_time"
+              doc="Sets the clock time pointed to by @value corresponding to the clock time
+of the given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+with @fieldname or the existing field did not contain a #GstClockTime, this
+function returns FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string"
+              c:identifier="gst_structure_get_string"
+              doc="Finds the field corresponding to @fieldname, and returns the string
+contained in the field&apos;s value.  Caller is responsible for making
+sure the field exists and has the correct type.
+The string should not be modified, and remains valid until the next
+call to a gst_structure_*() function with the given structure.
+or did not contain a string.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_enum"
+              c:identifier="gst_structure_get_enum"
+              doc="Sets the int pointed to by @value corresponding to the value of the
+given field.  Caller is responsible for making sure the field exists,
+has the correct type and that the enumtype is correct.
+with @fieldname or the existing field did not contain an enum of the given
+type, this function returns FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="enumtype" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fraction"
+              c:identifier="gst_structure_get_fraction"
+              doc="Sets the integers pointed to by @value_numerator and @value_denominator
+corresponding to the value of the given field.  Caller is responsible
+for making sure the field exists and has the correct type.
+with @fieldname or the existing field did not contain a GstFraction, this
+function returns FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value_numerator"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="value_denominator"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_string"
+              c:identifier="gst_structure_to_string"
+              doc="Converts @structure to a human-readable string representation.
+For debugging purposes its easier to do something like this:
+|[
+GST_LOG (&quot;structure is %&quot; GST_PTR_FORMAT, structure);
+]|
+This prints the structure in human readble form.
+usage.">
+        <return-value transfer-ownership="full" doc="after">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="fixate_field_nearest_int"
+              c:identifier="gst_structure_fixate_field_nearest_int"
+              doc="Fixates a #GstStructure by changing the given field to the nearest
+integer to @target that is a subset of the existing field.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fixate_field_nearest_double"
+              c:identifier="gst_structure_fixate_field_nearest_double"
+              doc="Fixates a #GstStructure by changing the given field to the nearest
+double to @target that is a subset of the existing field.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fixate_field_boolean"
+              c:identifier="gst_structure_fixate_field_boolean"
+              doc="Fixates a #GstStructure by changing the given @field_name field to the given">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fixate_field_nearest_fraction"
+              c:identifier="gst_structure_fixate_field_nearest_fraction"
+              doc="Fixates a #GstStructure by changing the given field to the nearest
+fraction to @target_numerator/@target_denominator that is a subset
+of the existing field.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="target_numerator" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="target_denominator" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="StructureChangeType"
+                 doc="The type of a %GST_MESSAGE_STRUCTURE_CHANGE."
+                 version="0.10.22"
+                 c:type="GstStructureChangeType">
+      <member name="link"
+              value="0"
+              c:identifier="GST_STRUCTURE_CHANGE_TYPE_PAD_LINK"/>
+      <member name="unlink"
+              value="1"
+              c:identifier="GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK"/>
+    </enumeration>
+    <callback name="StructureForeachFunc"
+              c:type="GstStructureForeachFunc"
+              doc="A function that will be called in gst_structure_foreach(). The function may
+not modify @value.
+the foreach operation should stop with FALSE.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="field_id" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="StructureMapFunc"
+              c:type="GstStructureMapFunc"
+              doc="A function that will be called in gst_structure_map_in_place(). The function
+may modify @value.
+the map operation should stop with FALSE.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="field_id" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="SystemClock"
+           c:type="GstSystemClock"
+           doc="The default implementation of a #GstClock that uses the system time."
+           parent="Clock"
+           glib:type-name="GstSystemClock"
+           glib:get-type="gst_system_clock_get_type"
+           glib:type-struct="SystemClockClass">
+      <function name="obtain"
+                c:identifier="gst_system_clock_obtain"
+                doc="Get a handle to the default system clock. The refcount of the
+clock will be increased so you need to unref the clock after
+usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Clock" c:type="GstClock*"/>
+        </return-value>
+      </function>
+      <property name="clock-type" writable="1">
+        <type name="ClockType" c:type="GstClockType"/>
+      </property>
+      <field name="clock">
+        <type name="Clock" c:type="GstClock"/>
+      </field>
+      <field name="thread">
+        <type name="GLib.Thread" c:type="GThread*"/>
+      </field>
+      <field name="stopping">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="priv">
+        <type name="SystemClockPrivate" c:type="GstSystemClockPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="SystemClockClass"
+            c:type="GstSystemClockClass"
+            glib:is-gtype-struct-for="SystemClock">
+      <field name="parent_class">
+        <type name="ClockClass" c:type="GstClockClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="SystemClockPrivate" c:type="GstSystemClockPrivate">
+    </record>
+    <constant name="TAG_ALBUM" value="album">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ALBUM_ARTIST" value="album-artist">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ALBUM_ARTIST_SORTNAME" value="album-artist-sortname">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ALBUM_GAIN" value="replaygain-album-gain">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ALBUM_PEAK" value="replaygain-album-peak">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ALBUM_SORTNAME" value="album-sortname">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ALBUM_VOLUME_COUNT" value="album-disc-count">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ALBUM_VOLUME_NUMBER" value="album-disc-number">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ARTIST" value="artist">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ARTIST_SORTNAME" value="musicbrainz-sortname">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ATTACHMENT" value="attachment">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_AUDIO_CODEC" value="audio-codec">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_BEATS_PER_MINUTE" value="beats-per-minute">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_BITRATE" value="bitrate">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_CODEC" value="codec">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_COMMENT" value="comment">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_COMPOSER" value="composer">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_COMPOSER_SORTNAME" value="composer-sortname">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_CONTACT" value="contact">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_CONTAINER_FORMAT" value="container-format">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_COPYRIGHT" value="copyright">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_COPYRIGHT_URI" value="copyright-uri">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_DATE" value="date">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_DESCRIPTION" value="description">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_DURATION" value="duration">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ENCODER" value="encoder">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ENCODER_VERSION" value="encoder-version">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_EXTENDED_COMMENT" value="extended-comment">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GENRE" value="genre">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_CITY" value="geo-location-city">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_COUNTRY" value="geo-location-country">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_ELEVATION" value="geo-location-elevation">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_LATITUDE" value="geo-location-latitude">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_LONGITUDE" value="geo-location-longitude">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_NAME" value="geo-location-name">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_SUBLOCATION"
+              value="geo-location-sublocation">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GROUPING" value="grouping">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_HOMEPAGE" value="homepage">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_IMAGE" value="image">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ISRC" value="isrc">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_KEYWORDS" value="keywords">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_LANGUAGE_CODE" value="language-code">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_LICENSE" value="license">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_LICENSE_URI" value="license-uri">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_LOCATION" value="location">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_LYRICS" value="lyrics">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_MAXIMUM_BITRATE" value="maximum-bitrate">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_MINIMUM_BITRATE" value="minimum-bitrate">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_NOMINAL_BITRATE" value="nominal-bitrate">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ORGANIZATION" value="organization">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_PERFORMER" value="performer">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_PREVIEW_IMAGE" value="preview-image">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_REFERENCE_LEVEL" value="replaygain-reference-level">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_SERIAL" value="serial">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_SHOW_EPISODE_NUMBER" value="show-episode-number">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_SHOW_NAME" value="show-name">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_SHOW_SEASON_NUMBER" value="show-season-number">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_SHOW_SORTNAME" value="show-sortname">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_SUBTITLE_CODEC" value="subtitle-codec">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_TITLE" value="title">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_TITLE_SORTNAME" value="title-sortname">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_TRACK_COUNT" value="track-count">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_TRACK_GAIN" value="replaygain-track-gain">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_TRACK_NUMBER" value="track-number">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_TRACK_PEAK" value="replaygain-track-peak">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_USER_RATING" value="user-rating">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_VERSION" value="version">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_VIDEO_CODEC" value="video-codec">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TIME_FORMAT" value="u:%02u:%02u.%09u">
+      <type name="utf8"/>
+    </constant>
+    <enumeration name="TagFlag"
+                 doc="Extra tag flags used when registering tags."
+                 c:type="GstTagFlag">
+      <member name="undefined"
+              value="0"
+              c:identifier="GST_TAG_FLAG_UNDEFINED"/>
+      <member name="meta" value="1" c:identifier="GST_TAG_FLAG_META"/>
+      <member name="encoded" value="2" c:identifier="GST_TAG_FLAG_ENCODED"/>
+      <member name="decoded" value="3" c:identifier="GST_TAG_FLAG_DECODED"/>
+      <member name="count" value="4" c:identifier="GST_TAG_FLAG_COUNT"/>
+    </enumeration>
+    <callback name="TagForeachFunc"
+              c:type="GstTagForeachFunc"
+              doc="A function that will be called in gst_tag_list_foreach(). The function may
+not modify the tag list.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="TagList" c:type="GstTagList*"/>
+        </parameter>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="TagList"
+            c:type="GstTagList"
+            doc="Opaque #GstTagList data structure."
+            glib:type-name="GstTagList"
+            glib:get-type="gst_tag_list_get_type">
+      <constructor name="new"
+                   c:identifier="gst_tag_list_new"
+                   doc="Creates a new empty GstTagList.">
+        <return-value transfer-ownership="full">
+          <type name="TagList" c:type="GstTagList*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_full"
+                   c:identifier="gst_tag_list_new_full"
+                   doc="Creates a new taglist and appends the values for the given tags. It expects
+tag-value pairs like gst_tag_list_add(), and a NULL terminator after the
+last pair. The type of the values is implicit and is documented in the API
+reference, but can also be queried at runtime with gst_tag_get_type(). It
+is an error to pass a value of a type not matching the tag type into this
+function. The tag list will make copies of any arguments passed
+(e.g. strings, buffers).
+needed."
+                   version="0.10.24">
+        <return-value transfer-ownership="full" doc="when no longer">
+          <type name="TagList" c:type="GstTagList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="gst_tag_list_copy"
+              doc="Copies a given #GstTagList.">
+        <return-value transfer-ownership="full">
+          <type name="TagList" c:type="GstTagList*"/>
+        </return-value>
+      </method>
+      <method name="is_empty"
+              c:identifier="gst_tag_list_is_empty"
+              doc="Checks if the given taglist is empty."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="insert"
+              c:identifier="gst_tag_list_insert"
+              doc="Inserts the tags of the @from list into the first list using the given mode.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="from" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="merge"
+              c:identifier="gst_tag_list_merge"
+              doc="Merges the two given lists into a new list. If one of the lists is NULL, a
+copy of the other is returned. If both lists are NULL, NULL is returned.">
+        <return-value transfer-ownership="full">
+          <type name="TagList" c:type="GstTagList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="list2" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free"
+              c:identifier="gst_tag_list_free"
+              doc="Frees the given list and all associated values.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_tag_size"
+              c:identifier="gst_tag_list_get_tag_size"
+              doc="Checks how many value are stored in this tag list for the given tag.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add"
+              c:identifier="gst_tag_list_add"
+              doc="Sets the values for the given tags using the specified mode.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_values"
+              c:identifier="gst_tag_list_add_values"
+              doc="Sets the GValues for the given tags using the specified mode.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_value"
+              c:identifier="gst_tag_list_add_value"
+              doc="Sets the GValue for a given tag using the specified mode."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_tag"
+              c:identifier="gst_tag_list_remove_tag"
+              doc="Removes the given tag from the taglist.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach"
+              c:identifier="gst_tag_list_foreach"
+              doc="Calls the given function for each tag inside the tag list. Note that if there
+is no tag, the function won&apos;t be called at all.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="TagForeachFunc" c:type="GstTagForeachFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_index"
+              c:identifier="gst_tag_list_get_value_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+available or the tag doesn&apos;t have as many entries">
+        <return-value transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_char"
+              c:identifier="gst_tag_list_get_char"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_char_index"
+              c:identifier="gst_tag_list_get_char_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uchar"
+              c:identifier="gst_tag_list_get_uchar"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uchar_index"
+              c:identifier="gst_tag_list_get_uchar_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean"
+              c:identifier="gst_tag_list_get_boolean"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean_index"
+              c:identifier="gst_tag_list_get_boolean_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int"
+              c:identifier="gst_tag_list_get_int"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int_index"
+              c:identifier="gst_tag_list_get_int_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint"
+              c:identifier="gst_tag_list_get_uint"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint_index"
+              c:identifier="gst_tag_list_get_uint_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_long"
+              c:identifier="gst_tag_list_get_long"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="long" c:type="glong*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_long_index"
+              c:identifier="gst_tag_list_get_long_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="long" c:type="glong*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ulong"
+              c:identifier="gst_tag_list_get_ulong"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="ulong" c:type="gulong*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ulong_index"
+              c:identifier="gst_tag_list_get_ulong_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="ulong" c:type="gulong*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int64"
+              c:identifier="gst_tag_list_get_int64"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int64_index"
+              c:identifier="gst_tag_list_get_int64_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint64"
+              c:identifier="gst_tag_list_get_uint64"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint64_index"
+              c:identifier="gst_tag_list_get_uint64_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_float"
+              c:identifier="gst_tag_list_get_float"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_float_index"
+              c:identifier="gst_tag_list_get_float_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double"
+              c:identifier="gst_tag_list_get_double"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double_index"
+              c:identifier="gst_tag_list_get_double_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string"
+              c:identifier="gst_tag_list_get_string"
+              doc="Copies the contents for the given tag into the value, possibly merging
+multiple values into one if multiple values are associated with the tag.
+Use gst_tag_list_get_string_index (list, tag, 0, value) if you want
+to retrieve the first string associated with this tag unmodified.
+The resulting string in @value will be in UTF-8 encoding and should be
+freed by the caller using g_free when no longer needed. Since 0.10.24 the
+returned string is also guaranteed to be non-NULL and non-empty.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string_index"
+              c:identifier="gst_tag_list_get_string_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+The resulting string in @value will be in UTF-8 encoding and should be
+freed by the caller using g_free when no longer needed. Since 0.10.24 the
+returned string is also guaranteed to be non-NULL and non-empty.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pointer"
+              c:identifier="gst_tag_list_get_pointer"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="any" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pointer_index"
+              c:identifier="gst_tag_list_get_pointer_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="any" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_date"
+              c:identifier="gst_tag_list_get_date"
+              doc="Copies the first date for the given tag in the taglist into the variable
+pointed to by @value. Free the date with g_date_free() when it is no longer
+needed.
+given list or if it was #NULL.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GLib.Date" c:type="GDate**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_date_index"
+              c:identifier="gst_tag_list_get_date_index"
+              doc="Gets the date that is at the given index for the given tag in the given
+list and copies it into the variable pointed to by @value. Free the date
+with g_date_free() when it is no longer needed.
+given list or if it was #NULL.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GLib.Date" c:type="GDate**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_buffer"
+              c:identifier="gst_tag_list_get_buffer"
+              doc="Copies the first buffer for the given tag in the taglist into the variable
+pointed to by @value. Free the buffer with gst_buffer_unref() when it is
+no longer needed.
+given list or if it was #NULL."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_buffer_index"
+              c:identifier="gst_tag_list_get_buffer_index"
+              doc="Gets the buffer that is at the given index for the given tag in the given
+list and copies it into the variable pointed to by @value. Free the buffer
+with gst_buffer_unref() when it is no longer needed.
+given list or if it was #NULL."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="TagMergeFunc"
+              c:type="GstTagMergeFunc"
+              doc="A function for merging multiple values of a tag used when registering
+tags.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="TagMergeMode"
+                 doc="The different tag merging modes are basically replace, overwrite and append,
+already in the element and (B) the ones that are supplied to the element (
+e.g. via gst_tag_setter_merge_tags() / gst_tag_setter_add_tags() or a
+%GST_EVENT_TAG), how are these tags merged?
+In the table below this is shown for the cases that a tag exists in the list
+(A) or does not exists (!A) and combinations thereof.
+&lt;table frame=&quot;all&quot; colsep=&quot;1&quot; rowsep=&quot;1&quot;&gt;
+&lt;title&gt;merge mode&lt;/title&gt;
+&lt;tgroup cols=&apos;5&apos; align=&apos;left&apos;&gt;
+&lt;thead&gt;
+&lt;row&gt;
+&lt;entry&gt;merge mode&lt;/entry&gt;
+&lt;entry&gt;A + B&lt;/entry&gt;
+&lt;entry&gt;A + !B&lt;/entry&gt;
+&lt;entry&gt;!A + B&lt;/entry&gt;
+&lt;entry&gt;!A + !B&lt;/entry&gt;
+&lt;/row&gt;
+&lt;/thead&gt;
+&lt;tbody&gt;
+&lt;row&gt;
+&lt;entry&gt;REPLACE_ALL&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;REPLACE&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;APPEND&lt;/entry&gt;
+&lt;entry&gt;A, B&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;PREPEND&lt;/entry&gt;
+&lt;entry&gt;B, A&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;KEEP&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;KEEP_ALL&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;/row&gt;
+&lt;/tbody&gt;
+&lt;/tgroup&gt;
+&lt;/table&gt;"
+                 c:type="GstTagMergeMode">
+      <member name="undefined"
+              value="0"
+              c:identifier="GST_TAG_MERGE_UNDEFINED"/>
+      <member name="replace_all"
+              value="1"
+              c:identifier="GST_TAG_MERGE_REPLACE_ALL"/>
+      <member name="replace" value="2" c:identifier="GST_TAG_MERGE_REPLACE"/>
+      <member name="append" value="3" c:identifier="GST_TAG_MERGE_APPEND"/>
+      <member name="prepend" value="4" c:identifier="GST_TAG_MERGE_PREPEND"/>
+      <member name="keep" value="5" c:identifier="GST_TAG_MERGE_KEEP"/>
+      <member name="keep_all" value="6" c:identifier="GST_TAG_MERGE_KEEP_ALL"/>
+      <member name="count" value="7" c:identifier="GST_TAG_MERGE_COUNT"/>
+    </enumeration>
+    <interface name="TagSetter"
+               c:type="GstTagSetter"
+               doc="Opaque #GstTagSetter data structure."
+               glib:type-name="GstTagSetter"
+               glib:get-type="gst_tag_setter_get_type">
+      <prerequisite name="Element"/>
+      <method name="reset_tags"
+              c:identifier="gst_tag_setter_reset_tags"
+              doc="Reset the internal taglist. Elements should call this from within the
+state-change handler."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="merge_tags"
+              c:identifier="gst_tag_setter_merge_tags"
+              doc="Merges the given list into the setter&apos;s list using the given mode.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_tags"
+              c:identifier="gst_tag_setter_add_tags"
+              doc="Adds the given tag / value pairs on the setter using the given merge mode.
+The list must be terminated with NULL.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_tag_values"
+              c:identifier="gst_tag_setter_add_tag_values"
+              doc="Adds the given tag / GValue pairs on the setter using the given merge mode.
+The list must be terminated with NULL.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_tag_value"
+              c:identifier="gst_tag_setter_add_tag_value"
+              doc="Adds the given tag / GValue pair on the setter using the given merge mode."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tag_list"
+              c:identifier="gst_tag_setter_get_tag_list"
+              doc="Returns the current list of tags the setter uses.  The list should not be
+modified or freed.
+or NULL if none is used.">
+        <return-value transfer-ownership="none">
+          <type name="TagList" c:type="GstTagList*"/>
+        </return-value>
+      </method>
+      <method name="set_tag_merge_mode"
+              c:identifier="gst_tag_setter_set_tag_merge_mode"
+              doc="Sets the given merge mode that is used for adding tags from events to tags
+specified by this interface. The default is #GST_TAG_MERGE_KEEP, which keeps
+the tags set with this interface and discards tags from events.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tag_merge_mode"
+              c:identifier="gst_tag_setter_get_tag_merge_mode"
+              doc="Queries the mode by which tags inside the setter are overwritten by tags
+from events">
+        <return-value transfer-ownership="full">
+          <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+        </return-value>
+      </method>
+    </interface>
+    <record name="TagSetterIFace"
+            c:type="GstTagSetterIFace"
+            doc="#GstTagSetterIFace interface.">
+      <field name="g_iface" writable="1">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+    </record>
+    <class name="Task"
+           c:type="GstTask"
+           doc="The #GstTask object."
+           parent="Object"
+           glib:type-name="GstTask"
+           glib:get-type="gst_task_get_type"
+           glib:type-struct="TaskClass">
+      <function name="cleanup_all"
+                c:identifier="gst_task_cleanup_all"
+                doc="Wait for all tasks to be stopped. This is mainly used internally
+to ensure proper cleanup of internal data structures in test suites.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </function>
+      <function name="create"
+                c:identifier="gst_task_create"
+                doc="Create a new Task that will repeatedly call the provided @func
+with @data as a parameter. Typically the task will run in
+a new thread.
+The function cannot be changed after the task has been created. You
+must create a new #GstTask to change the function.
+This function will not yet create and start a thread. Use gst_task_start() or
+gst_task_pause() to create and start the GThread.
+Before the task can be used, a #GStaticRecMutex must be configured using the
+gst_task_set_lock() function. This lock will always be acquired while
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Task" c:type="GstTask*"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <type name="TaskFunction" c:type="GstTaskFunction"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="set_lock"
+              c:identifier="gst_task_set_lock"
+              doc="Set the mutex used by the task. The mutex will be acquired before
+calling the #GstTaskFunction.
+This function has to be called before calling gst_task_pause() or
+gst_task_start().
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mutex" transfer-ownership="none">
+            <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_priority"
+              c:identifier="gst_task_set_priority"
+              doc="Changes the priority of @task to @priority.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="priority" transfer-ownership="none">
+            <type name="GLib.ThreadPriority" c:type="GThreadPriority"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pool"
+              c:identifier="gst_task_get_pool"
+              doc="Get the #GstTaskPool that this task will use for its streaming
+threads.
+MT safe.
+after usage."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="TaskPool" c:type="GstTaskPool*"/>
+        </return-value>
+      </method>
+      <method name="set_pool"
+              c:identifier="gst_task_set_pool"
+              doc="Set @pool as the new GstTaskPool for @task. Any new streaming threads that
+will be created by @task will now use @pool.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pool" transfer-ownership="none">
+            <type name="TaskPool" c:type="GstTaskPool*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_thread_callbacks"
+              c:identifier="gst_task_set_thread_callbacks"
+              doc="Set callbacks which will be executed when a new thread is needed, the thread
+function is entered and left and when the thread is joined.
+By default a thread for @task will be created from a default thread pool.
+Objects can use custom GThreads or can perform additional configuration of
+the threads (such as changing the thread priority) by installing callbacks.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callbacks" transfer-ownership="none">
+            <type name="TaskThreadCallbacks" c:type="GstTaskThreadCallbacks*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_state"
+              c:identifier="gst_task_get_state"
+              doc="Get the current state of the task.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="TaskState" c:type="GstTaskState"/>
+        </return-value>
+      </method>
+      <method name="set_state"
+              c:identifier="gst_task_set_state"
+              doc="Sets the state of @task to @state.
+The @task must have a lock associated with it using
+gst_task_set_lock() when going to GST_TASK_STARTED or GST_TASK_PAUSED or
+this function will return %FALSE.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="TaskState" c:type="GstTaskState"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start"
+              c:identifier="gst_task_start"
+              doc="Starts @task. The @task must have a lock associated with it using
+gst_task_set_lock() or this function will return %FALSE.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="stop"
+              c:identifier="gst_task_stop"
+              doc="Stops @task. This method merely schedules the task to stop and
+will not wait for the task to have completely stopped. Use
+gst_task_join() to stop and wait for completion.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="pause"
+              c:identifier="gst_task_pause"
+              doc="Pauses @task. This method can also be called on a task in the
+stopped state, in which case a thread will be started and will remain
+in the paused state. This function does not wait for the task to complete
+the paused state.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="join"
+              c:identifier="gst_task_join"
+              doc="Joins @task. After this call, it is safe to unref the task
+and clean up the lock set with gst_task_set_lock().
+The task will automatically be stopped with this call.
+This function cannot be called from within a task function as this
+would cause a deadlock. The function will detect this and print a
+g_warning.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="state">
+        <type name="TaskState" c:type="GstTaskState"/>
+      </field>
+      <field name="cond">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="lock">
+        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
+      </field>
+      <field name="func">
+        <type name="TaskFunction" c:type="GstTaskFunction"/>
+      </field>
+      <field name="data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="running">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="thread" writable="1">
+            <type name="GLib.Thread" c:type="GThread*"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+      <field name="priv">
+        <type name="TaskPrivate" c:type="GstTaskPrivate*"/>
+      </field>
+    </class>
+    <record name="TaskClass"
+            c:type="GstTaskClass"
+            glib:is-gtype-struct-for="Task">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="pool">
+        <type name="TaskPool" c:type="GstTaskPool*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="TaskFunction"
+              c:type="GstTaskFunction"
+              doc="A function that will repeatedly be called in the thread created by
+a #GstTask.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="TaskPool"
+           c:type="GstTaskPool"
+           doc="The #GstTaskPool object."
+           parent="Object"
+           glib:type-name="GstTaskPool"
+           glib:get-type="gst_task_pool_get_type"
+           glib:type-struct="TaskPoolClass">
+      <constructor name="new"
+                   c:identifier="gst_task_pool_new"
+                   doc="Create a new default task pool. The default task pool will use a regular
+GThreadPool for threads."
+                   version="0.10.24">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="TaskPool" c:type="GstTaskPool*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="prepare" invoker="prepare" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="cleanup" invoker="cleanup">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="push" invoker="push" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none">
+            <type name="TaskPoolFunction" c:type="GstTaskPoolFunction"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="2">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="join" invoker="join">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="prepare"
+              c:identifier="gst_task_pool_prepare"
+              doc="Prepare the taskpool for accepting gst_task_pool_push() operations.
+MT safe."
+              version="0.10.24"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="push"
+              c:identifier="gst_task_pool_push"
+              doc="Start the execution of a new thread from @pool.
+function. This pointer can be NULL, you must check @error to detect
+errors."
+              version="0.10.24"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="TaskPoolFunction" c:type="GstTaskPoolFunction"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="join"
+              c:identifier="gst_task_pool_join"
+              doc="Join a task and/or return it to the pool. @id is the id obtained from
+gst_task_pool_push()."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="cleanup"
+              c:identifier="gst_task_pool_cleanup"
+              doc="Wait for all tasks to be stopped. This is mainly used internally
+to ensure proper cleanup of internal data structures in test suites.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="pool">
+        <type name="GLib.ThreadPool" c:type="GThreadPool*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="TaskPoolClass"
+            c:type="GstTaskPoolClass"
+            glib:is-gtype-struct-for="TaskPool"
+            doc="The #GstTaskPoolClass object.">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="prepare">
+        <callback name="prepare" c:type="prepare" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pool" transfer-ownership="none">
+              <type name="TaskPool" c:type="GstTaskPool*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cleanup">
+        <callback name="cleanup" c:type="cleanup">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pool" transfer-ownership="none">
+              <type name="TaskPool" c:type="GstTaskPool*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="push">
+        <callback name="push" c:type="push" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </return-value>
+          <parameters>
+            <parameter name="pool" transfer-ownership="none">
+              <type name="TaskPool" c:type="GstTaskPool*"/>
+            </parameter>
+            <parameter name="func" transfer-ownership="none">
+              <type name="TaskPoolFunction" c:type="GstTaskPoolFunction"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="2">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="join">
+        <callback name="join" c:type="join">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pool" transfer-ownership="none">
+              <type name="TaskPool" c:type="GstTaskPool*"/>
+            </parameter>
+            <parameter name="id" transfer-ownership="none">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="TaskPoolFunction"
+              c:type="GstTaskPoolFunction"
+              doc="Task function, see gst_task_pool_push()."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="TaskPrivate" c:type="GstTaskPrivate">
+    </record>
+    <enumeration name="TaskState"
+                 doc="The different states a task can be in"
+                 c:type="GstTaskState">
+      <member name="started" value="0" c:identifier="GST_TASK_STARTED"/>
+      <member name="stopped" value="1" c:identifier="GST_TASK_STOPPED"/>
+      <member name="paused" value="2" c:identifier="GST_TASK_PAUSED"/>
+    </enumeration>
+    <record name="TaskThreadCallbacks"
+            c:type="GstTaskThreadCallbacks"
+            doc="thread enters its function.
+to leave its function
+Custom GstTask thread callback functions that can be installed."
+            version="0.10.24">
+      <field name="enter_thread">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="leave_thread">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="Trace" c:type="GstTrace" doc="Opaque #GstTrace structure.">
+      <field name="filename" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="fd" writable="1">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="buf" writable="1">
+        <type name="TraceEntry" c:type="GstTraceEntry*"/>
+      </field>
+      <field name="bufsize" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="bufoffset" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_trace_new"
+                   doc="Create a ringbuffer of @size in the file with @filename to
+store trace results in.">
+        <return-value transfer-ownership="full">
+          <type name="Trace" c:type="GstTrace*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="destroy"
+              c:identifier="gst_trace_destroy"
+              doc="Flush an close the previously allocated @trace.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="flush"
+              c:identifier="gst_trace_flush"
+              doc="Flush any pending trace entries in @trace to the trace file.
+flushed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="text_flush"
+              c:identifier="gst_trace_text_flush"
+              doc="Flush any pending trace entries in @trace to the trace file,
+formatted as a text line with timestamp and sequence numbers.
+flushed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_default"
+              c:identifier="gst_trace_set_default"
+              doc="Set the default #GstTrace to @trace.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="TraceEntry" c:type="GstTraceEntry">
+      <field name="timestamp" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="sequence" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="data" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="message" writable="1">
+        <array zero-terminated="0" c:type="gchar" fixed-size="112">
+          <type name="int8"/>
+        </array>
+      </field>
+    </record>
+    <record name="TypeFind"
+            c:type="GstTypeFind"
+            doc="Object that stores typefind callbacks. To use with #GstTypeFindFactory.">
+      <field name="peek">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="suggest">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="data" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="get_length">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <method name="peek"
+              c:identifier="gst_type_find_peek"
+              doc="Returns the @size bytes of the stream to identify beginning at offset. If
+offset is a positive number, the offset is relative to the beginning of the
+stream, if offset is a negative number the offset is relative to the end of
+the stream. The returned memory is valid until the typefinding function
+returns and must not be freed.">
+        <return-value transfer-ownership="full">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="suggest"
+              c:identifier="gst_type_find_suggest"
+              doc="If a #GstTypeFindFunction calls this function it suggests the caps with the
+given probability. A #GstTypeFindFunction may supply different suggestions
+in one call.
+It is up to the caller of the #GstTypeFindFunction to interpret these values.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="probability" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="suggest_simple"
+              c:identifier="gst_type_find_suggest_simple"
+              doc="arguments passed to gst_structure_new() (ie. triplets of field name,
+field GType and field value)
+If a #GstTypeFindFunction calls this function it suggests the caps with the
+given probability. A #GstTypeFindFunction may supply different suggestions
+in one call. It is up to the caller of the #GstTypeFindFunction to interpret
+these values.
+This function is similar to gst_type_find_suggest(), only that instead of
+passing a #GstCaps argument you can create the caps on the fly in the same
+way as you can with gst_caps_new_simple().
+Make sure you terminate the list of arguments with a NULL argument and that
+the values passed have the correct type (in terms of width in bytes when
+passed to the vararg function - this applies particularly to gdouble and
+guint64 arguments)."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="probability" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="media_type" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_length"
+              c:identifier="gst_type_find_get_length"
+              doc="Get the length of the data stream.">
+        <return-value transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="TypeFindFactory"
+           c:type="GstTypeFindFactory"
+           doc="Object that stores information about a typefind function."
+           parent="PluginFeature"
+           glib:type-name="GstTypeFindFactory"
+           glib:get-type="gst_type_find_factory_get_type"
+           glib:type-struct="TypeFindFactoryClass">
+      <function name="get_list"
+                c:identifier="gst_type_find_factory_get_list"
+                doc="Gets the list of all registered typefind factories. You must free the
+list using gst_plugin_feature_list_free.
+The returned factories are sorted by highest rank first, and then by
+factory name. (behaviour change since 0.10.26)">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </function>
+      <method name="get_extensions"
+              c:identifier="gst_type_find_factory_get_extensions"
+              doc="Gets the extensions associated with a #GstTypeFindFactory. The returned
+array should not be changed. If you need to change stuff in it, you should
+copy it using g_strdupv().  This function may return NULL to indicate
+a 0-length list.">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_caps"
+              c:identifier="gst_type_find_factory_get_caps"
+              doc="Gets the #GstCaps associated with a typefind factory.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="call_function"
+              c:identifier="gst_type_find_factory_call_function"
+              doc="members must be set.
+Calls the #GstTypeFindFunction associated with this factory.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="find" transfer-ownership="none">
+            <type name="TypeFind" c:type="GstTypeFind*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="feature">
+        <type name="PluginFeature" c:type="GstPluginFeature"/>
+      </field>
+      <field name="function">
+        <type name="TypeFindFunction" c:type="GstTypeFindFunction"/>
+      </field>
+      <field name="extensions">
+        <type name="utf8" c:type="gchar**"/>
+      </field>
+      <field name="caps">
+        <type name="Caps" c:type="GstCaps*"/>
+      </field>
+      <field name="user_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="user_data_notify">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="TypeFindFactoryClass"
+            c:type="GstTypeFindFactoryClass"
+            glib:is-gtype-struct-for="TypeFindFactory">
+      <field name="parent">
+        <type name="PluginFeatureClass" c:type="GstPluginFeatureClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="TypeFindFunction"
+              c:type="GstTypeFindFunction"
+              doc="A function that will be called by typefinding.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="find" transfer-ownership="none">
+          <type name="TypeFind" c:type="GstTypeFind*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="TypeFindProbability"
+                 doc="The probability of the typefind function. Higher values have more certainty
+in doing a reliable typefind."
+                 c:type="GstTypeFindProbability">
+      <member name="minimum" value="1" c:identifier="GST_TYPE_FIND_MINIMUM"/>
+      <member name="possible"
+              value="50"
+              c:identifier="GST_TYPE_FIND_POSSIBLE"/>
+      <member name="likely" value="80" c:identifier="GST_TYPE_FIND_LIKELY"/>
+      <member name="nearly_certain"
+              value="99"
+              c:identifier="GST_TYPE_FIND_NEARLY_CERTAIN"/>
+      <member name="maximum" value="100" c:identifier="GST_TYPE_FIND_MAXIMUM"/>
+    </enumeration>
+    <record name="TypeNameData"
+            c:type="GstTypeNameData"
+            doc="Structure used for filtering based on @name and @type.">
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+    </record>
+    <interface name="URIHandler"
+               c:type="GstURIHandler"
+               doc="Opaque #GstURIHandler structure."
+               glib:type-name="GstURIHandler"
+               glib:get-type="gst_uri_handler_get_type"
+               glib:type-struct="URIHandlerInterface">
+      <virtual-method name="get_uri" invoker="get_uri">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_uri" invoker="set_uri">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_uri_type"
+              c:identifier="gst_uri_handler_get_uri_type"
+              doc="Gets the type of the given URI handler
+Returns #GST_URI_UNKNOWN if the @handler isn&apos;t implemented correctly.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_protocols"
+              c:identifier="gst_uri_handler_get_protocols"
+              doc="Gets the list of protocols supported by @handler. This list may not be
+modified.
+Returns NULL if the @handler isn&apos;t implemented properly, or the @handler
+doesn&apos;t support any protocols.">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_uri"
+              c:identifier="gst_uri_handler_get_uri"
+              doc="Gets the currently handled URI.
+Returns NULL if there are no URI currently handled. The returned
+string must not be modified or freed.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_uri"
+              c:identifier="gst_uri_handler_set_uri"
+              doc="Tries to set the URI of the given handler.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="new_uri"
+              c:identifier="gst_uri_handler_new_uri"
+              doc="Emits the new-uri signal for a given handler, when that handler has a new URI.
+This function should only be called by URI handlers themselves.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="new-uri"
+                   doc="The URI of the given @handler has changed.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="URIHandlerInterface"
+            c:type="GstURIHandlerInterface"
+            glib:is-gtype-struct-for="URIHandler"
+            doc="This is for use by bindings that need to pass context when creating a URI
+Handler. If implemented, get_protocols will be used in preference to
+Any #GstElement using this interface should implement these methods.">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="new_uri">
+        <callback name="new_uri" c:type="new_uri">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="handler" transfer-ownership="none">
+              <type name="URIHandler" c:type="GstURIHandler*"/>
+            </parameter>
+            <parameter name="uri" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_type">
+        <callback name="get_type" c:type="get_type">
+          <return-value transfer-ownership="full">
+            <type name="URIType" c:type="GstURIType"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="get_protocols">
+        <callback name="get_protocols" c:type="get_protocols">
+          <return-value transfer-ownership="full">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </return-value>
+        </callback>
+      </field>
+      <field name="get_uri">
+        <callback name="get_uri" c:type="get_uri">
+          <return-value transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="handler" transfer-ownership="none">
+              <type name="URIHandler" c:type="GstURIHandler*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_uri">
+        <callback name="set_uri" c:type="set_uri">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="handler" transfer-ownership="none">
+              <type name="URIHandler" c:type="GstURIHandler*"/>
+            </parameter>
+            <parameter name="uri" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_type_full">
+        <callback name="get_type_full" c:type="get_type_full">
+          <return-value transfer-ownership="full">
+            <type name="URIType" c:type="GstURIType"/>
+          </return-value>
+          <parameters>
+            <parameter name="type" transfer-ownership="none">
+              <type name="GType" c:type="GType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_protocols_full">
+        <callback name="get_protocols_full" c:type="get_protocols_full">
+          <return-value transfer-ownership="full">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </return-value>
+          <parameters>
+            <parameter name="type" transfer-ownership="none">
+              <type name="GType" c:type="GType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="URIType"
+                 doc="The different types of URI direction."
+                 c:type="GstURIType">
+      <member name="unknown" value="0" c:identifier="GST_URI_UNKNOWN"/>
+      <member name="sink" value="1" c:identifier="GST_URI_SINK"/>
+      <member name="src" value="2" c:identifier="GST_URI_SRC"/>
+    </enumeration>
+    <constant name="USECOND" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="VALUE_EQUAL" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="VALUE_GREATER_THAN" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="VALUE_LESS_THAN" value="-1">
+      <type name="int"/>
+    </constant>
+    <constant name="VALUE_UNORDERED" value="2">
+      <type name="int"/>
+    </constant>
+    <callback name="ValueCompareFunc"
+              c:type="GstValueCompareFunc"
+              doc="Used together with gst_value_compare() to compare #GValue items.
+or GST_VALUE_UNORDERED">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ValueDeserializeFunc"
+              c:type="GstValueDeserializeFunc"
+              doc="Used by gst_value_deserialize() to parse a non-binary form into the #GValue.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ValueIntersectFunc"
+              c:type="GstValueIntersectFunc"
+              doc="Used by gst_value_intersect() to perform intersection for a specific #GValue
+type. If the intersection is non-empty, the result is
+placed in @dest and TRUE is returned.  If the intersection is
+empty, @dest is unmodified and FALSE is returned.
+Register a new implementation with gst_value_register_intersect_func().">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ValueSerializeFunc"
+              c:type="GstValueSerializeFunc"
+              doc="Used by gst_value_serialize() to obtain a non-binary form of the #GValue.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ValueSubtractFunc"
+              c:type="GstValueSubtractFunc"
+              doc="Used by gst_value_subtract() to perform subtraction for a specific #GValue
+type. Register a new implementation with gst_value_register_subtract_func().">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="minuend" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="subtrahend" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="ValueTable"
+            c:type="GstValueTable"
+            doc="VTable for the #GValue @type.">
+      <field name="type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="compare" writable="1">
+        <type name="ValueCompareFunc" c:type="GstValueCompareFunc"/>
+      </field>
+      <field name="serialize" writable="1">
+        <type name="ValueSerializeFunc" c:type="GstValueSerializeFunc"/>
+      </field>
+      <field name="deserialize" writable="1">
+        <type name="ValueDeserializeFunc" c:type="GstValueDeserializeFunc"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="void*" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="ValueUnionFunc"
+              c:type="GstValueUnionFunc"
+              doc="Used by gst_value_union() to perform unification for a specific #GValue
+type. Register a new implementation with gst_value_register_union_func().">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="XML"
+           c:type="GstXML"
+           doc="XML parser object"
+           parent="Object"
+           glib:type-name="GstXML"
+           glib:get-type="gst_xml_get_type"
+           glib:type-struct="XMLClass">
+      <constructor name="new"
+                   c:identifier="gst_xml_new"
+                   doc="Create a new GstXML parser object.">
+        <return-value transfer-ownership="full">
+          <type name="XML" c:type="GstXML*"/>
+        </return-value>
+      </constructor>
+      <function name="write"
+                c:identifier="gst_xml_write"
+                doc="Converts the given element into an XML presentation.">
+        <return-value transfer-ownership="full">
+          <type name="libxml2.DocPtr" c:type="xmlDocPtr"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="make_element"
+                c:identifier="gst_xml_make_element"
+                doc="Load the element from the XML description">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cur" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="object_saved">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="self" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="parse_doc"
+              c:identifier="gst_xml_parse_doc"
+              doc="Fills the GstXML object with the elements from the
+xmlDocPtr.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="doc" transfer-ownership="none">
+            <type name="libxml2.DocPtr" c:type="xmlDocPtr"/>
+          </parameter>
+          <parameter name="root" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_file"
+              c:identifier="gst_xml_parse_file"
+              doc="Fills the GstXML object with the corresponding elements from
+the XML file fname. Optionally it will only build the element from
+the element node root (if it is not NULL). This feature is useful
+if you only want to build a specific element from an XML file
+but not the pipeline it is embedded in.
+Pass &quot;-&quot; as fname to read from stdin. You can also pass a URI
+of any format that libxml supports, including http.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fname" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="root" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_memory"
+              c:identifier="gst_xml_parse_memory"
+              doc="Fills the GstXML object with the corresponding elements from
+an in memory XML buffer.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="root" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_element"
+              c:identifier="gst_xml_get_element"
+              doc="This function is used to get a pointer to the GstElement corresponding
+to name in the pipeline description. You would use this if you have
+to do anything to the element after loading.">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_topelements"
+              c:identifier="gst_xml_get_topelements"
+              doc="Retrieve a list of toplevel elements.
+of the list and must not free or modify the list. The caller also does not
+own a reference to any of the elements in the list and should obtain its own
+reference using gst_object_ref() if necessary.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="topelements">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="ns">
+        <type name="libxml2.NsPtr" c:type="xmlNsPtr"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <glib:signal name="object-loaded"
+                   doc="Signals that a new object has been deserialized.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Object" c:type="GstObject"/>
+          </parameter>
+          <parameter name="xml_node" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="XMLClass"
+            c:type="GstXMLClass"
+            glib:is-gtype-struct-for="XML">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="object_loaded">
+        <callback name="object_loaded" c:type="object_loaded">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="xml" transfer-ownership="none">
+              <type name="XML" c:type="GstXML*"/>
+            </parameter>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="self" transfer-ownership="none">
+              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="object_saved">
+        <callback name="object_saved" c:type="object_saved">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="xml" transfer-ownership="none">
+              <type name="XML" c:type="GstXML*"/>
+            </parameter>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="self" transfer-ownership="none">
+              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <function name="alloc_trace_available"
+              c:identifier="gst_alloc_trace_available"
+              doc="Check if alloc tracing was compiled into the core
+tracing enabled.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="alloc_trace_get"
+              c:identifier="gst_alloc_trace_get"
+              doc="Get the named alloc trace object.
+no alloc tracer was registered with that name.">
+      <return-value transfer-ownership="full">
+        <type name="AllocTrace" c:type="GstAllocTrace*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="alloc_trace_list"
+              c:identifier="gst_alloc_trace_list"
+              doc="Get a list of all registered alloc trace objects.">
+      <return-value transfer-ownership="none">
+        <type name="GLib.List" c:type="GList*"/>
+      </return-value>
+    </function>
+    <function name="alloc_trace_live_all"
+              c:identifier="gst_alloc_trace_live_all"
+              doc="Get the total number of live registered alloc trace objects.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+    </function>
+    <function name="alloc_trace_print_all"
+              c:identifier="gst_alloc_trace_print_all"
+              doc="Print the status of all registered alloc trace objects.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="alloc_trace_print_live"
+              c:identifier="gst_alloc_trace_print_live"
+              doc="Print the status of all registered alloc trace objects, ignoring those
+without live objects.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="alloc_trace_set_flags_all"
+              c:identifier="gst_alloc_trace_set_flags_all"
+              doc="Enable the specified options on all registered alloc trace
+objects.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="AllocTraceFlags" c:type="GstAllocTraceFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="atomic_int_set"
+              c:identifier="gst_atomic_int_set"
+              doc="Unconditionally sets the atomic integer to @value."
+              deprecated="Use g_atomic_int_set().">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="atomic_int" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_try_new_and_alloc"
+              c:identifier="gst_buffer_try_new_and_alloc"
+              doc="Tries to create a newly allocated buffer with data of the given size. If
+the requested amount of memory can&apos;t be allocated, NULL will be returned.
+The buffer memory is not cleared.
+Note that when @size == 0, the buffer data pointer will be NULL.
+MT safe."
+              version="0.10.13">
+      <return-value transfer-ownership="full">
+        <type name="Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="caps_from_string"
+              c:identifier="gst_caps_from_string"
+              doc="Converts @caps from a string representation.">
+      <return-value transfer-ownership="full">
+        <type name="Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="caps_load_thyself"
+              c:identifier="gst_caps_load_thyself"
+              doc="Creates a #GstCaps from its XML serialization.">
+      <return-value transfer-ownership="full">
+        <type name="Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent" transfer-ownership="none">
+          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_child_added"
+              c:identifier="gst_child_proxy_child_added"
+              doc="Emits the &quot;child-added&quot; signal.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="child" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_child_removed"
+              c:identifier="gst_child_proxy_child_removed"
+              doc="Emits the &quot;child-removed&quot; signal.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="child" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_get"
+              c:identifier="gst_child_proxy_get"
+              doc="Gets properties of the parent object and its children.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="first_property_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_get_property"
+              c:identifier="gst_child_proxy_get_property"
+              doc="Gets a single property using the GstChildProxy mechanism.
+You are responsible for for freeing it by calling g_value_unset()">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_lookup"
+              c:identifier="gst_child_proxy_lookup"
+              doc="Looks up which object and #GParamSpec would be effected by the given @name.
+case the values for @pspec and @target are not modified. Unref @target after
+usage.
+MT safe.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="target" transfer-ownership="none">
+          <type name="Object" c:type="GstObject**"/>
+        </parameter>
+        <parameter name="pspec" transfer-ownership="none">
+          <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_set"
+              c:identifier="gst_child_proxy_set"
+              doc="Sets properties of the parent object and its children.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="first_property_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_set_property"
+              c:identifier="gst_child_proxy_set_property"
+              doc="Sets a single property using the GstChildProxy mechanism.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="class_signal_connect"
+              c:identifier="gst_class_signal_connect">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="klass" transfer-ownership="none">
+          <type name="ObjectClass" c:type="GstObjectClass*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="func_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="class_signal_emit_by_name"
+              c:identifier="gst_class_signal_emit_by_name"
+              doc="emits the named class signal.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="self" transfer-ownership="none">
+          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_add_log_function"
+              c:identifier="gst_debug_add_log_function"
+              doc="Adds the logging function to the list of logging functions.
+Be sure to use G_GNUC_NO_INSTRUMENT on that function, it is needed.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="1">
+          <type name="LogFunction" c:type="GstLogFunction"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_construct_term_color"
+              c:identifier="gst_debug_construct_term_color"
+              doc="Constructs a string that can be used for getting the desired color in color
+terminals.
+You need to free the string after use.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="colorinfo" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_construct_win_color"
+              c:identifier="gst_debug_construct_win_color"
+              doc="Constructs an integer that can be used for getting the desired color in
+windows&apos; terminals (cmd.exe). As there is no mean to underline, we simply
+ignore this attribute.
+This function returns 0 on non-windows machines."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="colorinfo" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_get_all_categories"
+              c:identifier="gst_debug_get_all_categories"
+              doc="Returns a snapshot of a all categories that are currently in use . This list
+may change anytime.
+The caller has to free the list after use.">
+      <return-value transfer-ownership="full">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </return-value>
+    </function>
+    <function name="debug_get_default_threshold"
+              c:identifier="gst_debug_get_default_threshold"
+              doc="Returns the default threshold that is used for new categories.">
+      <return-value transfer-ownership="full">
+        <type name="DebugLevel" c:type="GstDebugLevel"/>
+      </return-value>
+    </function>
+    <function name="debug_is_active"
+              c:identifier="gst_debug_is_active"
+              doc="Checks if debugging output is activated.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="debug_is_colored"
+              c:identifier="gst_debug_is_colored"
+              doc="Checks if the debugging output should be colored.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="debug_level_get_name"
+              c:identifier="gst_debug_level_get_name"
+              doc="Get the string representation of a debugging level">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="level" transfer-ownership="none">
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_log"
+              c:identifier="gst_debug_log"
+              doc="Logs the given message using the currently registered debugging handlers.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="category" transfer-ownership="none">
+          <type name="DebugCategory" c:type="GstDebugCategory*"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+        <parameter name="file" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="function" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="line" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_log_default"
+              c:identifier="gst_debug_log_default"
+              doc="The default logging handler used by GStreamer. Logging functions get called
+whenever a macro like GST_DEBUG or similar is used. This function outputs the
+message and additional info using the glib error handler.
+You can add other handlers by using gst_debug_add_log_function().
+And you can remove this handler by calling
+gst_debug_remove_log_function(gst_debug_log_default);">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="category" transfer-ownership="none">
+          <type name="DebugCategory" c:type="GstDebugCategory*"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+        <parameter name="file" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="function" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="line" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <type name="DebugMessage" c:type="GstDebugMessage*"/>
+        </parameter>
+        <parameter name="unused" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_print_stack_trace"
+              c:identifier="gst_debug_print_stack_trace"
+              doc="If GST_ENABLE_FUNC_INSTRUMENTATION is defined a stacktrace is available for
+gstreamer code, which can be printed with this function.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="debug_remove_log_function"
+              c:identifier="gst_debug_remove_log_function"
+              doc="Removes all registered instances of the given logging functions.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="LogFunction" c:type="GstLogFunction"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_remove_log_function_by_data"
+              c:identifier="gst_debug_remove_log_function_by_data"
+              doc="Removes all registered instances of log functions with the given user data.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_set_active"
+              c:identifier="gst_debug_set_active"
+              doc="If activated, debugging messages are sent to the debugging
+handlers.
+It makes sense to deactivate it for speed issues.
+&lt;note&gt;&lt;para&gt;This function is not threadsafe. It makes sense to only call it
+during initialization.&lt;/para&gt;&lt;/note&gt;">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="active" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_set_colored"
+              c:identifier="gst_debug_set_colored"
+              doc="Sets or unsets the use of coloured debugging output.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="colored" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_set_default_threshold"
+              c:identifier="gst_debug_set_default_threshold"
+              doc="Sets the default threshold to the given level and updates all categories to
+use this threshold.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="level" transfer-ownership="none">
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_set_threshold_for_name"
+              c:identifier="gst_debug_set_threshold_for_name"
+              doc="Sets all categories which match the given glob style pattern to the given
+level.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_unset_threshold_for_name"
+              c:identifier="gst_debug_unset_threshold_for_name"
+              doc="Resets all categories with the given name back to the default level.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="default_registry_check_feature_version"
+              c:identifier="gst_default_registry_check_feature_version"
+              doc="Checks whether a plugin feature by the given name exists in the
+default registry and whether its version is at least the
+version required.
+the same as the required version or newer, and #FALSE otherwise.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="feature_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="min_major" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="min_minor" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="min_micro" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="deinit"
+              c:identifier="gst_deinit"
+              doc="Clean up any resources created by GStreamer in gst_init().
+It is normally not needed to call this function in a normal application
+as the resources will automatically be freed when the program terminates.
+This function is therefore mostly used by testsuites and other memory
+profiling tools.
+After this call GStreamer (including this method) should not be used anymore.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="error_get_message"
+              c:identifier="gst_error_get_message"
+              doc="Get a string describing the error message in the current locale.
+current locale.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="domain" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="code" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="event_type_get_flags"
+              c:identifier="gst_event_type_get_flags"
+              doc="Gets the #GstEventTypeFlags associated with @type.">
+      <return-value transfer-ownership="full">
+        <type name="EventTypeFlags" c:type="GstEventTypeFlags"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="EventType" c:type="GstEventType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="event_type_get_name"
+              c:identifier="gst_event_type_get_name"
+              doc="Get a printable name for the given event type. Do not modify or free.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="EventType" c:type="GstEventType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="event_type_to_quark"
+              c:identifier="gst_event_type_to_quark"
+              doc="Get the unique quark for the given event type.">
+      <return-value transfer-ownership="full">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="EventType" c:type="GstEventType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="filter_run"
+              c:identifier="gst_filter_run"
+              doc="Iterates over the elements in @list, calling @func with the
+list item data for each item.  If @func returns TRUE, @data is
+prepended to the list of results returned.  If @first is true,
+the search is halted after the first result is found.
+Since gst_filter_run() knows nothing about the type of @data, no
+reference will be taken (if @data refers to an object) and no copy of
+results.
+(the data contained in the list is a flat copy and does need to be
+unreferenced or freed).">
+      <return-value transfer-ownership="full" doc="when no longer needed">
+        <type name="GLib.List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="FilterFunc" c:type="GstFilterFunc"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flow_get_name"
+              c:identifier="gst_flow_get_name"
+              doc="Gets a string representing the given flow return.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="ret" transfer-ownership="none">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flow_to_quark"
+              c:identifier="gst_flow_to_quark"
+              doc="Get the unique quark for the given GstFlowReturn.
+invalid return was specified.">
+      <return-value transfer-ownership="full">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+      <parameters>
+        <parameter name="ret" transfer-ownership="none">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_by_nick"
+              c:identifier="gst_format_get_by_nick"
+              doc="Return the format registered with the given nick.
+if the format was not registered.">
+      <return-value transfer-ownership="full">
+        <type name="Format" c:type="GstFormat"/>
+      </return-value>
+      <parameters>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_details"
+              c:identifier="gst_format_get_details"
+              doc="Get details about the given format.
+MT safe.">
+      <return-value transfer-ownership="none">
+        <type name="FormatDefinition" c:type="GstFormatDefinition*"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="Format" c:type="GstFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_name"
+              c:identifier="gst_format_get_name"
+              doc="Get a printable name for the given format. Do not modify or free.
+the format is unknown.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="Format" c:type="GstFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_iterate_definitions"
+              c:identifier="gst_format_iterate_definitions"
+              doc="Iterate all the registered formats. The format definition is read
+only.">
+      <return-value transfer-ownership="full">
+        <type name="Iterator" c:type="GstIterator*"/>
+      </return-value>
+    </function>
+    <function name="format_register"
+              c:identifier="gst_format_register"
+              doc="Create a new GstFormat based on the nick or return an
+already registered format with that nick.
+with the same nick.
+MT safe.">
+      <return-value transfer-ownership="full">
+        <type name="Format" c:type="GstFormat"/>
+      </return-value>
+      <parameters>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="description" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_to_quark"
+              c:identifier="gst_format_to_quark"
+              doc="Get the unique quark for the given format.
+is unknown.">
+      <return-value transfer-ownership="full">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="Format" c:type="GstFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="formats_contains"
+              c:identifier="gst_formats_contains"
+              doc="See if the given format is inside the format array.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="formats" transfer-ownership="none">
+          <type name="Format" c:type="GstFormat*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="Format" c:type="GstFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="implements_interface_cast"
+              c:identifier="gst_implements_interface_cast"
+              doc="cast a given object to an interface type, and check whether this
+interface is supported for this specific instance.">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="from"
+                   transfer-ownership="none"
+                   doc="from which to cast to the interface">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="implements_interface_check"
+              c:identifier="gst_implements_interface_check"
+              doc="check a given object for an interface implementation, and check
+whether this interface is supported for this specific instance.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="from"
+                   transfer-ownership="none"
+                   doc="from which to check from for the interface">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init"
+              c:identifier="gst_init"
+              doc="Initializes the GStreamer library, setting up internal path lists,
+registering built-in elements, and loading standard plugins.
+Unless the plugin registry is disabled at compile time, the registry will be
+loaded. By default this will also check if the registry cache needs to be
+updated and rescan all plugins if needed. See gst_update_registry() for
+details and section
+&lt;link linkend=&quot;gst-running&quot;&gt;Running GStreamer Applications&lt;/link&gt;
+for how to disable automatic registry updates.
+This function should be called before calling any other GLib functions. If
+this is not an option, your program must initialise the GLib thread system
+using g_thread_init() before any other GLib functions are called.
+&lt;note&gt;&lt;para&gt;
+This function will terminate your program if it was unable to initialize
+GStreamer for some reason.  If you want your program to fall back,
+use gst_init_check() instead.
+&lt;/para&gt;&lt;/note&gt;
+functions in other glib-style libraries, such as gtk_init().  In
+particular, unknown command line options cause this function to
+abort program execution.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   transfer-ownership="full"
+                   doc="pointer to application&apos;s argc">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   transfer-ownership="full"
+                   allow-none="1"
+                   doc="pointer to application&apos;s argv">
+          <array length="0" c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_check"
+              c:identifier="gst_init_check"
+              doc="Initializes the GStreamer library, setting up internal path lists,
+registering built-in elements, and loading standard plugins.
+This function will return %FALSE if GStreamer could not be initialized
+for some reason.  If you want your program to fail fatally,
+use gst_init() instead.
+This function should be called before calling any other GLib functions. If
+this is not an option, your program must initialise the GLib thread system
+using g_thread_init() before any other GLib functions are called."
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   transfer-ownership="full"
+                   doc="pointer to application&apos;s argc">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   transfer-ownership="full"
+                   allow-none="1"
+                   doc="pointer to application&apos;s argv">
+          <array length="0" c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_get_option_group"
+              c:identifier="gst_init_get_option_group"
+              doc="Returns a #GOptionGroup with GStreamer&apos;s argument specifications. The
+group is set up to use standard GOption callbacks, so when using this
+group in combination with GOption parsing methods, all argument parsing
+and initialization is automated.
+This function is useful if you want to integrate GStreamer with other
+libraries that use GOption (see g_option_context_add_group() ).
+If you use this function, you should make sure you initialise the GLib
+threading system as one of the very first things in your program
+(see the example at the beginning of this section).">
+      <return-value transfer-ownership="full">
+        <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+      </return-value>
+    </function>
+    <function name="is_tag_list"
+              c:identifier="gst_is_tag_list"
+              doc="Checks if the given pointer is a taglist.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="p" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="message_type_get_name"
+              c:identifier="gst_message_type_get_name"
+              doc="Get a printable name for the given message type. Do not modify or free.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="MessageType" c:type="GstMessageType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="message_type_to_quark"
+              c:identifier="gst_message_type_to_quark"
+              doc="Get the unique quark for the given message type.">
+      <return-value transfer-ownership="full">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="MessageType" c:type="GstMessageType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_fraction"
+              c:identifier="gst_param_spec_fraction"
+              doc="This function creates a fraction GParamSpec for use by objects/elements
+that want to expose properties of fraction type. This function is typically
+used in connection with g_object_class_install_property() in a GObjects&apos;s
+instance_init function."
+              version="0.10.14">
+      <return-value transfer-ownership="full">
+        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="min_num" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="min_denom" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="max_num" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="max_denom" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="default_num" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="default_denom" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="GObject.ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_mini_object"
+              c:identifier="gst_param_spec_mini_object"
+              doc="Creates a new #GParamSpec instance that hold #GstMiniObject references.">
+      <return-value transfer-ownership="full">
+        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="object_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="GObject.ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_bin_from_description"
+              c:identifier="gst_parse_bin_from_description"
+              doc="for unlinked source or sink pads within the bin
+This is a convenience wrapper around gst_parse_launch() to create a
+#GstBin from a gst-launch-style pipeline description. See
+gst_parse_launch() and the gst-launch man page for details about the
+syntax. Ghost pads on the bin for unlinked source or sink pads
+within the bin can automatically be created (but only a maximum of
+one ghost pad for each direction will be created; if you expect
+multiple unlinked source pads or multiple unlinked sink pads
+and want them all ghosted, you will have to create the ghost pads
+yourself)."
+              version="0.10.3"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Element" c:type="GstElement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="bin_description" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="ghost_unlinked_pads" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_bin_from_description_full"
+              c:identifier="gst_parse_bin_from_description_full"
+              doc="for unlinked source or sink pads within the bin
+This is a convenience wrapper around gst_parse_launch() to create a
+#GstBin from a gst-launch-style pipeline description. See
+gst_parse_launch() and the gst-launch man page for details about the
+syntax. Ghost pads on the bin for unlinked source or sink pads
+within the bin can automatically be created (but only a maximum of
+one ghost pad for each direction will be created; if you expect
+multiple unlinked source pads or multiple unlinked sink pads
+and want them all ghosted, you will have to create the ghost pads
+yourself)."
+              version="0.10.20"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Element" c:type="GstElement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="bin_description" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="ghost_unlinked_pads" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="context" transfer-ownership="none" doc="or %NULL">
+          <type name="ParseContext" c:type="GstParseContext*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ParseFlags" c:type="GstParseFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_launch"
+              c:identifier="gst_parse_launch"
+              doc="Create a new pipeline based on command line syntax.
+Please note that you might get a return value that is not %NULL even though
+the @error is set. In this case there was a recoverable parsing error and you
+can try to play the pipeline.
+element is specified by the @pipeline_description, all elements are put into
+a #GstPipeline, which than is returned."
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Element" c:type="GstElement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pipeline_description" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_launch_full"
+              c:identifier="gst_parse_launch_full"
+              doc="Create a new pipeline based on command line syntax.
+Please note that you might get a return value that is not %NULL even though
+the @error is set. In this case there was a recoverable parsing error and you
+can try to play the pipeline.
+element is specified by the @pipeline_description, all elements are put into
+a #GstPipeline, which then is returned."
+              version="0.10.20"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Element" c:type="GstElement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pipeline_description" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="context" transfer-ownership="none" doc="or %NULL">
+          <type name="ParseContext" c:type="GstParseContext*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ParseFlags" c:type="GstParseFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_launchv"
+              c:identifier="gst_parse_launchv"
+              doc="Create a new element based on command line syntax.
+An error does not mean that the pipeline could not be constructed."
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Element" c:type="GstElement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="argv" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_launchv_full"
+              c:identifier="gst_parse_launchv_full"
+              doc="Create a new element based on command line syntax.
+An error does not mean that the pipeline could not be constructed.
+partially-constructed bin or element will be returned and @error will be set
+(unless you passed #GST_PARSE_FLAG_FATAL_ERRORS in @flags, then %NULL will
+always be returned on failure)"
+              version="0.10.20"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Element" c:type="GstElement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="argv" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="context" transfer-ownership="none" doc="or %NULL">
+          <type name="ParseContext" c:type="GstParseContext*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ParseFlags" c:type="GstParseFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="print_element_args"
+              c:identifier="gst_print_element_args"
+              doc="Print the element argument in a human readable format in the given
+GString.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="GLib.String" c:type="GString*"/>
+        </parameter>
+        <parameter name="indent" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Element" c:type="GstElement*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="print_pad_caps"
+              c:identifier="gst_print_pad_caps"
+              doc="Write the pad capabilities in a human readable format into
+the given GString.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="GLib.String" c:type="GString*"/>
+        </parameter>
+        <parameter name="indent" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_type_get_by_nick"
+              c:identifier="gst_query_type_get_by_nick"
+              doc="Get the query type registered with @nick.
+if the query was not registered.">
+      <return-value transfer-ownership="full">
+        <type name="QueryType" c:type="GstQueryType"/>
+      </return-value>
+      <parameters>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_type_get_details"
+              c:identifier="gst_query_type_get_details"
+              doc="Get details about the given #GstQueryType.">
+      <return-value transfer-ownership="none">
+        <type name="QueryTypeDefinition" c:type="GstQueryTypeDefinition*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_type_get_name"
+              c:identifier="gst_query_type_get_name"
+              doc="Get a printable name for the given query type. Do not modify or free.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="query" transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_type_iterate_definitions"
+              c:identifier="gst_query_type_iterate_definitions"
+              doc="Get a #GstIterator of all the registered query types. The definitions
+iterated over are read only.">
+      <return-value transfer-ownership="full">
+        <type name="Iterator" c:type="GstIterator*"/>
+      </return-value>
+    </function>
+    <function name="query_type_register"
+              c:identifier="gst_query_type_register"
+              doc="Create a new GstQueryType based on the nick or return an
+already registered query with that nick
+with the same nick.">
+      <return-value transfer-ownership="full">
+        <type name="QueryType" c:type="GstQueryType"/>
+      </return-value>
+      <parameters>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="description" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_type_to_quark"
+              c:identifier="gst_query_type_to_quark"
+              doc="Get the unique quark for the given query type.">
+      <return-value transfer-ownership="full">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+      <parameters>
+        <parameter name="query" transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_types_contains"
+              c:identifier="gst_query_types_contains"
+              doc="See if the given #GstQueryType is inside the @types query types array.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="types" transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType*"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="segtrap_is_enabled"
+              c:identifier="gst_segtrap_is_enabled"
+              doc="Some functions in the GStreamer core might install a custom SIGSEGV handler
+to better catch and report errors to the application. Currently this feature
+is enabled by default when loading plugins.
+Applications might want to disable this behaviour with the
+gst_segtrap_set_enabled() function. This is typically done if the application
+wants to install its own handler without GStreamer interfering."
+              version="0.10.10">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="segtrap_set_enabled"
+              c:identifier="gst_segtrap_set_enabled"
+              doc="Applications might want to disable/enable the SIGSEGV handling of
+the GStreamer core. See gst_segtrap_is_enabled() for more information."
+              version="0.10.10">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="enabled" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="structure_empty_new"
+              c:identifier="gst_structure_empty_new"
+              doc="Creates a new, empty #GstStructure with the given @name.
+See gst_structure_set_name() for constraints on the @name parameter.">
+      <return-value transfer-ownership="full">
+        <type name="Structure" c:type="GstStructure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="structure_from_string"
+              c:identifier="gst_structure_from_string"
+              doc="Creates a #GstStructure from a string representation.
+If end is not NULL, a pointer to the place inside the given string
+where parsing ended will be returned.
+be parsed. Free with gst_structure_free() after use.">
+      <return-value transfer-ownership="full">
+        <type name="Structure" c:type="GstStructure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="structure_id_empty_new"
+              c:identifier="gst_structure_id_empty_new"
+              doc="Creates a new, empty #GstStructure with the given name as a GQuark.">
+      <return-value transfer-ownership="full">
+        <type name="Structure" c:type="GstStructure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="quark" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="structure_id_new"
+              c:identifier="gst_structure_id_new"
+              doc="Creates a new #GstStructure with the given name as a GQuark, followed by
+fieldname quark, GType, argument(s) &quot;triplets&quot; in the same format as
+gst_structure_id_set(). Basically a convenience wrapper around
+gst_structure_id_empty_new() and gst_structure_id_set().
+The last variable argument must be NULL (or 0)."
+              version="0.10.24">
+      <return-value transfer-ownership="full">
+        <type name="Structure" c:type="GstStructure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name_quark" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="field_quark" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_exists"
+              c:identifier="gst_tag_exists"
+              doc="Checks if the given type is already registered.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_get_description"
+              c:identifier="gst_tag_get_description"
+              doc="Returns the human-readable description of this tag, You must not change or
+free this string.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_get_flag"
+              c:identifier="gst_tag_get_flag"
+              doc="Gets the flag of @tag.">
+      <return-value transfer-ownership="full">
+        <type name="TagFlag" c:type="GstTagFlag"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_get_nick" c:identifier="gst_tag_get_nick">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_get_type"
+              c:identifier="gst_tag_get_type"
+              doc="Gets the #GType used for this tag.">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_is_fixed"
+              c:identifier="gst_tag_is_fixed"
+              doc="Checks if the given tag is fixed. A fixed tag can only contain one value.
+Unfixed tags can contain lists of values.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_list_copy_value"
+              c:identifier="gst_tag_list_copy_value"
+              doc="Copies the contents for the given tag into the value,
+merging multiple values into one if multiple values are associated
+with the tag.
+You must g_value_unset() the value after use.
+given list.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="list" transfer-ownership="none">
+          <type name="TagList" c:type="GstTagList*"/>
+        </parameter>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_merge_strings_with_comma"
+              c:identifier="gst_tag_merge_strings_with_comma"
+              doc="This is a convenience function for the func argument of gst_tag_register().
+It concatenates all given strings using a comma. The tag must be registered
+as a G_TYPE_STRING or this function will fail.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_merge_use_first"
+              c:identifier="gst_tag_merge_use_first"
+              doc="This is a convenience function for the func argument of gst_tag_register().
+It creates a copy of the first value from the list.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_register"
+              c:identifier="gst_tag_register"
+              doc="Registers a new tag type for the use with GStreamer&apos;s type system. If a type
+with that name is already registered, that one is used.
+The old registration may have used a different type however. So don&apos;t rely
+on your supplied values.
+that there can only be one single value for this tag in a tag list and
+any additional values will silenty be discarded when being added (unless
+#GST_TAG_MERGE_REPLACE, #GST_TAG_MERGE_REPLACE_ALL, or
+#GST_TAG_MERGE_PREPEND is used as merge mode, in which case the new
+value will replace the old one in the list).
+The merge function will be called from gst_tag_list_copy_value() when
+it is required that one or more values for a tag be condensed into
+one single value. This may happen from gst_tag_list_get_string(),
+gst_tag_list_get_int(), gst_tag_list_get_double() etc. What will happen
+exactly in that case depends on how the tag was registered and if a
+merge function was supplied and if so which one.
+gst_tag_merge_strings_with_comma().">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flag" transfer-ownership="none">
+          <type name="TagFlag" c:type="GstTagFlag"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="TagMergeFunc" c:type="GstTagMergeFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="trace_read_tsc"
+              c:identifier="gst_trace_read_tsc"
+              doc="Read a platform independent timer value that can be used in
+benchmarks.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dst" direction="out" transfer-ownership="full">
+          <type name="int64" c:type="gint64*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_find_register"
+              c:identifier="gst_type_find_register"
+              doc="passing NULL only works in GStreamer 0.10.16 and later)
+succeeds
+is unloaded.
+is unloaded.
+Registers a new typefind function to be used for typefinding. After
+registering this function will be available for typefinding.
+This function is typically called during an element&apos;s plugin initialization.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin" transfer-ownership="none">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="rank"
+                   transfer-ownership="none"
+                   doc="of this typefind function">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="TypeFindFunction" c:type="GstTypeFindFunction"/>
+        </parameter>
+        <parameter name="extensions" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="possible_caps" transfer-ownership="none">
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="data_notify" transfer-ownership="none" scope="call">
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_register_static_full"
+              c:identifier="gst_type_register_static_full"
+              doc="derive from
+Location of the default vtable inititalization function for interface
+types. (optional)
+Location of the default vtable finalization function for interface types.
+(optional)
+instantiatable types only).
+memory for (0 indicates no caching). Ignored on recent GLib&apos;s.
+for instantiatable types only).
+GValues of this type (usually only useful for fundamental types).
+Helper function which constructs a #GTypeInfo structure and registers a
+GType, but which generates less linker overhead than a static const
+#GTypeInfo structure. For further details of the parameters, please see
+#GTypeInfo in the GLib documentation.
+Registers type_name as the name of a new static type derived from
+parent_type. The value of flags determines the nature (e.g. abstract or
+not) of the type. It works by filling a GTypeInfo struct and calling
+g_type_register_static()."
+              version="0.10.14">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="type_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="class_size" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="base_init" transfer-ownership="none" scope="call">
+          <type name="GObject.BaseInitFunc" c:type="GBaseInitFunc"/>
+        </parameter>
+        <parameter name="base_finalize" transfer-ownership="none" scope="call">
+          <type name="GObject.BaseFinalizeFunc" c:type="GBaseFinalizeFunc"/>
+        </parameter>
+        <parameter name="class_init" transfer-ownership="none" scope="call">
+          <type name="GObject.ClassInitFunc" c:type="GClassInitFunc"/>
+        </parameter>
+        <parameter name="class_finalize"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="7">
+          <type name="GObject.ClassFinalizeFunc" c:type="GClassFinalizeFunc"/>
+        </parameter>
+        <parameter name="class_data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="instance_size"
+                   transfer-ownership="none"
+                   doc="structure (required for">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="n_preallocs"
+                   transfer-ownership="none"
+                   doc="instances to reserve">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="instance_init" transfer-ownership="none" scope="call">
+          <type name="GObject.InstanceInitFunc" c:type="GInstanceInitFunc"/>
+        </parameter>
+        <parameter name="value_table" transfer-ownership="none">
+          <type name="GObject.TypeValueTable" c:type="GTypeValueTable*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="GObject.TypeFlags" c:type="GTypeFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="update_registry"
+              c:identifier="gst_update_registry"
+              doc="Forces GStreamer to re-scan its plugin paths and update the default
+plugin registry.
+Applications will almost never need to call this function, it is only
+useful if the application knows new plugins have been installed (or old
+ones removed) since the start of the application (or, to be precise, the
+first call to gst_init()) and the application wants to make use of any
+newly-installed plugins without restarting the application.
+Applications should assume that the registry update is neither atomic nor
+thread-safe and should therefore not have any dynamic pipelines running
+(including the playbin and decodebin elements) and should also not create
+any elements or access the GStreamer registry while the update is in
+progress.
+Note that this function may block for a significant amount of time.
+imply that there were changes), otherwise %FALSE."
+              version="0.10.12">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="uri_construct"
+              c:identifier="gst_uri_construct"
+              doc="Constructs a URI for a given valid protocol and location.
+is not valid, or the given location is NULL.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="location" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_get_location"
+              c:identifier="gst_uri_get_location"
+              doc="Extracts the location out of a given valid URI, ie. the protocol and &quot;://&quot;
+are stripped from the URI, which means that the location returned includes
+the hostname if one is specified. The returned string must be freed using
+g_free().
+the URI does not contain a location, an empty string is returned.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_get_protocol"
+              c:identifier="gst_uri_get_protocol"
+              doc="Extracts the protocol out of a given valid URI. The returned string must be
+freed using g_free().">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_has_protocol"
+              c:identifier="gst_uri_has_protocol"
+              doc="Checks if the protocol of a given valid URI matches @protocol."
+              version="0.10.4">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_is_valid"
+              c:identifier="gst_uri_is_valid"
+              doc="Tests if the given string is a valid URI identifier. URIs start with a valid
+scheme followed by &quot;:&quot; and maybe a string identifying the location.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_protocol_is_supported"
+              c:identifier="gst_uri_protocol_is_supported"
+              doc="Checks if an element exists that supports the given URI protocol. Note
+that a positive return value does not imply that a subsequent call to
+gst_element_make_from_uri() is guaranteed to work."
+              version="0.10.13">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="URIType" c:type="GstURIType"/>
+        </parameter>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_protocol_is_valid"
+              c:identifier="gst_uri_protocol_is_valid"
+              doc="Tests if the given string is a valid protocol identifier. Protocols
+must consist of alphanumeric characters, &apos;+&apos;, &apos;-&apos; and &apos;.&apos; and must
+start with a alphabetic character. See RFC 3986 Section 3.1.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_array_binary_search"
+              c:identifier="gst_util_array_binary_search"
+              doc="Searches inside @array for @search_data by using the comparison function
+As @search_data is always passed as second argument to @search_func it&apos;s
+not required that @search_data has the same type as the array elements.
+The complexity of this search function is O(log (num_elements))."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="num_elements" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="element_size" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="search_func" transfer-ownership="none" scope="call">
+          <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="SearchMode" c:type="GstSearchMode"/>
+        </parameter>
+        <parameter name="search_data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_double_to_fraction"
+              c:identifier="gst_util_double_to_fraction"
+              doc="Transforms a #gdouble to a fraction and simplifies
+the result."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="src" transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+        <parameter name="dest_n" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="dest_d" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_dump_mem"
+              c:identifier="gst_util_dump_mem"
+              doc="Dumps the memory block into a hex representation. Useful for debugging.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mem" transfer-ownership="none">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_fraction_add"
+              c:identifier="gst_util_fraction_add"
+              doc="Adds the fractions @a_n/@a_d and @b_n/@b_d and stores
+the result in @res_n and @res_d."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="a_n" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="a_d" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="b_n" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="b_d" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="res_n" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="res_d" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_fraction_multiply"
+              c:identifier="gst_util_fraction_multiply"
+              doc="Multiplies the fractions @a_n/@a_d and @b_n/@b_d and stores
+the result in @res_n and @res_d."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="a_n" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="a_d" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="b_n" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="b_d" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="res_n" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="res_d" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_fraction_to_double"
+              c:identifier="gst_util_fraction_to_double"
+              doc="Transforms a #gdouble to a fraction and simplifies the result."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="src_n" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="src_d" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="dest" direction="out" transfer-ownership="full">
+          <type name="double" c:type="gdouble*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_gdouble_to_guint64"
+              c:identifier="gst_util_gdouble_to_guint64">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_get_timestamp"
+              c:identifier="gst_util_get_timestamp"
+              doc="Get a timestamp as GstClockTime to be used for interval meassurements.
+The timestamp should not be interpreted in any other way."
+              version="0.10.16">
+      <return-value transfer-ownership="full">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </return-value>
+    </function>
+    <function name="util_greatest_common_divisor"
+              c:identifier="gst_util_greatest_common_divisor"
+              doc="Calculates the greatest common divisor of @a
+and @b."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_guint64_to_gdouble"
+              c:identifier="gst_util_guint64_to_gdouble">
+      <return-value transfer-ownership="none">
+        <type name="double" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_seqnum_compare"
+              c:identifier="gst_util_seqnum_compare"
+              doc="Compare two sequence numbers, handling wraparound.
+The current implementation just returns (gint32)(@s1 - @s2).
+positive number if @s1 is after @s2."
+              version="0.10.22">
+      <return-value transfer-ownership="none">
+        <type name="int32" c:type="gint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="s1" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+        <parameter name="s2" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_seqnum_next"
+              c:identifier="gst_util_seqnum_next"
+              doc="Return a constantly incrementing sequence number.
+This function is used internally to GStreamer to be able to determine which
+events and messages are &quot;the same&quot;. For example, elements may set the seqnum
+on a segment-done message to be the same as that of the last seek event, to
+indicate that event and the message correspond to the same segment.
+overflow back to 0 at some point. Use gst_util_seqnum_compare() to make sure
+you handle wraparound correctly."
+              version="0.10.22">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+    </function>
+    <function name="util_set_object_arg"
+              c:identifier="gst_util_set_object_arg"
+              doc="Convertes the string value to the type of the objects argument and
+sets the argument with it.
+Note that this function silently returns if @object has no property named">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_set_value_from_string"
+              c:identifier="gst_util_set_value_from_string"
+              doc="Converts the string to the type of the value and
+sets the value with it.
+Note that this function is dangerous as it does not return any indication
+if the conversion worked or not.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value_str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_uint64_scale"
+              c:identifier="gst_util_uint64_scale"
+              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision.
+This function can potentially be very slow if val and num are both
+greater than G_MAXUINT32.
+function returns G_MAXUINT64.  If the result is not exactly
+representable as an integer it is truncated.  See also
+gst_util_uint64_scale_round(), gst_util_uint64_scale_ceil(),
+gst_util_uint64_scale_int(), gst_util_uint64_scale_int_round(),
+gst_util_uint64_scale_int_ceil().">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="denom" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_uint64_scale_ceil"
+              c:identifier="gst_util_uint64_scale_ceil"
+              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision.
+This function can potentially be very slow if val and num are both
+greater than G_MAXUINT32.
+function returns G_MAXUINT64.  If the result is not exactly
+representable as an integer, it is rounded up.  See also
+gst_util_uint64_scale(), gst_util_uint64_scale_round(),
+gst_util_uint64_scale_int(), gst_util_uint64_scale_int_round(),
+gst_util_uint64_scale_int_ceil().">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="denom" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_uint64_scale_int"
+              c:identifier="gst_util_uint64_scale_int"
+              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision.  @num must be non-negative and
+function returns G_MAXUINT64.  If the result is not exactly
+representable as an integer, it is truncated.  See also
+gst_util_uint64_scale_int_round(), gst_util_uint64_scale_int_ceil(),
+gst_util_uint64_scale(), gst_util_uint64_scale_round(),
+gst_util_uint64_scale_ceil().">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none" doc="to scale.">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="denom" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_uint64_scale_int_ceil"
+              c:identifier="gst_util_uint64_scale_int_ceil"
+              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision.  @num must be non-negative and
+function returns G_MAXUINT64.  If the result is not exactly
+representable as an integer, it is rounded up.  See also
+gst_util_uint64_scale_int(), gst_util_uint64_scale_int_round(),
+gst_util_uint64_scale(), gst_util_uint64_scale_round(),
+gst_util_uint64_scale_ceil().">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none" doc="to scale.">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="denom" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_uint64_scale_int_round"
+              c:identifier="gst_util_uint64_scale_int_round"
+              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision.  @num must be non-negative and
+function returns G_MAXUINT64.  If the result is not exactly
+representable as an integer, it is rounded to the nearest integer
+(half-way cases are rounded up).  See also gst_util_uint64_scale_int(),
+gst_util_uint64_scale_int_ceil(), gst_util_uint64_scale(),
+gst_util_uint64_scale_round(), gst_util_uint64_scale_ceil().">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none" doc="to scale.">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="denom" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_uint64_scale_round"
+              c:identifier="gst_util_uint64_scale_round"
+              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision.
+This function can potentially be very slow if val and num are both
+greater than G_MAXUINT32.
+function returns G_MAXUINT64.  If the result is not exactly
+representable as an integer, it is rounded to the nearest integer
+(half-way cases are rounded up).  See also gst_util_uint64_scale(),
+gst_util_uint64_scale_ceil(), gst_util_uint64_scale_int(),
+gst_util_uint64_scale_int_round(), gst_util_uint64_scale_int_ceil().">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="denom" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_append_value"
+              c:identifier="gst_value_array_append_value"
+              doc="Appends @append_value to the GstValueArray in @value.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="append_value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_get_size"
+              c:identifier="gst_value_array_get_size"
+              doc="Gets the number of values contained in @value.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_get_value"
+              c:identifier="gst_value_array_get_value"
+              doc="Gets the value that is a member of the array contained in @value and
+has the index @index.">
+      <return-value transfer-ownership="none">
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_prepend_value"
+              c:identifier="gst_value_array_prepend_value"
+              doc="Prepends @prepend_value to the GstValueArray in @value.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="prepend_value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_can_compare"
+              c:identifier="gst_value_can_compare"
+              doc="Determines if @value1 and @value2 can be compared.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_can_intersect"
+              c:identifier="gst_value_can_intersect"
+              doc="Determines if intersecting two values will produce a valid result.
+Two values will produce a valid intersection if they have the same
+type, or if there is a method (registered by
+gst_value_register_intersect_func()) to calculate the intersection.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_can_subtract"
+              c:identifier="gst_value_can_subtract"
+              doc="Checks if it&apos;s possible to subtract @subtrahend from @minuend.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="minuend" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="subtrahend" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_can_union"
+              c:identifier="gst_value_can_union"
+              doc="Determines if @value1 and @value2 can be non-trivially unioned.
+Any two values can be trivially unioned by adding both of them
+to a GstValueList.  However, certain types have the possibility
+to be unioned in a simpler way.  For example, an integer range
+and an integer can be unioned if the integer is a subset of the
+integer range.  If there is the possibility that two values can
+be unioned, this function returns TRUE.
+be unioned.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_compare"
+              c:identifier="gst_value_compare"
+              doc="Compares @value1 and @value2.  If @value1 and @value2 cannot be
+compared, the function returns GST_VALUE_UNORDERED.  Otherwise,
+if @value1 is greater than @value2, GST_VALUE_GREATER_THAN is returned.
+If @value1 is less than @value2, GST_VALUE_LESS_THAN is returned.
+If the values are equal, GST_VALUE_EQUAL is returned.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_deserialize"
+              c:identifier="gst_value_deserialize"
+              doc="Tries to deserialize a string into the type specified by the given GValue.
+If the operation succeeds, TRUE is returned, FALSE otherwise.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_dup_mini_object"
+              c:identifier="gst_value_dup_mini_object"
+              doc="Get the contents of a %GST_TYPE_MINI_OBJECT derived #GValue,
+increasing its reference count."
+              version="0.10.20">
+      <return-value transfer-ownership="full">
+        <type name="MiniObject" c:type="GstMiniObject*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_fraction_multiply"
+              c:identifier="gst_value_fraction_multiply"
+              doc="Multiplies the two #GValue items containing a #GST_TYPE_FRACTION and sets">
+      <return-value transfer-ownership="none" doc="TRUE otherwise.">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="product" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="factor1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="factor2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_fraction_subtract"
+              c:identifier="gst_value_fraction_subtract"
+              doc="Subtracts the @subtrahend from the @minuend and sets @dest to the result.">
+      <return-value transfer-ownership="none" doc="TRUE otherwise.">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="minuend" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="subtrahend" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_caps"
+              c:identifier="gst_value_get_caps"
+              doc="Gets the contents of @value.">
+      <return-value transfer-ownership="none">
+        <type name="Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_date"
+              c:identifier="gst_value_get_date"
+              doc="Gets the contents of @value.">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Date" c:type="GDate*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_double_range_max"
+              c:identifier="gst_value_get_double_range_max"
+              doc="Gets the maximum of the range specified by @value.">
+      <return-value transfer-ownership="none">
+        <type name="double" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_double_range_min"
+              c:identifier="gst_value_get_double_range_min"
+              doc="Gets the minimum of the range specified by @value.">
+      <return-value transfer-ownership="none">
+        <type name="double" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_fourcc"
+              c:identifier="gst_value_get_fourcc"
+              doc="Gets the #guint32 fourcc contained in @value.">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_fraction_denominator"
+              c:identifier="gst_value_get_fraction_denominator"
+              doc="Gets the denominator of the fraction specified by @value.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_fraction_numerator"
+              c:identifier="gst_value_get_fraction_numerator"
+              doc="Gets the numerator of the fraction specified by @value.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_fraction_range_max"
+              c:identifier="gst_value_get_fraction_range_max"
+              doc="Gets the maximum of the range specified by @value.">
+      <return-value transfer-ownership="none">
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_fraction_range_min"
+              c:identifier="gst_value_get_fraction_range_min"
+              doc="Gets the minimum of the range specified by @value.">
+      <return-value transfer-ownership="none">
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_int_range_max"
+              c:identifier="gst_value_get_int_range_max"
+              doc="Gets the maximum of the range specified by @value.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_int_range_min"
+              c:identifier="gst_value_get_int_range_min"
+              doc="Gets the minimum of the range specified by @value.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_mini_object"
+              c:identifier="gst_value_get_mini_object"
+              doc="Get the contents of a %GST_TYPE_MINI_OBJECT derived #GValue.
+Does not increase the refcount of the returned object.">
+      <return-value transfer-ownership="full">
+        <type name="MiniObject" c:type="GstMiniObject*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_structure"
+              c:identifier="gst_value_get_structure"
+              doc="Gets the contents of @value."
+              version="0.10.15">
+      <return-value transfer-ownership="none">
+        <type name="Structure" c:type="GstStructure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_init_and_copy"
+              c:identifier="gst_value_init_and_copy"
+              doc="Initialises the target value to be of the same type as source and then copies
+the contents from source to target.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_intersect"
+              c:identifier="gst_value_intersect"
+              doc="intersection value
+Calculates the intersection of two values.  If the values have
+a non-empty intersection, the value representing the intersection
+is placed in @dest.  If the intersection is non-empty, @dest is
+not modified.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_is_fixed"
+              c:identifier="gst_value_is_fixed"
+              doc="Tests if the given GValue, if available in a GstStructure (or any other
+ranges) value.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_list_append_value"
+              c:identifier="gst_value_list_append_value"
+              doc="Appends @append_value to the GstValueList in @value.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="append_value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_list_concat"
+              c:identifier="gst_value_list_concat"
+              doc="Concatenates copies of @value1 and @value2 into a list.  Values that are not
+of type #GST_TYPE_LIST are treated as if they were lists of length 1.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_list_get_size"
+              c:identifier="gst_value_list_get_size"
+              doc="Gets the number of values contained in @value.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_list_get_value"
+              c:identifier="gst_value_list_get_value"
+              doc="Gets the value that is a member of the list contained in @value and
+has the index @index.">
+      <return-value transfer-ownership="none">
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_list_prepend_value"
+              c:identifier="gst_value_list_prepend_value"
+              doc="Prepends @prepend_value to the GstValueList in @value.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="prepend_value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_register"
+              c:identifier="gst_value_register"
+              doc="Registers functions to perform calculations on #GValue items of a given
+type. Each type can only be added once.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="table" transfer-ownership="none">
+          <type name="ValueTable" c:type="GstValueTable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_register_intersect_func"
+              c:identifier="gst_value_register_intersect_func"
+              doc="Registers a function that is called to calculate the intersection
+of the values having the types @type1 and @type2.
+Intersect functions should be registered at startup before any pipelines are
+started, as gst_value_register_intersect_func() is not thread-safe and
+cannot be used at the same time as gst_value_intersect() or
+gst_value_can_intersect().">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type1" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="type2" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="ValueIntersectFunc" c:type="GstValueIntersectFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_register_subtract_func"
+              c:identifier="gst_value_register_subtract_func"
+              doc="Registers @func as a function capable of subtracting the values of
+Subtract functions should be registered at startup before any pipelines are
+started, as gst_value_register_subtract_func() is not thread-safe and
+cannot be used at the same time as gst_value_subtract().">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="minuend_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="subtrahend_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="ValueSubtractFunc" c:type="GstValueSubtractFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_register_union_func"
+              c:identifier="gst_value_register_union_func"
+              doc="Registers a union function that can create a union between #GValue items
+of the type @type1 and @type2.
+Union functions should be registered at startup before any pipelines are
+started, as gst_value_register_union_func() is not thread-safe and cannot
+be used at the same time as gst_value_union() or gst_value_can_union().">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type1" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="type2" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="ValueUnionFunc" c:type="GstValueUnionFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_serialize"
+              c:identifier="gst_value_serialize"
+              doc="tries to transform the given @value into a string representation that allows
+getting back this string later on using gst_value_deserialize().">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_caps"
+              c:identifier="gst_value_set_caps"
+              doc="Sets the contents of @value to @caps.  The actual
+#GstCaps structure is copied before it is used.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_date"
+              c:identifier="gst_value_set_date"
+              doc="Sets the contents of @value to coorespond to @date.  The actual
+#GDate structure is copied before it is used.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="date" transfer-ownership="none">
+          <type name="GLib.Date" c:type="GDate*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_double_range"
+              c:identifier="gst_value_set_double_range"
+              doc="Sets @value to the range specified by @start and @end.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_fourcc"
+              c:identifier="gst_value_set_fourcc"
+              doc="Sets @value to @fourcc.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="fourcc" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_fraction"
+              c:identifier="gst_value_set_fraction"
+              doc="Sets @value to the fraction specified by @numerator over @denominator.
+The fraction gets reduced to the smallest numerator and denominator,
+and if necessary the sign is moved to the numerator.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="numerator" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="denominator" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_fraction_range"
+              c:identifier="gst_value_set_fraction_range"
+              doc="Sets @value to the range specified by @start and @end.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_fraction_range_full"
+              c:identifier="gst_value_set_fraction_range_full"
+              doc="Sets @value to the range specified by @numerator_start/@denominator_start
+and @numerator_end/@denominator_end.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="numerator_start" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="denominator_start" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="numerator_end" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="denominator_end" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_int_range"
+              c:identifier="gst_value_set_int_range"
+              doc="Sets @value to the range specified by @start and @end.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_mini_object"
+              c:identifier="gst_value_set_mini_object"
+              doc="Set the contents of a %GST_TYPE_MINI_OBJECT derived #GValue to
+The caller retains ownership of the reference.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="mini_object" transfer-ownership="none">
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_structure"
+              c:identifier="gst_value_set_structure"
+              doc="Sets the contents of @value to @structure.  The actual"
+              version="0.10.15">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="structure" transfer-ownership="none">
+          <type name="Structure" c:type="GstStructure*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_subtract"
+              c:identifier="gst_value_subtract"
+              doc="Subtracts @subtrahend from @minuend and stores the result in @dest.
+Note that this means subtraction as in sets, not as in mathematics.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="minuend" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="subtrahend" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_take_mini_object"
+              c:identifier="gst_value_take_mini_object"
+              doc="Set the contents of a %GST_TYPE_MINI_OBJECT derived #GValue to
+Takes over the ownership of the caller&apos;s reference to @mini_object;
+the caller doesn&apos;t have to unref it any more.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="mini_object" transfer-ownership="none">
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_union"
+              c:identifier="gst_value_union"
+              doc="Creates a GValue corresponding to the union of @value1 and @value2.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="version"
+              c:identifier="gst_version"
+              doc="Gets the version number of the GStreamer library.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="major" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+        <parameter name="minor" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+        <parameter name="micro" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+        <parameter name="nano" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="version_string"
+              c:identifier="gst_version_string"
+              doc="This function returns a string that is useful for describing this version">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/app/GstApp-0.10.gir b/extra/gstreamer/app/GstApp-0.10.gir
new file mode 100644 (file)
index 0000000..40ccd7e
--- /dev/null
@@ -0,0 +1,951 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.0"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="GstBase" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <package name="gstreamer-base-0.10"/>
+  <c:include name="gst/app/gstappbuffer.h"/>
+  <c:include name="gst/app/gstappsink.h"/>
+  <c:include name="gst/app/gstappsrc.h"/>
+  <namespace name="GstApp"
+             version="0.10"
+             shared-library="libgstapp-0.10.so.0"
+             c:prefix="Gst">
+    <record name="AppBuffer" c:type="GstAppBuffer">
+      <field name="buffer" writable="1">
+        <type name="Gst.Buffer" c:type="GstBuffer"/>
+      </field>
+      <field name="finalize" writable="1">
+        <type name="AppBufferFinalizeFunc" c:type="GstAppBufferFinalizeFunc"/>
+      </field>
+      <field name="priv" writable="1">
+        <type name="any" c:type="void*"/>
+      </field>
+      <constructor name="new" c:identifier="gst_app_buffer_new">
+        <return-value transfer-ownership="full">
+          <type name="AppBuffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="void*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="finalize" transfer-ownership="none" scope="call">
+            <type name="AppBufferFinalizeFunc"
+                  c:type="GstAppBufferFinalizeFunc"/>
+          </parameter>
+          <parameter name="priv" transfer-ownership="none">
+            <type name="any" c:type="void*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+    </record>
+    <record name="AppBufferClass" c:type="GstAppBufferClass">
+      <field name="buffer_class" writable="1">
+        <type name="Gst.BufferClass" c:type="GstBufferClass"/>
+      </field>
+    </record>
+    <callback name="AppBufferFinalizeFunc" c:type="GstAppBufferFinalizeFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="priv" transfer-ownership="none">
+          <type name="any" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="AppSink"
+           c:type="GstAppSink"
+           parent="GstBase.BaseSink"
+           glib:type-name="GstAppSink"
+           glib:get-type="gst_app_sink_get_type"
+           glib:type-struct="AppSinkClass">
+      <implements name="Gst.URIHandler"/>
+      <method name="set_caps"
+              c:identifier="gst_app_sink_set_caps"
+              doc="Set the capabilities on the appsink element.  This function takes
+a copy of the caps structure. After calling this method, the sink will only
+accept caps that match @caps. If @caps is non-fixed, you must check the caps
+on the buffers to get the actual used caps."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_caps"
+              c:identifier="gst_app_sink_get_caps"
+              doc="Get the configured caps on @appsink."
+              version="0.10.22">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="is_eos"
+              c:identifier="gst_app_sink_is_eos"
+              doc="Check if @appsink is EOS, which is when no more buffers can be pulled because
+an EOS event was received.
+This function also returns %TRUE when the appsink is not in the PAUSED or
+PLAYING state."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_emit_signals"
+              c:identifier="gst_app_sink_set_emit_signals"
+              doc="Make appsink emit the &quot;new-preroll&quot; and &quot;new-buffer&quot; signals. This option is
+by default disabled because signal emission is expensive and unneeded when
+the application prefers to operate in pull mode."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="emit" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_emit_signals"
+              c:identifier="gst_app_sink_get_emit_signals"
+              doc="Check if appsink will emit the &quot;new-preroll&quot; and &quot;new-buffer&quot; signals.
+signals."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_max_buffers"
+              c:identifier="gst_app_sink_set_max_buffers"
+              doc="Set the maximum amount of buffers that can be queued in @appsink. After this
+amount of buffers are queued in appsink, any more buffers will block upstream
+elements until a buffer is pulled from @appsink."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="max" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_max_buffers"
+              c:identifier="gst_app_sink_get_max_buffers"
+              doc="Get the maximum amount of buffers that can be queued in @appsink."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_drop"
+              c:identifier="gst_app_sink_set_drop"
+              doc="Instruct @appsink to drop old buffers when the maximum amount of queued
+buffers is reached."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="drop" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_drop"
+              c:identifier="gst_app_sink_get_drop"
+              doc="Check if @appsink will drop old buffers when the maximum amount of queued
+buffers is reached.
+filled."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="pull_preroll"
+              c:identifier="gst_app_sink_pull_preroll"
+              doc="Get the last preroll buffer in @appsink. This was the buffer that caused the
+appsink to preroll in the PAUSED state. This buffer can be pulled many times
+and remains available to the application even after EOS.
+This function is typically used when dealing with a pipeline in the PAUSED
+state. Calling this function after doing a seek will give the buffer right
+after the seek position.
+Note that the preroll buffer will also be returned as the first buffer
+when calling gst_app_sink_pull_buffer().
+If an EOS event was received before any buffers, this function returns
+%NULL. Use gst_app_sink_is_eos () to check for the EOS condition.
+This function blocks until a preroll buffer or EOS is received or the appsink
+element is set to the READY/NULL state."
+              version="0.10.22">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="pull_buffer"
+              c:identifier="gst_app_sink_pull_buffer"
+              doc="This function blocks until a buffer or EOS becomes available or the appsink
+element is set to the READY/NULL state.
+This function will only return buffers when the appsink is in the PLAYING
+state. All rendered buffers will be put in a queue so that the application
+can pull buffers at its own rate. Note that when the application does not
+pull buffers fast enough, the queued buffers could consume a lot of memory,
+especially when dealing with raw video frames.
+If an EOS event was received before any buffers, this function returns
+%NULL. Use gst_app_sink_is_eos () to check for the EOS condition."
+              version="0.10.22">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="pull_buffer_list"
+              c:identifier="gst_app_sink_pull_buffer_list"
+              doc="This function blocks until a buffer list or EOS becomes available or the
+appsink element is set to the READY/NULL state.
+This function will only return buffer lists when the appsink is in the
+PLAYING state. All rendered buffer lists will be put in a queue so that
+the application can pull buffer lists at its own rate. Note that when
+the application does not pull buffer lists fast enough, the queued buffer
+lists could consume a lot of memory, especially when dealing with raw
+video frames.
+If an EOS event was received before any buffer lists, this function returns
+%NULL. Use gst_app_sink_is_eos () to check for the EOS condition.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.BufferList" c:type="GstBufferList*"/>
+        </return-value>
+      </method>
+      <method name="set_callbacks"
+              c:identifier="gst_app_sink_set_callbacks"
+              doc="Set callbacks which will be executed for each new preroll, new buffer and eos.
+This is an alternative to using the signals, it has lower overhead and is thus
+less expensive, but also less flexible.
+If callbacks are installed, no signals will be emited for performance
+reasons."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callbacks" transfer-ownership="none">
+            <type name="AppSinkCallbacks" c:type="GstAppSinkCallbacks*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="caps" writable="1">
+        <type name="Gst.Caps" c:type="GstCaps"/>
+      </property>
+      <property name="drop" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="emit-signals" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="eos">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="max-buffers" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <field name="basesink">
+        <type name="GstBase.BaseSink" c:type="GstBaseSink"/>
+      </field>
+      <field name="priv">
+        <type name="AppSinkPrivate" c:type="GstAppSinkPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <glib:signal name="eos"
+                   doc="Signal that the end-of-stream has been reached. This signal is emited from
+the steaming thread.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="new-buffer"
+                   doc="Signal that a new buffer is available.
+This signal is emited from the steaming thread and only when the
+&quot;emit-signals&quot; property is %TRUE.
+The new buffer can be retrieved with the &quot;pull-buffer&quot; action
+signal or gst_app_sink_pull_buffer() either from this signal callback
+or from any other thread.
+Note that this signal is only emited when the &quot;emit-signals&quot; property is
+set to %TRUE, which it is not by default for performance reasons.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="new-buffer-list"
+                   doc="Signal that a new bufferlist is available.
+This signal is emited from the steaming thread and only when the
+&quot;emit-signals&quot; property is %TRUE.
+The new buffer can be retrieved with the &quot;pull-buffer-list&quot; action
+signal or gst_app_sink_pull_buffe_listr() either from this signal callback
+or from any other thread.
+Note that this signal is only emited when the &quot;emit-signals&quot; property is
+set to %TRUE, which it is not by default for performance reasons.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="new-preroll"
+                   doc="Signal that a new preroll buffer is available.
+This signal is emited from the steaming thread and only when the
+&quot;emit-signals&quot; property is %TRUE.
+The new preroll buffer can be retrieved with the &quot;pull-preroll&quot; action
+signal or gst_app_sink_pull_preroll() either from this signal callback
+or from any other thread.
+Note that this signal is only emited when the &quot;emit-signals&quot; property is
+set to %TRUE, which it is not by default for performance reasons.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="pull-buffer"
+                   doc="This function blocks until a buffer or EOS becomes available or the appsink
+element is set to the READY/NULL state.
+This function will only return buffers when the appsink is in the PLAYING
+state. All rendered buffers will be put in a queue so that the application
+can pull buffers at its own rate.
+Note that when the application does not pull buffers fast enough, the
+queued buffers could consume a lot of memory, especially when dealing with
+raw video frames. It&apos;s possible to control the behaviour of the queue with
+the &quot;drop&quot; and &quot;max-buffers&quot; properties.
+If an EOS event was received before any buffers, this function returns
+%NULL. Use gst_app_sink_is_eos () to check for the EOS condition.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Buffer" c:type="GstBuffer"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="pull-buffer-list"
+                   doc="This function blocks until a buffer list or EOS becomes available or the appsink
+element is set to the READY/NULL state.
+This function will only return bufferlists when the appsink is in the PLAYING
+state. All rendered bufferlists will be put in a queue so that the application
+can pull bufferlists at its own rate.
+Note that when the application does not pull bufferlists fast enough, the
+queued bufferlists could consume a lot of memory, especially when dealing with
+raw video frames. It&apos;s possible to control the behaviour of the queue with
+the &quot;drop&quot; and &quot;max-buffers&quot; properties.
+If an EOS event was received before any buffers, this function returns
+%NULL. Use gst_app_sink_is_eos () to check for the EOS condition.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.BufferList" c:type="GstBufferList"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="pull-preroll"
+                   doc="Get the last preroll buffer in @appsink. This was the buffer that caused the
+appsink to preroll in the PAUSED state. This buffer can be pulled many times
+and remains available to the application even after EOS.
+This function is typically used when dealing with a pipeline in the PAUSED
+state. Calling this function after doing a seek will give the buffer right
+after the seek position.
+Note that the preroll buffer will also be returned as the first buffer
+when calling gst_app_sink_pull_buffer() or the &quot;pull-buffer&quot; action signal.
+If an EOS event was received before any buffers, this function returns
+%NULL. Use gst_app_sink_is_eos () to check for the EOS condition.
+This function blocks until a preroll buffer or EOS is received or the appsink
+element is set to the READY/NULL state.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Buffer" c:type="GstBuffer"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="AppSinkCallbacks"
+            c:type="GstAppSinkCallbacks"
+            doc="is called from the steaming thread.
+This callback is called from the steaming thread.
+The new preroll buffer can be retrieved with
+gst_app_sink_pull_preroll() either from this callback
+or from any other thread.
+This callback is called from the steaming thread.
+The new buffer can be retrieved with
+gst_app_sink_pull_buffer() either from this callback
+or from any other thread.
+This callback is called from the steaming thread.
+The new bufferlist can be retrieved with
+gst_app_sink_pull_buffer_list() either from this callback
+or from any other thread.
+A set of callbacks that can be installed on the appsink with
+gst_app_sink_set_callbacks()."
+            version="0.10.23">
+      <field name="eos">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="new_preroll">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="new_buffer">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="new_buffer_list">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="AppSinkClass"
+            c:type="GstAppSinkClass"
+            glib:is-gtype-struct-for="AppSink">
+      <field name="basesink_class">
+        <type name="GstBase.BaseSinkClass" c:type="GstBaseSinkClass"/>
+      </field>
+      <field name="eos">
+        <callback name="eos" c:type="eos">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AppSink" c:type="GstAppSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="new_preroll">
+        <callback name="new_preroll" c:type="new_preroll">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AppSink" c:type="GstAppSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="new_buffer">
+        <callback name="new_buffer" c:type="new_buffer">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AppSink" c:type="GstAppSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pull_preroll">
+        <callback name="pull_preroll" c:type="pull_preroll">
+          <return-value transfer-ownership="full">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AppSink" c:type="GstAppSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pull_buffer">
+        <callback name="pull_buffer" c:type="pull_buffer">
+          <return-value transfer-ownership="full">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AppSink" c:type="GstAppSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="new_buffer_list">
+        <callback name="new_buffer_list" c:type="new_buffer_list">
+          <return-value transfer-ownership="full">
+            <type name="Gst.BufferList" c:type="GstBufferList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AppSink" c:type="GstAppSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pull_buffer_list">
+        <callback name="pull_buffer_list" c:type="pull_buffer_list">
+          <return-value transfer-ownership="full">
+            <type name="Gst.BufferList" c:type="GstBufferList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AppSink" c:type="GstAppSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="AppSinkPrivate" c:type="GstAppSinkPrivate">
+    </record>
+    <class name="AppSrc"
+           c:type="GstAppSrc"
+           parent="GstBase.BaseSrc"
+           glib:type-name="GstAppSrc"
+           glib:get-type="gst_app_src_get_type"
+           glib:type-struct="AppSrcClass">
+      <implements name="Gst.URIHandler"/>
+      <method name="set_caps"
+              c:identifier="gst_app_src_set_caps"
+              doc="Set the capabilities on the appsrc element.  This function takes
+a copy of the caps structure. After calling this method, the source will
+only produce caps that match @caps. @caps must be fixed and the caps on the
+buffers must match the caps or left NULL."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_caps"
+              c:identifier="gst_app_src_get_caps"
+              doc="Get the configured caps on @appsrc."
+              version="0.10.22">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="set_size"
+              c:identifier="gst_app_src_set_size"
+              doc="Set the size of the stream in bytes. A value of -1 means that the size is
+not known."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size"
+              c:identifier="gst_app_src_get_size"
+              doc="Get the size of the stream in bytes. A value of -1 means that the size is
+not known."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </return-value>
+      </method>
+      <method name="set_stream_type"
+              c:identifier="gst_app_src_set_stream_type"
+              doc="Set the stream type on @appsrc. For seekable streams, the &quot;seek&quot; signal must
+be connected to.
+A stream_type stream"
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="AppStreamType" c:type="GstAppStreamType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_stream_type"
+              c:identifier="gst_app_src_get_stream_type"
+              doc="Get the stream type. Control the stream type of @appsrc
+with gst_app_src_set_stream_type()."
+              version="0.10.22">
+        <return-value transfer-ownership="full">
+          <type name="AppStreamType" c:type="GstAppStreamType"/>
+        </return-value>
+      </method>
+      <method name="set_max_bytes"
+              c:identifier="gst_app_src_set_max_bytes"
+              doc="Set the maximum amount of bytes that can be queued in @appsrc.
+After the maximum amount of bytes are queued, @appsrc will emit the
+&quot;enough-data&quot; signal."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="max" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_max_bytes"
+              c:identifier="gst_app_src_get_max_bytes"
+              doc="Get the maximum amount of bytes that can be queued in @appsrc."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </return-value>
+      </method>
+      <method name="set_latency"
+              c:identifier="gst_app_src_set_latency"
+              doc="Configure the @min and @max latency in @src. If @min is set to -1, the
+default latency calculations for pseudo-live sources will be used."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="max" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_latency"
+              c:identifier="gst_app_src_get_latency"
+              doc="Retrieve the min and max latencies in @min and @max respectively."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="max" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_emit_signals"
+              c:identifier="gst_app_src_set_emit_signals"
+              doc="Make appsrc emit the &quot;new-preroll&quot; and &quot;new-buffer&quot; signals. This option is
+by default disabled because signal emission is expensive and unneeded when
+the application prefers to operate in pull mode."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="emit" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_emit_signals"
+              c:identifier="gst_app_src_get_emit_signals"
+              doc="Check if appsrc will emit the &quot;new-preroll&quot; and &quot;new-buffer&quot; signals.
+signals."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="push_buffer"
+              c:identifier="gst_app_src_push_buffer"
+              doc="Adds a buffer to the queue of buffers that the appsrc element will
+push to its source pad.  This function takes ownership of the buffer.
+When the block property is TRUE, this function can block until free
+space becomes available in the queue.
+#GST_FLOW_WRONG_STATE when @appsrc is not PAUSED or PLAYING.
+#GST_FLOW_UNEXPECTED when EOS occured."
+              version="0.10.22">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="end_of_stream"
+              c:identifier="gst_app_src_end_of_stream"
+              doc="Indicates to the appsrc element that the last buffer queued in the
+element is the last buffer of the stream.
+#GST_FLOW_WRONG_STATE when @appsrc is not PAUSED or PLAYING."
+              version="0.10.22">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+      </method>
+      <method name="set_callbacks"
+              c:identifier="gst_app_src_set_callbacks"
+              doc="Set callbacks which will be executed when data is needed, enough data has
+been collected or when a seek should be performed.
+This is an alternative to using the signals, it has lower overhead and is thus
+less expensive, but also less flexible.
+If callbacks are installed, no signals will be emited for performance
+reasons."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callbacks" transfer-ownership="none">
+            <type name="AppSrcCallbacks" c:type="GstAppSrcCallbacks*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="block" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="caps" writable="1">
+        <type name="Gst.Caps" c:type="GstCaps"/>
+      </property>
+      <property name="emit-signals" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="format" writable="1">
+        <type name="Gst.Format" c:type="GstFormat"/>
+      </property>
+      <property name="is-live" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="max-bytes" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </property>
+      <property name="max-latency" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="min-latency" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="min-percent" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="size" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="stream-type" writable="1">
+        <type name="AppStreamType" c:type="GstAppStreamType"/>
+      </property>
+      <field name="basesrc">
+        <type name="GstBase.BaseSrc" c:type="GstBaseSrc"/>
+      </field>
+      <field name="priv">
+        <type name="AppSrcPrivate" c:type="GstAppSrcPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <glib:signal name="end-of-stream"
+                   doc="Notify @appsrc that no more buffer are available.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="enough-data"
+                   doc="Signal that the source has enough data. It is recommended that the
+application stops calling push-buffer until the need-data signal is
+emited again to avoid excessive buffer queueing.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="need-data"
+                   doc="Signal that the source needs more data. In the callback or from another
+thread you should call push-buffer or end-of-stream.
+pushed into @appsrc.
+You can call push-buffer multiple times until the enough-data signal is
+fired.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="length" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="push-buffer"
+                   doc="Adds a buffer to the queue of buffers that the appsrc element will
+push to its source pad. This function does not take ownership of the
+buffer so the buffer needs to be unreffed after calling this function.
+When the block property is TRUE, this function can block until free space
+becomes available in the queue.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="seek-data"
+                   doc="Seek to the given offset. The next push-buffer should produce buffers from
+the new @offset.
+This callback is only called for seekable stream types.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="AppSrcCallbacks"
+            c:type="GstAppSrcCallbacks"
+            doc="pushed to appsrc from this thread or another thread. @length is just a hint
+and when it is set to -1, any number of bytes can be pushed into @appsrc.
+application stops calling push-buffer until the need_data callback is
+emited again to avoid excessive buffer queueing.
+The next push-buffer should produce buffers from the new @offset.
+This callback is only called for seekable stream types.
+A set of callbacks that can be installed on the appsrc with
+gst_app_src_set_callbacks()."
+            version="0.10.23">
+      <field name="need_data">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="enough_data">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="seek_data">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="AppSrcClass"
+            c:type="GstAppSrcClass"
+            glib:is-gtype-struct-for="AppSrc">
+      <field name="basesrc_class">
+        <type name="GstBase.BaseSrcClass" c:type="GstBaseSrcClass"/>
+      </field>
+      <field name="need_data">
+        <callback name="need_data" c:type="need_data">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="AppSrc" c:type="GstAppSrc*"/>
+            </parameter>
+            <parameter name="length" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="enough_data">
+        <callback name="enough_data" c:type="enough_data">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="AppSrc" c:type="GstAppSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="seek_data">
+        <callback name="seek_data" c:type="seek_data">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="AppSrc" c:type="GstAppSrc*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <type name="uint64" c:type="guint64"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="push_buffer">
+        <callback name="push_buffer" c:type="push_buffer">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="AppSrc" c:type="GstAppSrc*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="end_of_stream">
+        <callback name="end_of_stream" c:type="end_of_stream">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="AppSrc" c:type="GstAppSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="AppSrcPrivate" c:type="GstAppSrcPrivate">
+    </record>
+    <enumeration name="AppStreamType"
+                 doc="live stream.
+be very fast, such as data from a webserver.
+such as in a local file.
+The stream type."
+                 c:type="GstAppStreamType">
+      <member name="stream"
+              value="0"
+              c:identifier="GST_APP_STREAM_TYPE_STREAM"/>
+      <member name="seekable"
+              value="1"
+              c:identifier="GST_APP_STREAM_TYPE_SEEKABLE"/>
+      <member name="random_access"
+              value="2"
+              c:identifier="GST_APP_STREAM_TYPE_RANDOM_ACCESS"/>
+    </enumeration>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/app/app.factor b/extra/gstreamer/app/app.factor
new file mode 100644 (file)
index 0000000..ae80d54
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.app.ffi ;
+IN: gstreamer.app
+
diff --git a/extra/gstreamer/app/ffi/ffi.factor b/extra/gstreamer/app/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..b92d568
--- /dev/null
@@ -0,0 +1,17 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.libraries combinators kernel
+system
+gobject-introspection glib.ffi gstreamer.ffi ;
+IN: gstreamer.app.ffi
+
+<<
+"gstreamer.app" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstapp-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gstreamer/app/GstApp-0.10.gir
+
diff --git a/extra/gstreamer/audio/GstAudio-0.10.gir b/extra/gstreamer/audio/GstAudio-0.10.gir
new file mode 100644 (file)
index 0000000..73d9983
--- /dev/null
@@ -0,0 +1,2360 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.0"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="GstBase" version="0.10"/>
+  <include name="GstInterfaces" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <package name="gstreamer-base-0.10"/>
+  <package name="gstreamer-interfaces-0.10"/>
+  <c:include name="gst/audio/audio-enumtypes.h"/>
+  <c:include name="gst/audio/audio.h"/>
+  <c:include name="gst/audio/gstaudioclock.h"/>
+  <c:include name="gst/audio/gstaudiofilter.h"/>
+  <c:include name="gst/audio/gstaudiosink.h"/>
+  <c:include name="gst/audio/gstaudiosrc.h"/>
+  <c:include name="gst/audio/gstbaseaudiosink.h"/>
+  <c:include name="gst/audio/gstbaseaudiosrc.h"/>
+  <c:include name="gst/audio/gstringbuffer.h"/>
+  <c:include name="gst/audio/mixerutils.h"/>
+  <c:include name="gst/audio/multichannel.h"/>
+  <namespace name="GstAudio"
+             version="0.10"
+             shared-library="libgstaudio-0.10.so.0"
+             c:prefix="Gst">
+    <enumeration name="AudioChannelPosition"
+                 doc="from a sound card that records 1024 channels; mutually exclusive with
+any other channel position"
+                 glib:type-name="GstAudioChannelPosition"
+                 glib:get-type="gst_audio_channel_position_get_type"
+                 c:type="GstAudioChannelPosition">
+      <member name="invalid"
+              value="-1"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_INVALID"
+              glib:nick="invalid"/>
+      <member name="front_mono"
+              value="0"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_FRONT_MONO"
+              glib:nick="front-mono"/>
+      <member name="front_left"
+              value="1"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT"
+              glib:nick="front-left"/>
+      <member name="front_right"
+              value="2"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT"
+              glib:nick="front-right"/>
+      <member name="rear_center"
+              value="3"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_REAR_CENTER"
+              glib:nick="rear-center"/>
+      <member name="rear_left"
+              value="4"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_REAR_LEFT"
+              glib:nick="rear-left"/>
+      <member name="rear_right"
+              value="5"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT"
+              glib:nick="rear-right"/>
+      <member name="lfe"
+              value="6"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_LFE"
+              glib:nick="lfe"/>
+      <member name="front_center"
+              value="7"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER"
+              glib:nick="front-center"/>
+      <member name="front_left_of_center"
+              value="8"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER"
+              glib:nick="front-left-of-center"/>
+      <member name="front_right_of_center"
+              value="9"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER"
+              glib:nick="front-right-of-center"/>
+      <member name="side_left"
+              value="10"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT"
+              glib:nick="side-left"/>
+      <member name="side_right"
+              value="11"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT"
+              glib:nick="side-right"/>
+      <member name="none"
+              value="12"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_NONE"
+              glib:nick="none"/>
+      <member name="num"
+              value="13"
+              c:identifier="GST_AUDIO_CHANNEL_POSITION_NUM"
+              glib:nick="num"/>
+    </enumeration>
+    <class name="AudioClock"
+           c:type="GstAudioClock"
+           doc="Opaque #GstAudioClock."
+           parent="Gst.SystemClock"
+           glib:type-name="GstAudioClock"
+           glib:get-type="gst_audio_clock_get_type"
+           glib:type-struct="AudioClockClass">
+      <constructor name="new"
+                   c:identifier="gst_audio_clock_new"
+                   doc="Create a new #GstAudioClock instance. Whenever the clock time should be
+calculated it will call @func with @user_data. When @func returns
+#GST_CLOCK_TIME_NONE, the clock will return the last reported time.">
+        <return-value transfer-ownership="full">
+          <type name="AudioClock" c:type="GstClock*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="AudioClockGetTimeFunc"
+                  c:type="GstAudioClockGetTimeFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="reset"
+              c:identifier="gst_audio_clock_reset"
+              doc="Inform @clock that future calls to #GstAudioClockGetTimeFunc will return values
+starting from @time. The clock will update an internal offset to make sure that
+future calls to internal_time will return an increasing result as required by
+the #GstClock object.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_time"
+              c:identifier="gst_audio_clock_get_time"
+              doc="Report the time as returned by the #GstAudioClockGetTimeFunc without applying
+any offsets."
+              version="0.10.23">
+        <return-value transfer-ownership="full">
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="adjust"
+              c:identifier="gst_audio_clock_adjust"
+              doc="Adjust @time with the internal offset of the audio clock."
+              version="0.10.23">
+        <return-value transfer-ownership="full">
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="clock">
+        <type name="Gst.SystemClock" c:type="GstSystemClock"/>
+      </field>
+      <field name="func">
+        <type name="AudioClockGetTimeFunc" c:type="GstAudioClockGetTimeFunc"/>
+      </field>
+      <field name="user_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="last_time">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="time_offset" writable="1">
+            <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+    </class>
+    <record name="AudioClockClass"
+            c:type="GstAudioClockClass"
+            glib:is-gtype-struct-for="AudioClock">
+      <field name="parent_class">
+        <type name="Gst.SystemClockClass" c:type="GstSystemClockClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="AudioClockGetTimeFunc"
+              c:type="GstAudioClockGetTimeFunc"
+              doc="This function will be called whenever the current clock time needs to be
+calculated. If this function returns #GST_CLOCK_TIME_NONE, the last reported
+time will be returned by the clock.
+be used.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </return-value>
+      <parameters>
+        <parameter name="clock" transfer-ownership="none">
+          <type name="Gst.Clock" c:type="GstClock*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="AudioFieldFlag"
+              doc="Do not use anymore."
+              deprecated="use gst_structure_set() directly"
+              c:type="GstAudioFieldFlag">
+      <member name="rate" value="1" c:identifier="GST_AUDIO_FIELD_RATE"/>
+      <member name="channels"
+              value="2"
+              c:identifier="GST_AUDIO_FIELD_CHANNELS"/>
+      <member name="endianness"
+              value="4"
+              c:identifier="GST_AUDIO_FIELD_ENDIANNESS"/>
+      <member name="width" value="8" c:identifier="GST_AUDIO_FIELD_WIDTH"/>
+      <member name="depth" value="16" c:identifier="GST_AUDIO_FIELD_DEPTH"/>
+      <member name="signed" value="32" c:identifier="GST_AUDIO_FIELD_SIGNED"/>
+    </bitfield>
+    <class name="AudioFilter"
+           c:type="GstAudioFilter"
+           doc="Base class for audio filters with the same format for input and output."
+           version="0.10.12"
+           parent="GstBase.BaseTransform"
+           abstract="1"
+           glib:type-name="GstAudioFilter"
+           glib:get-type="gst_audio_filter_get_type"
+           glib:type-struct="AudioFilterClass">
+      <virtual-method name="setup">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="RingBufferSpec" c:type="GstRingBufferSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <field name="basetransform">
+        <type name="GstBase.BaseTransform" c:type="GstBaseTransform"/>
+      </field>
+      <field name="format">
+        <type name="RingBufferSpec" c:type="GstRingBufferSpec"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="AudioFilterClass"
+            c:type="GstAudioFilterClass"
+            glib:is-gtype-struct-for="AudioFilter"
+            doc="In addition to the @setup virtual function, you should also override the
+GstBaseTransform::transform and/or GstBaseTransform::transform_ip virtual
+function."
+            version="0.10.12">
+      <field name="basetransformclass">
+        <type name="GstBase.BaseTransformClass"
+              c:type="GstBaseTransformClass"/>
+      </field>
+      <field name="setup">
+        <callback name="setup" c:type="setup">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="filter" transfer-ownership="none">
+              <type name="AudioFilter" c:type="GstAudioFilter*"/>
+            </parameter>
+            <parameter name="format" transfer-ownership="none">
+              <type name="RingBufferSpec" c:type="GstRingBufferSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <method name="add_pad_templates"
+              c:identifier="gst_audio_filter_class_add_pad_templates"
+              doc="Convenience function to add pad templates to this element class, with
+This function is usually used from within a GObject base_init function."
+              version="0.10.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="allowed_caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="AudioMixerFilterFunc"
+              c:type="GstAudioMixerFilterFunc"
+              doc="Function that will be called by gst_audio_default_registry_mixer_filter()
+so the caller can decide which mixer elements should be kept and returned.
+When the mixer element is passed to the callback function, it is opened
+and in READY state. If you decide to keep the element, you need to set it
+back to NULL state yourself (unless you want to keep it opened of course).">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="mixer" transfer-ownership="none">
+          <type name="GstInterfaces.Mixer" c:type="GstMixer*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="AudioSink"
+           c:type="GstAudioSink"
+           doc="Opaque #GstAudioSink."
+           parent="BaseAudioSink"
+           glib:type-name="GstAudioSink"
+           glib:get-type="gst_audio_sink_get_type"
+           glib:type-struct="AudioSinkClass">
+      <virtual-method name="open">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="prepare">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="spec" transfer-ownership="none">
+            <type name="RingBufferSpec" c:type="GstRingBufferSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unprepare">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="close">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="write">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="delay">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="reset">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <field name="element">
+        <type name="BaseAudioSink" c:type="GstBaseAudioSink"/>
+      </field>
+      <field name="thread">
+        <type name="GLib.Thread" c:type="GThread*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="AudioSinkClass"
+            c:type="GstAudioSinkClass"
+            glib:is-gtype-struct-for="AudioSink"
+            doc="This function is also used to check if the device is available.
+drive the synchronisation.
+samples from the device.
+#GstAudioSink class. Override the vmethods to implement functionality.">
+      <field name="parent_class">
+        <type name="BaseAudioSinkClass" c:type="GstBaseAudioSinkClass"/>
+      </field>
+      <field name="open">
+        <callback name="open" c:type="open">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AudioSink" c:type="GstAudioSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="prepare">
+        <callback name="prepare" c:type="prepare">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AudioSink" c:type="GstAudioSink*"/>
+            </parameter>
+            <parameter name="spec" transfer-ownership="none">
+              <type name="RingBufferSpec" c:type="GstRingBufferSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unprepare">
+        <callback name="unprepare" c:type="unprepare">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AudioSink" c:type="GstAudioSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close">
+        <callback name="close" c:type="close">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AudioSink" c:type="GstAudioSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="write">
+        <callback name="write" c:type="write">
+          <return-value transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AudioSink" c:type="GstAudioSink*"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+            <parameter name="length" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delay">
+        <callback name="delay" c:type="delay">
+          <return-value transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AudioSink" c:type="GstAudioSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="reset">
+        <callback name="reset" c:type="reset">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="AudioSink" c:type="GstAudioSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <class name="AudioSrc"
+           c:type="GstAudioSrc"
+           doc="Base class for simple audio sources."
+           parent="BaseAudioSrc"
+           glib:type-name="GstAudioSrc"
+           glib:get-type="gst_audio_src_get_type"
+           glib:type-struct="AudioSrcClass">
+      <virtual-method name="open">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="prepare">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="spec" transfer-ownership="none">
+            <type name="RingBufferSpec" c:type="GstRingBufferSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unprepare">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="close">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="read">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="delay">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="reset">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <field name="element">
+        <type name="BaseAudioSrc" c:type="GstBaseAudioSrc"/>
+      </field>
+      <field name="thread">
+        <type name="GLib.Thread" c:type="GThread*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="AudioSrcClass"
+            c:type="GstAudioSrcClass"
+            glib:is-gtype-struct-for="AudioSrc"
+            doc="#GstAudioSrc class. Override the vmethod to implement
+functionality.">
+      <field name="parent_class">
+        <type name="BaseAudioSrcClass" c:type="GstBaseAudioSrcClass"/>
+      </field>
+      <field name="open">
+        <callback name="open" c:type="open">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="AudioSrc" c:type="GstAudioSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="prepare">
+        <callback name="prepare" c:type="prepare">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="AudioSrc" c:type="GstAudioSrc*"/>
+            </parameter>
+            <parameter name="spec" transfer-ownership="none">
+              <type name="RingBufferSpec" c:type="GstRingBufferSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unprepare">
+        <callback name="unprepare" c:type="unprepare">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="AudioSrc" c:type="GstAudioSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close">
+        <callback name="close" c:type="close">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="AudioSrc" c:type="GstAudioSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="read">
+        <callback name="read" c:type="read">
+          <return-value transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="AudioSrc" c:type="GstAudioSrc*"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+            <parameter name="length" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delay">
+        <callback name="delay" c:type="delay">
+          <return-value transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="AudioSrc" c:type="GstAudioSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="reset">
+        <callback name="reset" c:type="reset">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="AudioSrc" c:type="GstAudioSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <class name="BaseAudioSink"
+           c:type="GstBaseAudioSink"
+           doc="Opaque #GstBaseAudioSink."
+           parent="GstBase.BaseSink"
+           glib:type-name="GstBaseAudioSink"
+           glib:get-type="gst_base_audio_sink_get_type"
+           glib:type-struct="BaseAudioSinkClass">
+      <virtual-method name="create_ringbuffer" invoker="create_ringbuffer">
+        <return-value transfer-ownership="full">
+          <type name="RingBuffer" c:type="GstRingBuffer*"/>
+        </return-value>
+      </virtual-method>
+      <method name="create_ringbuffer"
+              c:identifier="gst_base_audio_sink_create_ringbuffer"
+              doc="Create and return the #GstRingBuffer for @sink. This function will call the
+::create_ringbuffer vmethod and will set @sink as the parent of the returned
+buffer (see gst_object_set_parent()).">
+        <return-value transfer-ownership="full">
+          <type name="RingBuffer" c:type="GstRingBuffer*"/>
+        </return-value>
+      </method>
+      <method name="set_provide_clock"
+              c:identifier="gst_base_audio_sink_set_provide_clock"
+              doc="Controls whether @sink will provide a clock or not. If @provide is %TRUE,
+gst_element_provide_clock() will return a clock that reflects the datarate
+of @sink. If @provide is %FALSE, gst_element_provide_clock() will return NULL."
+              version="0.10.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="provide" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_provide_clock"
+              c:identifier="gst_base_audio_sink_get_provide_clock"
+              doc="Queries whether @sink will provide a clock or not. See also
+gst_base_audio_sink_set_provide_clock."
+              version="0.10.16">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_slave_method"
+              c:identifier="gst_base_audio_sink_set_slave_method"
+              doc="Controls how clock slaving will be performed in @sink."
+              version="0.10.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="method" transfer-ownership="none">
+            <type name="BaseAudioSinkSlaveMethod"
+                  c:type="GstBaseAudioSinkSlaveMethod"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_slave_method"
+              c:identifier="gst_base_audio_sink_get_slave_method"
+              doc="Get the current slave method used by @sink."
+              version="0.10.16">
+        <return-value transfer-ownership="full">
+          <type name="BaseAudioSinkSlaveMethod"
+                c:type="GstBaseAudioSinkSlaveMethod"/>
+        </return-value>
+      </method>
+      <property name="buffer-time" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="can-activate-pull" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="drift-tolerance" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="latency-time" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="provide-clock" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="slave-method" writable="1">
+        <type name="BaseAudioSinkSlaveMethod"
+              c:type="GstBaseAudioSinkSlaveMethod"/>
+      </property>
+      <field name="element">
+        <type name="GstBase.BaseSink" c:type="GstBaseSink"/>
+      </field>
+      <field name="ringbuffer">
+        <type name="RingBuffer" c:type="GstRingBuffer*"/>
+      </field>
+      <field name="buffer_time">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="latency_time">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="next_sample">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="provide_clock">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="provided_clock">
+        <type name="Gst.Clock" c:type="GstClock*"/>
+      </field>
+      <field name="priv">
+        <type name="BaseAudioSinkPrivate" c:type="GstBaseAudioSinkPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="BaseAudioSinkClass"
+            c:type="GstBaseAudioSinkClass"
+            glib:is-gtype-struct-for="BaseAudioSink"
+            doc="#GstBaseAudioSink class. Override the vmethod to implement
+functionality.">
+      <field name="parent_class">
+        <type name="GstBase.BaseSinkClass" c:type="GstBaseSinkClass"/>
+      </field>
+      <field name="create_ringbuffer">
+        <callback name="create_ringbuffer" c:type="create_ringbuffer">
+          <return-value transfer-ownership="full">
+            <type name="RingBuffer" c:type="GstRingBuffer*"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseAudioSink" c:type="GstBaseAudioSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="BaseAudioSinkPrivate" c:type="GstBaseAudioSinkPrivate">
+    </record>
+    <enumeration name="BaseAudioSinkSlaveMethod"
+                 doc="drifts too much.
+Different possible clock slaving algorithms used when the internal audio
+clock is not selected as the pipeline master clock."
+                 glib:type-name="GstBaseAudioSinkSlaveMethod"
+                 glib:get-type="gst_base_audio_sink_slave_method_get_type"
+                 c:type="GstBaseAudioSinkSlaveMethod">
+      <member name="resample"
+              value="0"
+              c:identifier="GST_BASE_AUDIO_SINK_SLAVE_RESAMPLE"
+              glib:nick="resample"/>
+      <member name="skew"
+              value="1"
+              c:identifier="GST_BASE_AUDIO_SINK_SLAVE_SKEW"
+              glib:nick="skew"/>
+      <member name="none"
+              value="2"
+              c:identifier="GST_BASE_AUDIO_SINK_SLAVE_NONE"
+              glib:nick="none"/>
+    </enumeration>
+    <class name="BaseAudioSrc"
+           c:type="GstBaseAudioSrc"
+           doc="Opaque #GstBaseAudioSrc."
+           parent="GstBase.PushSrc"
+           glib:type-name="GstBaseAudioSrc"
+           glib:get-type="gst_base_audio_src_get_type"
+           glib:type-struct="BaseAudioSrcClass">
+      <virtual-method name="create_ringbuffer" invoker="create_ringbuffer">
+        <return-value transfer-ownership="full">
+          <type name="RingBuffer" c:type="GstRingBuffer*"/>
+        </return-value>
+      </virtual-method>
+      <method name="create_ringbuffer"
+              c:identifier="gst_base_audio_src_create_ringbuffer"
+              doc="Create and return the #GstRingBuffer for @src. This function will call the
+::create_ringbuffer vmethod and will set @src as the parent of the returned
+buffer (see gst_object_set_parent()).">
+        <return-value transfer-ownership="full">
+          <type name="RingBuffer" c:type="GstRingBuffer*"/>
+        </return-value>
+      </method>
+      <method name="set_provide_clock"
+              c:identifier="gst_base_audio_src_set_provide_clock"
+              doc="Controls whether @src will provide a clock or not. If @provide is %TRUE,
+gst_element_provide_clock() will return a clock that reflects the datarate
+of @src. If @provide is %FALSE, gst_element_provide_clock() will return NULL."
+              version="0.10.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="provide" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_provide_clock"
+              c:identifier="gst_base_audio_src_get_provide_clock"
+              doc="Queries whether @src will provide a clock or not. See also
+gst_base_audio_src_set_provide_clock."
+              version="0.10.16">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_slave_method"
+              c:identifier="gst_base_audio_src_set_slave_method"
+              doc="Controls how clock slaving will be performed in @src."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="method" transfer-ownership="none">
+            <type name="BaseAudioSrcSlaveMethod"
+                  c:type="GstBaseAudioSrcSlaveMethod"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_slave_method"
+              c:identifier="gst_base_audio_src_get_slave_method"
+              doc="Get the current slave method used by @src."
+              version="0.10.20">
+        <return-value transfer-ownership="full">
+          <type name="BaseAudioSrcSlaveMethod"
+                c:type="GstBaseAudioSrcSlaveMethod"/>
+        </return-value>
+      </method>
+      <property name="actual-buffer-time"
+                version="0.10.20"
+                doc="Actual configured size of audio buffer in microseconds.">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="actual-latency-time"
+                version="0.10.20"
+                doc="Actual configured audio latency in microseconds.">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="buffer-time" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="latency-time" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="provide-clock" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="slave-method" writable="1">
+        <type name="BaseAudioSrcSlaveMethod"
+              c:type="GstBaseAudioSrcSlaveMethod"/>
+      </property>
+      <field name="element">
+        <type name="GstBase.PushSrc" c:type="GstPushSrc"/>
+      </field>
+      <field name="ringbuffer">
+        <type name="RingBuffer" c:type="GstRingBuffer*"/>
+      </field>
+      <field name="buffer_time">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="latency_time">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="next_sample">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="clock">
+        <type name="Gst.Clock" c:type="GstClock*"/>
+      </field>
+      <field name="priv">
+        <type name="BaseAudioSrcPrivate" c:type="GstBaseAudioSrcPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="BaseAudioSrcClass"
+            c:type="GstBaseAudioSrcClass"
+            glib:is-gtype-struct-for="BaseAudioSrc"
+            doc="#GstBaseAudioSrc class. Override the vmethod to implement
+functionality.">
+      <field name="parent_class">
+        <type name="GstBase.PushSrcClass" c:type="GstPushSrcClass"/>
+      </field>
+      <field name="create_ringbuffer">
+        <callback name="create_ringbuffer" c:type="create_ringbuffer">
+          <return-value transfer-ownership="full">
+            <type name="RingBuffer" c:type="GstRingBuffer*"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseAudioSrc" c:type="GstBaseAudioSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="BaseAudioSrcPrivate" c:type="GstBaseAudioSrcPrivate">
+    </record>
+    <enumeration name="BaseAudioSrcSlaveMethod"
+                 doc="clock time.
+drifts too much.
+Different possible clock slaving algorithms when the internal audio clock was
+not selected as the pipeline clock."
+                 glib:type-name="GstBaseAudioSrcSlaveMethod"
+                 glib:get-type="gst_base_audio_src_slave_method_get_type"
+                 c:type="GstBaseAudioSrcSlaveMethod">
+      <member name="resample"
+              value="0"
+              c:identifier="GST_BASE_AUDIO_SRC_SLAVE_RESAMPLE"
+              glib:nick="resample"/>
+      <member name="re_timestamp"
+              value="1"
+              c:identifier="GST_BASE_AUDIO_SRC_SLAVE_RETIMESTAMP"
+              glib:nick="re-timestamp"/>
+      <member name="skew" value="2" c:identifier="GST_BASE_AUDIO_SRC_SLAVE_SKEW" glib:nick="skew"/>
+      <member name="none"
+              value="3"
+              c:identifier="GST_BASE_AUDIO_SRC_SLAVE_NONE"
+              glib:nick="none"/>
+    </enumeration>
+    <enumeration name="BufferFormat"
+                 glib:type-name="GstBufferFormat"
+                 glib:get-type="gst_buffer_format_get_type"
+                 c:type="GstBufferFormat">
+      <member name="unknown"
+              value="0"
+              c:identifier="GST_UNKNOWN"
+              glib:nick="unknown"/>
+      <member name="s8" value="1" c:identifier="GST_S8" glib:nick="s8"/>
+      <member name="u8" value="2" c:identifier="GST_U8" glib:nick="u8"/>
+      <member name="s16_le"
+              value="3"
+              c:identifier="GST_S16_LE"
+              glib:nick="s16-le"/>
+      <member name="s16_be"
+              value="4"
+              c:identifier="GST_S16_BE"
+              glib:nick="s16-be"/>
+      <member name="u16_le"
+              value="5"
+              c:identifier="GST_U16_LE"
+              glib:nick="u16-le"/>
+      <member name="u16_be"
+              value="6"
+              c:identifier="GST_U16_BE"
+              glib:nick="u16-be"/>
+      <member name="s24_le"
+              value="7"
+              c:identifier="GST_S24_LE"
+              glib:nick="s24-le"/>
+      <member name="s24_be"
+              value="8"
+              c:identifier="GST_S24_BE"
+              glib:nick="s24-be"/>
+      <member name="u24_le"
+              value="9"
+              c:identifier="GST_U24_LE"
+              glib:nick="u24-le"/>
+      <member name="u24_be"
+              value="10"
+              c:identifier="GST_U24_BE"
+              glib:nick="u24-be"/>
+      <member name="s32_le"
+              value="11"
+              c:identifier="GST_S32_LE"
+              glib:nick="s32-le"/>
+      <member name="s32_be"
+              value="12"
+              c:identifier="GST_S32_BE"
+              glib:nick="s32-be"/>
+      <member name="u32_le"
+              value="13"
+              c:identifier="GST_U32_LE"
+              glib:nick="u32-le"/>
+      <member name="u32_be"
+              value="14"
+              c:identifier="GST_U32_BE"
+              glib:nick="u32-be"/>
+      <member name="s24_3le"
+              value="15"
+              c:identifier="GST_S24_3LE"
+              glib:nick="s24-3le"/>
+      <member name="s24_3be"
+              value="16"
+              c:identifier="GST_S24_3BE"
+              glib:nick="s24-3be"/>
+      <member name="u24_3le"
+              value="17"
+              c:identifier="GST_U24_3LE"
+              glib:nick="u24-3le"/>
+      <member name="u24_3be"
+              value="18"
+              c:identifier="GST_U24_3BE"
+              glib:nick="u24-3be"/>
+      <member name="s20_3le"
+              value="19"
+              c:identifier="GST_S20_3LE"
+              glib:nick="s20-3le"/>
+      <member name="s20_3be"
+              value="20"
+              c:identifier="GST_S20_3BE"
+              glib:nick="s20-3be"/>
+      <member name="u20_3le"
+              value="21"
+              c:identifier="GST_U20_3LE"
+              glib:nick="u20-3le"/>
+      <member name="u20_3be"
+              value="22"
+              c:identifier="GST_U20_3BE"
+              glib:nick="u20-3be"/>
+      <member name="s18_3le"
+              value="23"
+              c:identifier="GST_S18_3LE"
+              glib:nick="s18-3le"/>
+      <member name="s18_3be"
+              value="24"
+              c:identifier="GST_S18_3BE"
+              glib:nick="s18-3be"/>
+      <member name="u18_3le"
+              value="25"
+              c:identifier="GST_U18_3LE"
+              glib:nick="u18-3le"/>
+      <member name="u18_3be"
+              value="26"
+              c:identifier="GST_U18_3BE"
+              glib:nick="u18-3be"/>
+      <member name="float32_le"
+              value="27"
+              c:identifier="GST_FLOAT32_LE"
+              glib:nick="float32-le"/>
+      <member name="float32_be"
+              value="28"
+              c:identifier="GST_FLOAT32_BE"
+              glib:nick="float32-be"/>
+      <member name="float64_le"
+              value="29"
+              c:identifier="GST_FLOAT64_LE"
+              glib:nick="float64-le"/>
+      <member name="float64_be"
+              value="30"
+              c:identifier="GST_FLOAT64_BE"
+              glib:nick="float64-be"/>
+      <member name="mu_law"
+              value="31"
+              c:identifier="GST_MU_LAW"
+              glib:nick="mu-law"/>
+      <member name="a_law"
+              value="32"
+              c:identifier="GST_A_LAW"
+              glib:nick="a-law"/>
+      <member name="ima_adpcm"
+              value="33"
+              c:identifier="GST_IMA_ADPCM"
+              glib:nick="ima-adpcm"/>
+      <member name="mpeg" value="34" c:identifier="GST_MPEG" glib:nick="mpeg"/>
+      <member name="gsm" value="35" c:identifier="GST_GSM" glib:nick="gsm"/>
+      <member name="iec958"
+              value="36"
+              c:identifier="GST_IEC958"
+              glib:nick="iec958"/>
+      <member name="ac3" value="37" c:identifier="GST_AC3" glib:nick="ac3"/>
+      <member name="eac3" value="38" c:identifier="GST_EAC3" glib:nick="eac3"/>
+      <member name="dts" value="39" c:identifier="GST_DTS" glib:nick="dts"/>
+    </enumeration>
+    <enumeration name="BufferFormatType"
+                 doc="The format of the samples in the ringbuffer."
+                 glib:type-name="GstBufferFormatType"
+                 glib:get-type="gst_buffer_format_type_get_type"
+                 c:type="GstBufferFormatType">
+      <member name="linear"
+              value="0"
+              c:identifier="GST_BUFTYPE_LINEAR"
+              glib:nick="linear"/>
+      <member name="float"
+              value="1"
+              c:identifier="GST_BUFTYPE_FLOAT"
+              glib:nick="float"/>
+      <member name="mu_law"
+              value="2"
+              c:identifier="GST_BUFTYPE_MU_LAW"
+              glib:nick="mu-law"/>
+      <member name="a_law"
+              value="3"
+              c:identifier="GST_BUFTYPE_A_LAW"
+              glib:nick="a-law"/>
+      <member name="ima_adpcm"
+              value="4"
+              c:identifier="GST_BUFTYPE_IMA_ADPCM"
+              glib:nick="ima-adpcm"/>
+      <member name="mpeg"
+              value="5"
+              c:identifier="GST_BUFTYPE_MPEG"
+              glib:nick="mpeg"/>
+      <member name="gsm"
+              value="6"
+              c:identifier="GST_BUFTYPE_GSM"
+              glib:nick="gsm"/>
+      <member name="iec958"
+              value="7"
+              c:identifier="GST_BUFTYPE_IEC958"
+              glib:nick="iec958"/>
+      <member name="ac3"
+              value="8"
+              c:identifier="GST_BUFTYPE_AC3"
+              glib:nick="ac3"/>
+      <member name="eac3"
+              value="9"
+              c:identifier="GST_BUFTYPE_EAC3"
+              glib:nick="eac3"/>
+      <member name="dts"
+              value="10"
+              c:identifier="GST_BUFTYPE_DTS"
+              glib:nick="dts"/>
+    </enumeration>
+    <constant name="DEF_RATE" value="44100">
+      <type name="int"/>
+    </constant>
+    <constant name="FLOAT_PAD_TEMPLATE_CAPS"
+              value="audio/x-raw-float, rate = (int) [ 1, MAX ], channels = (int) [ 1, MAX ], endianness = (int) { LITTLE_ENDIAN , BIG_ENDIAN }, width = (int) { 32, 64 }">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FLOAT_STANDARD_PAD_TEMPLATE_CAPS"
+              value="audio/x-raw-float, width = (int) 32, rate = (int) [ 1, MAX ], channels = (int) 1, endianness = (int) BYTE_ORDER">
+      <type name="utf8"/>
+    </constant>
+    <constant name="INT_PAD_TEMPLATE_CAPS"
+              value="audio/x-raw-int, rate = (int) [ 1, MAX ], channels = (int) [ 1, MAX ], endianness = (int) { LITTLE_ENDIAN, BIG_ENDIAN }, width = (int) { 8, 16, 24, 32 }, depth = (int) [ 1, 32 ], signed = (boolean) { true, false }">
+      <type name="utf8"/>
+    </constant>
+    <constant name="INT_STANDARD_PAD_TEMPLATE_CAPS"
+              value="audio/x-raw-int, rate = (int) [ 1, MAX ], channels = (int) 2, endianness = (int) BYTE_ORDER, width = (int) 16, depth = (int) 16, signed = (boolean) true">
+      <type name="utf8"/>
+    </constant>
+    <class name="RingBuffer"
+           c:type="GstRingBuffer"
+           doc="The ringbuffer base class structure."
+           parent="Gst.Object"
+           abstract="1"
+           glib:type-name="GstRingBuffer"
+           glib:get-type="gst_ring_buffer_get_type"
+           glib:type-struct="RingBufferClass">
+      <function name="parse_caps"
+                c:identifier="gst_ring_buffer_parse_caps"
+                doc="Parse @caps into @spec.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="spec" transfer-ownership="none">
+            <type name="RingBufferSpec" c:type="GstRingBufferSpec*"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="debug_spec_caps"
+                c:identifier="gst_ring_buffer_debug_spec_caps"
+                doc="Print debug info about the parsed caps in @spec to the debug log.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spec" transfer-ownership="none">
+            <type name="RingBufferSpec" c:type="GstRingBufferSpec*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="debug_spec_buff"
+                c:identifier="gst_ring_buffer_debug_spec_buff"
+                doc="Print debug info about the buffer sized in @spec to the debug log.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spec" transfer-ownership="none">
+            <type name="RingBufferSpec" c:type="GstRingBufferSpec*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="open_device" invoker="open_device">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="acquire" invoker="acquire">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="spec" transfer-ownership="none">
+            <type name="RingBufferSpec" c:type="GstRingBufferSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="release" invoker="release">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="close_device" invoker="close_device">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="start" invoker="start">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="pause" invoker="pause">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="resume">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="stop" invoker="stop">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="delay" invoker="delay">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="activate" invoker="activate">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="commit">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="sample" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="in_samples" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="out_samples" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="accum" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="clear_all" invoker="clear_all">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="set_callback"
+              c:identifier="gst_ring_buffer_set_callback"
+              doc="Sets the given callback function on the buffer. This function
+will be called every time a segment has been written to a device.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cb"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="RingBufferCallback" c:type="GstRingBufferCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="convert"
+              c:identifier="gst_ring_buffer_convert"
+              doc="Convert @src_val in @src_fmt to the equivalent value in @dest_fmt. The result
+will be put in @dest_val."
+              version="0.10.22.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_fmt" transfer-ownership="none">
+            <type name="Gst.Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="src_val" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="dest_fmt" transfer-ownership="none">
+            <type name="Gst.Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="dest_val" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="open_device"
+              c:identifier="gst_ring_buffer_open_device"
+              doc="Open the audio device associated with the ring buffer. Does not perform any
+setup on the device. You must open the device before acquiring the ring
+buffer.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="close_device"
+              c:identifier="gst_ring_buffer_close_device"
+              doc="Close the audio device associated with the ring buffer. The ring buffer
+should already have been released via gst_ring_buffer_release().
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="device_is_open"
+              c:identifier="gst_ring_buffer_device_is_open"
+              doc="Checks the status of the device associated with the ring buffer.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="acquire"
+              c:identifier="gst_ring_buffer_acquire"
+              doc="Allocate the resources for the ringbuffer. This function fills
+in the data pointer of the ring buffer with a valid #GstBuffer
+to which samples can be written.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="spec" transfer-ownership="none">
+            <type name="RingBufferSpec" c:type="GstRingBufferSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="release"
+              c:identifier="gst_ring_buffer_release"
+              doc="Free the resources of the ringbuffer.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_acquired"
+              c:identifier="gst_ring_buffer_is_acquired"
+              doc="Check if the ringbuffer is acquired and ready to use.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="activate"
+              c:identifier="gst_ring_buffer_activate"
+              doc="Activate @buf to start or stop pulling data.
+MT safe.
+FALSE on error."
+              version="0.10.22.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_active"
+              c:identifier="gst_ring_buffer_is_active"
+              doc="Check if @buf is activated.
+MT safe."
+              version="0.10.22.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_flushing"
+              c:identifier="gst_ring_buffer_set_flushing"
+              doc="Set the ringbuffer to flushing mode or normal mode.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flushing" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start"
+              c:identifier="gst_ring_buffer_start"
+              doc="Start processing samples from the ringbuffer.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="pause"
+              c:identifier="gst_ring_buffer_pause"
+              doc="Pause processing samples from the ringbuffer.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="stop"
+              c:identifier="gst_ring_buffer_stop"
+              doc="Stop processing samples from the ringbuffer.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="delay"
+              c:identifier="gst_ring_buffer_delay"
+              doc="Get the number of samples queued in the audio device. This is
+usually less than the segment size but can be bigger when the
+implementation uses another internal buffer between the audio
+device.
+For playback ringbuffers this is the amount of samples transfered from the
+ringbuffer to the device but still not played.
+For capture ringbuffers this is the amount of samples in the device that are
+not yet transfered to the ringbuffer.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="samples_done"
+              c:identifier="gst_ring_buffer_samples_done"
+              doc="Get the number of samples that were processed by the ringbuffer
+since it was last started. This does not include the number of samples not
+yet processed (see gst_ring_buffer_delay()).
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </return-value>
+      </method>
+      <method name="set_sample"
+              c:identifier="gst_ring_buffer_set_sample"
+              doc="Make sure that the next sample written to the device is
+accounted for as being the @sample sample written to the
+device. This value will be used in reporting the current
+sample position of the ringbuffer.
+This function will also clear the buffer with silence.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sample" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear_all"
+              c:identifier="gst_ring_buffer_clear_all"
+              doc="Fill the ringbuffer with silence.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="commit"
+              c:identifier="gst_ring_buffer_commit"
+              doc="Same as gst_ring_buffer_commit_full() but with a in_samples and out_samples
+equal to @len, ignoring accum.
+error.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="sample" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="commit_full"
+              c:identifier="gst_ring_buffer_commit_full"
+              doc="Commit @in_samples samples pointed to by @data to the ringbuffer @buf.
+samples in @data. For negative rates, @out_samples must be negative and
+When @out_samples is positive, the first sample will be written at position @sample
+in the ringbuffer. When @out_samples is negative, the last sample will be written to
+although it is recommended for optimal performance.
+set to 0 when this function is first called. In case the commit operation is
+interrupted, one can resume the processing by passing the previously returned
+MT safe.
+number of samples written can be less than @out_samples when @buf was interrupted
+with a flush or stop."
+              version="0.10.11.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="sample" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="in_samples" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="out_samples" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="accum" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read"
+              c:identifier="gst_ring_buffer_read"
+              doc="Read @len samples from the ringbuffer into the memory pointed
+to by @data.
+The first sample should be read from position @sample in
+the ringbuffer.
+although it is recommended.
+error.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="sample" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepare_read"
+              c:identifier="gst_ring_buffer_prepare_read"
+              doc="Returns a pointer to memory where the data from segment @segment
+can be found. This function is mostly used by subclasses.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="segment" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="readptr" direction="out" transfer-ownership="full">
+            <type name="uint8" c:type="guint8**"/>
+          </parameter>
+          <parameter name="len" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear"
+              c:identifier="gst_ring_buffer_clear"
+              doc="Clear the given segment of the buffer with silence samples.
+This function is used by subclasses.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="segment" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="advance"
+              c:identifier="gst_ring_buffer_advance"
+              doc="Subclasses should call this function to notify the fact that
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="advance" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="may_start"
+              c:identifier="gst_ring_buffer_may_start"
+              doc="Tell the ringbuffer that it is allowed to start playback when
+the ringbuffer is filled with samples.
+MT safe."
+              version="0.10.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="allowed" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Gst.Object" c:type="GstObject"/>
+      </field>
+      <field name="cond">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="open">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="acquired">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="data">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </field>
+      <field name="spec">
+        <type name="RingBufferSpec" c:type="GstRingBufferSpec"/>
+      </field>
+      <field name="segstate">
+        <type name="RingBufferSegState" c:type="GstRingBufferSegState*"/>
+      </field>
+      <field name="samples_per_seg">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="empty_seg">
+        <type name="any" c:type="guint8*"/>
+      </field>
+      <field name="state">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="segdone">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="segbase">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="waiting">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="callback">
+        <type name="RingBufferCallback" c:type="GstRingBufferCallback"/>
+      </field>
+      <field name="cb_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="flushing" writable="1">
+            <type name="boolean" c:type="gboolean"/>
+          </field>
+          <field name="may_start" writable="1">
+            <type name="int" c:type="gint"/>
+          </field>
+          <field name="active" writable="1">
+            <type name="boolean" c:type="gboolean"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+    </class>
+    <callback name="RingBufferCallback"
+              c:type="GstRingBufferCallback"
+              doc="This function is set with gst_ring_buffer_set_callback() and is
+called to fill the memory at @data with @len bytes of samples.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="rbuf" transfer-ownership="none">
+          <type name="RingBuffer" c:type="GstRingBuffer*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="RingBufferClass"
+            c:type="GstRingBufferClass"
+            glib:is-gtype-struct-for="RingBuffer"
+            doc="consumed segments in the device. Since 0.10.22
+The vmethods that subclasses can override to implement the ringbuffer.">
+      <field name="parent_class">
+        <type name="Gst.ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="open_device">
+        <callback name="open_device" c:type="open_device">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="RingBuffer" c:type="GstRingBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="acquire">
+        <callback name="acquire" c:type="acquire">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="RingBuffer" c:type="GstRingBuffer*"/>
+            </parameter>
+            <parameter name="spec" transfer-ownership="none">
+              <type name="RingBufferSpec" c:type="GstRingBufferSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="release">
+        <callback name="release" c:type="release">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="RingBuffer" c:type="GstRingBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_device">
+        <callback name="close_device" c:type="close_device">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="RingBuffer" c:type="GstRingBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="start">
+        <callback name="start" c:type="start">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="RingBuffer" c:type="GstRingBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pause">
+        <callback name="pause" c:type="pause">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="RingBuffer" c:type="GstRingBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="resume">
+        <callback name="resume" c:type="resume">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="RingBuffer" c:type="GstRingBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stop">
+        <callback name="stop" c:type="stop">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="RingBuffer" c:type="GstRingBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delay">
+        <callback name="delay" c:type="delay">
+          <return-value transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="RingBuffer" c:type="GstRingBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate">
+        <callback name="activate" c:type="activate">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="RingBuffer" c:type="GstRingBuffer*"/>
+            </parameter>
+            <parameter name="active" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="commit">
+        <callback name="commit" c:type="commit">
+          <return-value transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="RingBuffer" c:type="GstRingBuffer*"/>
+            </parameter>
+            <parameter name="sample" direction="out" transfer-ownership="full">
+              <type name="uint64" c:type="guint64*"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <array c:type="guchar*">
+                <type name="uint8"/>
+              </array>
+            </parameter>
+            <parameter name="in_samples" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="out_samples" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="accum" direction="out" transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clear_all">
+        <callback name="clear_all" c:type="clear_all">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="RingBuffer" c:type="GstRingBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="1">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="RingBufferSegState"
+                 doc="The state of a segment in the ringbuffer."
+                 glib:type-name="GstRingBufferSegState"
+                 glib:get-type="gst_ring_buffer_seg_state_get_type"
+                 c:type="GstRingBufferSegState">
+      <member name="invalid"
+              value="0"
+              c:identifier="GST_SEGSTATE_INVALID"
+              glib:nick="invalid"/>
+      <member name="empty"
+              value="1"
+              c:identifier="GST_SEGSTATE_EMPTY"
+              glib:nick="empty"/>
+      <member name="filled"
+              value="2"
+              c:identifier="GST_SEGSTATE_FILLED"
+              glib:nick="filled"/>
+      <member name="partial"
+              value="3"
+              c:identifier="GST_SEGSTATE_PARTIAL"
+              glib:nick="partial"/>
+    </enumeration>
+    <record name="RingBufferSpec"
+            c:type="GstRingBufferSpec"
+            doc="defaults to segtotal
+The structure containing the format specification of the ringbuffer.">
+      <field name="caps" writable="1">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="BufferFormatType" c:type="GstBufferFormatType"/>
+      </field>
+      <field name="format" writable="1">
+        <type name="BufferFormat" c:type="GstBufferFormat"/>
+      </field>
+      <field name="sign" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="bigend" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="width" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="depth" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="rate" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="channels" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="latency_time" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="buffer_time" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="segsize" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="segtotal" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="bytes_per_sample" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="silence_sample" writable="1">
+        <array zero-terminated="0" c:type="guint8" fixed-size="32">
+          <type name="uint8"/>
+        </array>
+      </field>
+      <field name="seglatency" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="guint8" fixed-size="0">
+          <type name="uint8"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="RingBufferState"
+                 doc="The state of the ringbuffer."
+                 glib:type-name="GstRingBufferState"
+                 glib:get-type="gst_ring_buffer_state_get_type"
+                 c:type="GstRingBufferState">
+      <member name="stopped"
+              value="0"
+              c:identifier="GST_RING_BUFFER_STATE_STOPPED"
+              glib:nick="stopped"/>
+      <member name="paused"
+              value="1"
+              c:identifier="GST_RING_BUFFER_STATE_PAUSED"
+              glib:nick="paused"/>
+      <member name="started"
+              value="2"
+              c:identifier="GST_RING_BUFFER_STATE_STARTED"
+              glib:nick="started"/>
+    </enumeration>
+    <function name="buffer_clip"
+              c:identifier="gst_audio_buffer_clip"
+              doc="Clip the the buffer to the given %GstSegment.
+After calling this function the caller does not own a reference to
+otherwise the clipped buffer is returned.
+If the buffer has no timestamp, it is assumed to be inside the segment and
+is not clipped"
+              version="0.10.14">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="segment" transfer-ownership="none">
+          <type name="Gst.Segment" c:type="GstSegment*"/>
+        </parameter>
+        <parameter name="rate" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="frame_size" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="check_channel_positions"
+              c:identifier="gst_audio_check_channel_positions"
+              doc="This functions checks if the given channel positions are valid. Channel
+positions are valid if:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;No channel positions appears twice or all positions are %GST_AUDIO_CHANNEL_POSITION_NONE.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;Either all or none of the channel positions are %GST_AUDIO_CHANNEL_POSITION_NONE.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;%GST_AUDIO_CHANNEL_POSITION_FRONT_MONO and %GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT or %GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT don&apos;t appear together in the given positions.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+and %FALSE otherwise."
+              version="0.10.20">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pos" transfer-ownership="none">
+          <type name="AudioChannelPosition" c:type="GstAudioChannelPosition*"/>
+        </parameter>
+        <parameter name="channels" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="default_registry_mixer_filter"
+              c:identifier="gst_audio_default_registry_mixer_filter"
+              doc="Utility function to find audio mixer elements.
+Will traverse the default plugin registry in order of plugin rank and
+find usable audio mixer elements. The caller may optionally fine-tune
+the selection by specifying a filter function.
+element in the list by setting it to NULL state and calling
+gst_object_unref(). After that the list itself should be freed
+using g_list_free()."
+              version="0.10.2">
+      <return-value transfer-ownership="full">
+        <type name="GLib.List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="filter_func" transfer-ownership="none" scope="call">
+          <type name="AudioMixerFilterFunc" c:type="GstAudioMixerFilterFunc"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="duration_from_pad_buffer"
+              c:identifier="gst_audio_duration_from_pad_buffer"
+              doc="Calculate length in nanoseconds of audio buffer @buf based on capabilities of">
+      <return-value transfer-ownership="full">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Gst.Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixate_channel_positions"
+              c:identifier="gst_audio_fixate_channel_positions"
+              doc="&quot;channel-positions&quot; field.
+Custom fixate function. Elements that implement some sort of
+channel conversion algorithm should use this function for
+fixating on GstAudioChannelPosition properties. It will take
+care of equal channel positioning (left/right). Caller g_free()s
+the return value. The input properties may be (and are supposed
+to be) unfixed.
+Note that this function is mostly a hack because we currently
+have no way to add default fixation functions for new GTypes.
+set of #GstAudioChannelPosition values.">
+      <return-value transfer-ownership="full">
+        <type name="AudioChannelPosition" c:type="GstAudioChannelPosition*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="Gst.Structure" c:type="GstStructure*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="frame_byte_size"
+              c:identifier="gst_audio_frame_byte_size"
+              doc="Calculate byte size of an audio frame.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Gst.Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="frame_length"
+              c:identifier="gst_audio_frame_length"
+              doc="Calculate length of buffer in frames.">
+      <return-value transfer-ownership="none">
+        <type name="long" c:type="long"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Gst.Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_channel_positions"
+              c:identifier="gst_audio_get_channel_positions"
+              doc="Retrieves a number of (fixed!) audio channel positions from
+the provided #GstStructure and returns it as a newly allocated
+array. The caller should g_free () this array. The caller
+should also check that the members in this #GstStructure are
+indeed &quot;fixed&quot; before calling this function.
+positions as provided in the given #GstStructure. Returns
+NULL on error.">
+      <return-value transfer-ownership="full">
+        <type name="AudioChannelPosition" c:type="GstAudioChannelPosition*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="Gst.Structure" c:type="GstStructure*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_buffer_framed"
+              c:identifier="gst_audio_is_buffer_framed"
+              doc="Check if the buffer size is a whole multiple of the frame size.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Gst.Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_caps_channel_positions_list"
+              c:identifier="gst_audio_set_caps_channel_positions_list"
+              doc="channel positions that we should add in each value
+of the array in the given structure.
+Sets a (possibly non-fixed) list of possible audio channel
+positions (given in pos) on the given caps. Each of the
+structures of the caps, after this function has been called,
+will contain a &quot;channel-positions&quot; field with an array.
+Each value in the array will contain each of the values given
+in the pos array. Note that the size of the caps might be
+increased by this, since each structure with a &quot;channel-
+positions&quot; field needs to have a fixed &quot;channels&quot; field.
+The input caps is not required to have this.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+        <parameter name="pos" transfer-ownership="none">
+          <type name="AudioChannelPosition" c:type="GstAudioChannelPosition*"/>
+        </parameter>
+        <parameter name="num_positions" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_channel_positions"
+              c:identifier="gst_audio_set_channel_positions"
+              doc="in this array should be equal to the (fixed!) number
+of the &quot;channels&quot; field in the given #GstStructure.
+Adds a &quot;channel-positions&quot; field to the given #GstStructure,
+which will represent the channel positions as given in the
+provided #GstAudioChannelPosition array.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="Gst.Structure" c:type="GstStructure*"/>
+        </parameter>
+        <parameter name="pos" transfer-ownership="none">
+          <type name="AudioChannelPosition" c:type="GstAudioChannelPosition*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_structure_channel_positions_list"
+              c:identifier="gst_audio_set_structure_channel_positions_list"
+              doc="on.
+channel positions that we should add in each value
+of the array in the given structure.
+Sets a (possibly non-fixed) list of possible audio channel
+positions (given in pos) on the given structure. The
+structure, after this function has been called, will contain
+a &quot;channel-positions&quot; field with an array of the size of
+the &quot;channels&quot; field value in the given structure (note
+that this means that the channels field in the provided
+structure should be fixed!). Each value in the array will
+contain each of the values given in the pos array.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="Gst.Structure" c:type="GstStructure*"/>
+        </parameter>
+        <parameter name="pos" transfer-ownership="none">
+          <type name="AudioChannelPosition" c:type="GstAudioChannelPosition*"/>
+        </parameter>
+        <parameter name="num_positions" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="structure_set_int"
+              c:identifier="gst_audio_structure_set_int"
+              doc="Do not use anymore."
+              deprecated="use gst_structure_set()">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="structure" transfer-ownership="none">
+          <type name="Gst.Structure" c:type="GstStructure*"/>
+        </parameter>
+        <parameter name="flag" transfer-ownership="none">
+          <type name="AudioFieldFlag" c:type="GstAudioFieldFlag"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/audio/audio.factor b/extra/gstreamer/audio/audio.factor
new file mode 100644 (file)
index 0000000..1495be4
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.audio.ffi ;
+IN: gstreamer.audio
+
diff --git a/extra/gstreamer/audio/ffi/ffi.factor b/extra/gstreamer/audio/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..5b0be1d
--- /dev/null
@@ -0,0 +1,18 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.libraries combinators kernel
+system
+gobject-introspection glib.ffi gstreamer.ffi gstreamer.base.ffi
+gstreamer.interfaces.ffi ;
+IN: gstreamer.audio.ffi
+
+<<
+"gstreamer.audio" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstaudio-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gstreamer/audio/GstAudio-0.10.gir
+
diff --git a/extra/gstreamer/authors.txt b/extra/gstreamer/authors.txt
new file mode 100644 (file)
index 0000000..ce9bcc8
--- /dev/null
@@ -0,0 +1 @@
+Anton Gorenko
\ No newline at end of file
diff --git a/extra/gstreamer/base/GstBase-0.10.gir b/extra/gstreamer/base/GstBase-0.10.gir
new file mode 100644 (file)
index 0000000..a4ebc01
--- /dev/null
@@ -0,0 +1,5397 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.0"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <c:include name="gst/base/gstadapter.h"/>
+  <c:include name="gst/base/gstbasesink.h"/>
+  <c:include name="gst/base/gstbasesrc.h"/>
+  <c:include name="gst/base/gstbasetransform.h"/>
+  <c:include name="gst/base/gstbitreader.h"/>
+  <c:include name="gst/base/gstbytereader.h"/>
+  <c:include name="gst/base/gstbytewriter.h"/>
+  <c:include name="gst/base/gstcollectpads.h"/>
+  <c:include name="gst/base/gstdataqueue.h"/>
+  <c:include name="gst/base/gstpushsrc.h"/>
+  <c:include name="gst/base/gsttypefindhelper.h"/>
+  <namespace name="GstBase"
+             version="0.10"
+             shared-library="libgstbase-0.10.so.0"
+             c:prefix="Gst">
+    <class name="Adapter"
+           c:type="GstAdapter"
+           doc="The opaque #GstAdapter data structure."
+           parent="GObject.Object"
+           glib:type-name="GstAdapter"
+           glib:get-type="gst_adapter_get_type"
+           glib:type-struct="AdapterClass">
+      <constructor name="new"
+                   c:identifier="gst_adapter_new"
+                   doc="Creates a new #GstAdapter. Free with g_object_unref().">
+        <return-value transfer-ownership="full">
+          <type name="Adapter" c:type="GstAdapter*"/>
+        </return-value>
+      </constructor>
+      <method name="clear"
+              c:identifier="gst_adapter_clear"
+              doc="Removes all buffers from @adapter.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="push"
+              c:identifier="gst_adapter_push"
+              doc="Adds the data from @buf to the data stored inside @adapter and takes
+ownership of the buffer.
+Empty buffers will be automatically dereferenced and not stored in the">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek"
+              c:identifier="gst_adapter_peek"
+              doc="Gets the first @size bytes stored in the @adapter. The returned pointer is
+valid until the next function is called on the adapter.
+Note that setting the returned pointer as the data of a #GstBuffer is
+incorrect for general-purpose plugins. The reason is that if a downstream
+element stores the buffer so that it has access to it outside of the bounds
+of its chain function, the buffer will have an invalid data pointer after
+your element flushes the bytes. In that case you should use
+gst_adapter_take(), which returns a freshly-allocated buffer that you can set
+as #GstBuffer malloc_data or the potentially more performant
+gst_adapter_take_buffer().
+Returns #NULL if @size bytes are not available.">
+        <return-value transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy"
+              c:identifier="gst_adapter_copy"
+              doc="Copies @size bytes of data starting at @offset out of the buffers
+contained in @GstAdapter into an array @dest provided by the caller.
+The array @dest should be large enough to contain @size bytes.
+The user should check that the adapter has (@offset + @size) bytes
+available before calling this function."
+              version="0.10.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="flush"
+              c:identifier="gst_adapter_flush"
+              doc="Flushes the first @flush bytes in the @adapter. The caller must ensure that
+at least this many bytes are available.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flush" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take"
+              c:identifier="gst_adapter_take"
+              doc="Returns a freshly allocated buffer containing the first @nbytes bytes of the
+Caller owns returned value. g_free after usage.">
+        <return-value transfer-ownership="full">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="nbytes" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_buffer"
+              c:identifier="gst_adapter_take_buffer"
+              doc="Returns a #GstBuffer containing the first @nbytes bytes of the
+This function is potentially more performant than gst_adapter_take()
+since it can reuse the memory in pushed buffers by subbuffering
+or merging.
+Caller owns returned value. gst_buffer_unref() after usage.
+or #NULL if @nbytes bytes are not available"
+              version="0.10.6">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="nbytes" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="available"
+              c:identifier="gst_adapter_available"
+              doc="Gets the maximum amount of bytes available, that is it returns the maximum
+value that can be supplied to gst_adapter_peek() without that function
+returning NULL.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="available_fast"
+              c:identifier="gst_adapter_available_fast"
+              doc="Gets the maximum number of bytes that are immediately available without
+requiring any expensive operations (like copying the data into a
+temporary buffer).
+operations">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="prev_timestamp"
+              c:identifier="gst_adapter_prev_timestamp"
+              doc="Get the timestamp that was before the current byte in the adapter. When
+position is returned.
+The timestamp is reset to GST_CLOCK_TIME_NONE when the adapter is first
+created or when it is cleared."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="distance" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="masked_scan_uint32"
+              c:identifier="gst_adapter_masked_scan_uint32"
+              doc="the last scanned position.
+Scan for pattern @pattern with applied mask @mask in the adapter data,
+starting from offset @offset.
+The bytes in @pattern and @mask are interpreted left-to-right, regardless
+of endianness.  All four bytes of the pattern must be present in the
+adapter for it to match, even if the first or last bytes are masked out.
+It is an error to call this function without making sure that there is
+enough data (offset+size bytes) in the adapter.
+Example:
+&lt;programlisting&gt;
+// Assume the adapter contains 0x00 0x01 0x02 ... 0xfe 0xff
+gst_adapter_masked_scan_uint32 (adapter, 0xffffffff, 0x00010203, 0, 256);
+// -&gt; returns 0
+gst_adapter_masked_scan_uint32 (adapter, 0xffffffff, 0x00010203, 1, 255);
+// -&gt; returns -1
+gst_adapter_masked_scan_uint32 (adapter, 0xffffffff, 0x01020304, 1, 255);
+// -&gt; returns 1
+gst_adapter_masked_scan_uint32 (adapter, 0xffff, 0x0001, 0, 256);
+// -&gt; returns -1
+gst_adapter_masked_scan_uint32 (adapter, 0xffff, 0x0203, 0, 256);
+// -&gt; returns 0
+gst_adapter_masked_scan_uint32 (adapter, 0xffff0000, 0x02030000, 0, 256);
+// -&gt; returns 2
+gst_adapter_masked_scan_uint32 (adapter, 0xffff0000, 0x02030000, 0, 4);
+// -&gt; returns -1
+&lt;/programlisting&gt;"
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="mask" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="pattern" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="buflist">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="size">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="skip">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="assembled_data">
+        <type name="any" c:type="guint8*"/>
+      </field>
+      <field name="assembled_size">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="assembled_len">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="buflist_end">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="priv">
+        <type name="AdapterPrivate" c:type="GstAdapterPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="AdapterClass"
+            c:type="GstAdapterClass"
+            glib:is-gtype-struct-for="Adapter">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="AdapterPrivate" c:type="GstAdapterPrivate">
+    </record>
+    <class name="BaseSink"
+           c:type="GstBaseSink"
+           doc="The opaque #GstBaseSink data structure."
+           parent="Gst.Element"
+           abstract="1"
+           glib:type-name="GstBaseSink"
+           glib:get-type="gst_base_sink_get_type"
+           glib:type-struct="BaseSinkClass">
+      <virtual-method name="get_caps">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_caps">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="buffer_alloc">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_times">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="start">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="stop">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="unlock">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="event">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gst.Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="preroll">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="render">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="async_play">
+        <return-value transfer-ownership="full">
+          <type name="Gst.StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="activate_pull">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="fixate">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unlock_stop">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="render_list">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer_list" transfer-ownership="none">
+            <type name="Gst.BufferList" c:type="GstBufferList*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="do_preroll"
+              c:identifier="gst_base_sink_do_preroll"
+              doc="If the @sink spawns its own thread for pulling buffers from upstream it
+should call this method after it has pulled a buffer. If the element needed
+to preroll, this function will perform the preroll and will then block
+until the element state is changed.
+This function should be called with the PREROLL_LOCK held.
+Since 0.10.22
+continue. Any other return value should be returned from the render vmethod.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="obj" transfer-ownership="none">
+            <type name="Gst.MiniObject" c:type="GstMiniObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wait_preroll"
+              c:identifier="gst_base_sink_wait_preroll"
+              doc="If the #GstBaseSinkClass.render() method performs its own synchronisation
+against the clock it must unblock when going from PLAYING to the PAUSED state
+and call this method before continuing to render the remaining data.
+This function will block until a state change to PLAYING happens (in which
+case this function returns #GST_FLOW_OK) or the processing must be stopped due
+to a state change to READY or a FLUSH event (in which case this function
+returns #GST_FLOW_WRONG_STATE).
+This function should only be called with the PREROLL_LOCK held, like in the
+render function.
+continue. Any other return value should be returned from the render vmethod."
+              version="0.10.11">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+      </method>
+      <method name="set_sync"
+              c:identifier="gst_base_sink_set_sync"
+              doc="Configures @sink to synchronize on the clock or not. When
+possible. If @sync is TRUE, the timestamps of the incomming
+buffers will be used to schedule the exact render time of its
+contents."
+              version="0.10.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sync" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sync"
+              c:identifier="gst_base_sink_get_sync"
+              doc="Checks if @sink is currently configured to synchronize against the
+clock."
+              version="0.10.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_max_lateness"
+              c:identifier="gst_base_sink_set_max_lateness"
+              doc="Sets the new max lateness value to @max_lateness. This value is
+used to decide if a buffer should be dropped or not based on the
+buffer timestamp and the current clock time. A value of -1 means
+an unlimited time."
+              version="0.10.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="max_lateness" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_max_lateness"
+              c:identifier="gst_base_sink_get_max_lateness"
+              doc="Gets the max lateness value. See gst_base_sink_set_max_lateness for
+more details.
+before it is dropped and not rendered. A value of -1 means an
+unlimited time."
+              version="0.10.4">
+        <return-value transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </return-value>
+      </method>
+      <method name="set_qos_enabled"
+              c:identifier="gst_base_sink_set_qos_enabled"
+              doc="Configures @sink to send Quality-of-Service events upstream."
+              version="0.10.5">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enabled" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_qos_enabled"
+              c:identifier="gst_base_sink_is_qos_enabled"
+              doc="Checks if @sink is currently configured to send Quality-of-Service events
+upstream."
+              version="0.10.5">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_async_enabled"
+              c:identifier="gst_base_sink_set_async_enabled"
+              doc="Configures @sink to perform all state changes asynchronusly. When async is
+disabled, the sink will immediatly go to PAUSED instead of waiting for a
+preroll buffer. This feature is usefull if the sink does not synchronize
+against the clock or when it is dealing with sparse streams."
+              version="0.10.15">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enabled" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_async_enabled"
+              c:identifier="gst_base_sink_is_async_enabled"
+              doc="Checks if @sink is currently configured to perform asynchronous state
+changes to PAUSED.
+changes."
+              version="0.10.15">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_ts_offset"
+              c:identifier="gst_base_sink_set_ts_offset"
+              doc="Adjust the synchronisation of @sink with @offset. A negative value will
+render buffers earlier than their timestamp. A positive value will delay
+rendering. This function can be used to fix playback of badly timestamped
+buffers."
+              version="0.10.15">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ts_offset"
+              c:identifier="gst_base_sink_get_ts_offset"
+              doc="Get the synchronisation offset of @sink."
+              version="0.10.15">
+        <return-value transfer-ownership="full">
+          <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff"/>
+        </return-value>
+      </method>
+      <method name="get_last_buffer"
+              c:identifier="gst_base_sink_get_last_buffer"
+              doc="Get the last buffer that arrived in the sink and was used for preroll or for
+rendering. This property can be used to generate thumbnails.
+The #GstCaps on the buffer can be used to determine the type of the buffer.
+NULL when no buffer has arrived in the sink yet or when the sink is not in
+PAUSED or PLAYING."
+              version="0.10.15">
+        <return-value transfer-ownership="full"
+                      doc="after usage. This function returns">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="query_latency"
+              c:identifier="gst_base_sink_query_latency"
+              doc="Query the sink for the latency parameters. The latency will be queried from
+the upstream elements. @live will be TRUE if @sink is configured to
+synchronize against the clock. @upstream_live will be TRUE if an upstream
+element is live.
+If both @live and @upstream_live are TRUE, the sink will want to compensate
+for the latency introduced by the upstream elements by setting the
+This function is mostly used by subclasses."
+              version="0.10.12">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="live" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="upstream_live"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="min_latency" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="max_latency" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_latency"
+              c:identifier="gst_base_sink_get_latency"
+              doc="Get the currently configured latency."
+              version="0.10.12">
+        <return-value transfer-ownership="full">
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="set_render_delay"
+              c:identifier="gst_base_sink_set_render_delay"
+              doc="Set the render delay in @sink to @delay. The render delay is the time
+between actual rendering of a buffer and its synchronisation time. Some
+devices might delay media rendering which can be compensated for with this
+function.
+After calling this function, this sink will report additional latency and
+other sinks will adjust their latency to delay the rendering of their media.
+This function is usually called by subclasses."
+              version="0.10.21">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="delay" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_render_delay"
+              c:identifier="gst_base_sink_get_render_delay"
+              doc="Get the render delay of @sink. see gst_base_sink_set_render_delay() for more
+information about the render delay."
+              version="0.10.21">
+        <return-value transfer-ownership="full">
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="set_blocksize"
+              c:identifier="gst_base_sink_set_blocksize"
+              doc="Set the number of bytes that the sink will pull when it is operating in pull
+mode."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="blocksize" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_blocksize"
+              c:identifier="gst_base_sink_get_blocksize"
+              doc="Get the number of bytes that the sink will pull when it is operating in pull
+mode."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="wait_clock"
+              c:identifier="gst_base_sink_wait_clock"
+              doc="This function will block until @time is reached. It is usually called by
+subclasses that use their own internal synchronisation.
+If @time is not valid, no sycnhronisation is done and #GST_CLOCK_BADTIME is
+returned. Likewise, if synchronisation is disabled in the element or there
+is no clock, no synchronisation is done and #GST_CLOCK_BADTIME is returned.
+This function should only be called with the PREROLL_LOCK held, like when
+receiving an EOS event in the #GstBaseSinkClass.event() vmethod or when
+receiving a buffer in
+the #GstBaseSinkClass.render() vmethod.
+The @time argument should be the running_time of when this method should
+return and is not adjusted with any latency or offset configured in the
+sink.
+Since 0.10.20">
+        <return-value transfer-ownership="full">
+          <type name="Gst.ClockReturn" c:type="GstClockReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="jitter" transfer-ownership="none">
+            <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wait_eos"
+              c:identifier="gst_base_sink_wait_eos"
+              doc="This function will block until @time is reached. It is usually called by
+subclasses that use their own internal synchronisation but want to let the
+EOS be handled by the base class.
+This function should only be called with the PREROLL_LOCK held, like when
+receiving an EOS event in the ::event vmethod.
+The @time argument should be the running_time of when the EOS should happen
+and will be adjusted with any latency and offset configured in the sink.
+Since 0.10.15">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="jitter" transfer-ownership="none">
+            <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="async" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="blocksize" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="last-buffer">
+        <type name="Gst.Buffer" c:type="GstBuffer"/>
+      </property>
+      <property name="max-lateness" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="preroll-queue-len" writable="1" construct="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="qos" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="render-delay" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </property>
+      <property name="sync" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="ts-offset" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <field name="element">
+        <type name="Gst.Element" c:type="GstElement"/>
+      </field>
+      <field name="sinkpad">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="pad_mode">
+        <type name="Gst.ActivateMode" c:type="GstActivateMode"/>
+      </field>
+      <field name="offset">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="can_activate_pull">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="can_activate_push">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="preroll_queue">
+        <type name="GLib.Queue" c:type="GQueue*"/>
+      </field>
+      <field name="preroll_queue_max_len">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="preroll_queued">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="buffers_queued">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="events_queued">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="eos">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="eos_queued">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="need_preroll">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="have_preroll">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="playing_async">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="have_newsegment">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="segment">
+        <type name="Gst.Segment" c:type="GstSegment"/>
+      </field>
+      <field name="clock_id">
+        <type name="Gst.ClockID" c:type="GstClockID"/>
+      </field>
+      <field name="end_time">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="sync">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="flushing">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="clip_segment" writable="1">
+            <type name="Gst.Segment" c:type="GstSegment*"/>
+          </field>
+          <field name="max_lateness" writable="1">
+            <type name="int64" c:type="gint64"/>
+          </field>
+          <field name="running" writable="1">
+            <type name="boolean" c:type="gboolean"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="19">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+      <field name="priv">
+        <type name="BaseSinkPrivate" c:type="GstBaseSinkPrivate*"/>
+      </field>
+    </class>
+    <record name="BaseSinkClass"
+            c:type="GstBaseSinkClass"
+            glib:is-gtype-struct-for="BaseSink"
+            doc="the passed buffer to the clock
+unblock any blocked function ASAP
+any state they set during unlock(), such as clearing command queues.
+correct moment if the #GstBaseSink has been set to sync to the clock.
+special processing when changing to the PLAYING state asynchronously.
+Called with the OBJECT_LOCK held.
+alternate method of spawning a thread to drive the pipeline in pull mode.
+Should start or stop the pulling thread, depending on the value of the
+&quot;active&quot; argument. Called after actually activating the sink pad in pull
+mode. The default implementation starts a task on the sink pad.
+gst_pad_fixate_caps() being called on the sink pad. Implement if you have
+ideas about what should be the default values for the caps you support.
+Subclasses can override any of the available virtual methods or not, as
+needed. At the minimum, the @render method should be overridden to
+output/present buffers.">
+      <field name="parent_class">
+        <type name="Gst.ElementClass" c:type="GstElementClass"/>
+      </field>
+      <field name="get_caps">
+        <callback name="get_caps" c:type="get_caps">
+          <return-value transfer-ownership="full">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_caps">
+        <callback name="set_caps" c:type="set_caps">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="buffer_alloc">
+        <callback name="buffer_alloc" c:type="buffer_alloc">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <type name="uint64" c:type="guint64"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_times">
+        <callback name="get_times" c:type="get_times">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+            <parameter name="start" transfer-ownership="none">
+              <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+            </parameter>
+            <parameter name="end" transfer-ownership="none">
+              <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="start">
+        <callback name="start" c:type="start">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stop">
+        <callback name="stop" c:type="stop">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unlock">
+        <callback name="unlock" c:type="unlock">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="event">
+        <callback name="event" c:type="event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gst.Event" c:type="GstEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="preroll">
+        <callback name="preroll" c:type="preroll">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="render">
+        <callback name="render" c:type="render">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="async_play">
+        <callback name="async_play" c:type="async_play">
+          <return-value transfer-ownership="full">
+            <type name="Gst.StateChangeReturn" c:type="GstStateChangeReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate_pull">
+        <callback name="activate_pull" c:type="activate_pull">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="active" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="fixate">
+        <callback name="fixate" c:type="fixate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unlock_stop">
+        <callback name="unlock_stop" c:type="unlock_stop">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="render_list">
+        <callback name="render_list" c:type="render_list">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="buffer_list" transfer-ownership="none">
+              <type name="Gst.BufferList" c:type="GstBufferList*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="15">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="BaseSinkPrivate" c:type="GstBaseSinkPrivate">
+    </record>
+    <class name="BaseSrc"
+           c:type="GstBaseSrc"
+           doc="The opaque #GstBaseSrc data structure."
+           parent="Gst.Element"
+           abstract="1"
+           glib:type-name="GstBaseSrc"
+           glib:get-type="gst_base_src_get_type"
+           glib:type-struct="BaseSrcClass">
+      <virtual-method name="get_caps">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_caps">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="negotiate">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="newsegment">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="start">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="stop">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_times">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_size">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="is_seekable">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="unlock">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="event">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gst.Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="create">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="do_seek">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="segment" transfer-ownership="none">
+            <type name="Gst.Segment" c:type="GstSegment*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <type name="Gst.Query" c:type="GstQuery*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="check_get_range">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="fixate">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unlock_stop">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="prepare_seek_segment">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="seek" transfer-ownership="none">
+            <type name="Gst.Event" c:type="GstEvent*"/>
+          </parameter>
+          <parameter name="segment" transfer-ownership="none">
+            <type name="Gst.Segment" c:type="GstSegment*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="wait_playing"
+              c:identifier="gst_base_src_wait_playing"
+              doc="If the #GstBaseSrcClass.create() method performs its own synchronisation
+against the clock it must unblock when going from PLAYING to the PAUSED state
+and call this method before continuing to produce the remaining data.
+This function will block until a state change to PLAYING happens (in which
+case this function returns #GST_FLOW_OK) or the processing must be stopped due
+to a state change to READY or a FLUSH event (in which case this function
+returns #GST_FLOW_WRONG_STATE).
+continue. Any other return value should be returned from the create vmethod."
+              version="0.10.12">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+      </method>
+      <method name="set_live"
+              c:identifier="gst_base_src_set_live"
+              doc="If the element listens to a live source, @live should
+be set to %TRUE.
+A live source will not produce data in the PAUSED state and
+will therefore not be able to participate in the PREROLL phase
+of a pipeline. To signal this fact to the application and the
+pipeline, the state change return value of the live source will
+be GST_STATE_CHANGE_NO_PREROLL.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="live" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_live"
+              c:identifier="gst_base_src_is_live"
+              doc="Check if an element is in live mode.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_format"
+              c:identifier="gst_base_src_set_format"
+              doc="Sets the default format of the source. This will be the format used
+for sending NEW_SEGMENT events and for performing seeks.
+If a format of GST_FORMAT_BYTES is set, the element will be able to
+operate in pull mode if the #GstBaseSrc.is_seekable() returns TRUE.
+This function must only be called in states &lt; %GST_STATE_PAUSED."
+              version="0.10.1">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Gst.Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_latency"
+              c:identifier="gst_base_src_query_latency"
+              doc="Query the source for the latency parameters. @live will be TRUE when @src is
+configured as a live source. @min_latency will be set to the difference
+between the running time and the timestamp of the first buffer.
+This function is mostly used by subclasses."
+              version="0.10.13">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="live" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="min_latency" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="max_latency" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blocksize"
+              c:identifier="gst_base_src_set_blocksize"
+              doc="Set the number of bytes that @src will push out with each buffer. When"
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="blocksize" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_blocksize"
+              c:identifier="gst_base_src_get_blocksize"
+              doc="Get the number of bytes that @src will push out with each buffer."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <method name="set_do_timestamp"
+              c:identifier="gst_base_src_set_do_timestamp"
+              doc="Configure @src to automatically timestamp outgoing buffers based on the
+current running_time of the pipeline. This property is mostly useful for live
+sources."
+              version="0.10.15">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_do_timestamp"
+              c:identifier="gst_base_src_get_do_timestamp"
+              doc="Query if @src timestamps outgoing buffers based on the current running_time."
+              version="0.10.15">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="new_seamless_segment"
+              c:identifier="gst_base_src_new_seamless_segment"
+              doc="Prepare a new seamless segment for emission downstream. This function must
+only be called by derived sub-classes, and only from the create() function,
+as the stream-lock needs to be held.
+The format for the new segment will be the current format of the source, as
+configured with gst_base_src_set_format()"
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="blocksize" writable="1">
+        <type name="ulong" c:type="gulong"/>
+      </property>
+      <property name="do-timestamp" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="num-buffers" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="typefind" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="element">
+        <type name="Gst.Element" c:type="GstElement"/>
+      </field>
+      <field name="srcpad">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="live_lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="live_cond">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="is_live">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="live_running">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="blocksize">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="can_activate_push">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="pad_mode">
+        <type name="Gst.ActivateMode" c:type="GstActivateMode"/>
+      </field>
+      <field name="seekable">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="random_access">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="clock_id">
+        <type name="Gst.ClockID" c:type="GstClockID"/>
+      </field>
+      <field name="end_time">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="segment">
+        <type name="Gst.Segment" c:type="GstSegment"/>
+      </field>
+      <field name="need_newsegment">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="offset">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="size">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="num_buffers">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="num_buffers_left">
+        <type name="int" c:type="gint"/>
+      </field>
+      <union name="data" c:type="data">
+        <record name="ABI" c:type="ABI">
+          <field name="typefind" writable="1">
+            <type name="boolean" c:type="gboolean"/>
+          </field>
+          <field name="running" writable="1">
+            <type name="boolean" c:type="gboolean"/>
+          </field>
+          <field name="pending_seek" writable="1">
+            <type name="Gst.Event" c:type="GstEvent*"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="19">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+      <field name="priv">
+        <type name="BaseSrcPrivate" c:type="GstBaseSrcPrivate*"/>
+      </field>
+    </class>
+    <record name="BaseSrcClass"
+            c:type="GstBaseSrcClass"
+            glib:is-gtype-struct-for="BaseSrc"
+            doc="to produce data.
+should be pushed out. The base class will sync on the clock using
+these times.
+unblock any blocked function ASAP
+any state they set during unlock(), such as clearing command queues.
+do_seek vmethod for executing a seek request. Sub-classes should override
+this if they support seeking in formats other than the configured native
+format. By default, it tries to convert the seek arguments to the
+configured native format and prepare a segment in that format.
+operation if it were to be opened now. This vfunc is optional, but
+should be implemented if possible to avoid unnecessary start/stop
+cycles. The default implementation will open and close the resource
+to find out whether get_range is supported, and that is usually
+undesirable.
+setting a fixate function on the source pad.
+Subclasses can override any of the available virtual methods or not, as
+needed. At the minimum, the @create method should be overridden to produce
+buffers."
+            version="0.10.13">
+      <field name="parent_class">
+        <type name="Gst.ElementClass" c:type="GstElementClass"/>
+      </field>
+      <field name="get_caps">
+        <callback name="get_caps" c:type="get_caps">
+          <return-value transfer-ownership="full">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_caps">
+        <callback name="set_caps" c:type="set_caps">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="negotiate">
+        <callback name="negotiate" c:type="negotiate">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="newsegment">
+        <callback name="newsegment" c:type="newsegment">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="start">
+        <callback name="start" c:type="start">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stop">
+        <callback name="stop" c:type="stop">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_times">
+        <callback name="get_times" c:type="get_times">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+            <parameter name="start" transfer-ownership="none">
+              <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+            </parameter>
+            <parameter name="end" transfer-ownership="none">
+              <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_size">
+        <callback name="get_size" c:type="get_size">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="size" direction="out" transfer-ownership="full">
+              <type name="uint64" c:type="guint64*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_seekable">
+        <callback name="is_seekable" c:type="is_seekable">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unlock">
+        <callback name="unlock" c:type="unlock">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="event">
+        <callback name="event" c:type="event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gst.Event" c:type="GstEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create">
+        <callback name="create" c:type="create">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <type name="uint64" c:type="guint64"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="do_seek">
+        <callback name="do_seek" c:type="do_seek">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="segment" transfer-ownership="none">
+              <type name="Gst.Segment" c:type="GstSegment*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query">
+        <callback name="query" c:type="query">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="query" transfer-ownership="none">
+              <type name="Gst.Query" c:type="GstQuery*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="check_get_range">
+        <callback name="check_get_range" c:type="check_get_range">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="fixate">
+        <callback name="fixate" c:type="fixate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unlock_stop">
+        <callback name="unlock_stop" c:type="unlock_stop">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="prepare_seek_segment">
+        <callback name="prepare_seek_segment" c:type="prepare_seek_segment">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="seek" transfer-ownership="none">
+              <type name="Gst.Event" c:type="GstEvent*"/>
+            </parameter>
+            <parameter name="segment" transfer-ownership="none">
+              <type name="Gst.Segment" c:type="GstSegment*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="14">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="BaseSrcFlags"
+              doc="The #GstElement flags that a basesrc element may have."
+              c:type="GstBaseSrcFlags">
+      <member name="started"
+              value="1048576"
+              c:identifier="GST_BASE_SRC_STARTED"/>
+      <member name="flag_last"
+              value="4194304"
+              c:identifier="GST_BASE_SRC_FLAG_LAST"/>
+    </bitfield>
+    <record name="BaseSrcPrivate" c:type="GstBaseSrcPrivate">
+    </record>
+    <class name="BaseTransform"
+           c:type="GstBaseTransform"
+           doc="The opaque #GstBaseTransform data structure."
+           parent="Gst.Element"
+           abstract="1"
+           glib:type-name="GstBaseTransform"
+           glib:get-type="gst_base_transform_get_type"
+           glib:type-struct="BaseTransformClass">
+      <virtual-method name="transform_caps">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="fixate_caps">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="othercaps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="transform_size">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="othercaps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="othersize"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_unit_size">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="size" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_caps">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="incaps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="outcaps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="start">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="stop">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="event">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gst.Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="transform">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="inbuf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="outbuf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="transform_ip">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="prepare_output_buffer">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="input" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="src_event">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gst.Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="before_transform">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_passthrough"
+              c:identifier="gst_base_transform_set_passthrough"
+              doc="Set passthrough mode for this filter by default. This is mostly
+useful for filters that do not care about negotiation.
+Always TRUE for filters which don&apos;t implement either a transform
+or transform_ip method.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="passthrough" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_passthrough"
+              c:identifier="gst_base_transform_is_passthrough"
+              doc="See if @trans is configured as a passthrough transform.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_in_place"
+              c:identifier="gst_base_transform_set_in_place"
+              doc="on in_place buffers.
+Determines whether a non-writable buffer will be copied before passing
+to the transform_ip function.
+&lt;itemizedlist&gt;
+&lt;listitem&gt;Always TRUE if no transform function is implemented.&lt;/listitem&gt;
+&lt;listitem&gt;Always FALSE if ONLY transform function is implemented.&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="in_place" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_in_place"
+              c:identifier="gst_base_transform_is_in_place"
+              doc="See if @trans is configured as a in_place transform.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="update_qos"
+              c:identifier="gst_base_transform_update_qos"
+              doc="running_time.
+Set the QoS parameters in the transform. This function is called internally
+when a QOS event is received but subclasses can provide custom information
+when needed.
+MT safe."
+              version="0.10.5">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="proportion" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="diff" transfer-ownership="none">
+            <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_qos_enabled"
+              c:identifier="gst_base_transform_set_qos_enabled"
+              doc="Enable or disable QoS handling in the transform.
+MT safe."
+              version="0.10.5">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enabled" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_qos_enabled"
+              c:identifier="gst_base_transform_is_qos_enabled"
+              doc="Queries if the transform will handle QoS.
+MT safe."
+              version="0.10.5">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_gap_aware"
+              c:identifier="gst_base_transform_set_gap_aware"
+              doc="If @gap_aware is %FALSE (the default), output buffers will have the
+%GST_BUFFER_FLAG_GAP flag unset.
+If set to %TRUE, the element must handle output buffers with this flag set
+correctly, i.e. it can assume that the buffer contains neutral data but must
+unset the flag if the output is no neutral data.
+MT safe."
+              version="0.10.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gap_aware" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="suggest"
+              c:identifier="gst_base_transform_suggest"
+              doc="Instructs @trans to suggest new @caps upstream. A copy of @caps will be
+taken."
+              version="0.10.21">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reconfigure"
+              c:identifier="gst_base_transform_reconfigure"
+              doc="Instructs @trans to renegotiate a new downstream transform on the next
+buffer. This function is typically called after properties on the transform
+were set that influence the output format."
+              version="0.10.21">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="qos" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="element">
+        <type name="Gst.Element" c:type="GstElement"/>
+      </field>
+      <field name="sinkpad">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="srcpad">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="passthrough">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="always_in_place">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="cache_caps1">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </field>
+      <field name="cache_caps1_size">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="cache_caps2">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </field>
+      <field name="cache_caps2_size">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="have_same_caps">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="delay_configure">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="pending_configure">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="negotiated">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="have_newsegment">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="segment">
+        <type name="Gst.Segment" c:type="GstSegment"/>
+      </field>
+      <field name="transform_lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="priv">
+        <type name="BaseTransformPrivate" c:type="GstBaseTransformPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="19">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="BaseTransformClass"
+            c:type="GstBaseTransformClass"
+            glib:is-gtype-struct-for="BaseTransform"
+            doc="caps, what caps are allowed on the other pad in this
+element ?
+caps, fixate the caps on the other pad.
+with the given caps, calculate the size in bytes of a buffer
+on the other pad with the given other caps.
+The default implementation uses get_unit_size and keeps
+the number of units the same.
+get the size in bytes of one unit for the given caps.
+Called when the element starts processing.
+Allows opening external resources.
+Called when the element stops processing.
+Allows closing external resources.
+Transforms one incoming buffer to one outgoing buffer.
+The function is allowed to change size/timestamp/duration
+of the outgoing buffer.
+Transform the incoming buffer in-place.
+Event handler on the sink pad. This function should return
+TRUE if the base class should forward the event.
+Event handler on the source pad.
+automatically enabled if the caps are the same.
+Subclasses can override this to do their own
+allocation of output buffers.  Elements that only do
+analysis can return a subbuffer or even just
+increment the reference to the input buffer (if in
+passthrough mode)
+This method is called right before the base class will
+start processing. Dynamic properties or other delayed
+configuration could be performed in this method.
+Subclasses can override any of the available virtual methods or not, as
+needed. At minimum either @transform or @transform_ip need to be overridden.
+If the element can overwrite the input data with the results (data is of the
+same type and quantity) it should provide @transform_ip.">
+      <field name="parent_class">
+        <type name="Gst.ElementClass" c:type="GstElementClass"/>
+      </field>
+      <field name="transform_caps">
+        <callback name="transform_caps" c:type="transform_caps">
+          <return-value transfer-ownership="full">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="direction" transfer-ownership="none">
+              <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="fixate_caps">
+        <callback name="fixate_caps" c:type="fixate_caps">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="direction" transfer-ownership="none">
+              <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+            <parameter name="othercaps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="transform_size">
+        <callback name="transform_size" c:type="transform_size">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="direction" transfer-ownership="none">
+              <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="othercaps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+            <parameter name="othersize"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="uint" c:type="guint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_unit_size">
+        <callback name="get_unit_size" c:type="get_unit_size">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+            <parameter name="size" direction="out" transfer-ownership="full">
+              <type name="uint" c:type="guint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_caps">
+        <callback name="set_caps" c:type="set_caps">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="incaps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+            <parameter name="outcaps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="start">
+        <callback name="start" c:type="start">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stop">
+        <callback name="stop" c:type="stop">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="event">
+        <callback name="event" c:type="event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gst.Event" c:type="GstEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="transform">
+        <callback name="transform" c:type="transform">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="inbuf" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+            <parameter name="outbuf" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="transform_ip">
+        <callback name="transform_ip" c:type="transform_ip">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="passthrough_on_same_caps">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="prepare_output_buffer">
+        <callback name="prepare_output_buffer" c:type="prepare_output_buffer">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="input" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="src_event">
+        <callback name="src_event" c:type="src_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gst.Event" c:type="GstEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="before_transform">
+        <callback name="before_transform" c:type="before_transform">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="18">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="BaseTransformPrivate" c:type="GstBaseTransformPrivate">
+    </record>
+    <record name="BitReader"
+            c:type="GstBitReader"
+            doc="A bit reader instance.">
+      <field name="data" writable="1">
+        <type name="any" c:type="guint8*"/>
+      </field>
+      <field name="size" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="byte" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="bit" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_bit_reader_new"
+                   doc="Create a new #GstBitReader instance, which will read from @data."
+                   version="0.10.22">
+        <return-value transfer-ownership="full">
+          <type name="BitReader" c:type="GstBitReader*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_buffer"
+                   c:identifier="gst_bit_reader_new_from_buffer"
+                   doc="Create a new #GstBitReader instance, which will read from the
+#GstBuffer @buffer."
+                   version="0.10.22">
+        <return-value transfer-ownership="full">
+          <type name="BitReader" c:type="GstBitReader*"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="free"
+              c:identifier="gst_bit_reader_free"
+              doc="Frees a #GstBitReader instance, which was previously allocated by
+gst_bit_reader_new() or gst_bit_reader_new_from_buffer()."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="init"
+              c:identifier="gst_bit_reader_init"
+              doc="Initializes a #GstBitReader instance to read from @data. This function
+can be called on already initialized instances."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_from_buffer"
+              c:identifier="gst_bit_reader_init_from_buffer"
+              doc="Initializes a #GstBitReader instance to read from @buffer. This function
+can be called on already initialized instances."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pos"
+              c:identifier="gst_bit_reader_set_pos"
+              doc="Sets the new position of a #GstBitReader instance to @pos in bits.
+otherwise."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pos" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pos"
+              c:identifier="gst_bit_reader_get_pos"
+              doc="Returns the current position of a #GstBitReader instance in bits."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_remaining"
+              c:identifier="gst_bit_reader_get_remaining"
+              doc="Returns the remaining number of bits of a #GstBitReader instance."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_size"
+              c:identifier="gst_bit_reader_get_size"
+              doc="Returns the total number of bits of a #GstBitReader instance."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="skip"
+              c:identifier="gst_bit_reader_skip"
+              doc="Skips @nbits bits of the #GstBitReader instance."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="nbits" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="skip_to_byte"
+              c:identifier="gst_bit_reader_skip_to_byte"
+              doc="Skips until the next byte."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_bits_uint8"
+              c:identifier="gst_bit_reader_get_bits_uint8"
+              doc="Read @nbits bits into @val and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="nbits" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bits_uint16"
+              c:identifier="gst_bit_reader_get_bits_uint16"
+              doc="Read @nbits bits into @val and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint16" c:type="guint16*"/>
+          </parameter>
+          <parameter name="nbits" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bits_uint32"
+              c:identifier="gst_bit_reader_get_bits_uint32"
+              doc="Read @nbits bits into @val and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="nbits" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bits_uint64"
+              c:identifier="gst_bit_reader_get_bits_uint64"
+              doc="Read @nbits bits into @val and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="nbits" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_bits_uint8"
+              c:identifier="gst_bit_reader_peek_bits_uint8"
+              doc="Read @nbits bits into @val but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="nbits" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_bits_uint16"
+              c:identifier="gst_bit_reader_peek_bits_uint16"
+              doc="Read @nbits bits into @val but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint16" c:type="guint16*"/>
+          </parameter>
+          <parameter name="nbits" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_bits_uint32"
+              c:identifier="gst_bit_reader_peek_bits_uint32"
+              doc="Read @nbits bits into @val but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="nbits" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_bits_uint64"
+              c:identifier="gst_bit_reader_peek_bits_uint64"
+              doc="Read @nbits bits into @val but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="nbits" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="ByteReader"
+            c:type="GstByteReader"
+            doc="A byte reader instance.">
+      <field name="data" writable="1">
+        <type name="any" c:type="guint8*"/>
+      </field>
+      <field name="size" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="byte" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_byte_reader_new"
+                   doc="Create a new #GstByteReader instance, which will read from @data."
+                   version="0.10.22">
+        <return-value transfer-ownership="full">
+          <type name="ByteReader" c:type="GstByteReader*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_buffer"
+                   c:identifier="gst_byte_reader_new_from_buffer"
+                   doc="Create a new #GstByteReader instance, which will read from the
+#GstBuffer @buffer."
+                   version="0.10.22">
+        <return-value transfer-ownership="full">
+          <type name="ByteReader" c:type="GstByteReader*"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="free"
+              c:identifier="gst_byte_reader_free"
+              doc="Frees a #GstByteReader instance, which was previously allocated by
+gst_byte_reader_new() or gst_byte_reader_new_from_buffer()."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="init"
+              c:identifier="gst_byte_reader_init"
+              doc="Initializes a #GstByteReader instance to read from @data. This function
+can be called on already initialized instances."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_from_buffer"
+              c:identifier="gst_byte_reader_init_from_buffer"
+              doc="Initializes a #GstByteReader instance to read from @buffer. This function
+can be called on already initialized instances."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pos"
+              c:identifier="gst_byte_reader_set_pos"
+              doc="Sets the new position of a #GstByteReader instance to @pos in bytes.
+otherwise."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pos" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pos"
+              c:identifier="gst_byte_reader_get_pos"
+              doc="Returns the current position of a #GstByteReader instance in bytes."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_remaining"
+              c:identifier="gst_byte_reader_get_remaining"
+              doc="Returns the remaining number of bytes of a #GstByteReader instance."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_size"
+              c:identifier="gst_byte_reader_get_size"
+              doc="Returns the total number of bytes of a #GstByteReader instance."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="skip"
+              c:identifier="gst_byte_reader_skip"
+              doc="Skips @nbytes bytes of the #GstByteReader instance."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="nbytes" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint8"
+              c:identifier="gst_byte_reader_get_uint8"
+              doc="Read an unsigned 8 bit integer into @val and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int8"
+              c:identifier="gst_byte_reader_get_int8"
+              doc="Read a signed 8 bit integer into @val and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int8" c:type="gint8*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint16_le"
+              c:identifier="gst_byte_reader_get_uint16_le"
+              doc="Read an unsigned 16 bit little endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint16" c:type="guint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int16_le"
+              c:identifier="gst_byte_reader_get_int16_le"
+              doc="Read a signed 16 bit little endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int16" c:type="gint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint16_be"
+              c:identifier="gst_byte_reader_get_uint16_be"
+              doc="Read an unsigned 16 bit big endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint16" c:type="guint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int16_be"
+              c:identifier="gst_byte_reader_get_int16_be"
+              doc="Read a signed 16 bit big endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int16" c:type="gint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint24_le"
+              c:identifier="gst_byte_reader_get_uint24_le"
+              doc="Read an unsigned 24 bit little endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int24_le"
+              c:identifier="gst_byte_reader_get_int24_le"
+              doc="Read a signed 24 bit little endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint24_be"
+              c:identifier="gst_byte_reader_get_uint24_be"
+              doc="Read an unsigned 24 bit big endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int24_be"
+              c:identifier="gst_byte_reader_get_int24_be"
+              doc="Read a signed 24 bit big endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint32_le"
+              c:identifier="gst_byte_reader_get_uint32_le"
+              doc="Read an unsigned 32 bit little endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int32_le"
+              c:identifier="gst_byte_reader_get_int32_le"
+              doc="Read a signed 32 bit little endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint32_be"
+              c:identifier="gst_byte_reader_get_uint32_be"
+              doc="Read an unsigned 32 bit big endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int32_be"
+              c:identifier="gst_byte_reader_get_int32_be"
+              doc="Read a signed 32 bit big endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint64_le"
+              c:identifier="gst_byte_reader_get_uint64_le"
+              doc="Read an unsigned 64 bit little endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int64_le"
+              c:identifier="gst_byte_reader_get_int64_le"
+              doc="Read a signed 64 bit little endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint64_be"
+              c:identifier="gst_byte_reader_get_uint64_be"
+              doc="Read an unsigned 64 bit big endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int64_be"
+              c:identifier="gst_byte_reader_get_int64_be"
+              doc="Read a signed 64 bit big endian integer into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint8"
+              c:identifier="gst_byte_reader_peek_uint8"
+              doc="Read a signed 8 bit integer into @val but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int8"
+              c:identifier="gst_byte_reader_peek_int8"
+              doc="Read a signed 8 bit integer into @val but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int8" c:type="gint8*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint16_le"
+              c:identifier="gst_byte_reader_peek_uint16_le"
+              doc="Read a signed 16 bit little endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint16" c:type="guint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int16_le"
+              c:identifier="gst_byte_reader_peek_int16_le"
+              doc="Read a signed 16 bit little endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int16" c:type="gint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint16_be"
+              c:identifier="gst_byte_reader_peek_uint16_be"
+              doc="Read a signed 16 bit big endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint16" c:type="guint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int16_be"
+              c:identifier="gst_byte_reader_peek_int16_be"
+              doc="Read a signed 16 bit big endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int16" c:type="gint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint24_le"
+              c:identifier="gst_byte_reader_peek_uint24_le"
+              doc="Read a signed 24 bit little endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int24_le"
+              c:identifier="gst_byte_reader_peek_int24_le"
+              doc="Read a signed 24 bit little endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint24_be"
+              c:identifier="gst_byte_reader_peek_uint24_be"
+              doc="Read a signed 24 bit big endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int24_be"
+              c:identifier="gst_byte_reader_peek_int24_be"
+              doc="Read a signed 24 bit big endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint32_le"
+              c:identifier="gst_byte_reader_peek_uint32_le"
+              doc="Read a signed 32 bit little endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int32_le"
+              c:identifier="gst_byte_reader_peek_int32_le"
+              doc="Read a signed 32 bit little endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint32_be"
+              c:identifier="gst_byte_reader_peek_uint32_be"
+              doc="Read a signed 32 bit big endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int32_be"
+              c:identifier="gst_byte_reader_peek_int32_be"
+              doc="Read a signed 32 bit big endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint64_le"
+              c:identifier="gst_byte_reader_peek_uint64_le"
+              doc="Read a signed 64 bit little endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int64_le"
+              c:identifier="gst_byte_reader_peek_int64_le"
+              doc="Read a signed 64 bit little endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint64_be"
+              c:identifier="gst_byte_reader_peek_uint64_be"
+              doc="Read a signed 64 bit big endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int64_be"
+              c:identifier="gst_byte_reader_peek_int64_be"
+              doc="Read a signed 64 bit big endian integer into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_float32_le"
+              c:identifier="gst_byte_reader_get_float32_le"
+              doc="Read a 32 bit little endian floating point value into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_float32_be"
+              c:identifier="gst_byte_reader_get_float32_be"
+              doc="Read a 32 bit big endian floating point value into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_float64_le"
+              c:identifier="gst_byte_reader_get_float64_le"
+              doc="Read a 64 bit little endian floating point value into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_float64_be"
+              c:identifier="gst_byte_reader_get_float64_be"
+              doc="Read a 64 bit big endian floating point value into @val
+and update the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_float32_le"
+              c:identifier="gst_byte_reader_peek_float32_le"
+              doc="Read a 32 bit little endian floating point value into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_float32_be"
+              c:identifier="gst_byte_reader_peek_float32_be"
+              doc="Read a 32 bit big endian floating point value into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_float64_le"
+              c:identifier="gst_byte_reader_peek_float64_le"
+              doc="Read a 64 bit little endian floating point value into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_float64_be"
+              c:identifier="gst_byte_reader_peek_float64_be"
+              doc="Read a 64 bit big endian floating point value into @val
+but keep the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup_data"
+              c:identifier="gst_byte_reader_dup_data"
+              doc="Returns a newly-allocated copy of the current data
+position if at least @size bytes are left and
+updates the current position."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint8" c:type="guint8**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_data"
+              c:identifier="gst_byte_reader_get_data"
+              doc="Returns a constant pointer to the current data
+position if at least @size bytes are left and
+updates the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint8" c:type="guint8**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_data"
+              c:identifier="gst_byte_reader_peek_data"
+              doc="Returns a constant pointer to the current data
+position if at least @size bytes are left and
+keeps the current position."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="val" direction="out" transfer-ownership="full">
+            <type name="uint8" c:type="guint8**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup_string_utf8"
+              c:identifier="gst_byte_reader_dup_string_utf8"
+              doc="FIXME:Reads (copies) a NUL-terminated string in the #GstByteReader instance,
+advancing the current position to the byte after the string. This will work
+for any NUL-terminated string with a character width of 8 bits, so ASCII,
+UTF-8, ISO-8859-N etc. No input checking for valid UTF-8 is done.
+This function will fail if no NUL-terminator was found in in the data.
+string put into @str must be freed with g_free() when no longer needed."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup_string_utf16"
+              c:identifier="gst_byte_reader_dup_string_utf16"
+              doc="Returns a newly-allocated copy of the current data position if there is
+a NUL-terminated UTF-16 string in the data (this could be an empty string
+as well), and advances the current position.
+No input checking for valid UTF-16 is done. This function is endianness
+agnostic - you should not assume the UTF-16 characters are in host
+endianness.
+This function will fail if no NUL-terminator was found in in the data.
+byte alignment of the UTF-16 string.
+string put into @str must be freed with g_free() when no longer needed."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" direction="out" transfer-ownership="full">
+            <type name="uint16" c:type="guint16**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup_string_utf32"
+              c:identifier="gst_byte_reader_dup_string_utf32"
+              doc="Returns a newly-allocated copy of the current data position if there is
+a NUL-terminated UTF-32 string in the data (this could be an empty string
+as well), and advances the current position.
+No input checking for valid UTF-32 is done. This function is endianness
+agnostic - you should not assume the UTF-32 characters are in host
+endianness.
+This function will fail if no NUL-terminator was found in in the data.
+byte alignment of the UTF-32 string.
+string put into @str must be freed with g_free() when no longer needed."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="skip_string_utf8"
+              c:identifier="gst_byte_reader_skip_string_utf8"
+              doc="Skips a NUL-terminated string in the #GstByteReader instance, advancing
+the current position to the byte after the string. This will work for
+any NUL-terminated string with a character width of 8 bits, so ASCII,
+UTF-8, ISO-8859-N etc. No input checking for valid UTF-8 is done.
+This function will fail if no NUL-terminator was found in in the data."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="skip_string_utf16"
+              c:identifier="gst_byte_reader_skip_string_utf16"
+              doc="Skips a NUL-terminated UTF-16 string in the #GstByteReader instance,
+advancing the current position to the byte after the string.
+No input checking for valid UTF-16 is done.
+This function will fail if no NUL-terminator was found in in the data."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="skip_string_utf32"
+              c:identifier="gst_byte_reader_skip_string_utf32"
+              doc="Skips a NUL-terminated UTF-32 string in the #GstByteReader instance,
+advancing the current position to the byte after the string.
+No input checking for valid UTF-32 is done.
+This function will fail if no NUL-terminator was found in in the data."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_string_utf8"
+              c:identifier="gst_byte_reader_get_string_utf8"
+              doc="Returns a constant pointer to the current data position if there is
+a NUL-terminated string in the data (this could be just a NUL terminator),
+advancing the current position to the byte after the string. This will work
+for any NUL-terminated string with a character width of 8 bits, so ASCII,
+UTF-8, ISO-8859-N etc.
+No input checking for valid UTF-8 is done.
+This function will fail if no NUL-terminator was found in in the data."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_string_utf8"
+              c:identifier="gst_byte_reader_peek_string_utf8"
+              doc="Returns a constant pointer to the current data position if there is
+a NUL-terminated string in the data (this could be just a NUL terminator).
+The current position will be maintained. This will work for any
+NUL-terminated string with a character width of 8 bits, so ASCII,
+UTF-8, ISO-8859-N etc.
+No input checking for valid UTF-8 is done.
+This function will fail if no NUL-terminator was found in in the data."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="masked_scan_uint32"
+              c:identifier="gst_byte_reader_masked_scan_uint32"
+              doc="position
+Scan for pattern @pattern with applied mask @mask in the byte reader data,
+starting from offset @offset relative to the current position.
+The bytes in @pattern and @mask are interpreted left-to-right, regardless
+of endianness.  All four bytes of the pattern must be present in the
+byte reader data for it to match, even if the first or last bytes are masked
+out.
+It is an error to call this function without making sure that there is
+enough data (offset+size bytes) in the byte reader.
+Example:
+&lt;programlisting&gt;
+// Assume the reader contains 0x00 0x01 0x02 ... 0xfe 0xff
+gst_byte_reader_masked_scan_uint32 (reader, 0xffffffff, 0x00010203, 0, 256);
+// -&gt; returns 0
+gst_byte_reader_masked_scan_uint32 (reader, 0xffffffff, 0x00010203, 1, 255);
+// -&gt; returns -1
+gst_byte_reader_masked_scan_uint32 (reader, 0xffffffff, 0x01020304, 1, 255);
+// -&gt; returns 1
+gst_byte_reader_masked_scan_uint32 (reader, 0xffff, 0x0001, 0, 256);
+// -&gt; returns -1
+gst_byte_reader_masked_scan_uint32 (reader, 0xffff, 0x0203, 0, 256);
+// -&gt; returns 0
+gst_byte_reader_masked_scan_uint32 (reader, 0xffff0000, 0x02030000, 0, 256);
+// -&gt; returns 2
+gst_byte_reader_masked_scan_uint32 (reader, 0xffff0000, 0x02030000, 0, 4);
+// -&gt; returns -1
+&lt;/programlisting&gt;"
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="mask" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="pattern" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="ByteWriter"
+            c:type="GstByteWriter"
+            doc="A byte writer instance.">
+      <field name="parent" writable="1">
+        <type name="ByteReader" c:type="GstByteReader"/>
+      </field>
+      <field name="alloc_size" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="fixed" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="owned" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_byte_writer_new"
+                   doc="Creates a new, empty #GstByteWriter instance"
+                   version="0.10.26">
+        <return-value transfer-ownership="full">
+          <type name="ByteWriter" c:type="GstByteWriter*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_size"
+                   c:identifier="gst_byte_writer_new_with_size"
+                   doc="Creates a new #GstByteWriter instance with the given
+initial data size."
+                   version="0.10.26">
+        <return-value transfer-ownership="full">
+          <type name="ByteWriter" c:type="GstByteWriter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="fixed" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_data"
+                   c:identifier="gst_byte_writer_new_with_data"
+                   doc="Creates a new #GstByteWriter instance with the given
+memory area. If @initialized is %TRUE it is possible to
+read @size bytes from the #GstByteWriter from the beginning."
+                   version="0.10.26">
+        <return-value transfer-ownership="full">
+          <type name="ByteWriter" c:type="GstByteWriter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="initialized" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_buffer"
+                   c:identifier="gst_byte_writer_new_with_buffer"
+                   doc="Creates a new #GstByteWriter instance with the given
+buffer. If @initialized is %TRUE it is possible to
+read the complete buffer from the #GstByteWriter from the beginning.
+&lt;note&gt;@buffer must be writable&lt;/note&gt;"
+                   version="0.10.26">
+        <return-value transfer-ownership="full">
+          <type name="ByteWriter" c:type="GstByteWriter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="initialized" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="init"
+              c:identifier="gst_byte_writer_init"
+              doc="Initializes @writer to an empty instance"
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="init_with_size"
+              c:identifier="gst_byte_writer_init_with_size"
+              doc="Initializes @writer with the given initial data size."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="fixed" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_with_data"
+              c:identifier="gst_byte_writer_init_with_data"
+              doc="Initializes @writer with the given
+memory area. If @initialized is %TRUE it is possible to
+read @size bytes from the #GstByteWriter from the beginning."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="initialized" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_with_buffer"
+              c:identifier="gst_byte_writer_init_with_buffer"
+              doc="Initializes @writer with the given
+buffer. If @initialized is %TRUE it is possible to
+read the complete buffer from the #GstByteWriter from the beginning.
+&lt;note&gt;@buffer must be writable&lt;/note&gt;"
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="initialized" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free"
+              c:identifier="gst_byte_writer_free"
+              doc="Frees @writer and all memory allocated by it."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="free_and_get_data"
+              c:identifier="gst_byte_writer_free_and_get_data"
+              doc="Frees @writer and all memory allocated by it except
+the current data, which is returned."
+              version="0.10.26">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="free_and_get_buffer"
+              c:identifier="gst_byte_writer_free_and_get_buffer"
+              doc="Frees @writer and all memory allocated by it except
+the current data, which is returned as #GstBuffer."
+              version="0.10.26">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="reset"
+              c:identifier="gst_byte_writer_reset"
+              doc="Resets @writer and frees the data if it&apos;s
+owned by @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="reset_and_get_data"
+              c:identifier="gst_byte_writer_reset_and_get_data"
+              doc="Resets @writer and returns the current data."
+              version="0.10.26">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="reset_and_get_buffer"
+              c:identifier="gst_byte_writer_reset_and_get_buffer"
+              doc="Resets @writer and returns the current data as buffer."
+              version="0.10.26">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="get_remaining"
+              c:identifier="gst_byte_writer_get_remaining"
+              doc="Returns the remaining size of data that can still be written. If
+-1 is returned the remaining size is only limited by system resources."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="ensure_free_space"
+              c:identifier="gst_byte_writer_ensure_free_space"
+              doc="Checks if enough free space from the current write cursor is
+available and reallocates if necessary."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint8"
+              c:identifier="gst_byte_writer_put_uint8"
+              doc="Writes a unsigned 8 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int8"
+              c:identifier="gst_byte_writer_put_int8"
+              doc="Writes a signed 8 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="int8" c:type="gint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint16_be"
+              c:identifier="gst_byte_writer_put_uint16_be"
+              doc="Writes a unsigned big endian 16 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="uint16" c:type="guint16"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint16_le"
+              c:identifier="gst_byte_writer_put_uint16_le"
+              doc="Writes a unsigned little endian 16 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="uint16" c:type="guint16"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int16_be"
+              c:identifier="gst_byte_writer_put_int16_be"
+              doc="Writes a signed big endian 16 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="int16" c:type="gint16"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int16_le"
+              c:identifier="gst_byte_writer_put_int16_le"
+              doc="Writes a signed little endian 16 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="int16" c:type="gint16"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint24_be"
+              c:identifier="gst_byte_writer_put_uint24_be"
+              doc="Writes a unsigned big endian 24 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint24_le"
+              c:identifier="gst_byte_writer_put_uint24_le"
+              doc="Writes a unsigned little endian 24 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int24_be"
+              c:identifier="gst_byte_writer_put_int24_be"
+              doc="Writes a signed big endian 24 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="int32" c:type="gint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int24_le"
+              c:identifier="gst_byte_writer_put_int24_le"
+              doc="Writes a signed little endian 24 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="int32" c:type="gint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint32_be"
+              c:identifier="gst_byte_writer_put_uint32_be"
+              doc="Writes a unsigned big endian 32 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint32_le"
+              c:identifier="gst_byte_writer_put_uint32_le"
+              doc="Writes a unsigned little endian 32 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int32_be"
+              c:identifier="gst_byte_writer_put_int32_be"
+              doc="Writes a signed big endian 32 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="int32" c:type="gint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int32_le"
+              c:identifier="gst_byte_writer_put_int32_le"
+              doc="Writes a signed little endian 32 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="int32" c:type="gint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint64_be"
+              c:identifier="gst_byte_writer_put_uint64_be"
+              doc="Writes a unsigned big endian 64 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint64_le"
+              c:identifier="gst_byte_writer_put_uint64_le"
+              doc="Writes a unsigned little endian 64 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int64_be"
+              c:identifier="gst_byte_writer_put_int64_be"
+              doc="Writes a signed big endian 64 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int64_le"
+              c:identifier="gst_byte_writer_put_int64_le"
+              doc="Writes a signed little endian 64 bit integer to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_float32_be"
+              c:identifier="gst_byte_writer_put_float32_be"
+              doc="Writes a big endian 32 bit float to @writer."
+              version="0.10.27">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_float32_le"
+              c:identifier="gst_byte_writer_put_float32_le"
+              doc="Writes a little endian 32 bit float to @writer."
+              version="0.10.27">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_float64_be"
+              c:identifier="gst_byte_writer_put_float64_be"
+              doc="Writes a big endian 64 bit float to @writer."
+              version="0.10.27">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_float64_le"
+              c:identifier="gst_byte_writer_put_float64_le"
+              doc="Writes a little endian 64 bit float to @writer."
+              version="0.10.27">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_data"
+              c:identifier="gst_byte_writer_put_data"
+              doc="Writes @size bytes of @data to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fill"
+              c:identifier="gst_byte_writer_fill"
+              doc="Writes @size bytes containing @value to @writer."
+              version="0.10.27">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_string_utf8"
+              c:identifier="gst_byte_writer_put_string_utf8"
+              doc="Writes a null-terminated UTF8 string to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_string_utf16"
+              c:identifier="gst_byte_writer_put_string_utf16"
+              doc="Writes a null-terminated UTF16 string to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" direction="out" transfer-ownership="none">
+            <type name="uint16" c:type="guint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_string_utf32"
+              c:identifier="gst_byte_writer_put_string_utf32"
+              doc="Writes a null-terminated UTF32 string to @writer."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" direction="out" transfer-ownership="none">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="CollectData"
+            c:type="GstCollectData"
+            doc="Structure used by the collect_pads.">
+      <field name="collect" writable="1">
+        <type name="CollectPads" c:type="GstCollectPads*"/>
+      </field>
+      <field name="pad" writable="1">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="buffer" writable="1">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </field>
+      <field name="pos" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="segment" writable="1">
+        <type name="Gst.Segment" c:type="GstSegment"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="flushing" writable="1">
+            <type name="boolean" c:type="gboolean"/>
+          </field>
+          <field name="new_segment" writable="1">
+            <type name="boolean" c:type="gboolean"/>
+          </field>
+          <field name="eos" writable="1">
+            <type name="boolean" c:type="gboolean"/>
+          </field>
+          <field name="refcount" writable="1">
+            <type name="int" c:type="gint"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+    </record>
+    <callback name="CollectDataDestroyNotify"
+              c:type="GstCollectDataDestroyNotify"
+              doc="A function that will be called when the #GstCollectData will be freed.
+It is passed the pointer to the structure and should free any custom
+memory and resources allocated for it."
+              version="0.10.12">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="CollectData" c:type="GstCollectData*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="CollectPads"
+           c:type="GstCollectPads"
+           doc="Collectpads object.
+Note that @data doesn&apos;t contain the complete #GstCollectData list
+at all times and should not be used for iterating them."
+           parent="Gst.Object"
+           glib:type-name="GstCollectPads"
+           glib:get-type="gst_collect_pads_get_type"
+           glib:type-struct="CollectPadsClass">
+      <constructor name="new"
+                   c:identifier="gst_collect_pads_new"
+                   doc="Create a new instance of #GstCollectPads.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="CollectPads" c:type="GstCollectPads*"/>
+        </return-value>
+      </constructor>
+      <method name="set_function"
+              c:identifier="gst_collect_pads_set_function"
+              doc="Set the callback function and user data that will be called when
+all the pads added to the collection have buffers queued.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="CollectPadsFunction" c:type="GstCollectPadsFunction"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_clip_function"
+              c:identifier="gst_collect_pads_set_clip_function"
+              doc="Install a clipping function that is called right after a buffer is received
+on a pad managed by @pads. See #GstCollectDataClipFunction for more info."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clipfunc"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="CollectPadsClipFunction"
+                  c:type="GstCollectPadsClipFunction"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_pad"
+              c:identifier="gst_collect_pads_add_pad"
+              doc="Add a pad to the collection of collect pads. The pad has to be
+a sinkpad. The refcount of the pad is incremented. Use
+gst_collect_pads_remove_pad() to remove the pad from the collection
+again.
+This function will override the chain and event functions of the pad
+along with the element_private data, which is used to store private
+information for the collectpads.
+You specify a size for the returned #GstCollectData structure
+so that you can use it to store additional information.
+The pad will be automatically activated in push mode when @pads is
+started.
+This function calls gst_collect_pads_add_pad() passing a value of NULL
+for destroy_notify.
+if wrong parameters are supplied.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="CollectData" c:type="GstCollectData*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Gst.Pad" c:type="GstPad*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_pad_full"
+              c:identifier="gst_collect_pads_add_pad_full"
+              doc="structure is freed
+Add a pad to the collection of collect pads. The pad has to be
+a sinkpad. The refcount of the pad is incremented. Use
+gst_collect_pads_remove_pad() to remove the pad from the collection
+again.
+You specify a size for the returned #GstCollectData structure
+so that you can use it to store additional information.
+You can also specify a #GstCollectDataDestroyNotify that will be called
+just before the #GstCollectData structure is freed. It is passed the
+pointer to the structure and should free any custom memory and resources
+allocated for it.
+The pad will be automatically activated in push mode when @pads is
+started.
+if wrong parameters are supplied.
+MT safe."
+              version="0.10.12">
+        <return-value transfer-ownership="full">
+          <type name="CollectData" c:type="GstCollectData*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Gst.Pad" c:type="GstPad*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="destroy_notify"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="CollectDataDestroyNotify"
+                  c:type="GstCollectDataDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_pad"
+              c:identifier="gst_collect_pads_remove_pad"
+              doc="Remove a pad from the collection of collect pads. This function will also
+free the #GstCollectData and all the resources that were allocated with
+gst_collect_pads_add_pad().
+The pad will be deactivated automatically when @pads is stopped.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Gst.Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_active"
+              c:identifier="gst_collect_pads_is_active"
+              doc="Check if a pad is active.
+This function is currently not implemented.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Gst.Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="collect"
+              c:identifier="gst_collect_pads_collect"
+              doc="Collect data on all pads. This function is usually called
+from a #GstTask function in an element.
+This function is currently not implemented.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+      </method>
+      <method name="collect_range"
+              c:identifier="gst_collect_pads_collect_range"
+              doc="Collect data with @offset and @length on all pads. This function
+is typically called in the getrange function of an element.
+This function is currently not implemented.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start"
+              c:identifier="gst_collect_pads_start"
+              doc="Starts the processing of data in the collect_pads.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="stop"
+              c:identifier="gst_collect_pads_stop"
+              doc="Stops the processing of data in the collect_pads. this function
+will also unblock any blocking operations.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_flushing"
+              c:identifier="gst_collect_pads_set_flushing"
+              doc="Change the flushing state of all the pads in the collection. No pad
+is able to accept anymore data when @flushing is %TRUE. Calling this
+function with @flushing %FALSE makes @pads accept data again.
+MT safe."
+              version="0.10.7.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flushing" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek"
+              c:identifier="gst_collect_pads_peek"
+              doc="Peek at the buffer currently queued in @data. This function
+should be called with the @pads LOCK held, such as in the callback
+handler.
+should unref the buffer after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="CollectData" c:type="GstCollectData*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pop"
+              c:identifier="gst_collect_pads_pop"
+              doc="Pop the buffer currently queued in @data. This function
+should be called with the @pads LOCK held, such as in the callback
+handler.
+You should unref the buffer after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="CollectData" c:type="GstCollectData*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="available"
+              c:identifier="gst_collect_pads_available"
+              doc="Query how much bytes can be read from each queued buffer. This means
+that the result of this call is the maximum number of bytes that can
+be read from each of the pads.
+This function should be called with @pads LOCK held, such as
+in the callback.
+returns 0 if a pad has no queued buffer.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="read"
+              c:identifier="gst_collect_pads_read"
+              doc="Get a pointer in @bytes where @size bytes can be read from the
+given pad @data.
+This function should be called with @pads LOCK held, such as
+in the callback.
+memory pointed to by @bytes. This can be less than @size and
+is 0 if the pad is end-of-stream.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="CollectData" c:type="GstCollectData*"/>
+          </parameter>
+          <parameter name="bytes" direction="out" transfer-ownership="full">
+            <type name="uint8" c:type="guint8**"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_buffer"
+              c:identifier="gst_collect_pads_read_buffer"
+              doc="Get a buffer of @size bytes from the given pad @data.
+This function should be called with @pads LOCK held, such as in the callback.
+A return of NULL signals that the pad is end-of-stream.
+Unref the buffer after use.
+MT safe."
+              version="0.10.18">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="CollectData" c:type="GstCollectData*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_buffer"
+              c:identifier="gst_collect_pads_take_buffer"
+              doc="Get a buffer of @size bytes from the given pad @data. Flushes the amount
+of read bytes.
+This function should be called with @pads LOCK held, such as in the callback.
+A return of NULL signals that the pad is end-of-stream.
+Unref the buffer after use.
+MT safe."
+              version="0.10.18">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="CollectData" c:type="GstCollectData*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="flush"
+              c:identifier="gst_collect_pads_flush"
+              doc="Flush @size bytes from the pad @data.
+This function should be called with @pads LOCK held, such as
+in the callback.
+is 0 if the pad was end-of-stream.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="CollectData" c:type="GstCollectData*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Gst.Object" c:type="GstObject"/>
+      </field>
+      <field name="data">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="cookie">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="cond">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="func">
+        <type name="CollectPadsFunction" c:type="GstCollectPadsFunction"/>
+      </field>
+      <field name="user_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="numpads">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="queuedpads">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="eospads">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="started">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="pad_lock" writable="1">
+            <type name="GLib.Mutex" c:type="GMutex*"/>
+          </field>
+          <field name="pad_list" writable="1">
+            <type name="GLib.SList" c:type="GSList*"/>
+          </field>
+          <field name="pad_cookie" writable="1">
+            <type name="uint32" c:type="guint32"/>
+          </field>
+          <field name="priv" writable="1">
+            <type name="CollectPadsPrivate" c:type="GstCollectPadsPrivate*"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+    </class>
+    <record name="CollectPadsClass"
+            c:type="GstCollectPadsClass"
+            glib:is-gtype-struct-for="CollectPads">
+      <field name="parent_class">
+        <type name="Gst.ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="CollectPadsClipFunction"
+              c:type="GstCollectPadsClipFunction"
+              doc="A function that will be called when @buffer is received on the pad managed
+by @data in the collecpad object @pads.
+The function should use the segment of @data and the negotiated media type on
+the pad to perform clipping of @buffer.
+This function takes ownership of @buffer.
+the buffer has been clipped completely."
+              version="0.10.26">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pads" transfer-ownership="none">
+          <type name="CollectPads" c:type="GstCollectPads*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="CollectData" c:type="GstCollectData*"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="CollectPadsFunction"
+              c:type="GstCollectPadsFunction"
+              doc="A function that will be called when all pads have received data.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="pads" transfer-ownership="none">
+          <type name="CollectPads" c:type="GstCollectPads*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="CollectPadsPrivate" c:type="GstCollectPadsPrivate">
+    </record>
+    <class name="DataQueue"
+           c:type="GstDataQueue"
+           doc="Opaque #GstDataQueue structure."
+           parent="GObject.Object"
+           glib:type-name="GstDataQueue"
+           glib:get-type="gst_data_queue_get_type"
+           glib:type-struct="DataQueueClass">
+      <constructor name="new" c:identifier="gst_data_queue_new" doc="or not.">
+        <return-value transfer-ownership="full">
+          <type name="DataQueue" c:type="GstDataQueue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="checkfull"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <type name="DataQueueCheckFullFunction"
+                  c:type="GstDataQueueCheckFullFunction"/>
+          </parameter>
+          <parameter name="checkdata" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_full"
+                   c:identifier="gst_data_queue_new_full"
+                   doc="or not.
+Creates a new #GstDataQueue. The difference with @gst_data_queue_new is that it will
+not emit the &apos;full&apos; and &apos;empty&apos; signals, but instead calling directly @fullcallback
+or @emptycallback."
+                   version="0.10.26">
+        <return-value transfer-ownership="full">
+          <type name="DataQueue" c:type="GstDataQueue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="checkfull" transfer-ownership="none" scope="call">
+            <type name="DataQueueCheckFullFunction"
+                  c:type="GstDataQueueCheckFullFunction"/>
+          </parameter>
+          <parameter name="fullcallback"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="DataQueueFullCallback"
+                  c:type="GstDataQueueFullCallback"/>
+          </parameter>
+          <parameter name="emptycallback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="3">
+            <type name="DataQueueEmptyCallback"
+                  c:type="GstDataQueueEmptyCallback"/>
+          </parameter>
+          <parameter name="checkdata" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="push"
+              c:identifier="gst_data_queue_push"
+              doc="Pushes a #GstDataQueueItem (or a structure that begins with the same fields)
+on the @queue. If the @queue is full, the call will block until space is
+available, OR the @queue is set to flushing state.
+MT safe.
+Note that this function has slightly different semantics than gst_pad_push()
+the #GstMiniObject contained in @item if the push was successful. If FALSE
+is returned, the caller is responsible for freeing @item and its contents.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="item" transfer-ownership="none">
+            <type name="DataQueueItem" c:type="GstDataQueueItem*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pop"
+              c:identifier="gst_data_queue_pop"
+              doc="Retrieves the first @item available on the @queue. If the queue is currently
+empty, the call will block until at least one item is available, OR the
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="item" transfer-ownership="none">
+            <type name="DataQueueItem" c:type="GstDataQueueItem**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="flush"
+              c:identifier="gst_data_queue_flush"
+              doc="Flushes all the contents of the @queue. Any call to #gst_data_queue_push and
+#gst_data_queue_pop will be released.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_flushing"
+              c:identifier="gst_data_queue_set_flushing"
+              doc="Sets the queue to flushing state if @flushing is #TRUE. If set to flushing
+state, any incoming data on the @queue will be discarded. Any call currently
+blocking on #gst_data_queue_push or #gst_data_queue_pop will return straight
+away with a return value of #FALSE. While the @queue is in flushing state,
+all calls to those two functions will return #FALSE.
+MT Safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flushing" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="drop_head"
+              c:identifier="gst_data_queue_drop_head"
+              doc="Pop and unref the head-most #GstMiniObject with the given #GType.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_full"
+              c:identifier="gst_data_queue_is_full"
+              doc="Queries if @queue is full. This check will be done using the
+#GstDataQueueCheckFullFunction registered with @queue.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_empty"
+              c:identifier="gst_data_queue_is_empty"
+              doc="Queries if there are any items in the @queue.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_level"
+              c:identifier="gst_data_queue_get_level"
+              doc="Get the current level of the queue.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="level" transfer-ownership="none">
+            <type name="DataQueueSize" c:type="GstDataQueueSize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="limits_changed"
+              c:identifier="gst_data_queue_limits_changed"
+              doc="Inform the queue that the limits for the fullness check have changed and that
+any blocking gst_data_queue_push() should be unblocked to recheck the limts.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="current-level-bytes">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="current-level-time">
+        <type name="uint64" c:type="guint64"/>
+      </property>
+      <property name="current-level-visible">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="queue">
+        <type name="GLib.Queue" c:type="GQueue*"/>
+      </field>
+      <field name="cur_level">
+        <type name="DataQueueSize" c:type="GstDataQueueSize"/>
+      </field>
+      <field name="checkfull">
+        <type name="DataQueueCheckFullFunction"
+              c:type="GstDataQueueCheckFullFunction"/>
+      </field>
+      <field name="checkdata">
+        <type name="any" c:type="gpointer*"/>
+      </field>
+      <field name="qlock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="item_add">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="item_del">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="flushing">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="fullcallback">
+        <type name="DataQueueFullCallback" c:type="GstDataQueueFullCallback"/>
+      </field>
+      <field name="emptycallback">
+        <type name="DataQueueEmptyCallback"
+              c:type="GstDataQueueEmptyCallback"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="any"/>
+        </array>
+      </field>
+      <glib:signal name="empty"
+                   doc="Reports that the queue became empty (empty).
+A queue is empty if the total amount of visible items inside it (num-visible, time,
+size) is lower than the boundary values which can be set through the GObject
+properties.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="full"
+                   doc="Reports that the queue became full (full).
+A queue is full if the total amount of data inside it (num-visible, time,
+size) is higher than the boundary values which can be set through the GObject
+properties.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <callback name="DataQueueCheckFullFunction"
+              c:type="GstDataQueueCheckFullFunction"
+              doc="The prototype of the function used to inform the queue that it should be
+considered as full.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="DataQueue" c:type="GstDataQueue*"/>
+        </parameter>
+        <parameter name="visible" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="bytes" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="time" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="checkdata" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="DataQueueClass"
+            c:type="GstDataQueueClass"
+            glib:is-gtype-struct-for="DataQueue">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="empty">
+        <callback name="empty" c:type="empty">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="queue" transfer-ownership="none">
+              <type name="DataQueue" c:type="GstDataQueue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="full">
+        <callback name="full" c:type="full">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="queue" transfer-ownership="none">
+              <type name="DataQueue" c:type="GstDataQueue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="DataQueueEmptyCallback" c:type="GstDataQueueEmptyCallback">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="DataQueue" c:type="GstDataQueue*"/>
+        </parameter>
+        <parameter name="checkdata" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="DataQueueFullCallback" c:type="GstDataQueueFullCallback">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="DataQueue" c:type="GstDataQueue*"/>
+        </parameter>
+        <parameter name="checkdata" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="DataQueueItem"
+            c:type="GstDataQueueItem"
+            doc="#GST_CLOCK_TIME_NONE.
+This function should also drop the reference to @object the owner of the
+#GstDataQueueItem is assumed to hold.
+Structure used by #GstDataQueue. You can supply a different structure, as
+long as the top of the structure is identical to this structure.">
+      <field name="object" writable="1">
+        <type name="Gst.MiniObject" c:type="GstMiniObject*"/>
+      </field>
+      <field name="size" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="duration" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="visible" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="destroy" writable="1">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+    </record>
+    <record name="DataQueueSize"
+            c:type="GstDataQueueSize"
+            doc="Structure describing the size of a queue.">
+      <field name="visible" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="bytes" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+    </record>
+    <class name="PushSrc"
+           c:type="GstPushSrc"
+           doc="The opaque #GstPushSrc data structure."
+           parent="BaseSrc"
+           glib:type-name="GstPushSrc"
+           glib:get-type="gst_push_src_get_type"
+           glib:type-struct="PushSrcClass">
+      <virtual-method name="create">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <field name="parent">
+        <type name="BaseSrc" c:type="GstBaseSrc"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="PushSrcClass"
+            c:type="GstPushSrcClass"
+            glib:is-gtype-struct-for="PushSrc">
+      <field name="parent_class">
+        <type name="BaseSrcClass" c:type="GstBaseSrcClass"/>
+      </field>
+      <field name="create">
+        <callback name="create" c:type="create">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="PushSrc" c:type="GstPushSrc*"/>
+            </parameter>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <constant name="TRANSFORM_SINK_NAME" value="sink">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TRANSFORM_SRC_NAME" value="src">
+      <type name="utf8"/>
+    </constant>
+    <callback name="TypeFindHelperGetRangeFunction"
+              c:type="GstTypeFindHelperGetRangeFunction"
+              doc="This function will be called by gst_type_find_helper_get_range() when
+typefinding functions request to peek at the data of a stream at certain
+offsets. If this function returns GST_FLOW_OK, the result buffer will be
+stored in @buffer. The  contents of @buffer is invalid for any other
+return value.
+This function is supposed to behave exactly like a #GstPadGetRangeFunction.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <type name="Gst.Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer**"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="type_find_helper"
+              c:identifier="gst_type_find_helper"
+              doc="Tries to find what type of data is flowing from the given source #GstPad.
+Returns #NULL if no #GstCaps matches the data stream.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="src" transfer-ownership="none">
+          <type name="Gst.Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_find_helper_for_buffer"
+              c:identifier="gst_type_find_helper_for_buffer"
+              doc="Tries to find what type of data is contained in the given #GstBuffer, the
+assumption being that the buffer represents the beginning of the stream or
+file.
+All available typefinders will be called on the data in order of rank. If
+a typefinding function returns a probability of #GST_TYPE_FIND_MAXIMUM,
+typefinding is stopped immediately and the found caps will be returned
+right away. Otherwise, all available typefind functions will the tried,
+and the caps with the highest probability will be returned, or #NULL if
+the content of the buffer could not be identified.
+be found. The caller should free the caps returned with gst_caps_unref().">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <type name="Gst.Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="prob" transfer-ownership="none">
+          <type name="Gst.TypeFindProbability"
+                c:type="GstTypeFindProbability*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_find_helper_for_extension"
+              c:identifier="gst_type_find_helper_for_extension"
+              doc="Tries to find the best #GstCaps associated with @extension.
+All available typefinders will be checked against the extension in order
+of rank. The caps of the first typefinder that can handle @extension will be
+returned.
+be found. The caller should free the caps returned with gst_caps_unref()."
+              version="0.10.23">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <type name="Gst.Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="extension" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_find_helper_get_range"
+              c:identifier="gst_type_find_helper_get_range"
+              doc="to access data at random offsets when doing the typefinding
+Utility function to do pull-based typefinding. Unlike gst_type_find_helper()
+however, this function will use the specified function @func to obtain the
+data needed by the typefind functions, rather than operating on a given
+source pad. This is useful mostly for elements like tag demuxers which
+strip off data at the beginning and/or end of a file and want to typefind
+the stripped data stream before adding their own source pad (the specified
+callback can then call the upstream peer pad with offsets adjusted for the
+tag size, for example).
+Returns #NULL if no #GstCaps matches the data stream.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <type name="Gst.Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="TypeFindHelperGetRangeFunction"
+                c:type="GstTypeFindHelperGetRangeFunction"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="prob" transfer-ownership="none">
+          <type name="Gst.TypeFindProbability"
+                c:type="GstTypeFindProbability*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_find_helper_get_range_ext"
+              c:identifier="gst_type_find_helper_get_range_ext"
+              doc="to access data at random offsets when doing the typefinding
+Utility function to do pull-based typefinding. Unlike gst_type_find_helper()
+however, this function will use the specified function @func to obtain the
+data needed by the typefind functions, rather than operating on a given
+source pad. This is useful mostly for elements like tag demuxers which
+strip off data at the beginning and/or end of a file and want to typefind
+the stripped data stream before adding their own source pad (the specified
+callback can then call the upstream peer pad with offsets adjusted for the
+tag size, for example).
+When @extension is not NULL, this function will first try the typefind
+functions for the given extension, which might speed up the typefinding
+in many cases.
+Returns #NULL if no #GstCaps matches the data stream."
+              version="0.10.26">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <type name="Gst.Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="TypeFindHelperGetRangeFunction"
+                c:type="GstTypeFindHelperGetRangeFunction"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="extension" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="prob" transfer-ownership="none">
+          <type name="Gst.TypeFindProbability"
+                c:type="GstTypeFindProbability*"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/base/base.factor b/extra/gstreamer/base/base.factor
new file mode 100644 (file)
index 0000000..445d506
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.base.ffi ;
+IN: gstreamer.base
+
diff --git a/extra/gstreamer/base/ffi/ffi.factor b/extra/gstreamer/base/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..1f15ecf
--- /dev/null
@@ -0,0 +1,16 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries combinators kernel system
+gobject-introspection glib.ffi gstreamer.ffi ;
+IN: gstreamer.base.ffi
+
+<<
+"gstreamer.base" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstbase-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gstreamer/base/GstBase-0.10.gir
+
diff --git a/extra/gstreamer/controller/GstController-0.10.gir b/extra/gstreamer/controller/GstController-0.10.gir
new file mode 100644 (file)
index 0000000..137e69a
--- /dev/null
@@ -0,0 +1,1005 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.0"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <c:include name="gst/controller/gstcontroller.h"/>
+  <c:include name="gst/controller/gstcontrolsource.h"/>
+  <c:include name="gst/controller/gstinterpolationcontrolsource.h"/>
+  <c:include name="gst/controller/gstlfocontrolsource.h"/>
+  <namespace name="GstController"
+             version="0.10"
+             shared-library="libgstcontroller-0.10.so.0"
+             c:prefix="Gst">
+    <class name="ControlSource"
+           c:type="GstControlSource"
+           doc="The instance structure of #GstControlSource."
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GstControlSource"
+           glib:get-type="gst_control_source_get_type"
+           glib:type-struct="ControlSourceClass">
+      <method name="get_value"
+              c:identifier="gst_control_source_get_value"
+              doc="Gets the value for this #GstControlSource at a given timestamp.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_array"
+              c:identifier="gst_control_source_get_value_array"
+              doc="Gets an array of values for one element property.
+All fields of @value_array must be filled correctly. Especially the
+of values.
+The type of the values in the array is the same as the property&apos;s type.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="value_array" transfer-ownership="none">
+            <type name="ValueArray" c:type="GstValueArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="bind"
+              c:identifier="gst_control_source_bind"
+              doc="Binds a #GstControlSource to a specific property. This must be called only once for a
+#GstControlSource.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="get_value">
+        <type name="ControlSourceGetValue" c:type="GstControlSourceGetValue"/>
+      </field>
+      <field name="get_value_array">
+        <type name="ControlSourceGetValueArray"
+              c:type="GstControlSourceGetValueArray"/>
+      </field>
+      <field name="bound">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <callback name="ControlSourceBind" c:type="GstControlSourceBind">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="self" transfer-ownership="none">
+          <type name="ControlSource" c:type="GstControlSource*"/>
+        </parameter>
+        <parameter name="pspec" transfer-ownership="none">
+          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="ControlSourceClass"
+            c:type="GstControlSourceClass"
+            glib:is-gtype-struct-for="ControlSource"
+            doc="The class structure of #GstControlSource.">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="bind">
+        <type name="ControlSourceBind" c:type="GstControlSourceBind"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="ControlSourceGetValue" c:type="GstControlSourceGetValue">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="self" transfer-ownership="none">
+          <type name="ControlSource" c:type="GstControlSource*"/>
+        </parameter>
+        <parameter name="timestamp" transfer-ownership="none">
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ControlSourceGetValueArray"
+              c:type="GstControlSourceGetValueArray">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="self" transfer-ownership="none">
+          <type name="ControlSource" c:type="GstControlSource*"/>
+        </parameter>
+        <parameter name="timestamp" transfer-ownership="none">
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </parameter>
+        <parameter name="value_array" transfer-ownership="none">
+          <type name="ValueArray" c:type="GstValueArray*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="Controller"
+           c:type="GstController"
+           doc="The instance structure of GstController"
+           parent="GObject.Object"
+           glib:type-name="GstController"
+           glib:get-type="gst_controller_get_type"
+           glib:type-struct="ControllerClass">
+      <constructor name="new_list"
+                   c:identifier="gst_controller_new_list"
+                   doc="Creates a new GstController for the given object&apos;s properties">
+        <return-value transfer-ownership="full">
+          <type name="Controller" c:type="GstController*"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="list" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new"
+                   c:identifier="gst_controller_new"
+                   doc="Creates a new GstController for the given object&apos;s properties">
+        <return-value transfer-ownership="full">
+          <type name="Controller" c:type="GstController*"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="init"
+                c:identifier="gst_controller_init"
+                doc="Initializes the use of the controller library. Suggested to be called right
+after gst_init().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="argc" direction="out" transfer-ownership="full">
+            <type name="int" c:type="int*"/>
+          </parameter>
+          <parameter name="argv" transfer-ownership="none">
+            <type name="utf8" c:type="char***"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="remove_properties_list"
+              c:identifier="gst_controller_remove_properties_list"
+              doc="Removes the given object properties from the controller">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_properties"
+              c:identifier="gst_controller_remove_properties"
+              doc="Removes the given object properties from the controller">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_disabled"
+              c:identifier="gst_controller_set_disabled"
+              doc="or not.
+This function is used to disable all properties of the #GstController
+for some time, i.e. gst_controller_sync_values() will do nothing."
+              version="0.10.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="disabled" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_property_disabled"
+              c:identifier="gst_controller_set_property_disabled"
+              doc="or not.
+This function is used to disable the #GstController on a property for
+some time, i.e. gst_controller_sync_values() will do nothing for the
+property."
+              version="0.10.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="disabled" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_control_source"
+              c:identifier="gst_controller_set_control_source"
+              doc="Sets the #GstControlSource for @property_name. If there already was a #GstControlSource
+for this property it will be unreferenced.
+couldn&apos;t be bound to the property, %TRUE if everything worked as expected."
+              version="0.10.14">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="csource" transfer-ownership="none">
+            <type name="ControlSource" c:type="GstControlSource*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_control_source"
+              c:identifier="gst_controller_get_control_source"
+              doc="Gets the corresponding #GstControlSource for the property. This should be unreferenced
+again after use.
+controlled by this controller or no #GstControlSource was assigned yet."
+              version="0.10.14">
+        <return-value transfer-ownership="full">
+          <type name="ControlSource" c:type="GstControlSource*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="suggest_next_sync"
+              c:identifier="gst_controller_suggest_next_sync"
+              doc="Returns a suggestion for timestamps where buffers should be split
+to get best controller results.
+if no control-rate was set."
+              version="0.10.13">
+        <return-value transfer-ownership="full">
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="sync_values"
+              c:identifier="gst_controller_sync_values"
+              doc="Sets the properties of the element, according to the controller that (maybe)
+handles them and for the given timestamp.
+If this function fails, it is most likely the application developers fault.
+Most probably the control sources are not setup correctly.
+properties, %FALSE otherwise">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get"
+              c:identifier="gst_controller_get"
+              doc="Gets the value for the given controller-handled property at the requested
+time.
+property isn&apos;t handled by the controller">
+        <return-value transfer-ownership="full">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_arrays"
+              c:identifier="gst_controller_get_value_arrays"
+              doc="Function to be able to get an array of values for one or more given element
+properties.
+All fields of the %GstValueArray in the list must be filled correctly.
+Especially the GstValueArray-&gt;values arrays must be big enough to keep
+the requested amount of values.
+The types of the values in the array are the same as the property&apos;s type.
+&lt;note&gt;&lt;para&gt;This doesn&apos;t modify the controlled GObject properties!&lt;/para&gt;&lt;/note&gt;">
+        <return-value transfer-ownership="none"
+                      doc="could be filled, %FALSE otherwise">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="value_arrays" transfer-ownership="none">
+            <type name="GLib.SList" c:type="GSList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_array"
+              c:identifier="gst_controller_get_value_array"
+              doc="Function to be able to get an array of values for one element property.
+All fields of @value_array must be filled correctly. Especially the
+of values.
+The type of the values in the array is the same as the property&apos;s type.
+&lt;note&gt;&lt;para&gt;This doesn&apos;t modify the controlled GObject property!&lt;/para&gt;&lt;/note&gt;">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="value_array" transfer-ownership="none">
+            <type name="ValueArray" c:type="GstValueArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set"
+              c:identifier="gst_controller_set"
+              doc="Set the value of given controller-handled property at a certain time.
+directly."
+              deprecated="Use #GstControlSource, for example #GstInterpolationControlSource">
+        <return-value transfer-ownership="none" doc="TRUE otherwise">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_list"
+              c:identifier="gst_controller_set_from_list"
+              doc="Sets multiple timed values at once.
+directly."
+              deprecated="Use #GstControlSource, for example #GstInterpolationControlSource">
+        <return-value transfer-ownership="none" doc="%TRUE otherwise">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="timedvalues" transfer-ownership="none">
+            <type name="GLib.SList" c:type="GSList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset"
+              c:identifier="gst_controller_unset"
+              doc="Used to remove the value of given controller-handled property at a certain
+time.
+directly."
+              deprecated="Use #GstControlSource, for example #GstInterpolationControlSource">
+        <return-value transfer-ownership="none" doc="%TRUE otherwise">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_all"
+              c:identifier="gst_controller_unset_all"
+              doc="Used to remove all time-stamped values of given controller-handled property
+directly.
+by controller), %TRUE otherwise"
+              version="0.10.5"
+              deprecated="Use #GstControlSource, for example #GstInterpolationControlSource">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_all"
+              c:identifier="gst_controller_get_all"
+              doc="Returns a read-only copy of the list of #GstTimedValue for the given property.
+Free the list after done with it.
+&lt;note&gt;&lt;para&gt;This doesn&apos;t modify the controlled GObject property!&lt;/para&gt;&lt;/note&gt;
+directly."
+              deprecated="Use #GstControlSource, for example #GstInterpolationControlSource">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_interpolation_mode"
+              c:identifier="gst_controller_set_interpolation_mode"
+              doc="Sets the given interpolation mode on the given property.
+&lt;note&gt;&lt;para&gt;User interpolation is not yet available and quadratic interpolation
+is deprecated and maps to cubic interpolation.&lt;/para&gt;&lt;/note&gt;
+directly."
+              deprecated="Use #GstControlSource, for example #GstInterpolationControlSource">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="InterpolateMode" c:type="GstInterpolateMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="control-rate" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="properties">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject*"/>
+      </field>
+      <field name="priv">
+        <type name="ControllerPrivate" c:type="GstControllerPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="ControllerClass"
+            c:type="GstControllerClass"
+            glib:is-gtype-struct-for="Controller">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="ControllerPrivate" c:type="GstControllerPrivate">
+    </record>
+    <enumeration name="InterpolateMode"
+                 doc="except for times with specific values
+The various interpolation modes available."
+                 c:type="GstInterpolateMode">
+      <member name="none" value="0" c:identifier="GST_INTERPOLATE_NONE"/>
+      <member name="trigger" value="1" c:identifier="GST_INTERPOLATE_TRIGGER"/>
+      <member name="linear" value="2" c:identifier="GST_INTERPOLATE_LINEAR"/>
+      <member name="quadratic"
+              value="3"
+              c:identifier="GST_INTERPOLATE_QUADRATIC"/>
+      <member name="cubic" value="4" c:identifier="GST_INTERPOLATE_CUBIC"/>
+      <member name="user" value="5" c:identifier="GST_INTERPOLATE_USER"/>
+    </enumeration>
+    <class name="InterpolationControlSource"
+           c:type="GstInterpolationControlSource"
+           doc="The instance structure of #GstControlSource."
+           parent="ControlSource"
+           glib:type-name="GstInterpolationControlSource"
+           glib:get-type="gst_interpolation_control_source_get_type"
+           glib:type-struct="InterpolationControlSourceClass">
+      <constructor name="new"
+                   c:identifier="gst_interpolation_control_source_new"
+                   doc="This returns a new, unbound #GstInterpolationControlSource.">
+        <return-value transfer-ownership="full">
+          <type name="InterpolationControlSource"
+                c:type="GstInterpolationControlSource*"/>
+        </return-value>
+      </constructor>
+      <method name="set_interpolation_mode"
+              c:identifier="gst_interpolation_control_source_set_interpolation_mode"
+              doc="Sets the given interpolation mode.
+&lt;note&gt;&lt;para&gt;User interpolation is not yet available and quadratic interpolation
+is deprecated and maps to cubic interpolation.&lt;/para&gt;&lt;/note&gt;">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="InterpolateMode" c:type="GstInterpolateMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set"
+              c:identifier="gst_interpolation_control_source_set"
+              doc="Set the value of given controller-handled property at a certain time.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_list"
+              c:identifier="gst_interpolation_control_source_set_from_list"
+              doc="Sets multiple timed values at once.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="timedvalues" transfer-ownership="none">
+            <type name="GLib.SList" c:type="GSList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset"
+              c:identifier="gst_interpolation_control_source_unset"
+              doc="Used to remove the value of given controller-handled property at a certain
+time.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_all"
+              c:identifier="gst_interpolation_control_source_unset_all"
+              doc="Used to remove all time-stamped values of given controller-handled property">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_all"
+              c:identifier="gst_interpolation_control_source_get_all"
+              doc="Returns a read-only copy of the list of #GstTimedValue for the given property.
+Free the list after done with it.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="get_count"
+              c:identifier="gst_interpolation_control_source_get_count"
+              doc="Returns the number of control points that are set.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <field name="parent">
+        <type name="ControlSource" c:type="GstControlSource"/>
+      </field>
+      <field name="lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="priv">
+        <type name="InterpolationControlSourcePrivate"
+              c:type="GstInterpolationControlSourcePrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="InterpolationControlSourceClass"
+            c:type="GstInterpolationControlSourceClass"
+            glib:is-gtype-struct-for="InterpolationControlSource">
+      <field name="parent_class">
+        <type name="ControlSourceClass" c:type="GstControlSourceClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="InterpolationControlSourcePrivate"
+            c:type="GstInterpolationControlSourcePrivate">
+    </record>
+    <class name="LFOControlSource"
+           c:type="GstLFOControlSource"
+           doc="The instance structure of #GstControlSource."
+           parent="ControlSource"
+           glib:type-name="GstLFOControlSource"
+           glib:get-type="gst_lfo_control_source_get_type"
+           glib:type-struct="LFOControlSourceClass">
+      <constructor name="new"
+                   c:identifier="gst_lfo_control_source_new"
+                   doc="This returns a new, unbound #GstLFOControlSource.">
+        <return-value transfer-ownership="full">
+          <type name="LFOControlSource" c:type="GstLFOControlSource*"/>
+        </return-value>
+      </constructor>
+      <property name="amplitude" writable="1">
+        <type name="GObject.Value" c:type="GValue"/>
+      </property>
+      <property name="frequency" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="offset" writable="1">
+        <type name="GObject.Value" c:type="GValue"/>
+      </property>
+      <property name="timeshift" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </property>
+      <property name="waveform" writable="1">
+        <type name="LFOWaveform" c:type="GstLFOWaveform"/>
+      </property>
+      <field name="parent">
+        <type name="ControlSource" c:type="GstControlSource"/>
+      </field>
+      <field name="priv">
+        <type name="LFOControlSourcePrivate"
+              c:type="GstLFOControlSourcePrivate*"/>
+      </field>
+      <field name="lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="LFOControlSourceClass"
+            c:type="GstLFOControlSourceClass"
+            glib:is-gtype-struct-for="LFOControlSource">
+      <field name="parent_class">
+        <type name="ControlSourceClass" c:type="GstControlSourceClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="LFOControlSourcePrivate" c:type="GstLFOControlSourcePrivate">
+    </record>
+    <enumeration name="LFOWaveform"
+                 doc="The various waveform modes available."
+                 glib:type-name="GstLFOWaveform"
+                 glib:get-type="gst_lfo_waveform_get_type"
+                 c:type="GstLFOWaveform">
+      <member name="sine"
+              value="0"
+              c:identifier="GST_LFO_WAVEFORM_SINE"
+              glib:nick="sine"/>
+      <member name="square"
+              value="1"
+              c:identifier="GST_LFO_WAVEFORM_SQUARE"
+              glib:nick="square"/>
+      <member name="saw"
+              value="2"
+              c:identifier="GST_LFO_WAVEFORM_SAW"
+              glib:nick="saw"/>
+      <member name="reverse_saw"
+              value="3"
+              c:identifier="GST_LFO_WAVEFORM_REVERSE_SAW"
+              glib:nick="reverse-saw"/>
+      <member name="triangle"
+              value="4"
+              c:identifier="GST_LFO_WAVEFORM_TRIANGLE"
+              glib:nick="triangle"/>
+    </enumeration>
+    <record name="TimedValue"
+            c:type="GstTimedValue"
+            doc="Structure for saving a timestamp and a value.">
+      <field name="timestamp" writable="1">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="GObject.Value" c:type="GValue"/>
+      </field>
+    </record>
+    <record name="ValueArray"
+            c:type="GstValueArray"
+            doc="Structure to receive multiple values at once.">
+      <field name="property_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="nbsamples" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="sample_interval" writable="1">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="values" writable="1">
+        <type name="any" c:type="gpointer*"/>
+      </field>
+    </record>
+    <function name="object_control_properties"
+              c:identifier="gst_object_control_properties"
+              doc="Convenience function for GObject
+Creates a GstController that allows you to dynamically control one, or more, GObject properties.
+If the given GObject already has a GstController, it adds the given properties to the existing
+controller and returns that controller.
+one or more of the given properties aren&apos;t available, or cannot be controlled, for the given element."
+              version="0.9">
+      <return-value transfer-ownership="full">
+        <type name="Controller" c:type="GstController*"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_get_control_rate"
+              c:identifier="gst_object_get_control_rate"
+              doc="Obtain the control-rate for this @object. Audio processing #GstElement
+objects will use this rate to sub-divide their processing loop and call
+gst_object_sync_values() inbetween. The length of the processing segment
+should be up to @control-rate nanoseconds.
+If the @object is not under property control, this will return
+%GST_CLOCK_TIME_NONE. This allows the element to avoid the sub-dividing.
+The control-rate is not expected to change if the element is in
+%GST_STATE_PAUSED or %GST_STATE_PLAYING."
+              version="0.10.10">
+      <return-value transfer-ownership="full">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_get_control_source"
+              c:identifier="gst_object_get_control_source"
+              doc="Gets the corresponding #GstControlSource for the property. This should be unreferenced
+again after use.
+controlled by this controller or no #GstControlSource was assigned yet."
+              version="0.10.14">
+      <return-value transfer-ownership="full">
+        <type name="ControlSource" c:type="GstControlSource*"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="property_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_get_controller"
+              c:identifier="gst_object_get_controller"
+              doc="Gets the controller for the given GObject"
+              version="0.9">
+      <return-value transfer-ownership="full">
+        <type name="Controller" c:type="GstController*"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_get_value_array"
+              c:identifier="gst_object_get_value_array"
+              doc="Function to be able to get an array of values for one element properties
+If the GstValueArray-&gt;values array is NULL, it will be created by the function.
+The type of the values in the array are the same as the property&apos;s type.
+The g_object_* functions are just convenience functions for GObject"
+              version="0.9">
+      <return-value transfer-ownership="none"
+                    doc="could be filled, %FALSE otherwise">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="timestamp" transfer-ownership="none">
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </parameter>
+        <parameter name="value_array" transfer-ownership="none">
+          <type name="ValueArray" c:type="GstValueArray*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_get_value_arrays"
+              c:identifier="gst_object_get_value_arrays"
+              doc="Function to be able to get an array of values for one or more given element
+properties.
+If the GstValueArray-&gt;values array in list nodes is NULL, it will be created
+by the function.
+The type of the values in the array are the same as the property&apos;s type.
+The g_object_* functions are just convenience functions for GObject"
+              version="0.9">
+      <return-value transfer-ownership="none"
+                    doc="could be filled, %FALSE otherwise">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="timestamp" transfer-ownership="none">
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </parameter>
+        <parameter name="value_arrays" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_set_control_rate"
+              c:identifier="gst_object_set_control_rate"
+              doc="Change the control-rate for this @object. Audio processing #GstElement
+objects will use this rate to sub-divide their processing loop and call
+gst_object_sync_values() inbetween. The length of the processing segment
+should be up to @control-rate nanoseconds.
+The control-rate should not change if the element is in %GST_STATE_PAUSED or
+%GST_STATE_PLAYING."
+              version="0.10.10">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="control_rate" transfer-ownership="none">
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_set_control_source"
+              c:identifier="gst_object_set_control_source"
+              doc="Sets the #GstControlSource for @property_name. If there already was a #GstControlSource
+for this property it will be unreferenced.
+couldn&apos;t be bound to the property, %TRUE if everything worked as expected."
+              version="0.10.14">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="property_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="csource" transfer-ownership="none">
+          <type name="ControlSource" c:type="GstControlSource*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_set_controller"
+              c:identifier="gst_object_set_controller"
+              doc="Sets the controller on the given GObject"
+              version="0.9">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="controller" transfer-ownership="none">
+          <type name="Controller" c:type="GstController*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_suggest_next_sync"
+              c:identifier="gst_object_suggest_next_sync"
+              doc="Convenience function for GObject"
+              version="0.10.13">
+      <return-value transfer-ownership="full">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_sync_values"
+              c:identifier="gst_object_sync_values"
+              doc="Convenience function for GObject"
+              version="0.9">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="timestamp" transfer-ownership="none">
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_uncontrol_properties"
+              c:identifier="gst_object_uncontrol_properties"
+              doc="Convenience function for GObject
+Removes the given element&apos;s properties from it&apos;s controller
+controller, %TRUE otherwise"
+              version="0.9">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/controller/controller.factor b/extra/gstreamer/controller/controller.factor
new file mode 100644 (file)
index 0000000..ca101cb
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.controller.ffi ;
+IN: gstreamer.controller
+
diff --git a/extra/gstreamer/controller/ffi/ffi.factor b/extra/gstreamer/controller/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..ea5de2f
--- /dev/null
@@ -0,0 +1,17 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.libraries combinators kernel
+system
+gobject-introspection glib.ffi gobject.ffi gstreamer.ffi ;
+IN: gstreamer.controller.ffi
+
+<<
+"gstreamer.controller" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstcontroller-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gstreamer/controller/GstController-0.10.gir
+
diff --git a/extra/gstreamer/ffi/ffi.factor b/extra/gstreamer/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..ac31e7d
--- /dev/null
@@ -0,0 +1,27 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.syntax alien.libraries combinators kernel
+system
+gobject-introspection glib.ffi gmodule.ffi gobject.ffi ;
+EXCLUDE: alien.c-types => pointer ;
+IN: gstreamer.ffi
+
+<<
+"gstreamer" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstreamer-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+TYPEDEF: gpointer GstClockID
+TYPEDEF: guint64 GstClockTime
+TYPEDEF: gint64 GstClockTimeDiff
+
+! types from libxml2
+TYPEDEF: void* xmlNodePtr
+TYPEDEF: void* xmlDocPtr
+TYPEDEF: void* xmlNsPtr
+
+GIR: vocab:gstreamer/Gst-0.10.gir
+
diff --git a/extra/gstreamer/fft/GstFft-0.10.gir b/extra/gstreamer/fft/GstFft-0.10.gir
new file mode 100644 (file)
index 0000000..578dc59
--- /dev/null
@@ -0,0 +1,462 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.0"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <c:include name="gst/fft/gstfft.h"/>
+  <c:include name="gst/fft/gstfftf32.h"/>
+  <c:include name="gst/fft/gstfftf64.h"/>
+  <c:include name="gst/fft/gstffts16.h"/>
+  <c:include name="gst/fft/gstffts32.h"/>
+  <namespace name="GstFft"
+             version="0.10"
+             shared-library="libgstfft-0.10.so.0"
+             c:prefix="Gst">
+    <record name="FFTF32"
+            c:type="GstFFTF32"
+            doc="Instance structure for #GstFFTF32.">
+      <field name="cfg" writable="1">
+        <type name="any" c:type="void*"/>
+      </field>
+      <field name="inverse" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="len" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="_padding" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_fft_f32_new"
+                   doc="This returns a new #GstFFTF32 instance with the given parameters. It makes
+sense to keep one instance for several calls for speed reasons.
+2, 3 and 5. To get the next number with this characteristics use
+gst_fft_next_fast_length().">
+        <return-value transfer-ownership="full">
+          <type name="FFTF32" c:type="GstFFTF32*"/>
+        </return-value>
+        <parameters>
+          <parameter name="len" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="inverse" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="fft"
+              c:identifier="gst_fft_f32_fft"
+              doc="This performs the FFT on @timedata and puts the result in @freqdata.
+allocating the #GstFFTF32 instance with gst_fft_f32_new().
+domain samples.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timedata" direction="out" transfer-ownership="none">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="freqdata" transfer-ownership="none">
+            <type name="FFTF32Complex" c:type="GstFFTF32Complex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="inverse_fft"
+              c:identifier="gst_fft_f32_inverse_fft"
+              doc="This performs the inverse FFT on @freqdata and puts the result in @timedata.
+while allocating the #GstFFTF32 instance with gst_fft_f32_new().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="freqdata" transfer-ownership="none">
+            <type name="FFTF32Complex" c:type="GstFFTF32Complex*"/>
+          </parameter>
+          <parameter name="timedata" direction="out" transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free"
+              c:identifier="gst_fft_f32_free"
+              doc="This frees the memory allocated for @self.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="window"
+              c:identifier="gst_fft_f32_window"
+              doc="This calls the window function @window on the @timedata sample buffer.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timedata" direction="out" transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="window" transfer-ownership="none">
+            <type name="FFTWindow" c:type="GstFFTWindow"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="FFTF32Complex"
+            c:type="GstFFTF32Complex"
+            doc="Data type for complex numbers composed of
+32 bit float.">
+      <field name="r" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="i" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+    </record>
+    <record name="FFTF64"
+            c:type="GstFFTF64"
+            doc="Instance structure for #GstFFTF64.">
+      <field name="cfg" writable="1">
+        <type name="any" c:type="void*"/>
+      </field>
+      <field name="inverse" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="len" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="_padding" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_fft_f64_new"
+                   doc="This returns a new #GstFFTF64 instance with the given parameters. It makes
+sense to keep one instance for several calls for speed reasons.
+2, 3 and 5. To get the next number with this characteristics use
+gst_fft_next_fast_length().">
+        <return-value transfer-ownership="full">
+          <type name="FFTF64" c:type="GstFFTF64*"/>
+        </return-value>
+        <parameters>
+          <parameter name="len" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="inverse" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="fft"
+              c:identifier="gst_fft_f64_fft"
+              doc="This performs the FFT on @timedata and puts the result in @freqdata.
+allocating the #GstFFTF64 instance with gst_fft_f64_new().
+domain samples.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timedata" direction="out" transfer-ownership="none">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="freqdata" transfer-ownership="none">
+            <type name="FFTF64Complex" c:type="GstFFTF64Complex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="inverse_fft"
+              c:identifier="gst_fft_f64_inverse_fft"
+              doc="This performs the inverse FFT on @freqdata and puts the result in @timedata.
+while allocating the #GstFFTF64 instance with gst_fft_f64_new().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="freqdata" transfer-ownership="none">
+            <type name="FFTF64Complex" c:type="GstFFTF64Complex*"/>
+          </parameter>
+          <parameter name="timedata" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free"
+              c:identifier="gst_fft_f64_free"
+              doc="This frees the memory allocated for @self.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="window"
+              c:identifier="gst_fft_f64_window"
+              doc="This calls the window function @window on the @timedata sample buffer.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timedata" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="window" transfer-ownership="none">
+            <type name="FFTWindow" c:type="GstFFTWindow"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="FFTF64Complex"
+            c:type="GstFFTF64Complex"
+            doc="Data type for complex numbers composed of
+64 bit float.">
+      <field name="r" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="i" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+    </record>
+    <record name="FFTS16"
+            c:type="GstFFTS16"
+            doc="Instance structure for #GstFFTS16.">
+      <field name="cfg" writable="1">
+        <type name="any" c:type="void*"/>
+      </field>
+      <field name="inverse" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="len" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="_padding" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_fft_s16_new"
+                   doc="This returns a new #GstFFTS16 instance with the given parameters. It makes
+sense to keep one instance for several calls for speed reasons.
+2, 3 and 5. To get the next number with this characteristics use
+gst_fft_next_fast_length().">
+        <return-value transfer-ownership="full">
+          <type name="FFTS16" c:type="GstFFTS16*"/>
+        </return-value>
+        <parameters>
+          <parameter name="len" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="inverse" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="fft"
+              c:identifier="gst_fft_s16_fft"
+              doc="This performs the FFT on @timedata and puts the result in @freqdata.
+allocating the #GstFFTS16 instance with gst_fft_s16_new().
+domain samples.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timedata" direction="out" transfer-ownership="none">
+            <type name="int16" c:type="gint16*"/>
+          </parameter>
+          <parameter name="freqdata" transfer-ownership="none">
+            <type name="FFTS16Complex" c:type="GstFFTS16Complex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="inverse_fft"
+              c:identifier="gst_fft_s16_inverse_fft"
+              doc="This performs the inverse FFT on @freqdata and puts the result in @timedata.
+while allocating the #GstFFTS16 instance with gst_fft_s16_new().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="freqdata" transfer-ownership="none">
+            <type name="FFTS16Complex" c:type="GstFFTS16Complex*"/>
+          </parameter>
+          <parameter name="timedata" direction="out" transfer-ownership="full">
+            <type name="int16" c:type="gint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free"
+              c:identifier="gst_fft_s16_free"
+              doc="This frees the memory allocated for @self.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="window"
+              c:identifier="gst_fft_s16_window"
+              doc="This calls the window function @window on the @timedata sample buffer.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timedata" direction="out" transfer-ownership="full">
+            <type name="int16" c:type="gint16*"/>
+          </parameter>
+          <parameter name="window" transfer-ownership="none">
+            <type name="FFTWindow" c:type="GstFFTWindow"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="FFTS16Complex"
+            c:type="GstFFTS16Complex"
+            doc="Data type for complex numbers composed of
+signed 16 bit integers.">
+      <field name="r" writable="1">
+        <type name="int16" c:type="gint16"/>
+      </field>
+      <field name="i" writable="1">
+        <type name="int16" c:type="gint16"/>
+      </field>
+    </record>
+    <record name="FFTS32"
+            c:type="GstFFTS32"
+            doc="Instance structure for #GstFFTS32.">
+      <field name="cfg" writable="1">
+        <type name="any" c:type="void*"/>
+      </field>
+      <field name="inverse" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="len" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="_padding" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_fft_s32_new"
+                   doc="This returns a new #GstFFTS32 instance with the given parameters. It makes
+sense to keep one instance for several calls for speed reasons.
+2, 3 and 5. To get the next number with this characteristics use
+gst_fft_next_fast_length().">
+        <return-value transfer-ownership="full">
+          <type name="FFTS32" c:type="GstFFTS32*"/>
+        </return-value>
+        <parameters>
+          <parameter name="len" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="inverse" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="fft"
+              c:identifier="gst_fft_s32_fft"
+              doc="This performs the FFT on @timedata and puts the result in @freqdata.
+allocating the #GstFFTS32 instance with gst_fft_s32_new().
+domain samples.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timedata" direction="out" transfer-ownership="none">
+            <type name="int32" c:type="gint32*"/>
+          </parameter>
+          <parameter name="freqdata" transfer-ownership="none">
+            <type name="FFTS32Complex" c:type="GstFFTS32Complex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="inverse_fft"
+              c:identifier="gst_fft_s32_inverse_fft"
+              doc="This performs the inverse FFT on @freqdata and puts the result in @timedata.
+while allocating the #GstFFTS32 instance with gst_fft_s32_new().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="freqdata" transfer-ownership="none">
+            <type name="FFTS32Complex" c:type="GstFFTS32Complex*"/>
+          </parameter>
+          <parameter name="timedata" direction="out" transfer-ownership="full">
+            <type name="int32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free"
+              c:identifier="gst_fft_s32_free"
+              doc="This frees the memory allocated for @self.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="window"
+              c:identifier="gst_fft_s32_window"
+              doc="This calls the window function @window on the @timedata sample buffer.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timedata" direction="out" transfer-ownership="full">
+            <type name="int32" c:type="gint32*"/>
+          </parameter>
+          <parameter name="window" transfer-ownership="none">
+            <type name="FFTWindow" c:type="GstFFTWindow"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="FFTS32Complex"
+            c:type="GstFFTS32Complex"
+            doc="Data type for complex numbers composed of
+signed 32 bit integers.">
+      <field name="r" writable="1">
+        <type name="int32" c:type="gint32"/>
+      </field>
+      <field name="i" writable="1">
+        <type name="int32" c:type="gint32"/>
+      </field>
+    </record>
+    <enumeration name="FFTWindow"
+                 doc="The various window functions available."
+                 c:type="GstFFTWindow">
+      <member name="rectangular"
+              value="0"
+              c:identifier="GST_FFT_WINDOW_RECTANGULAR"/>
+      <member name="hamming" value="1" c:identifier="GST_FFT_WINDOW_HAMMING"/>
+      <member name="hann" value="2" c:identifier="GST_FFT_WINDOW_HANN"/>
+      <member name="bartlett"
+              value="3"
+              c:identifier="GST_FFT_WINDOW_BARTLETT"/>
+      <member name="blackman"
+              value="4"
+              c:identifier="GST_FFT_WINDOW_BLACKMAN"/>
+    </enumeration>
+    <function name="next_fast_length"
+              c:identifier="gst_fft_next_fast_length"
+              doc="Returns the next number to @n that is entirely a product
+of 2, 3 and 5. Using this as the @len parameter for
+the different GstFFT types will provide the best performance.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/fft/ffi/ffi.factor b/extra/gstreamer/fft/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..77fd0e3
--- /dev/null
@@ -0,0 +1,17 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.libraries combinators kernel
+system
+gobject-introspection glib.ffi gstreamer.ffi ;
+IN: gstreamer.fft.ffi
+
+<<
+"gstreamer.fft" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstfft-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gstreamer/fft/GstFft-0.10.gir
+
diff --git a/extra/gstreamer/fft/fft.factor b/extra/gstreamer/fft/fft.factor
new file mode 100644 (file)
index 0000000..4ddb102
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.fft.ffi ;
+IN: gstreamer.fft
+
diff --git a/extra/gstreamer/gstreamer.factor b/extra/gstreamer/gstreamer.factor
new file mode 100644 (file)
index 0000000..174fbc6
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.ffi ;
+IN: gstreamer
+
diff --git a/extra/gstreamer/interfaces/GstInterfaces-0.10.gir b/extra/gstreamer/interfaces/GstInterfaces-0.10.gir
new file mode 100644 (file)
index 0000000..06591fa
--- /dev/null
@@ -0,0 +1,3570 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.0"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <c:include name="gst/interfaces/colorbalance.h"/>
+  <c:include name="gst/interfaces/colorbalancechannel.h"/>
+  <c:include name="gst/interfaces/interfaces-enumtypes.h"/>
+  <c:include name="gst/interfaces/mixer.h"/>
+  <c:include name="gst/interfaces/mixeroptions.h"/>
+  <c:include name="gst/interfaces/mixertrack.h"/>
+  <c:include name="gst/interfaces/navigation.h"/>
+  <c:include name="gst/interfaces/propertyprobe.h"/>
+  <c:include name="gst/interfaces/streamvolume.h"/>
+  <c:include name="gst/interfaces/tuner.h"/>
+  <c:include name="gst/interfaces/tunerchannel.h"/>
+  <c:include name="gst/interfaces/tunernorm.h"/>
+  <c:include name="gst/interfaces/videoorientation.h"/>
+  <c:include name="gst/interfaces/xoverlay.h"/>
+  <namespace name="GstInterfaces"
+             version="0.10"
+             shared-library="libgstinterfaces-0.10.so.0"
+             c:prefix="Gst">
+    <interface name="ColorBalance"
+               c:type="GstColorBalance"
+               glib:type-name="GstColorBalance"
+               glib:get-type="gst_color_balance_get_type"
+               glib:type-struct="ColorBalanceClass">
+      <prerequisite name="Gst.ImplementsInterface"/>
+      <prerequisite name="Gst.Element"/>
+      <virtual-method name="list_channels" invoker="list_channels">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_value" invoker="set_value">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="ColorBalanceChannel" c:type="GstColorBalanceChannel*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_value" invoker="get_value">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="ColorBalanceChannel" c:type="GstColorBalanceChannel*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="list_channels"
+              c:identifier="gst_color_balance_list_channels"
+              doc="Retrieve a list of the available channels.
+The list is owned by the #GstColorBalance instance and must not
+be freed.">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="set_value"
+              c:identifier="gst_color_balance_set_value"
+              doc="Sets the current value of the channel to the passed value, which must
+be between min_value and max_value.
+#GstColorBalanceChannel::max_value members of the
+#GstColorBalanceChannel object.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="ColorBalanceChannel" c:type="GstColorBalanceChannel*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value"
+              c:identifier="gst_color_balance_get_value"
+              doc="Retrieve the current value of the indicated channel, between min_value
+and max_value.
+#GstColorBalanceChannel::max_value members of the
+#GstColorBalanceChannel object.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="ColorBalanceChannel" c:type="GstColorBalanceChannel*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_balance_type"
+              c:identifier="gst_color_balance_get_balance_type"
+              doc="Get the #GstColorBalanceType of this implementation."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="ColorBalanceType" c:type="GstColorBalanceType"/>
+        </return-value>
+      </method>
+      <method name="value_changed"
+              c:identifier="gst_color_balance_value_changed"
+              doc="A helper function called by implementations of the GstColorBalance
+interface. It fires the #GstColorBalance::value-changed signal on the
+instance, and the #GstColorBalanceChannel::value-changed signal on the
+channel object.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="ColorBalanceChannel" c:type="GstColorBalanceChannel*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="value-changed"
+                   doc="Fired when the value of the indicated channel has changed.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="ColorBalanceChannel" c:type="GstColorBalanceChannel"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <class name="ColorBalanceChannel"
+           c:type="GstColorBalanceChannel"
+           parent="GObject.Object"
+           glib:type-name="GstColorBalanceChannel"
+           glib:get-type="gst_color_balance_channel_get_type"
+           glib:type-struct="ColorBalanceChannelClass">
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="label">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="min_value">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="max_value">
+        <type name="int" c:type="gint"/>
+      </field>
+      <glib:signal name="value-changed"
+                   doc="Fired when the value of the indicated channel has changed.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ColorBalanceChannelClass"
+            c:type="GstColorBalanceChannelClass"
+            glib:is-gtype-struct-for="ColorBalanceChannel">
+      <field name="parent">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="value_changed">
+        <callback name="value_changed" c:type="value_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="ColorBalanceChannel"
+                    c:type="GstColorBalanceChannel*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="ColorBalanceClass"
+            c:type="GstColorBalanceClass"
+            glib:is-gtype-struct-for="ColorBalance">
+      <field name="klass">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="balance_type">
+        <type name="ColorBalanceType" c:type="GstColorBalanceType"/>
+      </field>
+      <field name="list_channels">
+        <callback name="list_channels" c:type="list_channels">
+          <return-value transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="balance" transfer-ownership="none">
+              <type name="ColorBalance" c:type="GstColorBalance*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_value">
+        <callback name="set_value" c:type="set_value">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="balance" transfer-ownership="none">
+              <type name="ColorBalance" c:type="GstColorBalance*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="ColorBalanceChannel"
+                    c:type="GstColorBalanceChannel*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_value">
+        <callback name="get_value" c:type="get_value">
+          <return-value transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="balance" transfer-ownership="none">
+              <type name="ColorBalance" c:type="GstColorBalance*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="ColorBalanceChannel"
+                    c:type="GstColorBalanceChannel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="value_changed">
+        <callback name="value_changed" c:type="value_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="balance" transfer-ownership="none">
+              <type name="ColorBalance" c:type="GstColorBalance*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="ColorBalanceChannel"
+                    c:type="GstColorBalanceChannel*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="ColorBalanceType"
+                 doc="hardware.
+processing.
+An enumeration indicating whether an element implements color balancing
+operations in software or in dedicated hardware. In general, dedicated
+hardware implementations (such as those provided by xvimagesink) are
+preferred."
+                 glib:type-name="GstColorBalanceType"
+                 glib:get-type="gst_color_balance_type_get_type"
+                 c:type="GstColorBalanceType">
+      <member name="hardware"
+              value="0"
+              c:identifier="GST_COLOR_BALANCE_HARDWARE"
+              glib:nick="hardware"/>
+      <member name="software"
+              value="1"
+              c:identifier="GST_COLOR_BALANCE_SOFTWARE"
+              glib:nick="software"/>
+    </enumeration>
+    <interface name="Mixer"
+               c:type="GstMixer"
+               glib:type-name="GstMixer"
+               glib:get-type="gst_mixer_get_type"
+               glib:type-struct="MixerClass">
+      <prerequisite name="Gst.ImplementsInterface"/>
+      <prerequisite name="Gst.Element"/>
+      <virtual-method name="list_tracks" invoker="list_tracks">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_volume" invoker="set_volume">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack*"/>
+          </parameter>
+          <parameter name="volumes" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_volume" invoker="get_volume">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack*"/>
+          </parameter>
+          <parameter name="volumes" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_mute" invoker="set_mute">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack*"/>
+          </parameter>
+          <parameter name="mute" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_record" invoker="set_record">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack*"/>
+          </parameter>
+          <parameter name="record" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_option" invoker="set_option">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="opts" transfer-ownership="none">
+            <type name="MixerOptions" c:type="GstMixerOptions*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_option" invoker="get_option">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="opts" transfer-ownership="none">
+            <type name="MixerOptions" c:type="GstMixerOptions*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_mixer_flags" invoker="get_mixer_flags">
+        <return-value transfer-ownership="full">
+          <type name="MixerFlags" c:type="GstMixerFlags"/>
+        </return-value>
+      </virtual-method>
+      <method name="list_tracks"
+              c:identifier="gst_mixer_list_tracks"
+              doc="Returns a list of available tracks for this mixer/element. Note
+that it is allowed for sink (output) elements to only provide
+the output tracks in this list. Likewise, for sources (inputs),
+it is allowed to only provide input elements in this list.
+The list is owned by the #GstMixer instance and must not be freed
+or modified.">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="set_volume"
+              c:identifier="gst_mixer_set_volume"
+              doc="that gives the wanted volume for each channel in
+this track.
+Sets the volume on each channel in a track. Short note about
+the mixer/element, such as &apos;Line-in&apos; or &apos;Microphone&apos;. A
+channel is said to be a mono-stream inside this track. A
+stereo track thus contains two channels.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack*"/>
+          </parameter>
+          <parameter name="volumes" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_volume"
+              c:identifier="gst_mixer_get_volume"
+              doc="track-&gt;num_channels) to store the current volume
+of each channel in the given track in.
+Get the current volume(s) on the given track.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack*"/>
+          </parameter>
+          <parameter name="volumes" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_mute"
+              c:identifier="gst_mixer_set_mute"
+              doc="muting.
+Mutes or unmutes the given channel. To find out whether a
+track is currently muted, use GST_MIXER_TRACK_HAS_FLAG ().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack*"/>
+          </parameter>
+          <parameter name="mute" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_record"
+              c:identifier="gst_mixer_set_record"
+              doc="or off recording.
+Enables or disables recording on the given track. Note that
+this is only possible on input tracks, not on output tracks
+(see GST_MIXER_TRACK_HAS_FLAG () and the GST_MIXER_TRACK_INPUT
+flag).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack*"/>
+          </parameter>
+          <parameter name="record" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_option"
+              c:identifier="gst_mixer_set_option"
+              doc="Sets a name/value option in the mixer to the requested value.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="opts" transfer-ownership="none">
+            <type name="MixerOptions" c:type="GstMixerOptions*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_option"
+              c:identifier="gst_mixer_get_option"
+              doc="Get the current value of a name/value option in the mixer.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="opts" transfer-ownership="none">
+            <type name="MixerOptions" c:type="GstMixerOptions*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="mute_toggled"
+              c:identifier="gst_mixer_mute_toggled"
+              doc="This function is called by the mixer implementation to produce
+a notification message on the bus indicating that the given track
+has changed mute state.
+This function only works for GstElements that are implementing the
+GstMixer interface, and the element needs to have been provided a bus.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack*"/>
+          </parameter>
+          <parameter name="mute" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="record_toggled"
+              c:identifier="gst_mixer_record_toggled"
+              doc="This function is called by the mixer implementation to produce
+a notification message on the bus indicating that the given track
+has changed recording state.
+This function only works for GstElements that are implementing the
+GstMixer interface, and the element needs to have been provided a bus.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack*"/>
+          </parameter>
+          <parameter name="record" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="volume_changed"
+              c:identifier="gst_mixer_volume_changed"
+              doc="This function is called by the mixer implementation to produce
+a notification message on the bus indicating that the volume(s) for the
+given track have changed.
+This function only works for GstElements that are implementing the
+GstMixer interface, and the element needs to have been provided a bus.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack*"/>
+          </parameter>
+          <parameter name="volumes" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="option_changed"
+              c:identifier="gst_mixer_option_changed"
+              doc="This function is called by the mixer implementation to produce
+a notification message on the bus indicating that the given options
+object has changed state.
+This function only works for GstElements that are implementing the
+GstMixer interface, and the element needs to have been provided a bus.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="opts" transfer-ownership="none">
+            <type name="MixerOptions" c:type="GstMixerOptions*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="mixer_changed"
+              c:identifier="gst_mixer_mixer_changed"
+              doc="This function is called by the mixer implementation to produce
+a notification message on the bus indicating that the list of available
+mixer tracks for a given mixer object has changed. Applications should
+rebuild their interface when they receive this message.
+This function only works for GstElements that are implementing the
+GstMixer interface, and the element needs to have been provided a bus."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="options_list_changed"
+              c:identifier="gst_mixer_options_list_changed"
+              doc="This function is called by the mixer implementation to produce
+a notification message on the bus indicating that the list of possible
+options of a given options object has changed.
+The new options are not contained in the message on purpose. Applications
+should call gst_mixer_option_get_values() on @opts to make @opts update
+its internal state and obtain the new list of values.
+This function only works for GstElements that are implementing the
+GstMixer interface, and the element needs to have been provided a bus
+for this to work."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="opts" transfer-ownership="none">
+            <type name="MixerOptions" c:type="GstMixerOptions*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_mixer_type"
+              c:identifier="gst_mixer_get_mixer_type"
+              doc="Get the #GstMixerType of this mixer implementation."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="MixerType" c:type="GstMixerType"/>
+        </return-value>
+      </method>
+      <method name="get_mixer_flags"
+              c:identifier="gst_mixer_get_mixer_flags"
+              doc="Get the set of supported flags for this mixer implementation.">
+        <return-value transfer-ownership="full">
+          <type name="MixerFlags" c:type="GstMixerFlags"/>
+        </return-value>
+      </method>
+      <glib:signal name="mute-toggled">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="option-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="MixerOptions" c:type="GstMixerOptions"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="record-toggled">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="volume-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="MixerTrack" c:type="GstMixerTrack"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="MixerClass"
+            c:type="GstMixerClass"
+            glib:is-gtype-struct-for="Mixer">
+      <field name="klass">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="mixer_type">
+        <type name="MixerType" c:type="GstMixerType"/>
+      </field>
+      <field name="list_tracks">
+        <callback name="list_tracks" c:type="list_tracks">
+          <return-value transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="mixer" transfer-ownership="none">
+              <type name="Mixer" c:type="GstMixer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_volume">
+        <callback name="set_volume" c:type="set_volume">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mixer" transfer-ownership="none">
+              <type name="Mixer" c:type="GstMixer*"/>
+            </parameter>
+            <parameter name="track" transfer-ownership="none">
+              <type name="MixerTrack" c:type="GstMixerTrack*"/>
+            </parameter>
+            <parameter name="volumes"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_volume">
+        <callback name="get_volume" c:type="get_volume">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mixer" transfer-ownership="none">
+              <type name="Mixer" c:type="GstMixer*"/>
+            </parameter>
+            <parameter name="track" transfer-ownership="none">
+              <type name="MixerTrack" c:type="GstMixerTrack*"/>
+            </parameter>
+            <parameter name="volumes"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_mute">
+        <callback name="set_mute" c:type="set_mute">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mixer" transfer-ownership="none">
+              <type name="Mixer" c:type="GstMixer*"/>
+            </parameter>
+            <parameter name="track" transfer-ownership="none">
+              <type name="MixerTrack" c:type="GstMixerTrack*"/>
+            </parameter>
+            <parameter name="mute" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_record">
+        <callback name="set_record" c:type="set_record">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mixer" transfer-ownership="none">
+              <type name="Mixer" c:type="GstMixer*"/>
+            </parameter>
+            <parameter name="track" transfer-ownership="none">
+              <type name="MixerTrack" c:type="GstMixerTrack*"/>
+            </parameter>
+            <parameter name="record" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="mute_toggled">
+        <callback name="mute_toggled" c:type="mute_toggled">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mixer" transfer-ownership="none">
+              <type name="Mixer" c:type="GstMixer*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="MixerTrack" c:type="GstMixerTrack*"/>
+            </parameter>
+            <parameter name="mute" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="record_toggled">
+        <callback name="record_toggled" c:type="record_toggled">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mixer" transfer-ownership="none">
+              <type name="Mixer" c:type="GstMixer*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="MixerTrack" c:type="GstMixerTrack*"/>
+            </parameter>
+            <parameter name="record" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="volume_changed">
+        <callback name="volume_changed" c:type="volume_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mixer" transfer-ownership="none">
+              <type name="Mixer" c:type="GstMixer*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="MixerTrack" c:type="GstMixerTrack*"/>
+            </parameter>
+            <parameter name="volumes"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_option">
+        <callback name="set_option" c:type="set_option">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mixer" transfer-ownership="none">
+              <type name="Mixer" c:type="GstMixer*"/>
+            </parameter>
+            <parameter name="opts" transfer-ownership="none">
+              <type name="MixerOptions" c:type="GstMixerOptions*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="full">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_option">
+        <callback name="get_option" c:type="get_option">
+          <return-value transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="mixer" transfer-ownership="none">
+              <type name="Mixer" c:type="GstMixer*"/>
+            </parameter>
+            <parameter name="opts" transfer-ownership="none">
+              <type name="MixerOptions" c:type="GstMixerOptions*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="option_changed">
+        <callback name="option_changed" c:type="option_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="mixer" transfer-ownership="none">
+              <type name="Mixer" c:type="GstMixer*"/>
+            </parameter>
+            <parameter name="opts" transfer-ownership="none">
+              <type name="MixerOptions" c:type="GstMixerOptions*"/>
+            </parameter>
+            <parameter name="option" transfer-ownership="full">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_mixer_flags">
+        <callback name="get_mixer_flags" c:type="get_mixer_flags">
+          <return-value transfer-ownership="full">
+            <type name="MixerFlags" c:type="GstMixerFlags"/>
+          </return-value>
+          <parameters>
+            <parameter name="mixer" transfer-ownership="none">
+              <type name="Mixer" c:type="GstMixer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="MixerFlags"
+              doc="sends notification messages.
+marked without either input or output.  Controls marked as input or
+output should be grouped with input &amp; output sliders, even if they
+Flags indicating which optional features are supported by a mixer
+implementation."
+              version="0.10.14"
+              glib:type-name="GstMixerFlags"
+              glib:get-type="gst_mixer_flags_get_type"
+              c:type="GstMixerFlags">
+      <member name="none"
+              value="0"
+              c:identifier="GST_MIXER_FLAG_NONE"
+              glib:nick="none"/>
+      <member name="auto_notifications"
+              value="1"
+              c:identifier="GST_MIXER_FLAG_AUTO_NOTIFICATIONS"
+              glib:nick="auto-notifications"/>
+      <member name="has_whitelist"
+              value="2"
+              c:identifier="GST_MIXER_FLAG_HAS_WHITELIST"
+              glib:nick="has-whitelist"/>
+      <member name="grouping"
+              value="4"
+              c:identifier="GST_MIXER_FLAG_GROUPING"
+              glib:nick="grouping"/>
+    </bitfield>
+    <enumeration name="MixerMessageType"
+                 doc="GstMixer message, posted when the list of available options for a
+when the list of available mixer tracks has changed. The application
+An enumeration for the type of a GstMixer message received on the bus"
+                 version="0.10.14"
+                 glib:type-name="GstMixerMessageType"
+                 glib:get-type="gst_mixer_message_type_get_type"
+                 c:type="GstMixerMessageType">
+      <member name="invalid"
+              value="0"
+              c:identifier="GST_MIXER_MESSAGE_INVALID"
+              glib:nick="invalid"/>
+      <member name="mute_toggled"
+              value="1"
+              c:identifier="GST_MIXER_MESSAGE_MUTE_TOGGLED"
+              glib:nick="mute-toggled"/>
+      <member name="record_toggled"
+              value="2"
+              c:identifier="GST_MIXER_MESSAGE_RECORD_TOGGLED"
+              glib:nick="record-toggled"/>
+      <member name="volume_changed"
+              value="3"
+              c:identifier="GST_MIXER_MESSAGE_VOLUME_CHANGED"
+              glib:nick="volume-changed"/>
+      <member name="option_changed"
+              value="4"
+              c:identifier="GST_MIXER_MESSAGE_OPTION_CHANGED"
+              glib:nick="option-changed"/>
+      <member name="options_list_changed"
+              value="5"
+              c:identifier="GST_MIXER_MESSAGE_OPTIONS_LIST_CHANGED"
+              glib:nick="options-list-changed"/>
+      <member name="mixer_changed"
+              value="6"
+              c:identifier="GST_MIXER_MESSAGE_MIXER_CHANGED"
+              glib:nick="mixer-changed"/>
+    </enumeration>
+    <class name="MixerOptions"
+           c:type="GstMixerOptions"
+           doc="always use gst_mixer_options_get_values() instead."
+           parent="MixerTrack"
+           glib:type-name="GstMixerOptions"
+           glib:get-type="gst_mixer_options_get_type"
+           glib:type-struct="MixerOptionsClass">
+      <virtual-method name="get_values" invoker="get_values">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_values"
+              c:identifier="gst_mixer_options_get_values"
+              doc="Get the values for the mixer option.
+option. You must not free or modify the list or its contents, it belongs
+to the @mixer_options object.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <field name="parent">
+        <type name="MixerTrack" c:type="GstMixerTrack"/>
+      </field>
+      <field name="values">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="MixerOptionsClass"
+            c:type="GstMixerOptionsClass"
+            glib:is-gtype-struct-for="MixerOptions">
+      <field name="parent">
+        <type name="MixerTrackClass" c:type="GstMixerTrackClass"/>
+      </field>
+      <field name="get_values">
+        <callback name="get_values" c:type="get_values">
+          <return-value transfer-ownership="full">
+            <type name="GLib.List" c:type="GList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="opts" transfer-ownership="none">
+              <type name="MixerOptions" c:type="GstMixerOptions*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <class name="MixerTrack"
+           c:type="GstMixerTrack"
+           parent="GObject.Object"
+           glib:type-name="GstMixerTrack"
+           glib:get-type="gst_mixer_track_get_type"
+           glib:type-struct="MixerTrackClass">
+      <property name="flags">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="index" writable="1" construct-only="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="label">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="max-volume">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="min-volume">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="num-channels">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="untranslated-label" writable="1" construct-only="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="label">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="flags">
+        <type name="MixerTrackFlags" c:type="GstMixerTrackFlags"/>
+      </field>
+      <field name="num_channels">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="min_volume">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="max_volume">
+        <type name="int" c:type="gint"/>
+      </field>
+    </class>
+    <record name="MixerTrackClass"
+            c:type="GstMixerTrackClass"
+            glib:is-gtype-struct-for="MixerTrack">
+      <field name="parent">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="MixerTrackFlags"
+              doc="(for #GST_MIXER_TRACK_INPUT mixer tracks only)
+in software (as opposed to a hardware control)
+Mixer track flags."
+              version="0.10.23"
+              glib:type-name="GstMixerTrackFlags"
+              glib:get-type="gst_mixer_track_flags_get_type"
+              c:type="GstMixerTrackFlags">
+      <member name="input"
+              value="1"
+              c:identifier="GST_MIXER_TRACK_INPUT"
+              glib:nick="input"/>
+      <member name="output"
+              value="2"
+              c:identifier="GST_MIXER_TRACK_OUTPUT"
+              glib:nick="output"/>
+      <member name="mute"
+              value="4"
+              c:identifier="GST_MIXER_TRACK_MUTE"
+              glib:nick="mute"/>
+      <member name="record"
+              value="8"
+              c:identifier="GST_MIXER_TRACK_RECORD"
+              glib:nick="record"/>
+      <member name="master"
+              value="16"
+              c:identifier="GST_MIXER_TRACK_MASTER"
+              glib:nick="master"/>
+      <member name="software"
+              value="32"
+              c:identifier="GST_MIXER_TRACK_SOFTWARE"
+              glib:nick="software"/>
+      <member name="no_record"
+              value="64"
+              c:identifier="GST_MIXER_TRACK_NO_RECORD"
+              glib:nick="no-record"/>
+      <member name="no_mute"
+              value="128"
+              c:identifier="GST_MIXER_TRACK_NO_MUTE"
+              glib:nick="no-mute"/>
+      <member name="whitelist"
+              value="256"
+              c:identifier="GST_MIXER_TRACK_WHITELIST"
+              glib:nick="whitelist"/>
+      <member name="readonly"
+              value="512"
+              c:identifier="GST_MIXER_TRACK_READONLY"
+              glib:nick="readonly"/>
+      <member name="writeonly"
+              value="1024"
+              c:identifier="GST_MIXER_TRACK_WRITEONLY"
+              glib:nick="writeonly"/>
+    </bitfield>
+    <enumeration name="MixerType"
+                 glib:type-name="GstMixerType"
+                 glib:get-type="gst_mixer_type_get_type"
+                 c:type="GstMixerType">
+      <member name="hardware"
+              value="0"
+              c:identifier="GST_MIXER_HARDWARE"
+              glib:nick="hardware"/>
+      <member name="software"
+              value="1"
+              c:identifier="GST_MIXER_SOFTWARE"
+              glib:nick="software"/>
+    </enumeration>
+    <interface name="Navigation"
+               c:type="GstNavigation"
+               glib:type-name="GstNavigation"
+               glib:get-type="gst_navigation_get_type"
+               glib:type-struct="NavigationInterface">
+      <virtual-method name="send_event" invoker="send_event">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Gst.Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="send_event" c:identifier="gst_navigation_send_event">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Gst.Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_key_event"
+              c:identifier="gst_navigation_send_key_event"
+              doc="&quot;key-release&quot;
+by XKeysymToString.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_mouse_event"
+              c:identifier="gst_navigation_send_mouse_event"
+              doc="&quot;mouse-button-press&quot;, &quot;mouse-button-release&quot; and &quot;mouse-move&quot;.
+for mouse-move events.
+Sends a mouse event to the navigation interface. Mouse event coordinates
+are sent relative to the display space of the related output area. This is
+usually the size in pixels of the window associated with the element
+implementing the #GstNavigation interface.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="button" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_command"
+              c:identifier="gst_navigation_send_command"
+              doc="Sends the indicated command to the navigation interface."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="command" transfer-ownership="none">
+            <type name="NavigationCommand" c:type="GstNavigationCommand"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <enumeration name="NavigationCommand"
+                 doc="this enters the DVD root menu, or exits back to the title from the menu.
+this jumps to the DVD title menu.
+this jumps into the DVD root menu.
+this jumps to the Subpicture menu.
+the jumps to the audio menu.
+this jumps to the angles menu.
+this jumps to the chapter menu.
+if such a button exists.
+if such a button exists.
+menu, if such a button exists.
+menu, if such a button exists.
+button in a menu, if such a button exists.
+multiangle feature.
+feature.
+A set of commands that may be issued to an element providing the
+#GstNavigation interface. The available commands can be queried via
+the gst_navigation_query_new_commands() query.
+For convenience in handling DVD navigation, the MENU commands are aliased as:
+GST_NAVIGATION_COMMAND_DVD_MENU            = @GST_NAVIGATION_COMMAND_MENU1
+GST_NAVIGATION_COMMAND_DVD_TITLE_MENU      = @GST_NAVIGATION_COMMAND_MENU2
+GST_NAVIGATION_COMMAND_DVD_ROOT_MENU       = @GST_NAVIGATION_COMMAND_MENU3
+GST_NAVIGATION_COMMAND_DVD_SUBPICTURE_MENU = @GST_NAVIGATION_COMMAND_MENU4
+GST_NAVIGATION_COMMAND_DVD_AUDIO_MENU      = @GST_NAVIGATION_COMMAND_MENU5
+GST_NAVIGATION_COMMAND_DVD_ANGLE_MENU      = @GST_NAVIGATION_COMMAND_MENU6
+GST_NAVIGATION_COMMAND_DVD_CHAPTER_MENU    = @GST_NAVIGATION_COMMAND_MENU7"
+                 version="0.10.23"
+                 glib:type-name="GstNavigationCommand"
+                 glib:get-type="gst_navigation_command_get_type"
+                 c:type="GstNavigationCommand">
+      <member name="invalid"
+              value="0"
+              c:identifier="GST_NAVIGATION_COMMAND_INVALID"
+              glib:nick="invalid"/>
+      <member name="menu1"
+              value="1"
+              c:identifier="GST_NAVIGATION_COMMAND_MENU1"
+              glib:nick="menu1"/>
+      <member name="menu2"
+              value="2"
+              c:identifier="GST_NAVIGATION_COMMAND_MENU2"
+              glib:nick="menu2"/>
+      <member name="menu3"
+              value="3"
+              c:identifier="GST_NAVIGATION_COMMAND_MENU3"
+              glib:nick="menu3"/>
+      <member name="menu4"
+              value="4"
+              c:identifier="GST_NAVIGATION_COMMAND_MENU4"
+              glib:nick="menu4"/>
+      <member name="menu5"
+              value="5"
+              c:identifier="GST_NAVIGATION_COMMAND_MENU5"
+              glib:nick="menu5"/>
+      <member name="menu6"
+              value="6"
+              c:identifier="GST_NAVIGATION_COMMAND_MENU6"
+              glib:nick="menu6"/>
+      <member name="menu7"
+              value="7"
+              c:identifier="GST_NAVIGATION_COMMAND_MENU7"
+              glib:nick="menu7"/>
+      <member name="left"
+              value="20"
+              c:identifier="GST_NAVIGATION_COMMAND_LEFT"
+              glib:nick="left"/>
+      <member name="right"
+              value="21"
+              c:identifier="GST_NAVIGATION_COMMAND_RIGHT"
+              glib:nick="right"/>
+      <member name="up"
+              value="22"
+              c:identifier="GST_NAVIGATION_COMMAND_UP"
+              glib:nick="up"/>
+      <member name="down"
+              value="23"
+              c:identifier="GST_NAVIGATION_COMMAND_DOWN"
+              glib:nick="down"/>
+      <member name="activate"
+              value="24"
+              c:identifier="GST_NAVIGATION_COMMAND_ACTIVATE"
+              glib:nick="activate"/>
+      <member name="prev_angle"
+              value="30"
+              c:identifier="GST_NAVIGATION_COMMAND_PREV_ANGLE"
+              glib:nick="prev-angle"/>
+      <member name="next_angle"
+              value="31"
+              c:identifier="GST_NAVIGATION_COMMAND_NEXT_ANGLE"
+              glib:nick="next-angle"/>
+    </enumeration>
+    <enumeration name="NavigationEventType"
+                 doc="gst_navigation_event_get_type() when the passed event is not a navigation event.
+gst_navigation_event_parse_key_event() to extract the details from the event.
+gst_navigation_event_parse_key_event() to extract the details from the event.
+gst_navigation_event_parse_mouse_button_event() to extract the details from the
+event.
+gst_navigation_event_parse_mouse_button_event() to extract the details from the
+event.
+gst_navigation_event_parse_mouse_move_event() to extract the details from the
+event.
+gst_navigation_event_parse_command() to extract the details from the event.
+Enum values for the various events that an element implementing the
+GstNavigation interface might send up the pipeline."
+                 version="0.10.23"
+                 glib:type-name="GstNavigationEventType"
+                 glib:get-type="gst_navigation_event_type_get_type"
+                 c:type="GstNavigationEventType">
+      <member name="invalid"
+              value="0"
+              c:identifier="GST_NAVIGATION_EVENT_INVALID"
+              glib:nick="invalid"/>
+      <member name="key_press"
+              value="1"
+              c:identifier="GST_NAVIGATION_EVENT_KEY_PRESS"
+              glib:nick="key-press"/>
+      <member name="key_release"
+              value="2"
+              c:identifier="GST_NAVIGATION_EVENT_KEY_RELEASE"
+              glib:nick="key-release"/>
+      <member name="mouse_button_press"
+              value="3"
+              c:identifier="GST_NAVIGATION_EVENT_MOUSE_BUTTON_PRESS"
+              glib:nick="mouse-button-press"/>
+      <member name="mouse_button_release"
+              value="4"
+              c:identifier="GST_NAVIGATION_EVENT_MOUSE_BUTTON_RELEASE"
+              glib:nick="mouse-button-release"/>
+      <member name="mouse_move"
+              value="5"
+              c:identifier="GST_NAVIGATION_EVENT_MOUSE_MOVE"
+              glib:nick="mouse-move"/>
+      <member name="command"
+              value="6"
+              c:identifier="GST_NAVIGATION_EVENT_COMMAND"
+              glib:nick="command"/>
+    </enumeration>
+    <record name="NavigationInterface"
+            c:type="GstNavigationInterface"
+            glib:is-gtype-struct-for="Navigation">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="send_event">
+        <callback name="send_event" c:type="send_event">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="navigation" transfer-ownership="none">
+              <type name="Navigation" c:type="GstNavigation*"/>
+            </parameter>
+            <parameter name="structure" transfer-ownership="none">
+              <type name="Gst.Structure" c:type="GstStructure*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="NavigationMessageType"
+                 doc="gst_navigation_message_get_type() when the passed message is not a
+navigation message.
+clickable region of the output, such as a DVD menu button.
+changes and should re-queried by interested applications.
+feature (such as a multiangle DVD) change - either angles have appeared or
+disappeared.
+A set of notifications that may be received on the bus when navigation
+related status changes."
+                 version="0.10.23"
+                 glib:type-name="GstNavigationMessageType"
+                 glib:get-type="gst_navigation_message_type_get_type"
+                 c:type="GstNavigationMessageType">
+      <member name="invalid"
+              value="0"
+              c:identifier="GST_NAVIGATION_MESSAGE_INVALID"
+              glib:nick="invalid"/>
+      <member name="mouse_over"
+              value="1"
+              c:identifier="GST_NAVIGATION_MESSAGE_MOUSE_OVER"
+              glib:nick="mouse-over"/>
+      <member name="commands_changed"
+              value="2"
+              c:identifier="GST_NAVIGATION_MESSAGE_COMMANDS_CHANGED"
+              glib:nick="commands-changed"/>
+      <member name="angles_changed"
+              value="3"
+              c:identifier="GST_NAVIGATION_MESSAGE_ANGLES_CHANGED"
+              glib:nick="angles-changed"/>
+    </enumeration>
+    <enumeration name="NavigationQueryType"
+                 glib:type-name="GstNavigationQueryType"
+                 glib:get-type="gst_navigation_query_type_get_type"
+                 c:type="GstNavigationQueryType">
+      <member name="invalid"
+              value="0"
+              c:identifier="GST_NAVIGATION_QUERY_INVALID"
+              glib:nick="invalid"/>
+      <member name="commands"
+              value="1"
+              c:identifier="GST_NAVIGATION_QUERY_COMMANDS"
+              glib:nick="commands"/>
+      <member name="angles"
+              value="2"
+              c:identifier="GST_NAVIGATION_QUERY_ANGLES"
+              glib:nick="angles"/>
+    </enumeration>
+    <interface name="PropertyProbe"
+               c:type="GstPropertyProbe"
+               doc="Opaque #GstPropertyProbe data structure."
+               glib:type-name="GstPropertyProbe"
+               glib:get-type="gst_property_probe_get_type"
+               glib:type-struct="PropertyProbeInterface">
+      <virtual-method name="get_properties" invoker="get_properties">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="needs_probe">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="prop_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="probe_property">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="prop_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_values">
+        <return-value transfer-ownership="full">
+          <type name="GObject.ValueArray" c:type="GValueArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="prop_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_properties"
+              c:identifier="gst_property_probe_get_properties"
+              doc="Get a list of properties for which probing is supported.
+by this element.">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="get_property"
+              c:identifier="gst_property_probe_get_property"
+              doc="Get #GParamSpec for a property for which probing is supported.">
+        <return-value transfer-ownership="none">
+          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="probe_property"
+              c:identifier="gst_property_probe_probe_property"
+              doc="Runs a probe on the property specified by @pspec">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="probe_property_name"
+              c:identifier="gst_property_probe_probe_property_name"
+              doc="Runs a probe on the property specified by @name.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="needs_probe"
+              c:identifier="gst_property_probe_needs_probe"
+              doc="Checks whether a property needs a probe. This might be because
+the property wasn&apos;t initialized before, or because host setup
+changed. This might be, for example, because a new device was
+added, and thus device probing needs to be refreshed to display
+the new device.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="needs_probe_name"
+              c:identifier="gst_property_probe_needs_probe_name"
+              doc="Same as gst_property_probe_needs_probe ().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_values"
+              c:identifier="gst_property_probe_get_values"
+              doc="Gets the possible (probed) values for the given property,
+requires the property to have been probed before.">
+        <return-value transfer-ownership="full">
+          <type name="GObject.ValueArray" c:type="GValueArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_values_name"
+              c:identifier="gst_property_probe_get_values_name"
+              doc="Same as gst_property_probe_get_values ().">
+        <return-value transfer-ownership="full">
+          <type name="GObject.ValueArray" c:type="GValueArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="probe_and_get_values"
+              c:identifier="gst_property_probe_probe_and_get_values"
+              doc="Check whether the given property requires a new probe. If so,
+fo the probe. After that, retrieve a value list. Meant as a
+utility function that wraps the above functions.">
+        <return-value transfer-ownership="full">
+          <type name="GObject.ValueArray" c:type="GValueArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="probe_and_get_values_name"
+              c:identifier="gst_property_probe_probe_and_get_values_name"
+              doc="Same as gst_property_probe_probe_and_get_values ().">
+        <return-value transfer-ownership="full">
+          <type name="GObject.ValueArray" c:type="GValueArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="probe-needed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="PropertyProbeInterface"
+            c:type="GstPropertyProbeInterface"
+            glib:is-gtype-struct-for="PropertyProbe"
+            doc="#GstPropertyProbe interface.">
+      <field name="klass">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="probe_needed">
+        <callback name="probe_needed" c:type="probe_needed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="probe" transfer-ownership="none">
+              <type name="PropertyProbe" c:type="GstPropertyProbe*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_properties">
+        <callback name="get_properties" c:type="get_properties">
+          <return-value transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="probe" transfer-ownership="none">
+              <type name="PropertyProbe" c:type="GstPropertyProbe*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="needs_probe">
+        <callback name="needs_probe" c:type="needs_probe">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="probe" transfer-ownership="none">
+              <type name="PropertyProbe" c:type="GstPropertyProbe*"/>
+            </parameter>
+            <parameter name="prop_id" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="probe_property">
+        <callback name="probe_property" c:type="probe_property">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="probe" transfer-ownership="none">
+              <type name="PropertyProbe" c:type="GstPropertyProbe*"/>
+            </parameter>
+            <parameter name="prop_id" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_values">
+        <callback name="get_values" c:type="get_values">
+          <return-value transfer-ownership="full">
+            <type name="GObject.ValueArray" c:type="GValueArray*"/>
+          </return-value>
+          <parameters>
+            <parameter name="probe" transfer-ownership="none">
+              <type name="PropertyProbe" c:type="GstPropertyProbe*"/>
+            </parameter>
+            <parameter name="prop_id" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <interface name="StreamVolume"
+               c:type="GstStreamVolume"
+               glib:type-name="GstStreamVolume"
+               glib:get-type="gst_stream_volume_get_type"
+               glib:type-struct="StreamVolumeInterface">
+      <method name="set_volume"
+              c:identifier="gst_stream_volume_set_volume"
+              version="0.10.25">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="StreamVolumeFormat" c:type="GstStreamVolumeFormat"/>
+          </parameter>
+          <parameter name="val" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_volume"
+              c:identifier="gst_stream_volume_get_volume"
+              version="0.10.25">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="StreamVolumeFormat" c:type="GstStreamVolumeFormat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_mute"
+              c:identifier="gst_stream_volume_set_mute"
+              version="0.10.25">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mute" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_mute"
+              c:identifier="gst_stream_volume_get_mute"
+              version="0.10.25">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="mute" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="volume" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </property>
+    </interface>
+    <enumeration name="StreamVolumeFormat"
+                 doc="Different representations of a stream volume. gst_stream_volume_convert()
+allows to convert between the different representations.
+Formulas to convert from a linear to a cubic or dB volume are
+cbrt(val) and 20 * log10 (val)."
+                 version="0.10.25"
+                 glib:type-name="GstStreamVolumeFormat"
+                 glib:get-type="gst_stream_volume_format_get_type"
+                 c:type="GstStreamVolumeFormat">
+      <member name="linear"
+              value="0"
+              c:identifier="GST_STREAM_VOLUME_FORMAT_LINEAR"
+              glib:nick="linear"/>
+      <member name="cubic"
+              value="1"
+              c:identifier="GST_STREAM_VOLUME_FORMAT_CUBIC"
+              glib:nick="cubic"/>
+      <member name="db"
+              value="2"
+              c:identifier="GST_STREAM_VOLUME_FORMAT_DB"
+              glib:nick="db"/>
+    </enumeration>
+    <record name="StreamVolumeInterface"
+            c:type="GstStreamVolumeInterface"
+            glib:is-gtype-struct-for="StreamVolume">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <interface name="Tuner"
+               c:type="GstTuner"
+               glib:type-name="GstTuner"
+               glib:get-type="gst_tuner_get_type"
+               glib:type-struct="TunerClass">
+      <prerequisite name="Gst.ImplementsInterface"/>
+      <prerequisite name="Gst.Element"/>
+      <virtual-method name="list_channels" invoker="list_channels">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_channel" invoker="set_channel">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_channel" invoker="get_channel">
+        <return-value transfer-ownership="full">
+          <type name="TunerChannel" c:type="GstTunerChannel*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="list_norms" invoker="list_norms">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_norm" invoker="set_norm">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="norm" transfer-ownership="none">
+            <type name="TunerNorm" c:type="GstTunerNorm*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_norm" invoker="get_norm">
+        <return-value transfer-ownership="full">
+          <type name="TunerNorm" c:type="GstTunerNorm*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_frequency" invoker="set_frequency">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel*"/>
+          </parameter>
+          <parameter name="frequency" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_frequency" invoker="get_frequency">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="signal_strength" invoker="signal_strength">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="list_channels"
+              c:identifier="gst_tuner_list_channels"
+              doc="Retrieve a #GList of #GstTunerChannels available
+(e.g. &apos;composite&apos;, &apos;s-video&apos;, ...) from the given tuner object.
+owned by the GstTuner and must not be freed.">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="set_channel"
+              c:identifier="gst_tuner_set_channel"
+              doc="Tunes the object to the given channel, which should be one of the
+channels returned by gst_tuner_list_channels().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_channel"
+              c:identifier="gst_tuner_get_channel"
+              doc="Retrieve the current channel from the tuner.">
+        <return-value transfer-ownership="full">
+          <type name="TunerChannel" c:type="GstTunerChannel*"/>
+        </return-value>
+      </method>
+      <method name="list_norms"
+              c:identifier="gst_tuner_list_norms"
+              doc="Retrieve a GList of available #GstTunerNorm settings for the currently
+tuned channel on the given tuner object.
+tuner object. The list is owned by the GstTuner and must not
+be freed.">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="set_norm"
+              c:identifier="gst_tuner_set_norm"
+              doc="Changes the video norm on this tuner to the given norm, which should be
+one of the norms returned by gst_tuner_list_norms().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="norm" transfer-ownership="none">
+            <type name="TunerNorm" c:type="GstTunerNorm*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_norm"
+              c:identifier="gst_tuner_get_norm"
+              doc="Get the current video norm from the given tuner object for the
+currently selected channel.">
+        <return-value transfer-ownership="full">
+          <type name="TunerNorm" c:type="GstTunerNorm*"/>
+        </return-value>
+      </method>
+      <method name="set_frequency"
+              c:identifier="gst_tuner_set_frequency"
+              doc="Sets a tuning frequency on the given tuner/channel. Note that this
+requires the given channel to be a &quot;tuning&quot; channel, which can be
+checked using GST_TUNER_CHANNEL_HAS_FLAG (), with the proper flag
+being GST_TUNER_CHANNEL_FREQUENCY.
+The frequency is in Hz, with minimum steps indicated by the
+frequency_multiplicator provided in the #GstTunerChannel. The
+valid range is provided in the min_frequency and max_frequency properties
+of the #GstTunerChannel.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel*"/>
+          </parameter>
+          <parameter name="frequency" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_frequency"
+              c:identifier="gst_tuner_get_frequency"
+              doc="Retrieve the current frequency from the given channel. As for
+gst_tuner_set_frequency(), the #GstTunerChannel must support frequency
+operations, as indicated by the GST_TUNER_CHANNEL_FREQUENCY flag.">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="signal_strength"
+              c:identifier="gst_tuner_signal_strength"
+              doc="Get the strength of the signal on this channel. Note that this
+requires the current channel to be a &quot;tuning&quot; channel, i.e. a
+channel on which frequency can be set. This can be checked using
+GST_TUNER_CHANNEL_HAS_FLAG (), and the appropriate flag to check
+for is GST_TUNER_CHANNEL_FREQUENCY.
+The valid range of the signal strength is indicated in the
+min_signal and max_signal properties of the #GstTunerChannel.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_norm_by_name"
+              c:identifier="gst_tuner_find_norm_by_name"
+              doc="Look up a #GstTunerNorm by name.
+is available.">
+        <return-value transfer-ownership="full">
+          <type name="TunerNorm" c:type="GstTunerNorm*"/>
+        </return-value>
+        <parameters>
+          <parameter name="norm" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_channel_by_name"
+              c:identifier="gst_tuner_find_channel_by_name"
+              doc="Look up a #GstTunerChannel by name.
+is available.">
+        <return-value transfer-ownership="full">
+          <type name="TunerChannel" c:type="GstTunerChannel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="channel_changed"
+              c:identifier="gst_tuner_channel_changed"
+              doc="Called by elements implementing the #GstTuner interface when the
+current channel changes. Fires the #GstTuner::channel-changed signal.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="norm_changed"
+              c:identifier="gst_tuner_norm_changed"
+              doc="Called by elements implementing the #GstTuner interface when the
+current norm changes. Fires the #GstTuner::norm-changed signal.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="norm" transfer-ownership="none">
+            <type name="TunerNorm" c:type="GstTunerNorm*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="frequency_changed"
+              c:identifier="gst_tuner_frequency_changed"
+              doc="Called by elements implementing the #GstTuner interface when the
+configured frequency changes. Fires the #GstTuner::frequency-changed
+signal on the tuner, and the #GstTunerChannel::frequency-changed signal
+on the channel.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel*"/>
+          </parameter>
+          <parameter name="frequency" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="signal_changed"
+              c:identifier="gst_tuner_signal_changed"
+              doc="Called by elements implementing the #GstTuner interface when the
+incoming signal strength changes. Fires the #GstTuner::signal-changed
+signal on the tuner and the #GstTunerChannel::signal-changed signal on
+the channel.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel*"/>
+          </parameter>
+          <parameter name="signal" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="channel-changed"
+                   doc="Reports that the current #GstTunerChannel has changed.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="frequency-changed"
+                   doc="Reports that the current frequency has changed.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="norm-changed"
+                   doc="Reports that the current #GstTunerNorm has changed.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="norm" transfer-ownership="none">
+            <type name="TunerNorm" c:type="GstTunerNorm"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="signal-changed"
+                   doc="Reports that the signal strength has changed.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="TunerChannel" c:type="GstTunerChannel"/>
+          </parameter>
+          <parameter name="signal" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <class name="TunerChannel"
+           c:type="GstTunerChannel"
+           parent="GObject.Object"
+           glib:type-name="GstTunerChannel"
+           glib:get-type="gst_tuner_channel_get_type"
+           glib:type-struct="TunerChannelClass">
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="label">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="flags">
+        <type name="TunerChannelFlags" c:type="GstTunerChannelFlags"/>
+      </field>
+      <field name="freq_multiplicator">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="min_frequency">
+        <type name="ulong" c:type="gulong"/>
+      </field>
+      <field name="max_frequency">
+        <type name="ulong" c:type="gulong"/>
+      </field>
+      <field name="min_signal">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="max_signal">
+        <type name="int" c:type="gint"/>
+      </field>
+      <glib:signal name="frequency-changed"
+                   doc="Reports that the current frequency has changed.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="frequency" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="signal-changed"
+                   doc="Reports that the signal strength has changed.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="signal" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="TunerChannelClass"
+            c:type="GstTunerChannelClass"
+            glib:is-gtype-struct-for="TunerChannel">
+      <field name="parent">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="frequency_changed">
+        <callback name="frequency_changed" c:type="frequency_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="TunerChannel" c:type="GstTunerChannel*"/>
+            </parameter>
+            <parameter name="frequency" transfer-ownership="none">
+              <type name="ulong" c:type="gulong"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="signal_changed">
+        <callback name="signal_changed" c:type="signal_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="TunerChannel" c:type="GstTunerChannel*"/>
+            </parameter>
+            <parameter name="signal" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="TunerChannelFlags"
+              doc="and signal strength.
+An enumeration for flags indicating the available capabilities
+of a #GstTunerChannel."
+              glib:type-name="GstTunerChannelFlags"
+              glib:get-type="gst_tuner_channel_flags_get_type"
+              c:type="GstTunerChannelFlags">
+      <member name="input"
+              value="1"
+              c:identifier="GST_TUNER_CHANNEL_INPUT"
+              glib:nick="input"/>
+      <member name="output"
+              value="2"
+              c:identifier="GST_TUNER_CHANNEL_OUTPUT"
+              glib:nick="output"/>
+      <member name="frequency"
+              value="4"
+              c:identifier="GST_TUNER_CHANNEL_FREQUENCY"
+              glib:nick="frequency"/>
+      <member name="audio"
+              value="8"
+              c:identifier="GST_TUNER_CHANNEL_AUDIO"
+              glib:nick="audio"/>
+    </bitfield>
+    <record name="TunerClass"
+            c:type="GstTunerClass"
+            glib:is-gtype-struct-for="Tuner">
+      <field name="klass">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="list_channels">
+        <callback name="list_channels" c:type="list_channels">
+          <return-value transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_channel">
+        <callback name="set_channel" c:type="set_channel">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="TunerChannel" c:type="GstTunerChannel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_channel">
+        <callback name="get_channel" c:type="get_channel">
+          <return-value transfer-ownership="full">
+            <type name="TunerChannel" c:type="GstTunerChannel*"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="list_norms">
+        <callback name="list_norms" c:type="list_norms">
+          <return-value transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_norm">
+        <callback name="set_norm" c:type="set_norm">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+            <parameter name="norm" transfer-ownership="none">
+              <type name="TunerNorm" c:type="GstTunerNorm*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_norm">
+        <callback name="get_norm" c:type="get_norm">
+          <return-value transfer-ownership="full">
+            <type name="TunerNorm" c:type="GstTunerNorm*"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_frequency">
+        <callback name="set_frequency" c:type="set_frequency">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="TunerChannel" c:type="GstTunerChannel*"/>
+            </parameter>
+            <parameter name="frequency" transfer-ownership="none">
+              <type name="ulong" c:type="gulong"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_frequency">
+        <callback name="get_frequency" c:type="get_frequency">
+          <return-value transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="TunerChannel" c:type="GstTunerChannel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="signal_strength">
+        <callback name="signal_strength" c:type="signal_strength">
+          <return-value transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="TunerChannel" c:type="GstTunerChannel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="channel_changed">
+        <callback name="channel_changed" c:type="channel_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="TunerChannel" c:type="GstTunerChannel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="norm_changed">
+        <callback name="norm_changed" c:type="norm_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+            <parameter name="norm" transfer-ownership="none">
+              <type name="TunerNorm" c:type="GstTunerNorm*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="frequency_changed">
+        <callback name="frequency_changed" c:type="frequency_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="TunerChannel" c:type="GstTunerChannel*"/>
+            </parameter>
+            <parameter name="frequency" transfer-ownership="none">
+              <type name="ulong" c:type="gulong"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="signal_changed">
+        <callback name="signal_changed" c:type="signal_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tuner" transfer-ownership="none">
+              <type name="Tuner" c:type="GstTuner*"/>
+            </parameter>
+            <parameter name="channel" transfer-ownership="none">
+              <type name="TunerChannel" c:type="GstTunerChannel*"/>
+            </parameter>
+            <parameter name="signal" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <class name="TunerNorm"
+           c:type="GstTunerNorm"
+           doc="if any. (May be unset)."
+           parent="GObject.Object"
+           glib:type-name="GstTunerNorm"
+           glib:get-type="gst_tuner_norm_get_type"
+           glib:type-struct="TunerNormClass">
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="label">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="framerate">
+        <type name="GObject.Value" c:type="GValue"/>
+      </field>
+    </class>
+    <record name="TunerNormClass"
+            c:type="GstTunerNormClass"
+            glib:is-gtype-struct-for="TunerNorm">
+      <field name="parent">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <interface name="VideoOrientation"
+               c:type="GstVideoOrientation"
+               doc="Opaque #GstVideoOrientation data structure."
+               glib:type-name="GstVideoOrientation"
+               glib:get-type="gst_video_orientation_get_type"
+               glib:type-struct="VideoOrientationInterface">
+      <prerequisite name="Gst.ImplementsInterface"/>
+      <prerequisite name="Gst.Element"/>
+      <virtual-method name="get_hflip" invoker="get_hflip">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="flip" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_vflip" invoker="get_vflip">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="flip" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_hcenter" invoker="get_hcenter">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="center" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_vcenter" invoker="get_vcenter">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="center" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_hflip" invoker="set_hflip">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="flip" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_vflip" invoker="set_vflip">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="flip" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_hcenter" invoker="set_hcenter">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="center" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_vcenter" invoker="set_vcenter">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="center" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_hflip"
+              c:identifier="gst_video_orientation_get_hflip"
+              doc="Get the horizontal flipping state (%TRUE for flipped) from the given object."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="flip" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_vflip"
+              c:identifier="gst_video_orientation_get_vflip"
+              doc="Get the vertical flipping state (%TRUE for flipped) from the given object."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="flip" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_hcenter"
+              c:identifier="gst_video_orientation_get_hcenter"
+              doc="Get the horizontal centering offset from the given object."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="center" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_vcenter"
+              c:identifier="gst_video_orientation_get_vcenter"
+              doc="Get the vertical centering offset from the given object."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="center" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_hflip"
+              c:identifier="gst_video_orientation_set_hflip"
+              doc="Set the horizontal flipping state (%TRUE for flipped) for the given object."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="flip" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_vflip"
+              c:identifier="gst_video_orientation_set_vflip"
+              doc="Set the vertical flipping state (%TRUE for flipped) for the given object."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="flip" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_hcenter"
+              c:identifier="gst_video_orientation_set_hcenter"
+              doc="Set the horizontal centering offset for the given object."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="center" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_vcenter"
+              c:identifier="gst_video_orientation_set_vcenter"
+              doc="Set the vertical centering offset for the given object."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="center" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="VideoOrientationInterface"
+            c:type="GstVideoOrientationInterface"
+            glib:is-gtype-struct-for="VideoOrientation"
+            doc="#GstVideoOrientationInterface interface.">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_hflip">
+        <callback name="get_hflip" c:type="get_hflip">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="video_orientation" transfer-ownership="none">
+              <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+            </parameter>
+            <parameter name="flip" direction="out" transfer-ownership="full">
+              <type name="boolean" c:type="gboolean*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_vflip">
+        <callback name="get_vflip" c:type="get_vflip">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="video_orientation" transfer-ownership="none">
+              <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+            </parameter>
+            <parameter name="flip" direction="out" transfer-ownership="full">
+              <type name="boolean" c:type="gboolean*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_hcenter">
+        <callback name="get_hcenter" c:type="get_hcenter">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="video_orientation" transfer-ownership="none">
+              <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+            </parameter>
+            <parameter name="center" direction="out" transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_vcenter">
+        <callback name="get_vcenter" c:type="get_vcenter">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="video_orientation" transfer-ownership="none">
+              <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+            </parameter>
+            <parameter name="center" direction="out" transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_hflip">
+        <callback name="set_hflip" c:type="set_hflip">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="video_orientation" transfer-ownership="none">
+              <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+            </parameter>
+            <parameter name="flip" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_vflip">
+        <callback name="set_vflip" c:type="set_vflip">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="video_orientation" transfer-ownership="none">
+              <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+            </parameter>
+            <parameter name="flip" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_hcenter">
+        <callback name="set_hcenter" c:type="set_hcenter">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="video_orientation" transfer-ownership="none">
+              <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+            </parameter>
+            <parameter name="center" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_vcenter">
+        <callback name="set_vcenter" c:type="set_vcenter">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="video_orientation" transfer-ownership="none">
+              <type name="VideoOrientation" c:type="GstVideoOrientation*"/>
+            </parameter>
+            <parameter name="center" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <interface name="XOverlay"
+               c:type="GstXOverlay"
+               doc="Opaque #GstXOverlay data structure."
+               glib:type-name="GstXOverlay"
+               glib:get-type="gst_x_overlay_get_type"
+               glib:type-struct="XOverlayClass">
+      <prerequisite name="Gst.ImplementsInterface"/>
+      <prerequisite name="Gst.Element"/>
+      <virtual-method name="set_xwindow_id" invoker="set_xwindow_id">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xwindow_id" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="expose" invoker="expose">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="handle_events" invoker="handle_events">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handle_events" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_render_rectangle"
+                      invoker="set_render_rectangle">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_xwindow_id"
+              c:identifier="gst_x_overlay_set_xwindow_id"
+              doc="This will call the video overlay&apos;s set_xwindow_id method. You should
+use this method to tell to a XOverlay to display video output to a
+specific XWindow. Passing 0 as the xwindow_id will tell the overlay to
+stop using that window and create an internal one.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xwindow_id" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_render_rectangle"
+              c:identifier="gst_x_overlay_set_render_rectangle"
+              doc="Configure a subregion as a video target within the window set by
+gst_x_overlay_set_xwindow_id(). If this is not used or not supported
+the video will fill the area of the window set as the overlay to 100%.
+By specifying the rectangle, the video can be overlayed to a specific region
+of that window only. After setting the new rectangle one should call
+gst_x_overlay_expose() to force a redraw. To unset the region pass -1 for
+the @x, @y, @width, and @height parameters.
+This method is needed for non fullscreen video overlay in UI toolkits that
+do not support subwindows."
+              version="0.10.29">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="expose"
+              c:identifier="gst_x_overlay_expose"
+              doc="Tell an overlay that it has been exposed. This will redraw the current frame
+in the drawable even if the pipeline is PAUSED.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="handle_events"
+              c:identifier="gst_x_overlay_handle_events"
+              doc="Tell an overlay that it should handle events from the window system. These
+events are forwared upstream as navigation events. In some window system,
+events are not propagated in the window hierarchy if a client is listening
+for them. This method allows you to disable events handling completely
+from the XOverlay."
+              version="0.10.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handle_events" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="got_xwindow_id"
+              c:identifier="gst_x_overlay_got_xwindow_id"
+              doc="This will post a &quot;have-xwindow-id&quot; element message on the bus.
+This function should only be used by video overlay plugin developers.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xwindow_id" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepare_xwindow_id"
+              c:identifier="gst_x_overlay_prepare_xwindow_id"
+              doc="This will post a &quot;prepare-xwindow-id&quot; element message on the bus
+to give applications an opportunity to call
+gst_x_overlay_set_xwindow_id() before a plugin creates its own
+window.
+This function should only be used by video overlay plugin developers.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </interface>
+    <record name="XOverlayClass"
+            c:type="GstXOverlayClass"
+            glib:is-gtype-struct-for="XOverlay"
+            doc="#GstXOverlay interface">
+      <field name="klass">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="set_xwindow_id">
+        <callback name="set_xwindow_id" c:type="set_xwindow_id">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="overlay" transfer-ownership="none">
+              <type name="XOverlay" c:type="GstXOverlay*"/>
+            </parameter>
+            <parameter name="xwindow_id" transfer-ownership="none">
+              <type name="ulong" c:type="gulong"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="expose">
+        <callback name="expose" c:type="expose">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="overlay" transfer-ownership="none">
+              <type name="XOverlay" c:type="GstXOverlay*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="handle_events">
+        <callback name="handle_events" c:type="handle_events">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="overlay" transfer-ownership="none">
+              <type name="XOverlay" c:type="GstXOverlay*"/>
+            </parameter>
+            <parameter name="handle_events" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_render_rectangle">
+        <callback name="set_render_rectangle" c:type="set_render_rectangle">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="overlay" transfer-ownership="none">
+              <type name="XOverlay" c:type="GstXOverlay*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <function name="mixer_message_get_type"
+              c:identifier="gst_mixer_message_get_type"
+              doc="Check a bus message to see if it is a GstMixer notification
+message and return the GstMixerMessageType identifying which
+type of notification it is.
+if the message is not a GstMixer notification."
+              version="0.10.14">
+      <return-value transfer-ownership="full">
+        <type name="MixerMessageType" c:type="GstMixerMessageType"/>
+      </return-value>
+      <parameters>
+        <parameter name="message" transfer-ownership="none">
+          <type name="Gst.Message" c:type="GstMessage*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mixer_message_parse_mute_toggled"
+              c:identifier="gst_mixer_message_parse_mute_toggled"
+              doc="Extracts the contents of a mute-toggled bus message. Reads
+the GstMixerTrack that has changed, and the new value of the mute
+flag.
+The GstMixerTrack remains valid until the message is freed."
+              version="0.10.14">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="message" transfer-ownership="none">
+          <type name="Gst.Message" c:type="GstMessage*"/>
+        </parameter>
+        <parameter name="track" transfer-ownership="none">
+          <type name="MixerTrack" c:type="GstMixerTrack**"/>
+        </parameter>
+        <parameter name="mute" direction="out" transfer-ownership="full">
+          <type name="boolean" c:type="gboolean*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mixer_message_parse_option_changed"
+              c:identifier="gst_mixer_message_parse_option_changed"
+              doc="Extracts the GstMixerOptions and new value from a option-changed bus notification
+message.
+The options and value returned remain valid until the message is freed."
+              version="0.10.14">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="message" transfer-ownership="none">
+          <type name="Gst.Message" c:type="GstMessage*"/>
+        </parameter>
+        <parameter name="options" transfer-ownership="none">
+          <type name="MixerOptions" c:type="GstMixerOptions**"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mixer_message_parse_options_list_changed"
+              c:identifier="gst_mixer_message_parse_options_list_changed"
+              doc="Extracts the GstMixerOptions whose value list has changed from an
+options-list-changed bus notification message.
+The options object returned remains valid until the message is freed. You
+do not need to unref it."
+              version="0.10.18">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="message" transfer-ownership="none">
+          <type name="Gst.Message" c:type="GstMessage*"/>
+        </parameter>
+        <parameter name="options" transfer-ownership="none">
+          <type name="MixerOptions" c:type="GstMixerOptions**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mixer_message_parse_record_toggled"
+              c:identifier="gst_mixer_message_parse_record_toggled"
+              doc="Extracts the contents of a record-toggled bus message. Reads
+the GstMixerTrack that has changed, and the new value of the
+recording flag.
+The GstMixerTrack remains valid until the message is freed."
+              version="0.10.14">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="message" transfer-ownership="none">
+          <type name="Gst.Message" c:type="GstMessage*"/>
+        </parameter>
+        <parameter name="track" transfer-ownership="none">
+          <type name="MixerTrack" c:type="GstMixerTrack**"/>
+        </parameter>
+        <parameter name="record" direction="out" transfer-ownership="full">
+          <type name="boolean" c:type="gboolean*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mixer_message_parse_volume_changed"
+              c:identifier="gst_mixer_message_parse_volume_changed"
+              doc="Parses a volume-changed notification message and extracts the track object
+it refers to, as well as an array of volumes and the size of the volumes array.
+The track object remains valid until the message is freed.
+The caller must free the array returned in the volumes parameter using g_free
+when they are done with it."
+              version="0.10.14">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="message" transfer-ownership="none">
+          <type name="Gst.Message" c:type="GstMessage*"/>
+        </parameter>
+        <parameter name="track" transfer-ownership="none">
+          <type name="MixerTrack" c:type="GstMixerTrack**"/>
+        </parameter>
+        <parameter name="volumes" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint**"/>
+        </parameter>
+        <parameter name="num_channels"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_event_get_type"
+              c:identifier="gst_navigation_event_get_type"
+              doc="Inspect a #GstEvent and return the #GstNavigationEventType of the event, or
+#GST_NAVIGATION_EVENT_INVALID if the event is not a #GstNavigation event."
+              version="0.10.23">
+      <return-value transfer-ownership="full">
+        <type name="NavigationEventType" c:type="GstNavigationEventType"/>
+      </return-value>
+      <parameters>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Gst.Event" c:type="GstEvent*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_event_parse_command"
+              c:identifier="gst_navigation_event_parse_command"
+              doc="navigation event.
+Inspect a #GstNavigation command event and retrieve the enum value of the
+associated command."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Gst.Event" c:type="GstEvent*"/>
+        </parameter>
+        <parameter name="command" transfer-ownership="none">
+          <type name="NavigationCommand" c:type="GstNavigationCommand*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_event_parse_key_event"
+              c:identifier="gst_navigation_event_parse_key_event"
+              doc="press. The returned string is owned by the event, and valid only until the
+event is unreffed."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Gst.Event" c:type="GstEvent*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_event_parse_mouse_button_event"
+              c:identifier="gst_navigation_event_parse_mouse_button_event"
+              doc="with the event.
+event.
+event.
+Retrieve the details of either a #GstNavigation mouse button press event or
+a mouse button release event. Determine which type the event is using
+gst_navigation_event_get_type() to retrieve the #GstNavigationEventType.
+otherwise FALSE."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Gst.Event" c:type="GstEvent*"/>
+        </parameter>
+        <parameter name="button" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="x" direction="out" transfer-ownership="full">
+          <type name="double" c:type="gdouble*"/>
+        </parameter>
+        <parameter name="y" direction="out" transfer-ownership="full">
+          <type name="double" c:type="gdouble*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_event_parse_mouse_move_event"
+              c:identifier="gst_navigation_event_parse_mouse_move_event"
+              doc="Inspect a #GstNavigation mouse movement event and extract the coordinates
+of the event."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Gst.Event" c:type="GstEvent*"/>
+        </parameter>
+        <parameter name="x" direction="out" transfer-ownership="full">
+          <type name="double" c:type="gdouble*"/>
+        </parameter>
+        <parameter name="y" direction="out" transfer-ownership="full">
+          <type name="double" c:type="gdouble*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_message_get_type"
+              c:identifier="gst_navigation_message_get_type"
+              doc="Check a bus message to see if it is a #GstNavigation event, and return
+the #GstNavigationMessageType identifying the type of the message if so.
+#GST_NAVIGATION_MESSAGE_INVALID if the message is not a #GstNavigation
+notification."
+              version="0.10.23">
+      <return-value transfer-ownership="full">
+        <type name="NavigationMessageType" c:type="GstNavigationMessageType"/>
+      </return-value>
+      <parameters>
+        <parameter name="message" transfer-ownership="none">
+          <type name="Gst.Message" c:type="GstMessage*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_message_new_angles_changed"
+              c:identifier="gst_navigation_message_new_angles_changed"
+              doc="Creates a new #GstNavigation message with type
+#GST_NAVIGATION_MESSAGE_ANGLES_CHANGED for notifying an application
+that the current angle, or current number of angles available in a
+multiangle video has changed."
+              version="0.10.23">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Message" c:type="GstMessage*"/>
+      </return-value>
+      <parameters>
+        <parameter name="src" transfer-ownership="none">
+          <type name="Gst.Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="cur_angle" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="n_angles" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_message_new_commands_changed"
+              c:identifier="gst_navigation_message_new_commands_changed"
+              doc="Creates a new #GstNavigation message with type
+#GST_NAVIGATION_MESSAGE_COMMANDS_CHANGED"
+              version="0.10.23">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Message" c:type="GstMessage*"/>
+      </return-value>
+      <parameters>
+        <parameter name="src" transfer-ownership="none">
+          <type name="Gst.Object" c:type="GstObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_message_new_mouse_over"
+              c:identifier="gst_navigation_message_new_mouse_over"
+              doc="%FALSE if it over a non-clickable area.
+Creates a new #GstNavigation message with type
+#GST_NAVIGATION_MESSAGE_MOUSE_OVER."
+              version="0.10.23">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Message" c:type="GstMessage*"/>
+      </return-value>
+      <parameters>
+        <parameter name="src" transfer-ownership="none">
+          <type name="Gst.Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="active" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_message_parse_angles_changed"
+              c:identifier="gst_navigation_message_parse_angles_changed"
+              doc="or NULL
+Parse a #GstNavigation message of type GST_NAVIGATION_MESSAGE_ANGLES_CHANGED
+and extract the @cur_angle and @n_angles parameters."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="message" transfer-ownership="none">
+          <type name="Gst.Message" c:type="GstMessage*"/>
+        </parameter>
+        <parameter name="cur_angle" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+        <parameter name="n_angles" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_message_parse_mouse_over"
+              c:identifier="gst_navigation_message_parse_mouse_over"
+              doc="or NULL.
+Parse a #GstNavigation message of type #GST_NAVIGATION_MESSAGE_MOUSE_OVER
+and extract the active/inactive flag. If the mouse over event is marked
+active, it indicates that the mouse is over a clickable area."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="message" transfer-ownership="none">
+          <type name="Gst.Message" c:type="GstMessage*"/>
+        </parameter>
+        <parameter name="active" direction="out" transfer-ownership="full">
+          <type name="boolean" c:type="gboolean*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_query_get_type"
+              c:identifier="gst_navigation_query_get_type"
+              doc="Inspect a #GstQuery and return the #GstNavigationQueryType associated with
+it if it is a #GstNavigation query.
+#GST_NAVIGATION_QUERY_INVALID"
+              version="0.10.23">
+      <return-value transfer-ownership="full">
+        <type name="NavigationQueryType" c:type="GstNavigationQueryType"/>
+      </return-value>
+      <parameters>
+        <parameter name="query" transfer-ownership="none">
+          <type name="Gst.Query" c:type="GstQuery*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_query_new_angles"
+              c:identifier="gst_navigation_query_new_angles"
+              doc="Create a new #GstNavigation angles query. When executed, it will
+query the pipeline for the set of currently available angles, which may be
+greater than one in a multiangle video."
+              version="0.10.23">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Query" c:type="GstQuery*"/>
+      </return-value>
+    </function>
+    <function name="navigation_query_new_commands"
+              c:identifier="gst_navigation_query_new_commands"
+              doc="Create a new #GstNavigation commands query. When executed, it will
+query the pipeline for the set of currently available commands."
+              version="0.10.23">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Query" c:type="GstQuery*"/>
+      </return-value>
+    </function>
+    <function name="navigation_query_parse_angles"
+              c:identifier="gst_navigation_query_parse_angles"
+              doc="angle value from the query, or NULL
+value from the query, or NULL
+Parse the current angle number in the #GstNavigation angles @query into the
+#guint pointed to by the @cur_angle variable, and the number of available
+angles into the #guint pointed to by the @n_angles variable."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="query" transfer-ownership="none">
+          <type name="Gst.Query" c:type="GstQuery*"/>
+        </parameter>
+        <parameter name="cur_angle" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+        <parameter name="n_angles" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_query_parse_commands_length"
+              c:identifier="gst_navigation_query_parse_commands_length"
+              doc="Parse the number of commands in the #GstNavigation commands @query."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="query" transfer-ownership="none">
+          <type name="Gst.Query" c:type="GstQuery*"/>
+        </parameter>
+        <parameter name="n_cmds" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_query_parse_commands_nth"
+              c:identifier="gst_navigation_query_parse_commands_nth"
+              doc="Parse the #GstNavigation command query and retrieve the @nth command from
+it into @cmd. If the list contains less elements than @nth, @cmd will be
+set to #GST_NAVIGATION_COMMAND_INVALID."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="query" transfer-ownership="none">
+          <type name="Gst.Query" c:type="GstQuery*"/>
+        </parameter>
+        <parameter name="nth" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="cmd" transfer-ownership="none">
+          <type name="NavigationCommand" c:type="GstNavigationCommand*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_query_set_angles"
+              c:identifier="gst_navigation_query_set_angles"
+              doc="Set the #GstNavigation angles query result field in @query."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="query" transfer-ownership="none">
+          <type name="Gst.Query" c:type="GstQuery*"/>
+        </parameter>
+        <parameter name="cur_angle" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="n_angles" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_query_set_commands"
+              c:identifier="gst_navigation_query_set_commands"
+              doc="Set the #GstNavigation command query result fields in @query. The number
+of commands passed must be equal to @n_commands."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="query" transfer-ownership="none">
+          <type name="Gst.Query" c:type="GstQuery*"/>
+        </parameter>
+        <parameter name="n_cmds" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="navigation_query_set_commandsv"
+              c:identifier="gst_navigation_query_set_commandsv"
+              doc="Set the #GstNavigation command query result fields in @query. The number
+of commands passed must be equal to @n_commands."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="query" transfer-ownership="none">
+          <type name="Gst.Query" c:type="GstQuery*"/>
+        </parameter>
+        <parameter name="n_cmds" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="cmds" transfer-ownership="none">
+          <type name="NavigationCommand" c:type="GstNavigationCommand*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="stream_volume_convert_volume"
+              c:identifier="gst_stream_volume_convert_volume"
+              version="0.10.25">
+      <return-value transfer-ownership="none">
+        <type name="double" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="from" transfer-ownership="none">
+          <type name="StreamVolumeFormat" c:type="GstStreamVolumeFormat"/>
+        </parameter>
+        <parameter name="to" transfer-ownership="none">
+          <type name="StreamVolumeFormat" c:type="GstStreamVolumeFormat"/>
+        </parameter>
+        <parameter name="val" transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/interfaces/ffi/ffi.factor b/extra/gstreamer/interfaces/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..45d57d2
--- /dev/null
@@ -0,0 +1,17 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.libraries combinators kernel
+system
+gobject-introspection glib.ffi gobject.ffi gstreamer.ffi ;
+IN: gstreamer.interfaces.ffi
+
+<<
+"gstreamer.interfaces" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstinterfaces-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gstreamer/interfaces/GstInterfaces-0.10.gir
+
diff --git a/extra/gstreamer/interfaces/interfaces.factor b/extra/gstreamer/interfaces/interfaces.factor
new file mode 100644 (file)
index 0000000..b9b57f6
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.interfaces.ffi ;
+IN: gstreamer.interfaces
+
diff --git a/extra/gstreamer/net/GstNet-0.10.gir b/extra/gstreamer/net/GstNet-0.10.gir
new file mode 100644 (file)
index 0000000..eb3a4b7
--- /dev/null
@@ -0,0 +1,279 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.0"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <namespace name="GstNet"
+             version="0.10"
+             shared-library="libgstnet-0.10.so.0"
+             c:prefix="Gst">
+    <class name="NetClientClock"
+           c:type="GstNetClientClock"
+           doc="Opaque #GstNetClientClock structure."
+           parent="Gst.SystemClock"
+           glib:type-name="GstNetClientClock"
+           glib:get-type="gst_net_client_clock_get_type"
+           glib:type-struct="NetClientClockClass">
+      <constructor name="new"
+                   c:identifier="gst_net_client_clock_new"
+                   doc="Create a new #GstNetClientClock that will report the time
+provided by the #GstNetTimeProvider on @remote_address and
+clock.">
+        <return-value transfer-ownership="full">
+          <type name="NetClientClock" c:type="GstClock*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="remote_address" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="remote_port" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="base_time" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <property name="address" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="port" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <field name="clock">
+        <type name="Gst.SystemClock" c:type="GstSystemClock"/>
+      </field>
+      <field name="address">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="port">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="sock">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="control_sock">
+        <array zero-terminated="0" c:type="int" fixed-size="2">
+          <type name="int"/>
+        </array>
+      </field>
+      <field name="current_timeout">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="servaddr">
+        <type name="any" c:type="any*"/>
+      </field>
+      <field name="thread">
+        <type name="GLib.Thread" c:type="GThread*"/>
+      </field>
+      <field name="priv">
+        <type name="NetClientClockPrivate" c:type="GstNetClientClockPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="NetClientClockClass"
+            c:type="GstNetClientClockClass"
+            glib:is-gtype-struct-for="NetClientClock">
+      <field name="parent_class">
+        <type name="Gst.SystemClockClass" c:type="GstSystemClockClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="NetClientClockPrivate" c:type="GstNetClientClockPrivate">
+    </record>
+    <record name="NetTimePacket"
+            c:type="GstNetTimePacket"
+            doc="Content of a #GstNetTimePacket.">
+      <field name="local_time" writable="1">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="remote_time" writable="1">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_net_time_packet_new"
+                   doc="Creates a new #GstNetTimePacket from a buffer received over the network. The
+caller is responsible for ensuring that @buffer is at least
+#GST_NET_TIME_PACKET_SIZE bytes long.
+If @buffer is #NULL, the local and remote times will be set to
+#GST_CLOCK_TIME_NONE.
+MT safe. Caller owns return value (g_free to free).">
+        <return-value transfer-ownership="full">
+          <type name="NetTimePacket" c:type="GstNetTimePacket*"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="serialize"
+              c:identifier="gst_net_time_packet_serialize"
+              doc="Serialized a #GstNetTimePacket into a newly-allocated sequence of
+#GST_NET_TIME_PACKET_SIZE bytes, in network byte order. The value returned is
+suitable for passing to write(2) or sendto(2) for communication over the
+network.
+MT safe. Caller owns return value (g_free to free).">
+        <return-value transfer-ownership="full">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="send"
+              c:identifier="gst_net_time_packet_send"
+              doc="Sends a #GstNetTimePacket over a socket. Essentially a thin wrapper around
+sendto(2) and gst_net_time_packet_serialize().
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="addr" transfer-ownership="none">
+            <type name="any" c:type="any*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="int32" c:type="socklen_t"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <class name="NetTimeProvider"
+           c:type="GstNetTimeProvider"
+           doc="Opaque #GstNetTimeProvider structure."
+           parent="Gst.Object"
+           glib:type-name="GstNetTimeProvider"
+           glib:get-type="gst_net_time_provider_get_type"
+           glib:type-struct="NetTimeProviderClass">
+      <constructor name="new"
+                   c:identifier="gst_net_time_provider_new"
+                   doc="to bind to all addresses
+Allows network clients to get the current time of @clock.">
+        <return-value transfer-ownership="full">
+          <type name="NetTimeProvider" c:type="GstNetTimeProvider*"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Gst.Clock" c:type="GstClock*"/>
+          </parameter>
+          <parameter name="address" transfer-ownership="none" doc="or NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="port" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <property name="active" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="address" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="clock" writable="1">
+        <type name="Gst.Clock" c:type="GstClock"/>
+      </property>
+      <property name="port" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <field name="parent">
+        <type name="Gst.Object" c:type="GstObject"/>
+      </field>
+      <field name="address">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="port">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="sock">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="control_sock">
+        <array zero-terminated="0" c:type="int" fixed-size="2">
+          <type name="int"/>
+        </array>
+      </field>
+      <field name="thread">
+        <type name="GLib.Thread" c:type="GThread*"/>
+      </field>
+      <field name="clock">
+        <type name="Gst.Clock" c:type="GstClock*"/>
+      </field>
+      <union name="active" c:type="active">
+        <field name="_gst_reserved1" writable="1">
+          <type name="any" c:type="gpointer"/>
+        </field>
+        <field name="active" writable="1">
+          <type name="int" c:type="gint"/>
+        </field>
+      </union>
+      <field name="priv">
+        <type name="NetTimeProviderPrivate"
+              c:type="GstNetTimeProviderPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="NetTimeProviderClass"
+            c:type="GstNetTimeProviderClass"
+            glib:is-gtype-struct-for="NetTimeProvider">
+      <field name="parent_class">
+        <type name="Gst.ObjectClass" c:type="GstObjectClass"/>
+      </field>
+    </record>
+    <record name="NetTimeProviderPrivate" c:type="GstNetTimeProviderPrivate">
+    </record>
+    <constant name="TIME_PACKET_SIZE" value="16">
+      <type name="int"/>
+    </constant>
+    <function name="time_packet_receive"
+              c:identifier="gst_net_time_packet_receive"
+              doc="Receives a #GstNetTimePacket over a socket. Handles interrupted system calls,
+but otherwise returns NULL on error. See recvfrom(2) for more information on
+how to interpret @sockaddr.
+MT safe. Caller owns return value (g_free to free).">
+      <return-value transfer-ownership="full">
+        <type name="NetTimePacket" c:type="GstNetTimePacket*"/>
+      </return-value>
+      <parameters>
+        <parameter name="fd" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="addr" transfer-ownership="none">
+          <type name="any" c:type="any*"/>
+        </parameter>
+        <parameter name="len" direction="out" transfer-ownership="full">
+          <type name="int32" c:type="socklen_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/net/ffi/ffi.factor b/extra/gstreamer/net/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..fbd5148
--- /dev/null
@@ -0,0 +1,19 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries combinators kernel system
+gobject-introspection glib.ffi gstreamer.ffi ;
+FROM: unix.types => socklen_t ;
+IN: gstreamer.net.ffi
+
+<<
+"gstreamer.net" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstnet-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+REPLACE-C-TYPE: any gpointer
+
+GIR: vocab:gstreamer/net/GstNet-0.10.gir
+
diff --git a/extra/gstreamer/net/net.factor b/extra/gstreamer/net/net.factor
new file mode 100644 (file)
index 0000000..b409685
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.net.ffi ;
+IN: gstreamer.net
+
diff --git a/extra/gstreamer/netbuffer/GstNetbuffer-0.10.gir b/extra/gstreamer/netbuffer/GstNetbuffer-0.10.gir
new file mode 100644 (file)
index 0000000..4095f0d
--- /dev/null
@@ -0,0 +1,267 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.0"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <c:include name="gst/netbuffer/gstnetbuffer.h"/>
+  <namespace name="GstNetbuffer"
+             version="0.10"
+             shared-library="libgstnetbuffer-0.10.so.0"
+             c:prefix="Gst">
+    <record name="NetAddress"
+            c:type="GstNetAddress"
+            doc="An opaque network address as used in #GstNetBuffer.">
+      <field name="type" writable="1">
+        <type name="NetType" c:type="GstNetType"/>
+      </field>
+      <union name="address" c:type="address">
+        <field name="ip6" writable="1">
+          <array zero-terminated="0" c:type="guint8" fixed-size="16">
+            <type name="uint8"/>
+          </array>
+        </field>
+        <field name="ip4" writable="1">
+          <type name="uint32" c:type="guint32"/>
+        </field>
+      </union>
+      <field name="port" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="NetBuffer"
+            c:type="GstNetBuffer"
+            doc="buffer for use in network sources and sinks.
+It contains the source or destination address of the buffer.">
+      <field name="buffer" writable="1">
+        <type name="Gst.Buffer" c:type="GstBuffer"/>
+      </field>
+      <field name="from" writable="1">
+        <type name="NetAddress" c:type="GstNetAddress"/>
+      </field>
+      <field name="to" writable="1">
+        <type name="NetAddress" c:type="GstNetAddress"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="NetBufferClass" c:type="GstNetBufferClass">
+      <field name="buffer_class" writable="1">
+        <type name="Gst.BufferClass" c:type="GstBufferClass"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="NetType"
+                 doc="The Address type used in #GstNetAddress."
+                 c:type="GstNetType">
+      <member name="unknown" value="0" c:identifier="GST_NET_TYPE_UNKNOWN"/>
+      <member name="ip4" value="1" c:identifier="GST_NET_TYPE_IP4"/>
+      <member name="ip6" value="2" c:identifier="GST_NET_TYPE_IP6"/>
+    </enumeration>
+    <function name="netaddress_equal"
+              c:identifier="gst_netaddress_equal"
+              doc="Compare two #GstNetAddress structures"
+              version="0.10.18">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="naddr1" transfer-ownership="none">
+          <type name="NetAddress" c:type="GstNetAddress*"/>
+        </parameter>
+        <parameter name="naddr2" transfer-ownership="none">
+          <type name="NetAddress" c:type="GstNetAddress*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="netaddress_get_address_bytes"
+              c:identifier="gst_netaddress_get_address_bytes"
+              doc="Get just the address bytes stored in @naddr into @address.
+Note that @port is expressed in network byte order, use g_ntohs() to convert
+it to host order. IP4 addresses are also stored in network byte order."
+              version="0.10.22">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="naddr" transfer-ownership="none">
+          <type name="NetAddress" c:type="GstNetAddress*"/>
+        </parameter>
+        <parameter name="address" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="port" direction="out" transfer-ownership="full">
+          <type name="uint16" c:type="guint16*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="netaddress_get_ip4_address"
+              c:identifier="gst_netaddress_get_ip4_address"
+              doc="Get the IPv4 address stored in @naddr into @address. This function requires
+that the address type of @naddr is of type #GST_NET_TYPE_IP4.
+Note that @port and @address are expressed in network byte order, use
+g_ntohs() and g_ntohl() to convert them to host order.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="naddr" transfer-ownership="none">
+          <type name="NetAddress" c:type="GstNetAddress*"/>
+        </parameter>
+        <parameter name="address" direction="out" transfer-ownership="full">
+          <type name="uint32" c:type="guint32*"/>
+        </parameter>
+        <parameter name="port" direction="out" transfer-ownership="full">
+          <type name="uint16" c:type="guint16*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="netaddress_get_ip6_address"
+              c:identifier="gst_netaddress_get_ip6_address"
+              doc="Get the IPv6 address stored in @naddr into @address.
+If @naddr is of type GST_NET_TYPE_IP4, the transitional IP6 address is
+returned.
+Note that @port is expressed in network byte order, use g_ntohs() to convert
+it to host order.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="naddr" transfer-ownership="none">
+          <type name="NetAddress" c:type="GstNetAddress*"/>
+        </parameter>
+        <parameter name="address" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="port" direction="out" transfer-ownership="full">
+          <type name="uint16" c:type="guint16*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="netaddress_get_net_type"
+              c:identifier="gst_netaddress_get_net_type"
+              doc="Get the type of address stored in @naddr.">
+      <return-value transfer-ownership="full">
+        <type name="NetType" c:type="GstNetType"/>
+      </return-value>
+      <parameters>
+        <parameter name="naddr" transfer-ownership="none">
+          <type name="NetAddress" c:type="GstNetAddress*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="netaddress_set_address_bytes"
+              c:identifier="gst_netaddress_set_address_bytes"
+              doc="Set just the address bytes stored in @naddr into @address.
+Note that @port must be expressed in network byte order, use g_htons() to
+convert it to network byte order order. IP4 address bytes must also be
+stored in network byte order."
+              version="0.10.22">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="naddr" transfer-ownership="none">
+          <type name="NetAddress" c:type="GstNetAddress*"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="NetType" c:type="GstNetType"/>
+        </parameter>
+        <parameter name="address" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="port" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="netaddress_set_ip4_address"
+              c:identifier="gst_netaddress_set_ip4_address"
+              doc="Set @naddr with the IPv4 @address and @port pair.
+Note that @port and @address must be expressed in network byte order,
+use g_htons() and g_htonl() to convert them to network byte order.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="naddr" transfer-ownership="none">
+          <type name="NetAddress" c:type="GstNetAddress*"/>
+        </parameter>
+        <parameter name="address" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+        <parameter name="port" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="netaddress_set_ip6_address"
+              c:identifier="gst_netaddress_set_ip6_address"
+              doc="Set @naddr with the IPv6 @address and @port pair.
+Note that @port must be expressed in network byte order, use g_htons() to convert
+it to network byte order.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="naddr" transfer-ownership="none">
+          <type name="NetAddress" c:type="GstNetAddress*"/>
+        </parameter>
+        <parameter name="address" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="port" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="netaddress_to_string"
+              c:identifier="gst_netaddress_to_string"
+              doc="Copies a string representation of @naddr into @dest. Up to @len bytes are
+copied.
+enough"
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="naddr" transfer-ownership="none">
+          <type name="NetAddress" c:type="GstNetAddress*"/>
+        </parameter>
+        <parameter name="dest" transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="new"
+              c:identifier="gst_netbuffer_new"
+              doc="Create a new network buffer.">
+      <return-value transfer-ownership="full">
+        <type name="NetBuffer" c:type="GstNetBuffer*"/>
+      </return-value>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/netbuffer/ffi/ffi.factor b/extra/gstreamer/netbuffer/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..c291a8b
--- /dev/null
@@ -0,0 +1,16 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries combinators kernel system
+gobject-introspection glib.ffi ;
+IN: gstreamer.netbuffer.ffi
+
+<<
+"gstreamer.netbuffer" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstnetbuffer-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gstreamer/netbuffer/GstNetbuffer-0.10.gir
+
diff --git a/extra/gstreamer/netbuffer/netbuffer.factor b/extra/gstreamer/netbuffer/netbuffer.factor
new file mode 100644 (file)
index 0000000..7273c3a
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.netbuffer.ffi ;
+IN: gstreamer.netbuffer
+
diff --git a/extra/gstreamer/pbutils/GstPbutils-0.10.gir b/extra/gstreamer/pbutils/GstPbutils-0.10.gir
new file mode 100644 (file)
index 0000000..c9748b3
--- /dev/null
@@ -0,0 +1,665 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.0"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <c:include name="gst/pbutils/descriptions.h"/>
+  <c:include name="gst/pbutils/install-plugins.h"/>
+  <c:include name="gst/pbutils/missing-plugins.h"/>
+  <c:include name="gst/pbutils/pbutils-enumtypes.h"/>
+  <c:include name="gst/pbutils/pbutils.h"/>
+  <namespace name="GstPbutils"
+             version="0.10"
+             shared-library="libgstpbutils-0.10.so.0"
+             c:prefix="Gst">
+    <record name="InstallPluginsContext"
+            c:type="GstInstallPluginsContext"
+            doc="Opaque context structure for the plugin installation. Use the provided
+API to set details on it."
+            version="0.10.12"
+            glib:type-name="GstInstallPluginsContext"
+            glib:get-type="gst_install_plugins_context_get_type">
+      <constructor name="new"
+                   c:identifier="gst_install_plugins_context_new"
+                   doc="Creates a new #GstInstallPluginsContext.
+gst_install_plugins_context_free() when no longer needed"
+                   version="0.10.12">
+        <return-value transfer-ownership="full">
+          <type name="InstallPluginsContext"
+                c:type="GstInstallPluginsContext*"/>
+        </return-value>
+      </constructor>
+      <method name="free"
+              c:identifier="gst_install_plugins_context_free"
+              doc="Frees a #GstInstallPluginsContext."
+              version="0.10.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_xid"
+              c:identifier="gst_install_plugins_context_set_xid"
+              doc="This function is for X11-based applications (such as most Gtk/Qt
+applications on linux/unix) only. You can use it to tell the external
+installer the XID of your main application window. That way the installer
+can make its own window transient to your application window during the
+installation.
+If set, the XID will be passed to the installer via a --transient-for=XID
+command line option.
+Gtk+/Gnome application should be able to obtain the XID of the top-level
+window like this:
+&lt;programlisting&gt;
+##include &amp;lt;gtk/gtk.h&amp;gt;
+##ifdef GDK_WINDOWING_X11
+##include &amp;lt;gdk/gdkx.h&amp;gt;
+##endif
+...
+##ifdef GDK_WINDOWING_X11
+xid = GDK_WINDOW_XWINDOW (GTK_WIDGET (application_window)-&amp;gt;window);
+##endif
+...
+&lt;/programlisting&gt;"
+              version="0.10.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xid"
+                     transfer-ownership="none"
+                     doc="of the top-level application">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="InstallPluginsResultFunc"
+              c:type="GstInstallPluginsResultFunc"
+              doc="The prototype of the callback function that will be called once the
+external plugin installer program has returned. You only need to provide
+a callback function if you are using the asynchronous interface."
+              version="0.10.12">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="result" transfer-ownership="none">
+          <type name="InstallPluginsReturn" c:type="GstInstallPluginsReturn"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="InstallPluginsReturn"
+                 doc="installed
+any of the requested plugins could be found. Only return this if nothing
+has been installed. Return #GST_INSTALL_PLUGINS_PARTIAL_SUCCESS if
+some (but not all) of the requested plugins could be installed.
+this happens, the  user has already seen an error message and another
+one should not be displayed
+(ie. death by signal)
+be installed, but not all
+indicate that everything went fine so far and the provided callback
+will be called with the result of the installation later
+occured when trying to start the installer
+actual installer is not installed
+installation is still in progress, try again later
+Result codes returned by gst_install_plugins_async() and
+gst_install_plugins_sync(), and also the result code passed to the
+#GstInstallPluginsResultFunc specified with gst_install_plugin_async().
+These codes indicate success or failure of starting an external installer
+program and to what extent the requested plugins could be installed."
+                 version="0.10.12"
+                 glib:type-name="GstInstallPluginsReturn"
+                 glib:get-type="gst_install_plugins_return_get_type"
+                 c:type="GstInstallPluginsReturn">
+      <member name="success"
+              value="0"
+              c:identifier="GST_INSTALL_PLUGINS_SUCCESS"
+              glib:nick="success"/>
+      <member name="not_found"
+              value="1"
+              c:identifier="GST_INSTALL_PLUGINS_NOT_FOUND"
+              glib:nick="not-found"/>
+      <member name="error"
+              value="2"
+              c:identifier="GST_INSTALL_PLUGINS_ERROR"
+              glib:nick="error"/>
+      <member name="partial_success"
+              value="3"
+              c:identifier="GST_INSTALL_PLUGINS_PARTIAL_SUCCESS"
+              glib:nick="partial-success"/>
+      <member name="user_abort"
+              value="4"
+              c:identifier="GST_INSTALL_PLUGINS_USER_ABORT"
+              glib:nick="user-abort"/>
+      <member name="crashed"
+              value="100"
+              c:identifier="GST_INSTALL_PLUGINS_CRASHED"
+              glib:nick="crashed"/>
+      <member name="invalid"
+              value="101"
+              c:identifier="GST_INSTALL_PLUGINS_INVALID"
+              glib:nick="invalid"/>
+      <member name="started_ok"
+              value="200"
+              c:identifier="GST_INSTALL_PLUGINS_STARTED_OK"
+              glib:nick="started-ok"/>
+      <member name="internal_failure"
+              value="201"
+              c:identifier="GST_INSTALL_PLUGINS_INTERNAL_FAILURE"
+              glib:nick="internal-failure"/>
+      <member name="helper_missing"
+              value="202"
+              c:identifier="GST_INSTALL_PLUGINS_HELPER_MISSING"
+              glib:nick="helper-missing"/>
+      <member name="install_in_progress"
+              value="203"
+              c:identifier="GST_INSTALL_PLUGINS_INSTALL_IN_PROGRESS"
+              glib:nick="install-in-progress"/>
+    </enumeration>
+    <function name="install_plugins_async"
+              c:identifier="gst_install_plugins_async"
+              doc="Requests plugin installation without blocking. Once the plugins have been
+installed or installation has failed, @func will be called with the result
+of the installation and your provided @user_data pointer.
+This function requires a running GLib/Gtk main loop. If you are not
+running a GLib/Gtk main loop, make sure to regularly call
+g_main_context_iteration(NULL,FALSE).
+The installer strings that make up @detail are typically obtained by
+calling gst_missing_plugin_message_get_installer_detail() on missing-plugin
+messages that have been caught on a pipeline&apos;s bus or created by the
+application via the provided API, such as gst_missing_element_message_new().
+It is possible to request the installation of multiple missing plugins in
+one go (as might be required if there is a demuxer for a certain format
+installed but no suitable video decoder and no suitable audio decoder)."
+              version="0.10.12">
+      <return-value transfer-ownership="full">
+        <type name="InstallPluginsReturn" c:type="GstInstallPluginsReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="details" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="ctx" transfer-ownership="none">
+          <type name="InstallPluginsContext"
+                c:type="GstInstallPluginsContext*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="3">
+          <type name="InstallPluginsResultFunc"
+                c:type="GstInstallPluginsResultFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="install_plugins_installation_in_progress"
+              c:identifier="gst_install_plugins_installation_in_progress"
+              doc="Checks whether plugin installation (initiated by this application only)
+is currently in progress."
+              version="0.10.12">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="install_plugins_return_get_name"
+              c:identifier="gst_install_plugins_return_get_name"
+              doc="Convenience function to return the descriptive string associated
+with a status code.  This function returns English strings and
+should not be used for user messages. It is here only to assist
+in debugging."
+              version="0.10.12">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="ret" transfer-ownership="none">
+          <type name="InstallPluginsReturn" c:type="GstInstallPluginsReturn"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="install_plugins_supported"
+              c:identifier="gst_install_plugins_supported"
+              doc="Checks whether plugin installation is likely to be supported by the
+current environment. This currently only checks whether the helper script
+that is to be provided by the distribution or operating system vendor
+exists."
+              version="0.10.15">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="install_plugins_sync"
+              c:identifier="gst_install_plugins_sync"
+              doc="Requests plugin installation and block until the plugins have been
+installed or installation has failed.
+This function should almost never be used, it only exists for cases where
+a non-GLib main loop is running and the user wants to run it in a separate
+thread and marshal the result back asynchronously into the main thread
+using the other non-GLib main loop. You should almost always use
+gst_install_plugins_async() instead of this function."
+              version="0.10.12">
+      <return-value transfer-ownership="full">
+        <type name="InstallPluginsReturn" c:type="GstInstallPluginsReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="details" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="ctx" transfer-ownership="none">
+          <type name="InstallPluginsContext"
+                c:type="GstInstallPluginsContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_missing_plugin_message"
+              c:identifier="gst_is_missing_plugin_message"
+              doc="Checks whether @msg is a missing plugins message.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="msg" transfer-ownership="none">
+          <type name="Gst.Message" c:type="GstMessage*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="missing_decoder_installer_detail_new"
+              c:identifier="gst_missing_decoder_installer_detail_new"
+              doc="Returns an opaque string containing all the details about the missing
+element to be passed to an external installer called via
+gst_install_plugins_async() or gst_install_plugins_sync().
+This function is mainly for applications that call external plugin
+installation mechanisms using one of the two above-mentioned functions in
+the case where the application knows exactly what kind of plugin it is
+missing.
+with g_free() when not needed any longer."
+              version="0.10.15">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="decode_caps"
+                   transfer-ownership="none"
+                   doc="caps for which a decoder element is needed">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="missing_decoder_message_new"
+              c:identifier="gst_missing_decoder_message_new"
+              doc="Creates a missing-plugin message for @element to notify the application
+that a decoder element for a particular set of (fixed) caps is missing.
+This function is mainly for use in plugins.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Message" c:type="GstMessage*"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="decode_caps"
+                   transfer-ownership="none"
+                   doc="caps for which a decoder element is needed">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="missing_element_installer_detail_new"
+              c:identifier="gst_missing_element_installer_detail_new"
+              doc="e.g. &quot;videoscale&quot; or &quot;cdparanoiasrc&quot;
+Returns an opaque string containing all the details about the missing
+element to be passed to an external installer called via
+gst_install_plugins_async() or gst_install_plugins_sync().
+This function is mainly for applications that call external plugin
+installation mechanisms using one of the two above-mentioned functions in
+the case where the application knows exactly what kind of plugin it is
+missing.
+with g_free() when not needed any longer."
+              version="0.10.15">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="factory_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="missing_element_message_new"
+              c:identifier="gst_missing_element_message_new"
+              doc="e.g. &quot;videoscale&quot; or &quot;cdparanoiasrc&quot;
+Creates a missing-plugin message for @element to notify the application
+that a certain required element is missing. This function is mainly for
+use in plugins.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Message" c:type="GstMessage*"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="factory_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="missing_encoder_installer_detail_new"
+              c:identifier="gst_missing_encoder_installer_detail_new"
+              doc="Returns an opaque string containing all the details about the missing
+element to be passed to an external installer called via
+gst_install_plugins_async() or gst_install_plugins_sync().
+This function is mainly for applications that call external plugin
+installation mechanisms using one of the two above-mentioned functions in
+the case where the application knows exactly what kind of plugin it is
+missing.
+with g_free() when not needed any longer."
+              version="0.10.15">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="encode_caps"
+                   transfer-ownership="none"
+                   doc="caps for which an encoder element is needed">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="missing_encoder_message_new"
+              c:identifier="gst_missing_encoder_message_new"
+              doc="Creates a missing-plugin message for @element to notify the application
+that an encoder element for a particular set of (fixed) caps is missing.
+This function is mainly for use in plugins.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Message" c:type="GstMessage*"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="encode_caps"
+                   transfer-ownership="none"
+                   doc="caps for which an encoder element is needed">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="missing_plugin_message_get_description"
+              c:identifier="gst_missing_plugin_message_get_description"
+              doc="Returns a localised string describing the missing feature, for use in
+error dialogs and the like. Should never return NULL unless @msg is not
+a valid missing-plugin message.
+This function is mainly for applications that need a human-readable string
+describing a missing plugin, given a previously collected missing-plugin
+message
+string with g_free() when not needed any longer.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="msg" transfer-ownership="none">
+          <type name="Gst.Message" c:type="GstMessage*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="missing_plugin_message_get_installer_detail"
+              c:identifier="gst_missing_plugin_message_get_installer_detail"
+              doc="Returns an opaque string containing all the details about the missing
+element to be passed to an external installer called via
+gst_install_plugins_async() or gst_install_plugins_sync().
+This function is mainly for applications that call external plugin
+installation mechanisms using one of the two above-mentioned functions.
+with g_free() when not needed any longer.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="msg" transfer-ownership="none">
+          <type name="Gst.Message" c:type="GstMessage*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="missing_uri_sink_installer_detail_new"
+              c:identifier="gst_missing_uri_sink_installer_detail_new"
+              doc="e.g. &quot;http&quot; or &quot;mms&quot;
+Returns an opaque string containing all the details about the missing
+element to be passed to an external installer called via
+gst_install_plugins_async() or gst_install_plugins_sync().
+This function is mainly for applications that call external plugin
+installation mechanisms using one of the two above-mentioned functions in
+the case where the application knows exactly what kind of plugin it is
+missing.
+with g_free() when not needed any longer."
+              version="0.10.15">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="missing_uri_sink_message_new"
+              c:identifier="gst_missing_uri_sink_message_new"
+              doc="e.g. &quot;http&quot; or &quot;smb&quot;
+Creates a missing-plugin message for @element to notify the application
+that a sink element for a particular URI protocol is missing. This
+function is mainly for use in plugins.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Message" c:type="GstMessage*"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="missing_uri_source_installer_detail_new"
+              c:identifier="gst_missing_uri_source_installer_detail_new"
+              doc="e.g. &quot;http&quot; or &quot;mms&quot;
+Returns an opaque string containing all the details about the missing
+element to be passed to an external installer called via
+gst_install_plugins_async() or gst_install_plugins_sync().
+This function is mainly for applications that call external plugin
+installation mechanisms using one of the two above-mentioned functions in
+the case where the application knows exactly what kind of plugin it is
+missing.
+with g_free() when not needed any longer."
+              version="0.10.15">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="missing_uri_source_message_new"
+              c:identifier="gst_missing_uri_source_message_new"
+              doc="e.g. &quot;http&quot; or &quot;mms&quot;
+Creates a missing-plugin message for @element to notify the application
+that a source element for a particular URI protocol is missing. This
+function is mainly for use in plugins.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Message" c:type="GstMessage*"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pb_utils_add_codec_description_to_tag_list"
+              c:identifier="gst_pb_utils_add_codec_description_to_tag_list"
+              doc="#GST_TAG_VIDEO_CODEC or #GST_TAG_CODEC
+Adds a codec tag describing the format specified by @caps to @taglist.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="taglist" transfer-ownership="none">
+          <type name="Gst.TagList" c:type="GstTagList*"/>
+        </parameter>
+        <parameter name="codec_tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="caps"
+                   transfer-ownership="none"
+                   doc="#GstCaps for which a codec tag should be added.">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pb_utils_get_codec_description"
+              c:identifier="gst_pb_utils_get_codec_description"
+              doc="Returns a localised (as far as this is possible) string describing the
+media format specified in @caps, for use in error dialogs or other messages
+to be seen by the user. Should never return NULL unless @caps is invalid.
+Also see the convenience function
+gst_pb_utils_add_codec_description_to_tag_list().
+string with g_free() when not needed any longer.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="caps"
+                   transfer-ownership="none"
+                   doc="#GstCaps for which an format description is needed">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pb_utils_get_decoder_description"
+              c:identifier="gst_pb_utils_get_decoder_description"
+              doc="Returns a localised string describing an decoder for the format specified
+in @caps, for use in error dialogs or other messages to be seen by the user.
+Should never return NULL unless @factory_name or @caps are invalid.
+This function is mainly for internal use, applications would typically
+use gst_missing_plugin_message_get_description() to get a description of
+a missing feature from a missing-plugin message.
+string with g_free() when not needed any longer.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="caps"
+                   transfer-ownership="none"
+                   doc="#GstCaps for which an decoder description is needed">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pb_utils_get_element_description"
+              c:identifier="gst_pb_utils_get_element_description"
+              doc="Returns a localised string describing the given element, for use in
+error dialogs or other messages to be seen by the user. Should never
+return NULL unless @factory_name is invalid.
+This function is mainly for internal use, applications would typically
+use gst_missing_plugin_message_get_description() to get a description of
+a missing feature from a missing-plugin message.
+string with g_free() when not needed any longer.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="factory_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pb_utils_get_encoder_description"
+              c:identifier="gst_pb_utils_get_encoder_description"
+              doc="Returns a localised string describing an encoder for the format specified
+in @caps, for use in error dialogs or other messages to be seen by the user.
+Should never return NULL unless @factory_name or @caps are invalid.
+This function is mainly for internal use, applications would typically
+use gst_missing_plugin_message_get_description() to get a description of
+a missing feature from a missing-plugin message.
+string with g_free() when not needed any longer.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="caps"
+                   transfer-ownership="none"
+                   doc="#GstCaps for which an encoder description is needed">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pb_utils_get_sink_description"
+              c:identifier="gst_pb_utils_get_sink_description"
+              doc="Returns a localised string describing a sink element handling the protocol
+specified in @protocol, for use in error dialogs or other messages to be
+seen by the user. Should never return NULL unless @protocol is invalid.
+This function is mainly for internal use, applications would typically
+use gst_missing_plugin_message_get_description() to get a description of
+a missing feature from a missing-plugin message.
+string with g_free() when not needed any longer.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pb_utils_get_source_description"
+              c:identifier="gst_pb_utils_get_source_description"
+              doc="Returns a localised string describing a source element handling the protocol
+specified in @protocol, for use in error dialogs or other messages to be
+seen by the user. Should never return NULL unless @protocol is invalid.
+This function is mainly for internal use, applications would typically
+use gst_missing_plugin_message_get_description() to get a description of
+a missing feature from a missing-plugin message.
+string with g_free() when not needed any longer.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pb_utils_init"
+              c:identifier="gst_pb_utils_init"
+              doc="Initialises the base utils support library. This function is not
+thread-safe. Applications should call it after calling gst_init(),
+plugins should call it from their plugin_init function.
+This function may be called multiple times. It will do nothing if the
+library has already been initialised."
+              version="0.10.12">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/pbutils/ffi/ffi.factor b/extra/gstreamer/pbutils/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..f494c51
--- /dev/null
@@ -0,0 +1,16 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries combinators kernel system
+gobject-introspection glib.ffi gstreamer.ffi ;
+IN: gstreamer.pbutils.ffi
+
+<<
+"gstreamer.pbutils" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstpbutils-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gstreamer/pbutils/GstPbutils-0.10.gir
+
diff --git a/extra/gstreamer/pbutils/pbutils.factor b/extra/gstreamer/pbutils/pbutils.factor
new file mode 100644 (file)
index 0000000..9010553
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.pbutils.ffi ;
+IN: gstreamer.pbutils
+
diff --git a/extra/gstreamer/riff/GstRiff-0.10.gir b/extra/gstreamer/riff/GstRiff-0.10.gir
new file mode 100644 (file)
index 0000000..d3c7519
--- /dev/null
@@ -0,0 +1,983 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.0"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="GstAudio" version="0.10"/>
+  <include name="GstBase" version="0.10"/>
+  <include name="GstInterfaces" version="0.10"/>
+  <include name="GstTag" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <package name="gstreamer-audio-0.10"/>
+  <package name="gstreamer-interfaces-0.10"/>
+  <package name="gstreamer-tag-0.10"/>
+  <c:include name="gst/riff/riff-ids.h"/>
+  <c:include name="gst/riff/riff-media.h"/>
+  <c:include name="gst/riff/riff-read.h"/>
+  <namespace name="GstRiff"
+             version="0.10"
+             shared-library="libgstriff-0.10.so.0"
+             c:prefix="Gst">
+    <constant name="IBM_FORMAT_ADPCM" value="259">
+      <type name="int"/>
+    </constant>
+    <constant name="IBM_FORMAT_ALAW" value="258">
+      <type name="int"/>
+    </constant>
+    <constant name="IBM_FORMAT_MULAW" value="257">
+      <type name="int"/>
+    </constant>
+    <constant name="IF_KEYFRAME" value="16">
+      <type name="int"/>
+    </constant>
+    <constant name="IF_LIST" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="IF_NO_TIME" value="256">
+      <type name="int"/>
+    </constant>
+    <constant name="STRH_DISABLED" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="STRH_VIDEOPALCHANGES" value="65536">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_A52" value="8192">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_AAC" value="255">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_AAC_AC" value="16707">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_AAC_pm" value="28781">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ADPCM" value="2">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ADPCM_IMA_DK3" value="98">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ADPCM_IMA_DK4" value="97">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ADPCM_IMA_WAV" value="105">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ALAW" value="6">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_AMR_NB" value="87">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_AMR_WB" value="88">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_APTX" value="37">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_AUDIOFILE_AF10" value="38">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_AUDIOFILE_AF36" value="36">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_BTV_DIGITAL" value="1024">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_CANOPUS_ATRAC" value="99">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_CIRRUS" value="96">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_CONTROL_RES_CR10" value="55">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_CONTROL_RES_VQLPC" value="52">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_CREATIVE_ADPCM" value="512">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_CREATIVE_FASTSPEECH10" value="515">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_CREATIVE_FASTSPEECH8" value="514">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_CS2" value="608">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_CS_IMAADPCM" value="57">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_CU_CODEC" value="25">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DF_G726" value="133">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DF_GSM610" value="134">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DIALOGIC_OKI_ADPCM" value="23">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DIGIADPCM" value="54">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DIGIFIX" value="22">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DIGIREAL" value="53">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DIGISTD" value="21">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DIGITAL_G723" value="291">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DOLBY_AC2" value="48">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DOLBY_AC3_SPDIF" value="146">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DSAT_DISPLAY" value="103">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DSP_TRUESPEECH" value="34">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DTS" value="8193">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_DVI_ADPCM" value="17">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ECHOSC1" value="35">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ECHOSC3" value="58">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ESPCM" value="97">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_EXTENSIBLE" value="65534">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_FLAC" value="61868">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_FM_TOWNS_SND" value="768">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_G722_ADPCM" value="101">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_G723_ADPCM" value="20">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_G726ADPCM" value="320">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_G726_ADPCM" value="100">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_G728_CELP" value="65">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_G729A" value="131">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_GSM610" value="49">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_GSM_AMR_CBR" value="31265">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_GSM_AMR_VBR" value="31266">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_IBM_CVSD" value="5">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_IEEE_FLOAT" value="3">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ILINK_VC" value="560">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_IMC" value="1025">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_IPI_HSX" value="592">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_IPI_RPELP" value="593">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ISIAUDIO" value="136">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ITU_G721_ADPCM" value="64">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_LH_CODEC" value="4352">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_LRC" value="40">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_LUCENT_G723" value="89">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_MALDEN_PHONYTALK" value="160">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_MEDIASONIC_G723" value="147">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_MEDIASPACE_ADPCM" value="18">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_MEDIAVISION_ADPCM" value="24">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_MPEGL12" value="80">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_MPEGL3" value="85">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_MSG723" value="66">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_MSN" value="50">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_MSRT24" value="130">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_MULAW" value="7">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_MVI_MVI2" value="132">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_NMS_VBXADPCM" value="56">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_NORRIS" value="5120">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_OKI_ADPCM" value="16">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_OLIADPCM" value="4097">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_OLICELP" value="4098">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_OLIGSM" value="4096">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_OLIOPR" value="4100">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_OLISBC" value="4099">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ONLIVE" value="137">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_PAC" value="83">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_PACKED" value="153">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_PCM" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_PHILIPS_LPCBB" value="152">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_PROSODY_1612" value="39">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_PROSODY_8KBPS" value="148">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_QDESIGN_MUSIC" value="1104">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_QUALCOMM_HALFRATE" value="337">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_QUALCOMM_PUREVOICE" value="336">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_QUARTERDECK" value="544">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_RAW_SPORT" value="576">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_RHETOREX_ADPCM" value="256">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ROCKWELL_ADPCM" value="59">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ROCKWELL_DIGITALK" value="60">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_RT24" value="82">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SANYO_LD_ADPCM" value="293">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SBC24" value="145">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SIERRA_ADPCM" value="19">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SIPROLAB_ACELP4800" value="305">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SIPROLAB_ACELP8V3" value="306">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SIPROLAB_ACEPLNET" value="304">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SIPROLAB_G729" value="307">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SIPROLAB_G729A" value="308">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SIPROLAB_KELVIN" value="309">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SIREN" value="654">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SOFTSOUND" value="128">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SONARC" value="33">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SONIC" value="8264">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SONIC_LS" value="8264">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SONY_ATRAC3" value="624">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS" value="5376">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_TPC" value="1665">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_TUBGSM" value="341">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_UHER_ADPCM" value="528">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_UNKNOWN" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VIVO_G723" value="273">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VIVO_SIREN" value="274">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VME_VMPCM" value="1664">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VORBIS1" value="26447">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VORBIS1PLUS" value="26479">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VORBIS2" value="26448">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VORBIS2PLUS" value="26480">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VORBIS3" value="26449">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VORBIS3PLUS" value="26481">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE" value="98">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE_AC10" value="113">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE_AC16" value="114">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE_AC20" value="115">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE_AC8" value="112">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE_BYTE_ALIGNED" value="105">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE_METASOUND" value="117">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE_METAVOICE" value="116">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE_RT29HW" value="118">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE_TQ40" value="121">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE_TQ60" value="129">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE_VR12" value="119">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VOXWARE_VR18" value="120">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_VSELP" value="4">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_WMAV1" value="352">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_WMAV2" value="353">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_WMAV3" value="354">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_WMAV3_L" value="355">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_WMS" value="10">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_XEBEC" value="61">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_YAMAHA_ADPCM" value="32">
+      <type name="int"/>
+    </constant>
+    <constant name="WAVE_FORMAT_ZYXEL_ADPCM" value="151">
+      <type name="int"/>
+    </constant>
+    <function name="create_audio_caps"
+              c:identifier="gst_riff_create_audio_caps">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="codec_id" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="strh" transfer-ownership="none">
+          <type name="riff_strh" c:type="gst_riff_strh*"/>
+        </parameter>
+        <parameter name="strf" transfer-ownership="none">
+          <type name="riff_strf_auds" c:type="gst_riff_strf_auds*"/>
+        </parameter>
+        <parameter name="strf_data" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="strd_data" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="codec_name" transfer-ownership="none">
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="create_audio_template_caps"
+              c:identifier="gst_riff_create_audio_template_caps">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+    </function>
+    <function name="create_iavs_caps" c:identifier="gst_riff_create_iavs_caps">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="codec_fcc" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+        <parameter name="strh" transfer-ownership="none">
+          <type name="riff_strh" c:type="gst_riff_strh*"/>
+        </parameter>
+        <parameter name="strf" transfer-ownership="none">
+          <type name="riff_strf_iavs" c:type="gst_riff_strf_iavs*"/>
+        </parameter>
+        <parameter name="strf_data" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="strd_data" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="codec_name" transfer-ownership="none">
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="create_iavs_template_caps"
+              c:identifier="gst_riff_create_iavs_template_caps">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+    </function>
+    <function name="create_video_caps"
+              c:identifier="gst_riff_create_video_caps"
+              doc="data that is within the range of strf.size, but excluding any
+additional data withint this chunk but outside strf.size.
+chunk outside reach of strf.size. Ususally a palette.
+chunk. Usually codec initialization data.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="codec_fcc" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+        <parameter name="strh" transfer-ownership="none">
+          <type name="riff_strh" c:type="gst_riff_strh*"/>
+        </parameter>
+        <parameter name="strf" transfer-ownership="none">
+          <type name="riff_strf_vids" c:type="gst_riff_strf_vids*"/>
+        </parameter>
+        <parameter name="strf_data" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="strd_data" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="codec_name" transfer-ownership="none">
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="create_video_template_caps"
+              c:identifier="gst_riff_create_video_template_caps">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+    </function>
+    <function name="init"
+              c:identifier="gst_riff_init"
+              doc="Initialize riff library.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="parse_chunk"
+              c:identifier="gst_riff_parse_chunk"
+              doc="by the read size by this function.
+chunk data, which may be NULL if chunksize == 0
+Reads a single chunk.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="offset" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+        <parameter name="fourcc" direction="out" transfer-ownership="full">
+          <type name="uint32" c:type="guint32*"/>
+        </parameter>
+        <parameter name="chunk_data"
+                   transfer-ownership="none"
+                   doc="containing the">
+          <type name="Gst.Buffer" c:type="GstBuffer**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_file_header"
+              c:identifier="gst_riff_parse_file_header"
+              doc="should be at least 12 bytes long.
+type of document (according to the header).
+Reads the first few bytes from the provided buffer, checks
+if this stream is a RIFF stream, and determines document type.
+This function takes ownership of @buf so it should not be used anymore
+after calling this function.
+caller should error out; we already throw an error), or TRUE
+if it is.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="doctype"
+                   direction="out"
+                   transfer-ownership="full"
+                   doc="to indicate the">
+          <type name="uint32" c:type="guint32*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_info"
+              c:identifier="gst_riff_parse_info"
+              doc="containing information about this stream. May be
+NULL if no supported tags were found.
+Parses stream metadata from input data.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="taglist" transfer-ownership="none">
+          <type name="Gst.TagList" c:type="GstTagList**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_strf_auds"
+              c:identifier="gst_riff_parse_strf_auds"
+              doc="strf/auds structure. Caller should free it.
+containing extradata for this particular stream (e.g.
+codec initialization data).
+Parses an audio stream´s strf structure plus optionally some
+extradata from input data. This function takes ownership of @buf.
+use.
+should be skipped on error, but it is not fatal.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="strf" transfer-ownership="none" doc="to a filled-in">
+          <type name="riff_strf_auds" c:type="gst_riff_strf_auds**"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none" doc="to a buffer">
+          <type name="Gst.Buffer" c:type="GstBuffer**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_strf_iavs"
+              c:identifier="gst_riff_parse_strf_iavs"
+              doc="strf/iavs structure. Caller should free it.
+containing extradata for this particular stream (e.g.
+codec initialization data).
+Parses a interleaved (also known as &quot;complex&quot;)  stream´s strf
+structure plus optionally some extradata from input data. This
+function takes ownership of @buf.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="strf" transfer-ownership="none" doc="to a filled-in">
+          <type name="riff_strf_iavs" c:type="gst_riff_strf_iavs**"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none" doc="to a buffer">
+          <type name="Gst.Buffer" c:type="GstBuffer**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_strf_vids"
+              c:identifier="gst_riff_parse_strf_vids"
+              doc="strf/vids structure. Caller should free it.
+containing extradata for this particular stream (e.g.
+palette, codec initialization data).
+Parses a video stream´s strf structure plus optionally some
+extradata from input data. This function takes ownership of @buf.
+should be skipped on error, but it is not fatal.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="strf" transfer-ownership="none" doc="to a filled-in">
+          <type name="riff_strf_vids" c:type="gst_riff_strf_vids**"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none" doc="to a buffer">
+          <type name="Gst.Buffer" c:type="GstBuffer**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_strh"
+              c:identifier="gst_riff_parse_strh"
+              doc="strh structure. Caller should free it.
+Parses a strh structure from input data. Takes ownership of @buf.
+should be skipped on error, but it is not fatal.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="strh" transfer-ownership="none" doc="to a filled-in">
+          <type name="riff_strh" c:type="gst_riff_strh**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="read_chunk"
+              c:identifier="gst_riff_read_chunk"
+              doc="Reads a single chunk of data. Since 0.10.8 &apos;JUNK&apos; chunks
+are skipped automatically.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Gst.Element" c:type="GstElement*"/>
+        </parameter>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Gst.Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="offset" direction="out" transfer-ownership="full">
+          <type name="uint64" c:type="guint64*"/>
+        </parameter>
+        <parameter name="tag" direction="out" transfer-ownership="full">
+          <type name="uint32" c:type="guint32*"/>
+        </parameter>
+        <parameter name="chunk_data" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <record name="riff_acid" c:type="_gst_riff_acid">
+      <field name="loop_type" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="root_note" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="unknown1" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="unknown2" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="number_of_beats" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="meter_d" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="meter_n" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="tempo" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+    </record>
+    <record name="riff_dmlh" c:type="_gst_riff_dmlh">
+      <field name="totalframes" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+    </record>
+    <record name="riff_index_entry" c:type="_gst_riff_index_entry">
+      <field name="id" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="offset" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="size" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+    </record>
+    <record name="riff_strf_auds" c:type="_gst_riff_strf_auds">
+      <field name="format" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="channels" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="rate" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="av_bps" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="blockalign" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="size" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+    </record>
+    <record name="riff_strf_iavs" c:type="_gst_riff_strf_iavs">
+      <field name="DVAAuxSrc" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="DVAAuxCtl" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="DVAAuxSrc1" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="DVAAuxCtl1" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="DVVAuxSrc" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="DVVAuxCtl" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="DVReserved1" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="DVReserved2" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+    </record>
+    <record name="riff_strf_vids" c:type="_gst_riff_strf_vids">
+      <field name="size" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="width" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="height" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="planes" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="bit_cnt" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="compression" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="image_size" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="xpels_meter" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="ypels_meter" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="num_colors" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="imp_colors" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+    </record>
+    <record name="riff_strh" c:type="_gst_riff_strh">
+      <field name="type" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="fcc_handler" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="priority" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="init_frames" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="scale" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="rate" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="start" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="length" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="bufsize" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="quality" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="samplesize" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+    </record>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/riff/ffi/ffi.factor b/extra/gstreamer/riff/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..ac31e7d
--- /dev/null
@@ -0,0 +1,27 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.syntax alien.libraries combinators kernel
+system
+gobject-introspection glib.ffi gmodule.ffi gobject.ffi ;
+EXCLUDE: alien.c-types => pointer ;
+IN: gstreamer.ffi
+
+<<
+"gstreamer" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstreamer-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+TYPEDEF: gpointer GstClockID
+TYPEDEF: guint64 GstClockTime
+TYPEDEF: gint64 GstClockTimeDiff
+
+! types from libxml2
+TYPEDEF: void* xmlNodePtr
+TYPEDEF: void* xmlDocPtr
+TYPEDEF: void* xmlNsPtr
+
+GIR: vocab:gstreamer/Gst-0.10.gir
+
diff --git a/extra/gstreamer/riff/riff.factor b/extra/gstreamer/riff/riff.factor
new file mode 100644 (file)
index 0000000..174fbc6
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.ffi ;
+IN: gstreamer
+
diff --git a/extra/gstreamer/rtp/GstRtp-0.10.gir b/extra/gstreamer/rtp/GstRtp-0.10.gir
new file mode 100644 (file)
index 0000000..e720150
--- /dev/null
@@ -0,0 +1,2550 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.0"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="GstBase" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <package name="gstreamer-base-0.10"/>
+  <c:include name="gst/rtp/gstbasertpaudiopayload.h"/>
+  <c:include name="gst/rtp/gstbasertpdepayload.h"/>
+  <c:include name="gst/rtp/gstbasertppayload.h"/>
+  <c:include name="gst/rtp/gstrtcpbuffer.h"/>
+  <c:include name="gst/rtp/gstrtpbuffer.h"/>
+  <c:include name="gst/rtp/gstrtppayloads.h"/>
+  <namespace name="GstRtp"
+             version="0.10"
+             shared-library="libgstrtp-0.10.so.0"
+             c:prefix="Gst">
+    <class name="BaseRTPAudioPayload"
+           c:type="GstBaseRTPAudioPayload"
+           parent="BaseRTPPayload"
+           glib:type-name="GstBaseRTPAudioPayload"
+           glib:get-type="gst_base_rtp_audio_payload_get_type"
+           glib:type-struct="BaseRTPAudioPayloadClass">
+      <method name="set_frame_based"
+              c:identifier="gst_base_rtp_audio_payload_set_frame_based"
+              doc="Tells #GstBaseRTPAudioPayload that the child element is for a frame based
+audio codec">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_frame_options"
+              c:identifier="gst_base_rtp_audio_payload_set_frame_options"
+              doc="Sets the options for frame based audio codecs.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="frame_duration" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="frame_size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sample_based"
+              c:identifier="gst_base_rtp_audio_payload_set_sample_based"
+              doc="Tells #GstBaseRTPAudioPayload that the child element is for a sample based
+audio codec">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_sample_options"
+              c:identifier="gst_base_rtp_audio_payload_set_sample_options"
+              doc="Sets the options for sample based audio codecs.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sample_size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_samplebits_options"
+              c:identifier="gst_base_rtp_audio_payload_set_samplebits_options"
+              doc="Sets the options for sample based audio codecs."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sample_size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_adapter"
+              c:identifier="gst_base_rtp_audio_payload_get_adapter"
+              doc="Gets the internal adapter used by the depayloader."
+              version="0.10.13">
+        <return-value transfer-ownership="full">
+          <type name="GstBase.Adapter" c:type="GstAdapter*"/>
+        </return-value>
+      </method>
+      <method name="push"
+              c:identifier="gst_base_rtp_audio_payload_push"
+              doc="Create an RTP buffer and store @payload_len bytes of @data as the
+payload. Set the timestamp on the new buffer to @timestamp before pushing
+the buffer downstream."
+              version="0.10.13">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="payload_len" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="flush"
+              c:identifier="gst_base_rtp_audio_payload_flush"
+              doc="Create an RTP buffer and store @payload_len bytes of the adapter as the
+payload. Set the timestamp on the new buffer to @timestamp before pushing
+the buffer downstream.
+If @payload_len is -1, all pending bytes will be flushed. If @timestamp is
+-1, the timestamp will be calculated automatically."
+              version="0.10.25">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="payload_len" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="buffer-list" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="payload">
+        <type name="BaseRTPPayload" c:type="GstBaseRTPPayload"/>
+      </field>
+      <field name="priv">
+        <type name="BaseRTPAudioPayloadPrivate"
+              c:type="GstBaseRTPAudioPayloadPrivate*"/>
+      </field>
+      <field name="base_ts">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="frame_size">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="frame_duration">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="sample_size">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="BaseRTPAudioPayloadClass"
+            c:type="GstBaseRTPAudioPayloadClass"
+            glib:is-gtype-struct-for="BaseRTPAudioPayload">
+      <field name="parent_class">
+        <type name="BaseRTPPayloadClass" c:type="GstBaseRTPPayloadClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="BaseRTPAudioPayloadPrivate"
+            c:type="GstBaseRTPAudioPayloadPrivate">
+    </record>
+    <class name="BaseRTPDepayload"
+           c:type="GstBaseRTPDepayload"
+           parent="Gst.Element"
+           glib:type-name="GstBaseRTPDepayload"
+           glib:get-type="gst_base_rtp_depayload_get_type"
+           glib:type-struct="BaseRTPDepayloadClass">
+      <virtual-method name="set_caps">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="add_to_queue">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="in" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="process">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="in" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_gst_timestamp">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="packet_lost">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gst.Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="push"
+              c:identifier="gst_base_rtp_depayload_push"
+              doc="Push @out_buf to the peer of @filter. This function takes ownership of
+Unlike gst_base_rtp_depayload_push_ts(), this function will not apply
+any timestamp on the outgoing buffer. Subclasses should therefore timestamp
+outgoing buffers themselves.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="out_buf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push_ts"
+              c:identifier="gst_base_rtp_depayload_push_ts"
+              doc="Push @out_buf to the peer of @filter. This function takes ownership of
+Unlike gst_base_rtp_depayload_push(), this function will by default apply
+the last incomming timestamp on the outgoing buffer when it didn&apos;t have a
+timestamp already. The set_get_timestamp vmethod can be overwritten to change
+this behaviour (and take, for example, @timestamp into account).">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="out_buf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="queue-delay" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <field name="parent">
+        <type name="Gst.Element" c:type="GstElement"/>
+      </field>
+      <field name="sinkpad">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="srcpad">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="queuelock">
+        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex"/>
+      </field>
+      <field name="thread_running">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="thread">
+        <type name="GLib.Thread" c:type="GThread*"/>
+      </field>
+      <field name="clock_rate">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="queue_delay">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="queue">
+        <type name="GLib.Queue" c:type="GQueue*"/>
+      </field>
+      <field name="segment">
+        <type name="Gst.Segment" c:type="GstSegment"/>
+      </field>
+      <field name="need_newsegment">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="priv">
+        <type name="BaseRTPDepayloadPrivate"
+              c:type="GstBaseRTPDepayloadPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="BaseRTPDepayloadClass"
+            c:type="GstBaseRTPDepayloadClass"
+            glib:is-gtype-struct-for="BaseRTPDepayload">
+      <field name="parent_class">
+        <type name="Gst.ElementClass" c:type="GstElementClass"/>
+      </field>
+      <field name="set_caps">
+        <callback name="set_caps" c:type="set_caps">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="filter" transfer-ownership="none">
+              <type name="BaseRTPDepayload" c:type="GstBaseRTPDepayload*"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_to_queue">
+        <callback name="add_to_queue" c:type="add_to_queue">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="filter" transfer-ownership="none">
+              <type name="BaseRTPDepayload" c:type="GstBaseRTPDepayload*"/>
+            </parameter>
+            <parameter name="in" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="process">
+        <callback name="process" c:type="process">
+          <return-value transfer-ownership="full">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </return-value>
+          <parameters>
+            <parameter name="base" transfer-ownership="none">
+              <type name="BaseRTPDepayload" c:type="GstBaseRTPDepayload*"/>
+            </parameter>
+            <parameter name="in" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_gst_timestamp">
+        <callback name="set_gst_timestamp" c:type="set_gst_timestamp">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="filter" transfer-ownership="none">
+              <type name="BaseRTPDepayload" c:type="GstBaseRTPDepayload*"/>
+            </parameter>
+            <parameter name="timestamp" transfer-ownership="none">
+              <type name="uint32" c:type="guint32"/>
+            </parameter>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="packet_lost">
+        <callback name="packet_lost" c:type="packet_lost">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="filter" transfer-ownership="none">
+              <type name="BaseRTPDepayload" c:type="GstBaseRTPDepayload*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gst.Event" c:type="GstEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="BaseRTPDepayloadPrivate" c:type="GstBaseRTPDepayloadPrivate">
+    </record>
+    <class name="BaseRTPPayload"
+           c:type="GstBaseRTPPayload"
+           parent="Gst.Element"
+           abstract="1"
+           glib:type-name="GstBaseRTPPayload"
+           glib:get-type="gst_basertppayload_get_type"
+           glib:type-struct="BaseRTPPayloadClass">
+      <virtual-method name="set_caps">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="handle_buffer">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_caps">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Gst.Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_options"
+              c:identifier="gst_basertppayload_set_options"
+              doc="Set the rtp options of the payloader. These options will be set in the caps
+of the payloader. Subclasses must call this method before calling
+gst_basertppayload_push() or gst_basertppayload_set_outcaps().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="media" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="dynamic" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="encoding_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="clock_rate" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_outcaps"
+              c:identifier="gst_basertppayload_set_outcaps"
+              doc="Configure the output caps with the optional parameters.
+Variable arguments should be in the form field name, field type
+(as a GType), value(s).  The last variable argument should be NULL.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_filled"
+              c:identifier="gst_basertppayload_is_filled"
+              doc="Check if the packet with @size and @duration would exceed the configured
+maximum size.
+configured MTU or max_ptime.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push"
+              c:identifier="gst_basertppayload_push"
+              doc="Push @buffer to the peer element of the payloader. The SSRC, payload type,
+seqnum and timestamp of the RTP buffer will be updated first.
+This function takes ownership of @buffer.">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push_list"
+              c:identifier="gst_basertppayload_push_list"
+              doc="Push @list to the peer element of the payloader. The SSRC, payload type,
+seqnum and timestamp of the RTP buffer will be updated first.
+This function takes ownership of @list."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="Gst.BufferList" c:type="GstBufferList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="max-ptime" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="min-ptime" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="mtu" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="perfect-rtptime" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="pt" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="ptime-multiple" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </property>
+      <property name="seqnum">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="seqnum-offset" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="ssrc" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="timestamp">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="timestamp-offset" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <field name="element">
+        <type name="Gst.Element" c:type="GstElement"/>
+      </field>
+      <field name="sinkpad">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="srcpad">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="seq_rand">
+        <type name="GLib.Rand" c:type="GRand*"/>
+      </field>
+      <field name="ssrc_rand">
+        <type name="GLib.Rand" c:type="GRand*"/>
+      </field>
+      <field name="ts_rand">
+        <type name="GLib.Rand" c:type="GRand*"/>
+      </field>
+      <field name="ts_base">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="seqnum_base">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="media">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="encoding_name">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="dynamic">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="clock_rate">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="ts_offset">
+        <type name="int32" c:type="gint32"/>
+      </field>
+      <field name="timestamp">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="seqnum_offset">
+        <type name="int16" c:type="gint16"/>
+      </field>
+      <field name="seqnum">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="max_ptime">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="pt">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="ssrc">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="current_ssrc">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="mtu">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="segment">
+        <type name="Gst.Segment" c:type="GstSegment"/>
+      </field>
+      <field name="min_ptime">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="priv">
+        <type name="BaseRTPPayloadPrivate" c:type="GstBaseRTPPayloadPrivate*"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="ptime" writable="1">
+            <type name="uint64" c:type="guint64"/>
+          </field>
+          <field name="ptime_multiple" writable="1">
+            <type name="uint64" c:type="guint64"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+    </class>
+    <record name="BaseRTPPayloadClass"
+            c:type="GstBaseRTPPayloadClass"
+            glib:is-gtype-struct-for="BaseRTPPayload">
+      <field name="parent_class">
+        <type name="Gst.ElementClass" c:type="GstElementClass"/>
+      </field>
+      <field name="set_caps">
+        <callback name="set_caps" c:type="set_caps">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="payload" transfer-ownership="none">
+              <type name="BaseRTPPayload" c:type="GstBaseRTPPayload*"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="handle_buffer">
+        <callback name="handle_buffer" c:type="handle_buffer">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="payload" transfer-ownership="none">
+              <type name="BaseRTPPayload" c:type="GstBaseRTPPayload*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="handle_event">
+        <callback name="handle_event" c:type="handle_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Gst.Pad" c:type="GstPad*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gst.Event" c:type="GstEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_caps">
+        <callback name="get_caps" c:type="get_caps">
+          <return-value transfer-ownership="full">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </return-value>
+          <parameters>
+            <parameter name="payload" transfer-ownership="none">
+              <type name="BaseRTPPayload" c:type="GstBaseRTPPayload*"/>
+            </parameter>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Gst.Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="BaseRTPPayloadPrivate" c:type="GstBaseRTPPayloadPrivate">
+    </record>
+    <constant name="PAYLOAD_1016_STRING" value="1">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_CELLB_STRING" value="25">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_CN_STRING" value="13">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_DVI4_11025_STRING" value="16">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_DVI4_16000_STRING" value="6">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_DVI4_22050_STRING" value="17">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_DVI4_8000_STRING" value="5">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_DYNAMIC_STRING" value="[96, 127]">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_G721_STRING" value="2">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_G722_STRING" value="9">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_G723_53" value="17">
+      <type name="int"/>
+    </constant>
+    <constant name="PAYLOAD_G723_53_STRING" value="17">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_G723_63" value="16">
+      <type name="int"/>
+    </constant>
+    <constant name="PAYLOAD_G723_63_STRING" value="16">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_G723_STRING" value="4">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_G728_STRING" value="15">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_G729_STRING" value="18">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_GSM_STRING" value="3">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_H261_STRING" value="31">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_H263_STRING" value="34">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_JPEG_STRING" value="26">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_L16_MONO_STRING" value="11">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_L16_STEREO_STRING" value="10">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_LPC_STRING" value="7">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_MP2T_STRING" value="33">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_MPA_STRING" value="14">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_MPV_STRING" value="32">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_NV_STRING" value="28">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_PCMA_STRING" value="8">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_PCMU_STRING" value="0">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_QCELP_STRING" value="12">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_TS41" value="19">
+      <type name="int"/>
+    </constant>
+    <constant name="PAYLOAD_TS41_STRING" value="19">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAYLOAD_TS48" value="18">
+      <type name="int"/>
+    </constant>
+    <constant name="PAYLOAD_TS48_STRING" value="18">
+      <type name="utf8"/>
+    </constant>
+    <enumeration name="RTCPFBType"
+                 doc="Different types of feedback messages."
+                 version="0.10.23"
+                 c:type="GstRTCPFBType">
+      <member name="fb_type_invalid"
+              value="0"
+              c:identifier="GST_RTCP_FB_TYPE_INVALID"/>
+      <member name="rtpfb_type_nack"
+              value="1"
+              c:identifier="GST_RTCP_RTPFB_TYPE_NACK"/>
+      <member name="psfb_type_pli"
+              value="1"
+              c:identifier="GST_RTCP_PSFB_TYPE_PLI"/>
+      <member name="psfb_type_sli"
+              value="2"
+              c:identifier="GST_RTCP_PSFB_TYPE_SLI"/>
+      <member name="psfb_type_rpsi"
+              value="3"
+              c:identifier="GST_RTCP_PSFB_TYPE_RPSI"/>
+      <member name="psfb_type_afb"
+              value="15"
+              c:identifier="GST_RTCP_PSFB_TYPE_AFB"/>
+    </enumeration>
+    <record name="RTCPPacket"
+            c:type="GstRTCPPacket"
+            doc="Data structure that points to a packet at @offset in @buffer.
+The size of the structure is made public to allow stack allocations.">
+      <field name="buffer" writable="1">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </field>
+      <field name="offset" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="padding" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="count" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="RTCPType" c:type="GstRTCPType"/>
+      </field>
+      <field name="length" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="item_offset" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="item_count" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="entry_offset" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <method name="move_to_next"
+              c:identifier="gst_rtcp_packet_move_to_next"
+              doc="Move the packet pointer @packet to the next packet in the payload.
+Use gst_rtcp_buffer_get_first_packet() to initialize @packet.
+function.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="remove"
+              c:identifier="gst_rtcp_packet_remove"
+              doc="Removes the packet pointed to by @packet and moves pointer to the next one
+function.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_padding"
+              c:identifier="gst_rtcp_packet_get_padding"
+              doc="Get the packet padding of the packet pointed to by @packet.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_count"
+              c:identifier="gst_rtcp_packet_get_count"
+              doc="Get the count field in @packet.
+valid packet.">
+        <return-value transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </return-value>
+      </method>
+      <method name="get_length"
+              c:identifier="gst_rtcp_packet_get_length"
+              doc="Get the length field of @packet. This is the length of the packet in
+32-bit words minus one.">
+        <return-value transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <method name="sr_get_sender_info"
+              c:identifier="gst_rtcp_packet_sr_get_sender_info"
+              doc="Parse the SR sender info and store the values.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ssrc" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="ntptime" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="rtptime" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="packet_count"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="octet_count"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sr_set_sender_info"
+              c:identifier="gst_rtcp_packet_sr_set_sender_info"
+              doc="Set the given values in the SR packet @packet.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ssrc" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="ntptime" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="rtptime" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="packet_count" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="octet_count" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="rr_get_ssrc"
+              c:identifier="gst_rtcp_packet_rr_get_ssrc"
+              doc="Get the ssrc field of the RR @packet.">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="rr_set_ssrc"
+              c:identifier="gst_rtcp_packet_rr_set_ssrc"
+              doc="Set the ssrc field of the RR @packet.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ssrc" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_rb_count"
+              c:identifier="gst_rtcp_packet_get_rb_count"
+              doc="Get the number of report blocks in @packet.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_rb"
+              c:identifier="gst_rtcp_packet_get_rb"
+              doc="Parse the values of the @nth report block in @packet and store the result in
+the values.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="nth" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="ssrc" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="fractionlost" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="packetslost"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int32" c:type="gint32*"/>
+          </parameter>
+          <parameter name="exthighestseq"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="jitter" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="lsr" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="dlsr" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_rb"
+              c:identifier="gst_rtcp_packet_add_rb"
+              doc="Add a new report block to @packet with the given values.
+the max MTU is exceeded or the number of report blocks is greater than
+#GST_RTCP_MAX_RB_COUNT.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="ssrc" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="fractionlost" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="packetslost" transfer-ownership="none">
+            <type name="int32" c:type="gint32"/>
+          </parameter>
+          <parameter name="exthighestseq" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="jitter" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="lsr" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="dlsr" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_rb"
+              c:identifier="gst_rtcp_packet_set_rb"
+              doc="Set the @nth new report block in @packet with the given values.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="nth" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="ssrc" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="fractionlost" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="packetslost" transfer-ownership="none">
+            <type name="int32" c:type="gint32"/>
+          </parameter>
+          <parameter name="exthighestseq" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="jitter" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="lsr" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="dlsr" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sdes_get_item_count"
+              c:identifier="gst_rtcp_packet_sdes_get_item_count"
+              doc="Get the number of items in the SDES packet @packet.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="sdes_first_item"
+              c:identifier="gst_rtcp_packet_sdes_first_item"
+              doc="Move to the first SDES item in @packet.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="sdes_next_item"
+              c:identifier="gst_rtcp_packet_sdes_next_item"
+              doc="Move to the next SDES item in @packet.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="sdes_get_ssrc"
+              c:identifier="gst_rtcp_packet_sdes_get_ssrc"
+              doc="Get the SSRC of the current SDES item.">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="sdes_first_entry"
+              c:identifier="gst_rtcp_packet_sdes_first_entry"
+              doc="Move to the first SDES entry in the current item.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="sdes_next_entry"
+              c:identifier="gst_rtcp_packet_sdes_next_entry"
+              doc="Move to the next SDES entry in the current item.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="sdes_get_entry"
+              c:identifier="gst_rtcp_packet_sdes_get_entry"
+              doc="Get the data of the current SDES item entry. @type (when not NULL) will
+contain the type of the entry. @data (when not NULL) will point to @len
+bytes.
+When @type refers to a text item, @data will point to a UTF8 string. Note
+that this UTF8 string is NOT null-terminated. Use
+gst_rtcp_packet_sdes_copy_entry() to get a null-termined copy of the entry.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="RTCPSDESType" c:type="GstRTCPSDESType*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="data" direction="out" transfer-ownership="full">
+            <type name="uint8" c:type="guint8**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sdes_copy_entry"
+              c:identifier="gst_rtcp_packet_sdes_copy_entry"
+              doc="This function is like gst_rtcp_packet_sdes_get_entry() but it returns a
+null-terminated copy of the data instead. use g_free() after usage.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="RTCPSDESType" c:type="GstRTCPSDESType*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="data" direction="out" transfer-ownership="full">
+            <type name="uint8" c:type="guint8**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sdes_add_item"
+              c:identifier="gst_rtcp_packet_sdes_add_item"
+              doc="Add a new SDES item for @ssrc to @packet.
+items has been exceeded for the SDES packet or the MTU has been reached.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="ssrc" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sdes_add_entry"
+              c:identifier="gst_rtcp_packet_sdes_add_entry"
+              doc="Add a new SDES entry to the current item in @packet.
+reached.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="RTCPSDESType" c:type="GstRTCPSDESType"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="bye_get_ssrc_count"
+              c:identifier="gst_rtcp_packet_bye_get_ssrc_count"
+              doc="Get the number of SSRC fields in @packet.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="bye_get_nth_ssrc"
+              c:identifier="gst_rtcp_packet_bye_get_nth_ssrc"
+              doc="Get the @nth SSRC of the BYE @packet.">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+        <parameters>
+          <parameter name="nth" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="bye_add_ssrc"
+              c:identifier="gst_rtcp_packet_bye_add_ssrc"
+              doc="Add @ssrc to the BYE @packet.
+the max MTU is exceeded or the number of sources blocks is greater than
+#GST_RTCP_MAX_BYE_SSRC_COUNT.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="ssrc" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="bye_add_ssrcs"
+              c:identifier="gst_rtcp_packet_bye_add_ssrcs"
+              doc="Adds @len SSRCs in @ssrc to BYE @packet.
+the max MTU is exceeded or the number of sources blocks is greater than
+#GST_RTCP_MAX_BYE_SSRC_COUNT.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="ssrc" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="bye_get_reason_len"
+              c:identifier="gst_rtcp_packet_bye_get_reason_len"
+              doc="Get the length of the reason string.
+present.">
+        <return-value transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </return-value>
+      </method>
+      <method name="bye_get_reason"
+              c:identifier="gst_rtcp_packet_bye_get_reason"
+              doc="Get the reason in @packet.
+a reason string. The string must be freed with g_free() after usage.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="bye_set_reason"
+              c:identifier="gst_rtcp_packet_bye_set_reason"
+              doc="Set the reason string to @reason in @packet.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="reason" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fb_get_sender_ssrc"
+              c:identifier="gst_rtcp_packet_fb_get_sender_ssrc"
+              doc="Get the sender SSRC field of the RTPFB or PSFB @packet."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="fb_set_sender_ssrc"
+              c:identifier="gst_rtcp_packet_fb_set_sender_ssrc"
+              doc="Set the sender SSRC field of the RTPFB or PSFB @packet."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ssrc" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fb_get_media_ssrc"
+              c:identifier="gst_rtcp_packet_fb_get_media_ssrc"
+              doc="Get the media SSRC field of the RTPFB or PSFB @packet."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="fb_set_media_ssrc"
+              c:identifier="gst_rtcp_packet_fb_set_media_ssrc"
+              doc="Set the media SSRC field of the RTPFB or PSFB @packet."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ssrc" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fb_set_type"
+              c:identifier="gst_rtcp_packet_fb_set_type"
+              doc="Set the feedback message type of the FB @packet."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="RTCPFBType" c:type="GstRTCPFBType"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="RTCPSDESType" c:type="GstRTCPSDESType">
+      <member name="invalid" value="-1" c:identifier="GST_RTCP_SDES_INVALID"/>
+      <member name="end" value="0" c:identifier="GST_RTCP_SDES_END"/>
+      <member name="cname" value="1" c:identifier="GST_RTCP_SDES_CNAME"/>
+      <member name="name" value="2" c:identifier="GST_RTCP_SDES_NAME"/>
+      <member name="email" value="3" c:identifier="GST_RTCP_SDES_EMAIL"/>
+      <member name="phone" value="4" c:identifier="GST_RTCP_SDES_PHONE"/>
+      <member name="loc" value="5" c:identifier="GST_RTCP_SDES_LOC"/>
+      <member name="tool" value="6" c:identifier="GST_RTCP_SDES_TOOL"/>
+      <member name="note" value="7" c:identifier="GST_RTCP_SDES_NOTE"/>
+      <member name="priv" value="8" c:identifier="GST_RTCP_SDES_PRIV"/>
+    </enumeration>
+    <enumeration name="RTCPType" c:type="GstRTCPType">
+      <member name="invalid" value="0" c:identifier="GST_RTCP_TYPE_INVALID"/>
+      <member name="sr" value="200" c:identifier="GST_RTCP_TYPE_SR"/>
+      <member name="rr" value="201" c:identifier="GST_RTCP_TYPE_RR"/>
+      <member name="sdes" value="202" c:identifier="GST_RTCP_TYPE_SDES"/>
+      <member name="bye" value="203" c:identifier="GST_RTCP_TYPE_BYE"/>
+      <member name="app" value="204" c:identifier="GST_RTCP_TYPE_APP"/>
+      <member name="rtpfb" value="205" c:identifier="GST_RTCP_TYPE_RTPFB"/>
+      <member name="psfb" value="206" c:identifier="GST_RTCP_TYPE_PSFB"/>
+    </enumeration>
+    <constant name="RTCP_MAX_BYE_SSRC_COUNT" value="31">
+      <type name="int"/>
+    </constant>
+    <constant name="RTCP_MAX_RB_COUNT" value="31">
+      <type name="int"/>
+    </constant>
+    <constant name="RTCP_MAX_SDES" value="255">
+      <type name="int"/>
+    </constant>
+    <constant name="RTCP_MAX_SDES_ITEM_COUNT" value="31">
+      <type name="int"/>
+    </constant>
+    <constant name="RTCP_VALID_MASK" value="57598">
+      <type name="int"/>
+    </constant>
+    <constant name="RTCP_VALID_VALUE" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="RTCP_VERSION" value="2">
+      <type name="int"/>
+    </constant>
+    <enumeration name="RTPPayload" c:type="GstRTPPayload">
+      <member name="pcmu" value="0" c:identifier="GST_RTP_PAYLOAD_PCMU"/>
+      <member name="1016" value="1" c:identifier="GST_RTP_PAYLOAD_1016"/>
+      <member name="g721" value="2" c:identifier="GST_RTP_PAYLOAD_G721"/>
+      <member name="gsm" value="3" c:identifier="GST_RTP_PAYLOAD_GSM"/>
+      <member name="g723" value="4" c:identifier="GST_RTP_PAYLOAD_G723"/>
+      <member name="dvi4_8000"
+              value="5"
+              c:identifier="GST_RTP_PAYLOAD_DVI4_8000"/>
+      <member name="dvi4_16000"
+              value="6"
+              c:identifier="GST_RTP_PAYLOAD_DVI4_16000"/>
+      <member name="lpc" value="7" c:identifier="GST_RTP_PAYLOAD_LPC"/>
+      <member name="pcma" value="8" c:identifier="GST_RTP_PAYLOAD_PCMA"/>
+      <member name="g722" value="9" c:identifier="GST_RTP_PAYLOAD_G722"/>
+      <member name="l16_stereo"
+              value="10"
+              c:identifier="GST_RTP_PAYLOAD_L16_STEREO"/>
+      <member name="l16_mono"
+              value="11"
+              c:identifier="GST_RTP_PAYLOAD_L16_MONO"/>
+      <member name="qcelp" value="12" c:identifier="GST_RTP_PAYLOAD_QCELP"/>
+      <member name="cn" value="13" c:identifier="GST_RTP_PAYLOAD_CN"/>
+      <member name="mpa" value="14" c:identifier="GST_RTP_PAYLOAD_MPA"/>
+      <member name="g728" value="15" c:identifier="GST_RTP_PAYLOAD_G728"/>
+      <member name="dvi4_11025"
+              value="16"
+              c:identifier="GST_RTP_PAYLOAD_DVI4_11025"/>
+      <member name="dvi4_22050"
+              value="17"
+              c:identifier="GST_RTP_PAYLOAD_DVI4_22050"/>
+      <member name="g729" value="18" c:identifier="GST_RTP_PAYLOAD_G729"/>
+      <member name="cellb" value="25" c:identifier="GST_RTP_PAYLOAD_CELLB"/>
+      <member name="jpeg" value="26" c:identifier="GST_RTP_PAYLOAD_JPEG"/>
+      <member name="nv" value="28" c:identifier="GST_RTP_PAYLOAD_NV"/>
+      <member name="h261" value="31" c:identifier="GST_RTP_PAYLOAD_H261"/>
+      <member name="mpv" value="32" c:identifier="GST_RTP_PAYLOAD_MPV"/>
+      <member name="mp2t" value="33" c:identifier="GST_RTP_PAYLOAD_MP2T"/>
+      <member name="h263" value="34" c:identifier="GST_RTP_PAYLOAD_H263"/>
+    </enumeration>
+    <record name="RTPPayloadInfo"
+            c:type="GstRTPPayloadInfo"
+            doc="&quot;message&quot;.
+channels. NULL = not applicable.
+Structure holding default payload type information.">
+      <field name="payload_type" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="media" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="encoding_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="clock_rate" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="encoding_parameters" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="bitrate" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <constant name="VERSION" value="2">
+      <type name="int"/>
+    </constant>
+    <function name="buffer_allocate_data"
+              c:identifier="gst_rtp_buffer_allocate_data"
+              doc="Allocate enough data in @buffer to hold an RTP packet with @csrc_count CSRCs,
+a payload length of @payload_len and padding of @pad_len.
+MALLOCDATA of @buffer will be overwritten and will not be freed.
+All other RTP header fields will be set to 0/FALSE.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="payload_len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="pad_len" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="csrc_count" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_calc_header_len"
+              c:identifier="gst_rtp_buffer_calc_header_len"
+              doc="Calculate the header length of an RTP packet with @csrc_count CSRC entries.
+An RTP packet can have at most 15 CSRC entries.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="csrc_count" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_calc_packet_len"
+              c:identifier="gst_rtp_buffer_calc_packet_len"
+              doc="Calculate the total length of an RTP packet with a payload size of @payload_len,
+a padding of @pad_len and a @csrc_count CSRC entries.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="payload_len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="pad_len" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="csrc_count" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_calc_payload_len"
+              c:identifier="gst_rtp_buffer_calc_payload_len"
+              doc="Calculate the length of the payload of an RTP packet with size @packet_len,
+a padding of @pad_len and a @csrc_count CSRC entries.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="packet_len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="pad_len" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="csrc_count" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_compare_seqnum"
+              c:identifier="gst_rtp_buffer_compare_seqnum"
+              doc="Compare two sequence numbers, taking care of wraparounds. This function
+returns the difference between @seqnum1 and @seqnum2.
+are equal or a positive value if @seqnum1 is smaller than @segnum2."
+              version="0.10.15">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="seqnum1" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="seqnum2" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_default_clock_rate"
+              c:identifier="gst_rtp_buffer_default_clock_rate"
+              doc="Get the default clock-rate for the static payload type @payload_type.
+the clock-rate is undefined."
+              version="0.10.13">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="payload_type" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_ext_timestamp"
+              c:identifier="gst_rtp_buffer_ext_timestamp"
+              doc="Update the @exttimestamp field with @timestamp. For the first call of the
+method, @exttimestamp should point to a location with a value of -1.
+This function makes sure that the returned value is a constantly increasing
+value even in the case where there is a timestamp wraparound."
+              version="0.10.15">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="exttimestamp"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="uint64" c:type="guint64*"/>
+        </parameter>
+        <parameter name="timestamp" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_csrc"
+              c:identifier="gst_rtp_buffer_get_csrc"
+              doc="Get the CSRC at index @idx in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="idx" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_csrc_count"
+              c:identifier="gst_rtp_buffer_get_csrc_count"
+              doc="Get the CSRC count of the RTP packet in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="uint8" c:type="guint8"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_extension"
+              c:identifier="gst_rtp_buffer_get_extension"
+              doc="Check if the extension bit is set on the RTP packet in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_extension_data"
+              c:identifier="gst_rtp_buffer_get_extension_data"
+              doc="Get the extension data. @bits will contain the extension 16 bits of custom
+data. @data will point to the data in the extension and @wordlen will contain
+the length of @data in 32 bits words.
+If @buffer did not contain an extension, this function will return %FALSE
+with @bits, @data and @wordlen unchanged."
+              version="0.10.15">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="bits" direction="out" transfer-ownership="full">
+          <type name="uint16" c:type="guint16*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer*"/>
+        </parameter>
+        <parameter name="wordlen" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_header_len"
+              c:identifier="gst_rtp_buffer_get_header_len"
+              doc="Return the total length of the header in @buffer. This include the length of
+the fixed header, the CSRC list and the extension header.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_marker"
+              c:identifier="gst_rtp_buffer_get_marker"
+              doc="Check if the marker bit is set on the RTP packet in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_packet_len"
+              c:identifier="gst_rtp_buffer_get_packet_len"
+              doc="Return the total length of the packet in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_padding"
+              c:identifier="gst_rtp_buffer_get_padding"
+              doc="Check if the padding bit is set on the RTP packet in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_payload"
+              c:identifier="gst_rtp_buffer_get_payload"
+              doc="Get a pointer to the payload data in @buffer. This pointer is valid as long
+as a reference to @buffer is held.">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_payload_buffer"
+              c:identifier="gst_rtp_buffer_get_payload_buffer"
+              doc="Create a buffer of the payload of the RTP packet in @buffer. This function
+will internally create a subbuffer of @buffer so that a memcpy can be
+avoided.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_payload_len"
+              c:identifier="gst_rtp_buffer_get_payload_len"
+              doc="Get the length of the payload of the RTP packet in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_payload_subbuffer"
+              c:identifier="gst_rtp_buffer_get_payload_subbuffer"
+              doc="Create a subbuffer of the payload of the RTP packet in @buffer. @offset bytes
+are skipped in the payload and the subbuffer will be of size @len.
+If @len is -1 the total payload starting from @offset if subbuffered."
+              version="0.10.10">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_payload_type"
+              c:identifier="gst_rtp_buffer_get_payload_type"
+              doc="Get the payload type of the RTP packet in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="uint8" c:type="guint8"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_seq"
+              c:identifier="gst_rtp_buffer_get_seq"
+              doc="Get the sequence number of the RTP packet in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="uint16" c:type="guint16"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_ssrc"
+              c:identifier="gst_rtp_buffer_get_ssrc"
+              doc="Get the SSRC of the RTP packet in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_timestamp"
+              c:identifier="gst_rtp_buffer_get_timestamp"
+              doc="Get the timestamp of the RTP packet in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_version"
+              c:identifier="gst_rtp_buffer_get_version"
+              doc="Get the version number of the RTP packet in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="uint8" c:type="guint8"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_list_get_payload_len"
+              c:identifier="gst_rtp_buffer_list_get_payload_len"
+              doc="Get the length of the payload of the RTP packet in @list."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.BufferList" c:type="GstBufferList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_list_get_payload_type"
+              c:identifier="gst_rtp_buffer_list_get_payload_type"
+              doc="Get the payload type of the first RTP packet in @list.
+All packets in @list should have the same payload type."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="uint8" c:type="guint8"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.BufferList" c:type="GstBufferList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_list_get_seq"
+              c:identifier="gst_rtp_buffer_list_get_seq"
+              doc="Get the sequence number of the first RTP packet in @list.
+All packets within @list have the same sequence number."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="uint16" c:type="guint16"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.BufferList" c:type="GstBufferList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_list_get_ssrc"
+              c:identifier="gst_rtp_buffer_list_get_ssrc"
+              doc="Get the SSRC of the first RTP packet in @list.
+All RTP packets within @list have the same SSRC."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.BufferList" c:type="GstBufferList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_list_get_timestamp"
+              c:identifier="gst_rtp_buffer_list_get_timestamp"
+              doc="Get the timestamp of the first RTP packet in @list.
+All packets within @list have the same timestamp."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.BufferList" c:type="GstBufferList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_list_set_payload_type"
+              c:identifier="gst_rtp_buffer_list_set_payload_type"
+              doc="Set the payload type of each RTP packet in @list to @payload_type."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.BufferList" c:type="GstBufferList*"/>
+        </parameter>
+        <parameter name="payload_type" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_list_set_seq"
+              c:identifier="gst_rtp_buffer_list_set_seq"
+              doc="Set the sequence number of each RTP packet in @list to @seq."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="uint16" c:type="guint16"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.BufferList" c:type="GstBufferList*"/>
+        </parameter>
+        <parameter name="seq" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_list_set_ssrc"
+              c:identifier="gst_rtp_buffer_list_set_ssrc"
+              doc="Set the SSRC on each RTP packet in @list to @ssrc."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.BufferList" c:type="GstBufferList*"/>
+        </parameter>
+        <parameter name="ssrc" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_list_set_timestamp"
+              c:identifier="gst_rtp_buffer_list_set_timestamp"
+              doc="Set the timestamp of each RTP packet in @list to @timestamp."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.BufferList" c:type="GstBufferList*"/>
+        </parameter>
+        <parameter name="timestamp" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_list_validate"
+              c:identifier="gst_rtp_buffer_list_validate"
+              doc="Check if all RTP packets in the @list are valid using validate_data().
+Use this function to validate an list before using the other functions in
+this module."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.BufferList" c:type="GstBufferList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_new_allocate"
+              c:identifier="gst_rtp_buffer_new_allocate"
+              doc="Allocate a new #GstBuffer with enough data to hold an RTP packet with
+All other RTP header fields will be set to 0/FALSE.
+parameters.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="payload_len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="pad_len" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="csrc_count" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_new_allocate_len"
+              c:identifier="gst_rtp_buffer_new_allocate_len"
+              doc="Create a new #GstBuffer that can hold an RTP packet that is exactly
+All RTP header fields will be set to 0/FALSE.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="packet_len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="pad_len" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="csrc_count" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_new_copy_data"
+              c:identifier="gst_rtp_buffer_new_copy_data"
+              doc="Create a new buffer and set the data to a copy of @len
+bytes of @data and the size to @len. The data will be freed when the buffer
+is freed.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_new_take_data"
+              c:identifier="gst_rtp_buffer_new_take_data"
+              doc="Create a new buffer and set the data and size of the buffer to @data and @len
+respectively. @data will be freed when the buffer is unreffed, so this
+function transfers ownership of @data to the new buffer.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_pad_to"
+              c:identifier="gst_rtp_buffer_pad_to"
+              doc="Set the amount of padding in the RTP packet in @buffer to">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_csrc"
+              c:identifier="gst_rtp_buffer_set_csrc"
+              doc="Modify the CSRC at index @idx in @buffer to @csrc.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="idx" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="csrc" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_extension"
+              c:identifier="gst_rtp_buffer_set_extension"
+              doc="Set the extension bit on the RTP packet in @buffer to @extension.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="extension" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_extension_data"
+              c:identifier="gst_rtp_buffer_set_extension_data"
+              doc="the extension, excluding the extension header ( therefore zero is a valid length)
+Set the extension bit of the rtp buffer and fill in the @bits and @length of the
+extension header. It will refuse to set the extension data if the buffer is not
+large enough.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="bits" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_marker"
+              c:identifier="gst_rtp_buffer_set_marker"
+              doc="Set the marker bit on the RTP packet in @buffer to @marker.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="marker" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_packet_len"
+              c:identifier="gst_rtp_buffer_set_packet_len"
+              doc="Set the total @buffer size to @len. The data in the buffer will be made
+larger if needed. Any padding will be removed from the packet.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_padding"
+              c:identifier="gst_rtp_buffer_set_padding"
+              doc="Set the padding bit on the RTP packet in @buffer to @padding.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="padding" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_payload_type"
+              c:identifier="gst_rtp_buffer_set_payload_type"
+              doc="Set the payload type of the RTP packet in @buffer to @payload_type.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="payload_type" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_seq"
+              c:identifier="gst_rtp_buffer_set_seq"
+              doc="Set the sequence number of the RTP packet in @buffer to @seq.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="seq" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_ssrc"
+              c:identifier="gst_rtp_buffer_set_ssrc"
+              doc="Set the SSRC on the RTP packet in @buffer to @ssrc.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="ssrc" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_timestamp"
+              c:identifier="gst_rtp_buffer_set_timestamp"
+              doc="Set the timestamp of the RTP packet in @buffer to @timestamp.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="timestamp" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_version"
+              c:identifier="gst_rtp_buffer_set_version"
+              doc="Set the version of the RTP packet in @buffer to @version.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="version" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_validate"
+              c:identifier="gst_rtp_buffer_validate"
+              doc="Check if the data pointed to by @buffer is a valid RTP packet using
+validate_data().
+Use this function to validate a packet before using the other functions in
+this module.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_validate_data"
+              c:identifier="gst_rtp_buffer_validate_data"
+              doc="Check if the @data and @size point to the data of a valid RTP packet.
+This function checks the length, version and padding of the packet data.
+Use this function to validate a packet before using the other functions in
+this module.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="payload_info_for_name"
+              c:identifier="gst_rtp_payload_info_for_name"
+              doc="Get the #GstRTPPayloadInfo for @media and @encoding_name. This function is
+mostly used to get the default clock-rate and bandwidth for dynamic payload
+types specified with @media and @encoding name.
+The search for @encoding_name will be performed in a case insensitve way.">
+      <return-value transfer-ownership="none">
+        <type name="RTPPayloadInfo" c:type="GstRTPPayloadInfo*"/>
+      </return-value>
+      <parameters>
+        <parameter name="media" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="encoding_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="payload_info_for_pt"
+              c:identifier="gst_rtp_payload_info_for_pt"
+              doc="Get the #GstRTPPayloadInfo for @payload_type. This function is
+mostly used to get the default clock-rate and bandwidth for static payload
+types specified with @payload_type.">
+      <return-value transfer-ownership="none">
+        <type name="RTPPayloadInfo" c:type="GstRTPPayloadInfo*"/>
+      </return-value>
+      <parameters>
+        <parameter name="payload_type" transfer-ownership="none">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_buffer_add_packet"
+              c:identifier="gst_rtcp_buffer_add_packet"
+              doc="Add a new packet of @type to @buffer. @packet will point to the newly created
+packet.
+if the max mtu is exceeded for the buffer.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="RTCPType" c:type="GstRTCPType"/>
+        </parameter>
+        <parameter name="packet" transfer-ownership="none">
+          <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_buffer_end"
+              c:identifier="gst_rtcp_buffer_end"
+              doc="Finish @buffer after being constructured. This function is usually called
+after gst_rtcp_buffer_new() and after adding the RTCP items to the new buffer.
+The function adjusts the size of @buffer with the total length of all the
+added packets.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_buffer_get_first_packet"
+              c:identifier="gst_rtcp_buffer_get_first_packet"
+              doc="Initialize a new #GstRTCPPacket pointer that points to the first packet in">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="packet" transfer-ownership="none">
+          <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_buffer_get_packet_count"
+              c:identifier="gst_rtcp_buffer_get_packet_count"
+              doc="Get the number of RTCP packets in @buffer.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_buffer_new"
+              c:identifier="gst_rtcp_buffer_new"
+              doc="Create a new buffer for constructing RTCP packets. The packet will have a
+maximum size of @mtu.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mtu" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_buffer_new_copy_data"
+              c:identifier="gst_rtcp_buffer_new_copy_data"
+              doc="Create a new buffer and set the data to a copy of @len
+bytes of @data and the size to @len. The data will be freed when the buffer
+is freed.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_buffer_new_take_data"
+              c:identifier="gst_rtcp_buffer_new_take_data"
+              doc="Create a new buffer and set the data and size of the buffer to @data and @len
+respectively. @data will be freed when the buffer is unreffed, so this
+function transfers ownership of @data to the new buffer.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_buffer_validate"
+              c:identifier="gst_rtcp_buffer_validate"
+              doc="Check if the data pointed to by @buffer is a valid RTCP packet using
+gst_rtcp_buffer_validate_data().">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_buffer_validate_data"
+              c:identifier="gst_rtcp_buffer_validate_data"
+              doc="Check if the @data and @size point to the data of a valid RTCP (compound)
+packet.
+Use this function to validate a packet before using the other functions in
+this module.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_ntp_to_unix"
+              c:identifier="gst_rtcp_ntp_to_unix"
+              doc="Converts an NTP time to UNIX nanoseconds. @ntptime can typically be
+the NTP time of an SR RTCP message and contains, in the upper 32 bits, the
+number of seconds since 1900 and, in the lower 32 bits, the fractional
+seconds. The resulting value will be the number of nanoseconds since 1970.">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="ntptime" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_packet_fb_get_type"
+              c:identifier="gst_rtcp_packet_fb_get_type"
+              doc="Get the feedback message type of the FB @packet."
+              version="0.10.23">
+      <return-value transfer-ownership="full">
+        <type name="RTCPFBType" c:type="GstRTCPFBType"/>
+      </return-value>
+      <parameters>
+        <parameter name="packet" transfer-ownership="none">
+          <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_packet_get_type"
+              c:identifier="gst_rtcp_packet_get_type"
+              doc="Get the packet type of the packet pointed to by @packet.
+pointing to a valid packet.">
+      <return-value transfer-ownership="full">
+        <type name="RTCPType" c:type="GstRTCPType"/>
+      </return-value>
+      <parameters>
+        <parameter name="packet" transfer-ownership="none">
+          <type name="RTCPPacket" c:type="GstRTCPPacket*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_sdes_name_to_type"
+              c:identifier="gst_rtcp_sdes_name_to_type"
+              doc="Convert @name into a @GstRTCPSDESType. @name is typically a key in a
+#GstStructure containing SDES items.
+is a private sdes item."
+              version="0.10.26">
+      <return-value transfer-ownership="full">
+        <type name="RTCPSDESType" c:type="GstRTCPSDESType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_sdes_type_to_name"
+              c:identifier="gst_rtcp_sdes_type_to_name"
+              doc="Converts @type to the string equivalent. The string is typically used as a
+key in a #GstStructure containing SDES items."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="RTCPSDESType" c:type="GstRTCPSDESType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rtcp_unix_to_ntp"
+              c:identifier="gst_rtcp_unix_to_ntp"
+              doc="Converts a UNIX timestamp in nanoseconds to an NTP time. The caller should
+pass a value with nanoseconds since 1970. The NTP time will, in the upper
+32 bits, contain the number of seconds since 1900 and, in the lower 32
+bits, the fractional seconds. The resulting value can be used as an ntptime
+for constructing SR RTCP packets.">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="unixtime" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/rtp/ffi/ffi.factor b/extra/gstreamer/rtp/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..28f8605
--- /dev/null
@@ -0,0 +1,16 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries combinators kernel system
+gobject-introspection glib.ffi gstreamer.base.ffi gstreamer.ffi ;
+IN: gstreamer.rtp.ffi
+
+<<
+"gstreamer.rtp" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstrtp-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gstreamer/rtp/GstRtp-0.10.gir
+
diff --git a/extra/gstreamer/rtp/rtp.factor b/extra/gstreamer/rtp/rtp.factor
new file mode 100644 (file)
index 0000000..7e928c1
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.rtp.ffi ;
+IN: gstreamer.rtp
+
diff --git a/extra/gstreamer/rtsp/GstRtsp-0.10.gir b/extra/gstreamer/rtsp/GstRtsp-0.10.gir
new file mode 100644 (file)
index 0000000..b0cf681
--- /dev/null
@@ -0,0 +1,2761 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.0"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="GstSdp" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <package name="gstreamer-sdp-0.10"/>
+  <c:include name="gst/audio/gstrtsp-enumtypes.h"/>
+  <c:include name="gst/audio/gstrtspbase64.h"/>
+  <c:include name="gst/audio/gstrtspconnection.h"/>
+  <c:include name="gst/audio/gstrtspdefs.h"/>
+  <c:include name="gst/audio/gstrtspextension.h"/>
+  <c:include name="gst/audio/gstrtspmessage.h"/>
+  <c:include name="gst/audio/gstrtsprange.h"/>
+  <c:include name="gst/audio/gstrtsptransport.h"/>
+  <c:include name="gst/audio/gstrtspurl.h"/>
+  <namespace name="GstRtsp"
+             version="0.10"
+             shared-library="libgstrtsp-0.10.so.0"
+             c:prefix="Gst">
+    <constant name="DEFAULT_PORT" value="554">
+      <type name="int"/>
+    </constant>
+    <enumeration name="RTSPAuthMethod"
+                 doc="Authentication methods, ordered by strength"
+                 glib:type-name="GstRTSPAuthMethod"
+                 glib:get-type="gst_rtsp_auth_method_get_type"
+                 c:type="GstRTSPAuthMethod">
+      <member name="none"
+              value="0"
+              c:identifier="GST_RTSP_AUTH_NONE"
+              glib:nick="none"/>
+      <member name="basic"
+              value="1"
+              c:identifier="GST_RTSP_AUTH_BASIC"
+              glib:nick="basic"/>
+      <member name="digest"
+              value="2"
+              c:identifier="GST_RTSP_AUTH_DIGEST"
+              glib:nick="digest"/>
+    </enumeration>
+    <record name="RTSPConnection"
+            c:type="GstRTSPConnection"
+            doc="Opaque RTSP connection object.">
+      <method name="connect"
+              c:identifier="gst_rtsp_connection_connect"
+              doc="Attempt to connect to the url of @conn made with
+gst_rtsp_connection_create(). If @timeout is #NULL this function can block
+forever. If @timeout contains a valid timeout, this function will return
+#GST_RTSP_ETIMEOUT after the timeout expired.
+This function can be cancelled with gst_rtsp_connection_flush().">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close"
+              c:identifier="gst_rtsp_connection_close"
+              doc="Close the connected @conn. After this call, the connection is in the same
+state as when it was first created.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gst_rtsp_connection_free"
+              doc="Close and free @conn.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+      </method>
+      <method name="read"
+              c:identifier="gst_rtsp_connection_read"
+              doc="Attempt to read @size bytes into @data from the connected @conn, blocking up to
+the specified @timeout. @timeout can be #NULL, in which case this function
+might block forever.
+This function can be cancelled with gst_rtsp_connection_flush().">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="write"
+              c:identifier="gst_rtsp_connection_write"
+              doc="Attempt to write @size bytes of @data to the connected @conn, blocking up to
+the specified @timeout. @timeout can be #NULL, in which case this function
+might block forever.
+This function can be cancelled with gst_rtsp_connection_flush().">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send"
+              c:identifier="gst_rtsp_connection_send"
+              doc="Attempt to send @message to the connected @conn, blocking up to
+the specified @timeout. @timeout can be #NULL, in which case this function
+might block forever.
+This function can be cancelled with gst_rtsp_connection_flush().">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="receive"
+              c:identifier="gst_rtsp_connection_receive"
+              doc="Attempt to read into @message from the connected @conn, blocking up to
+the specified @timeout. @timeout can be #NULL, in which case this function
+might block forever.
+This function can be cancelled with gst_rtsp_connection_flush().">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="poll"
+              c:identifier="gst_rtsp_connection_poll"
+              doc="Wait up to the specified @timeout for the connection to become available for
+at least one of the operations specified in @events. When the function returns
+with #GST_RTSP_OK, @revents will contain a bitmask of available operations on
+This function can be cancelled with gst_rtsp_connection_flush()."
+              version="0.10.15">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="events" transfer-ownership="none">
+            <type name="RTSPEvent" c:type="GstRTSPEvent"/>
+          </parameter>
+          <parameter name="revents" transfer-ownership="none">
+            <type name="RTSPEvent" c:type="GstRTSPEvent*"/>
+          </parameter>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="next_timeout"
+              c:identifier="gst_rtsp_connection_next_timeout"
+              doc="Calculate the next timeout for @conn, storing the result in @timeout.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reset_timeout"
+              c:identifier="gst_rtsp_connection_reset_timeout"
+              doc="Reset the timeout of @conn.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+      </method>
+      <method name="flush"
+              c:identifier="gst_rtsp_connection_flush"
+              doc="Start or stop the flushing action on @conn. When flushing, all current
+and future actions on @conn will return #GST_RTSP_EINTR until the connection
+is set to non-flushing mode again.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="flush" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_proxy"
+              c:identifier="gst_rtsp_connection_set_proxy"
+              doc="Set the proxy host and port."
+              version="0.10.23">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="host" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="port" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_auth"
+              c:identifier="gst_rtsp_connection_set_auth"
+              doc="Configure @conn for authentication mode @method with @user and @pass as the
+user and password respectively.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="method" transfer-ownership="none">
+            <type name="RTSPAuthMethod" c:type="GstRTSPAuthMethod"/>
+          </parameter>
+          <parameter name="user" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="pass" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_auth_param"
+              c:identifier="gst_rtsp_connection_set_auth_param"
+              doc="Setup @conn with authentication directives. This is not necesary for
+methods #GST_RTSP_AUTH_NONE and #GST_RTSP_AUTH_BASIC. For
+#GST_RTSP_AUTH_DIGEST, directives should be taken from the digest challenge
+in the WWW-Authenticate response header and can include realm, domain,
+nonce, opaque, stale, algorithm, qop as per RFC2617."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="param" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear_auth_params"
+              c:identifier="gst_rtsp_connection_clear_auth_params"
+              doc="Clear the list of authentication directives stored in @conn."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_qos_dscp"
+              c:identifier="gst_rtsp_connection_set_qos_dscp"
+              doc="Configure @conn to use the specified DSCP value."
+              version="0.10.20">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="qos_dscp" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_url"
+              c:identifier="gst_rtsp_connection_get_url"
+              doc="Retrieve the URL of the other end of @conn.
+connection is freed."
+              version="0.10.23">
+        <return-value transfer-ownership="full">
+          <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
+        </return-value>
+      </method>
+      <method name="get_ip"
+              c:identifier="gst_rtsp_connection_get_ip"
+              doc="Retrieve the IP address of the other end of @conn.
+connection is closed."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_ip"
+              c:identifier="gst_rtsp_connection_set_ip"
+              doc="Set the IP address of the server."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ip" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_readfd"
+              c:identifier="gst_rtsp_connection_get_readfd"
+              doc="Get the file descriptor for reading.
+descriptor remains valid until the connection is closed."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_writefd"
+              c:identifier="gst_rtsp_connection_get_writefd"
+              doc="Get the file descriptor for writing.
+descriptor remains valid until the connection is closed."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_http_mode"
+              c:identifier="gst_rtsp_connection_set_http_mode"
+              doc="By setting the HTTP mode to %TRUE the message parsing will support HTTP
+messages in addition to the RTSP messages. It will also disable the
+automatic handling of setting up an HTTP tunnel."
+              version="0.10.25">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tunneled"
+              c:identifier="gst_rtsp_connection_set_tunneled"
+              doc="Set the HTTP tunneling state of the connection. This must be configured before
+the @conn is connected."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tunneled" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_tunneled"
+              c:identifier="gst_rtsp_connection_is_tunneled"
+              doc="Get the tunneling state of the connection."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_tunnelid"
+              c:identifier="gst_rtsp_connection_get_tunnelid"
+              doc="Get the tunnel session id the connection."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="do_tunnel"
+              c:identifier="gst_rtsp_connection_do_tunnel"
+              doc="If @conn received the first tunnel connection and @conn2 received
+the second tunnel connection, link the two connections together so that
+After this call, @conn2 cannot be used anymore and must be freed with
+gst_rtsp_connection_free().
+If @conn2 is %NULL then only the base64 decoding context will be setup for"
+              version="0.10.23">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="conn2" transfer-ownership="none">
+            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <bitfield name="RTSPEvent"
+              doc="The possible events for the connection."
+              glib:type-name="GstRTSPEvent"
+              glib:get-type="gst_rtsp_event_get_type"
+              c:type="GstRTSPEvent">
+      <member name="read"
+              value="1"
+              c:identifier="GST_RTSP_EV_READ"
+              glib:nick="read"/>
+      <member name="write"
+              value="2"
+              c:identifier="GST_RTSP_EV_WRITE"
+              glib:nick="write"/>
+    </bitfield>
+    <interface name="RTSPExtension"
+               c:type="GstRTSPExtension"
+               glib:type-name="GstRTSPExtension"
+               glib:get-type="gst_rtsp_extension_get_type"
+               glib:type-struct="RTSPExtensionInterface">
+      <virtual-method name="detect_server" invoker="detect_server">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="resp" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="before_send" invoker="before_send">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="req" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="after_send" invoker="after_send">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="req" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+          <parameter name="resp" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="parse_sdp" invoker="parse_sdp">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="sdp" transfer-ownership="none">
+            <type name="GstSdp.SDPMessage" c:type="GstSDPMessage*"/>
+          </parameter>
+          <parameter name="s" transfer-ownership="none">
+            <type name="Gst.Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="setup_media" invoker="setup_media">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="media" transfer-ownership="none">
+            <type name="GstSdp.SDPMedia" c:type="GstSDPMedia*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="configure_stream" invoker="configure_stream">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_transports" invoker="get_transports">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="protocols" transfer-ownership="none">
+            <type name="RTSPLowerTrans" c:type="GstRTSPLowerTrans"/>
+          </parameter>
+          <parameter name="transport" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="stream_select" invoker="stream_select">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="url" transfer-ownership="none">
+            <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="receive_request" invoker="receive_request">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="req" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="detect_server"
+              c:identifier="gst_rtsp_extension_detect_server">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="resp" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="before_send" c:identifier="gst_rtsp_extension_before_send">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="req" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="after_send" c:identifier="gst_rtsp_extension_after_send">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="req" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+          <parameter name="resp" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_sdp" c:identifier="gst_rtsp_extension_parse_sdp">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="sdp" transfer-ownership="none">
+            <type name="GstSdp.SDPMessage" c:type="GstSDPMessage*"/>
+          </parameter>
+          <parameter name="s" transfer-ownership="none">
+            <type name="Gst.Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="setup_media" c:identifier="gst_rtsp_extension_setup_media">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="media" transfer-ownership="none">
+            <type name="GstSdp.SDPMedia" c:type="GstSDPMedia*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="configure_stream"
+              c:identifier="gst_rtsp_extension_configure_stream">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_transports"
+              c:identifier="gst_rtsp_extension_get_transports">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="protocols" transfer-ownership="none">
+            <type name="RTSPLowerTrans" c:type="GstRTSPLowerTrans"/>
+          </parameter>
+          <parameter name="transport" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="stream_select"
+              c:identifier="gst_rtsp_extension_stream_select">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="url" transfer-ownership="none">
+            <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="receive_request"
+              c:identifier="gst_rtsp_extension_receive_request">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="req" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send" c:identifier="gst_rtsp_extension_send">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="req" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+          <parameter name="resp" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="send">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="RTSPExtensionInterface"
+            c:type="GstRTSPExtensionInterface"
+            glib:is-gtype-struct-for="RTSPExtension">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="detect_server">
+        <callback name="detect_server" c:type="detect_server">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="ext" transfer-ownership="none">
+              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+            </parameter>
+            <parameter name="resp" transfer-ownership="none">
+              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="before_send">
+        <callback name="before_send" c:type="before_send">
+          <return-value transfer-ownership="full">
+            <type name="RTSPResult" c:type="GstRTSPResult"/>
+          </return-value>
+          <parameters>
+            <parameter name="ext" transfer-ownership="none">
+              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+            </parameter>
+            <parameter name="req" transfer-ownership="none">
+              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="after_send">
+        <callback name="after_send" c:type="after_send">
+          <return-value transfer-ownership="full">
+            <type name="RTSPResult" c:type="GstRTSPResult"/>
+          </return-value>
+          <parameters>
+            <parameter name="ext" transfer-ownership="none">
+              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+            </parameter>
+            <parameter name="req" transfer-ownership="none">
+              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+            </parameter>
+            <parameter name="resp" transfer-ownership="none">
+              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parse_sdp">
+        <callback name="parse_sdp" c:type="parse_sdp">
+          <return-value transfer-ownership="full">
+            <type name="RTSPResult" c:type="GstRTSPResult"/>
+          </return-value>
+          <parameters>
+            <parameter name="ext" transfer-ownership="none">
+              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+            </parameter>
+            <parameter name="sdp" transfer-ownership="none">
+              <type name="GstSdp.SDPMessage" c:type="GstSDPMessage*"/>
+            </parameter>
+            <parameter name="s" transfer-ownership="none">
+              <type name="Gst.Structure" c:type="GstStructure*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="setup_media">
+        <callback name="setup_media" c:type="setup_media">
+          <return-value transfer-ownership="full">
+            <type name="RTSPResult" c:type="GstRTSPResult"/>
+          </return-value>
+          <parameters>
+            <parameter name="ext" transfer-ownership="none">
+              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+            </parameter>
+            <parameter name="media" transfer-ownership="none">
+              <type name="GstSdp.SDPMedia" c:type="GstSDPMedia*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="configure_stream">
+        <callback name="configure_stream" c:type="configure_stream">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="ext" transfer-ownership="none">
+              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_transports">
+        <callback name="get_transports" c:type="get_transports">
+          <return-value transfer-ownership="full">
+            <type name="RTSPResult" c:type="GstRTSPResult"/>
+          </return-value>
+          <parameters>
+            <parameter name="ext" transfer-ownership="none">
+              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+            </parameter>
+            <parameter name="protocols" transfer-ownership="none">
+              <type name="RTSPLowerTrans" c:type="GstRTSPLowerTrans"/>
+            </parameter>
+            <parameter name="transport" transfer-ownership="none">
+              <array c:type="gchar**">
+                <type name="utf8"/>
+              </array>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stream_select">
+        <callback name="stream_select" c:type="stream_select">
+          <return-value transfer-ownership="full">
+            <type name="RTSPResult" c:type="GstRTSPResult"/>
+          </return-value>
+          <parameters>
+            <parameter name="ext" transfer-ownership="none">
+              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+            </parameter>
+            <parameter name="url" transfer-ownership="none">
+              <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="send">
+        <callback name="send" c:type="send">
+          <return-value transfer-ownership="full">
+            <type name="RTSPResult" c:type="GstRTSPResult"/>
+          </return-value>
+          <parameters>
+            <parameter name="ext" transfer-ownership="none">
+              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+            </parameter>
+            <parameter name="req" transfer-ownership="none">
+              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+            </parameter>
+            <parameter name="resp" transfer-ownership="none">
+              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="receive_request">
+        <callback name="receive_request" c:type="receive_request">
+          <return-value transfer-ownership="full">
+            <type name="RTSPResult" c:type="GstRTSPResult"/>
+          </return-value>
+          <parameters>
+            <parameter name="ext" transfer-ownership="none">
+              <type name="RTSPExtension" c:type="GstRTSPExtension*"/>
+            </parameter>
+            <parameter name="req" transfer-ownership="none">
+              <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="RTSPFamily"
+                 doc="The possible network families."
+                 glib:type-name="GstRTSPFamily"
+                 glib:get-type="gst_rtsp_family_get_type"
+                 c:type="GstRTSPFamily">
+      <member name="none"
+              value="0"
+              c:identifier="GST_RTSP_FAM_NONE"
+              glib:nick="none"/>
+      <member name="inet"
+              value="1"
+              c:identifier="GST_RTSP_FAM_INET"
+              glib:nick="inet"/>
+      <member name="inet6"
+              value="2"
+              c:identifier="GST_RTSP_FAM_INET6"
+              glib:nick="inet6"/>
+    </enumeration>
+    <enumeration name="RTSPHeaderField"
+                 glib:type-name="GstRTSPHeaderField"
+                 glib:get-type="gst_rtsp_header_field_get_type"
+                 c:type="GstRTSPHeaderField">
+      <member name="invalid"
+              value="0"
+              c:identifier="GST_RTSP_HDR_INVALID"
+              glib:nick="invalid"/>
+      <member name="accept"
+              value="1"
+              c:identifier="GST_RTSP_HDR_ACCEPT"
+              glib:nick="accept"/>
+      <member name="accept_encoding"
+              value="2"
+              c:identifier="GST_RTSP_HDR_ACCEPT_ENCODING"
+              glib:nick="accept-encoding"/>
+      <member name="accept_language"
+              value="3"
+              c:identifier="GST_RTSP_HDR_ACCEPT_LANGUAGE"
+              glib:nick="accept-language"/>
+      <member name="allow"
+              value="4"
+              c:identifier="GST_RTSP_HDR_ALLOW"
+              glib:nick="allow"/>
+      <member name="authorization"
+              value="5"
+              c:identifier="GST_RTSP_HDR_AUTHORIZATION"
+              glib:nick="authorization"/>
+      <member name="bandwidth"
+              value="6"
+              c:identifier="GST_RTSP_HDR_BANDWIDTH"
+              glib:nick="bandwidth"/>
+      <member name="blocksize"
+              value="7"
+              c:identifier="GST_RTSP_HDR_BLOCKSIZE"
+              glib:nick="blocksize"/>
+      <member name="cache_control"
+              value="8"
+              c:identifier="GST_RTSP_HDR_CACHE_CONTROL"
+              glib:nick="cache-control"/>
+      <member name="conference"
+              value="9"
+              c:identifier="GST_RTSP_HDR_CONFERENCE"
+              glib:nick="conference"/>
+      <member name="connection"
+              value="10"
+              c:identifier="GST_RTSP_HDR_CONNECTION"
+              glib:nick="connection"/>
+      <member name="content_base"
+              value="11"
+              c:identifier="GST_RTSP_HDR_CONTENT_BASE"
+              glib:nick="content-base"/>
+      <member name="content_encoding"
+              value="12"
+              c:identifier="GST_RTSP_HDR_CONTENT_ENCODING"
+              glib:nick="content-encoding"/>
+      <member name="content_language"
+              value="13"
+              c:identifier="GST_RTSP_HDR_CONTENT_LANGUAGE"
+              glib:nick="content-language"/>
+      <member name="content_length"
+              value="14"
+              c:identifier="GST_RTSP_HDR_CONTENT_LENGTH"
+              glib:nick="content-length"/>
+      <member name="content_location"
+              value="15"
+              c:identifier="GST_RTSP_HDR_CONTENT_LOCATION"
+              glib:nick="content-location"/>
+      <member name="content_type"
+              value="16"
+              c:identifier="GST_RTSP_HDR_CONTENT_TYPE"
+              glib:nick="content-type"/>
+      <member name="cseq"
+              value="17"
+              c:identifier="GST_RTSP_HDR_CSEQ"
+              glib:nick="cseq"/>
+      <member name="date"
+              value="18"
+              c:identifier="GST_RTSP_HDR_DATE"
+              glib:nick="date"/>
+      <member name="expires"
+              value="19"
+              c:identifier="GST_RTSP_HDR_EXPIRES"
+              glib:nick="expires"/>
+      <member name="from"
+              value="20"
+              c:identifier="GST_RTSP_HDR_FROM"
+              glib:nick="from"/>
+      <member name="if_modified_since"
+              value="21"
+              c:identifier="GST_RTSP_HDR_IF_MODIFIED_SINCE"
+              glib:nick="if-modified-since"/>
+      <member name="last_modified"
+              value="22"
+              c:identifier="GST_RTSP_HDR_LAST_MODIFIED"
+              glib:nick="last-modified"/>
+      <member name="proxy_authenticate"
+              value="23"
+              c:identifier="GST_RTSP_HDR_PROXY_AUTHENTICATE"
+              glib:nick="proxy-authenticate"/>
+      <member name="proxy_require"
+              value="24"
+              c:identifier="GST_RTSP_HDR_PROXY_REQUIRE"
+              glib:nick="proxy-require"/>
+      <member name="public"
+              value="25"
+              c:identifier="GST_RTSP_HDR_PUBLIC"
+              glib:nick="public"/>
+      <member name="range"
+              value="26"
+              c:identifier="GST_RTSP_HDR_RANGE"
+              glib:nick="range"/>
+      <member name="referer"
+              value="27"
+              c:identifier="GST_RTSP_HDR_REFERER"
+              glib:nick="referer"/>
+      <member name="require"
+              value="28"
+              c:identifier="GST_RTSP_HDR_REQUIRE"
+              glib:nick="require"/>
+      <member name="retry_after"
+              value="29"
+              c:identifier="GST_RTSP_HDR_RETRY_AFTER"
+              glib:nick="retry-after"/>
+      <member name="rtp_info"
+              value="30"
+              c:identifier="GST_RTSP_HDR_RTP_INFO"
+              glib:nick="rtp-info"/>
+      <member name="scale"
+              value="31"
+              c:identifier="GST_RTSP_HDR_SCALE"
+              glib:nick="scale"/>
+      <member name="session"
+              value="32"
+              c:identifier="GST_RTSP_HDR_SESSION"
+              glib:nick="session"/>
+      <member name="server"
+              value="33"
+              c:identifier="GST_RTSP_HDR_SERVER"
+              glib:nick="server"/>
+      <member name="speed"
+              value="34"
+              c:identifier="GST_RTSP_HDR_SPEED"
+              glib:nick="speed"/>
+      <member name="transport"
+              value="35"
+              c:identifier="GST_RTSP_HDR_TRANSPORT"
+              glib:nick="transport"/>
+      <member name="unsupported"
+              value="36"
+              c:identifier="GST_RTSP_HDR_UNSUPPORTED"
+              glib:nick="unsupported"/>
+      <member name="user_agent"
+              value="37"
+              c:identifier="GST_RTSP_HDR_USER_AGENT"
+              glib:nick="user-agent"/>
+      <member name="via"
+              value="38"
+              c:identifier="GST_RTSP_HDR_VIA"
+              glib:nick="via"/>
+      <member name="www_authenticate"
+              value="39"
+              c:identifier="GST_RTSP_HDR_WWW_AUTHENTICATE"
+              glib:nick="www-authenticate"/>
+      <member name="client_challenge"
+              value="40"
+              c:identifier="GST_RTSP_HDR_CLIENT_CHALLENGE"
+              glib:nick="client-challenge"/>
+      <member name="real_challenge1"
+              value="41"
+              c:identifier="GST_RTSP_HDR_REAL_CHALLENGE1"
+              glib:nick="real-challenge1"/>
+      <member name="real_challenge2"
+              value="42"
+              c:identifier="GST_RTSP_HDR_REAL_CHALLENGE2"
+              glib:nick="real-challenge2"/>
+      <member name="real_challenge3"
+              value="43"
+              c:identifier="GST_RTSP_HDR_REAL_CHALLENGE3"
+              glib:nick="real-challenge3"/>
+      <member name="subscribe"
+              value="44"
+              c:identifier="GST_RTSP_HDR_SUBSCRIBE"
+              glib:nick="subscribe"/>
+      <member name="alert"
+              value="45"
+              c:identifier="GST_RTSP_HDR_ALERT"
+              glib:nick="alert"/>
+      <member name="client_id"
+              value="46"
+              c:identifier="GST_RTSP_HDR_CLIENT_ID"
+              glib:nick="client-id"/>
+      <member name="company_id"
+              value="47"
+              c:identifier="GST_RTSP_HDR_COMPANY_ID"
+              glib:nick="company-id"/>
+      <member name="guid"
+              value="48"
+              c:identifier="GST_RTSP_HDR_GUID"
+              glib:nick="guid"/>
+      <member name="region_data"
+              value="49"
+              c:identifier="GST_RTSP_HDR_REGION_DATA"
+              glib:nick="region-data"/>
+      <member name="max_asm_width"
+              value="50"
+              c:identifier="GST_RTSP_HDR_MAX_ASM_WIDTH"
+              glib:nick="max-asm-width"/>
+      <member name="language"
+              value="51"
+              c:identifier="GST_RTSP_HDR_LANGUAGE"
+              glib:nick="language"/>
+      <member name="player_start_time"
+              value="52"
+              c:identifier="GST_RTSP_HDR_PLAYER_START_TIME"
+              glib:nick="player-start-time"/>
+      <member name="location"
+              value="53"
+              c:identifier="GST_RTSP_HDR_LOCATION"
+              glib:nick="location"/>
+      <member name="etag"
+              value="54"
+              c:identifier="GST_RTSP_HDR_ETAG"
+              glib:nick="etag"/>
+      <member name="if_match"
+              value="55"
+              c:identifier="GST_RTSP_HDR_IF_MATCH"
+              glib:nick="if-match"/>
+      <member name="accept_charset"
+              value="56"
+              c:identifier="GST_RTSP_HDR_ACCEPT_CHARSET"
+              glib:nick="accept-charset"/>
+      <member name="supported"
+              value="57"
+              c:identifier="GST_RTSP_HDR_SUPPORTED"
+              glib:nick="supported"/>
+      <member name="vary"
+              value="58"
+              c:identifier="GST_RTSP_HDR_VARY"
+              glib:nick="vary"/>
+      <member name="x_accelerate_streaming"
+              value="59"
+              c:identifier="GST_RTSP_HDR_X_ACCELERATE_STREAMING"
+              glib:nick="x-accelerate-streaming"/>
+      <member name="x_accept_authent"
+              value="60"
+              c:identifier="GST_RTSP_HDR_X_ACCEPT_AUTHENT"
+              glib:nick="x-accept-authent"/>
+      <member name="x_accept_proxy_authent"
+              value="61"
+              c:identifier="GST_RTSP_HDR_X_ACCEPT_PROXY_AUTHENT"
+              glib:nick="x-accept-proxy-authent"/>
+      <member name="x_broadcast_id"
+              value="62"
+              c:identifier="GST_RTSP_HDR_X_BROADCAST_ID"
+              glib:nick="x-broadcast-id"/>
+      <member name="x_burst_streaming"
+              value="63"
+              c:identifier="GST_RTSP_HDR_X_BURST_STREAMING"
+              glib:nick="x-burst-streaming"/>
+      <member name="x_notice"
+              value="64"
+              c:identifier="GST_RTSP_HDR_X_NOTICE"
+              glib:nick="x-notice"/>
+      <member name="x_player_lag_time"
+              value="65"
+              c:identifier="GST_RTSP_HDR_X_PLAYER_LAG_TIME"
+              glib:nick="x-player-lag-time"/>
+      <member name="x_playlist"
+              value="66"
+              c:identifier="GST_RTSP_HDR_X_PLAYLIST"
+              glib:nick="x-playlist"/>
+      <member name="x_playlist_change_notice"
+              value="67"
+              c:identifier="GST_RTSP_HDR_X_PLAYLIST_CHANGE_NOTICE"
+              glib:nick="x-playlist-change-notice"/>
+      <member name="x_playlist_gen_id"
+              value="68"
+              c:identifier="GST_RTSP_HDR_X_PLAYLIST_GEN_ID"
+              glib:nick="x-playlist-gen-id"/>
+      <member name="x_playlist_seek_id"
+              value="69"
+              c:identifier="GST_RTSP_HDR_X_PLAYLIST_SEEK_ID"
+              glib:nick="x-playlist-seek-id"/>
+      <member name="x_proxy_client_agent"
+              value="70"
+              c:identifier="GST_RTSP_HDR_X_PROXY_CLIENT_AGENT"
+              glib:nick="x-proxy-client-agent"/>
+      <member name="x_proxy_client_verb"
+              value="71"
+              c:identifier="GST_RTSP_HDR_X_PROXY_CLIENT_VERB"
+              glib:nick="x-proxy-client-verb"/>
+      <member name="x_receding_playlistchange"
+              value="72"
+              c:identifier="GST_RTSP_HDR_X_RECEDING_PLAYLISTCHANGE"
+              glib:nick="x-receding-playlistchange"/>
+      <member name="x_rtp_info"
+              value="73"
+              c:identifier="GST_RTSP_HDR_X_RTP_INFO"
+              glib:nick="x-rtp-info"/>
+      <member name="x_startupprofile"
+              value="74"
+              c:identifier="GST_RTSP_HDR_X_STARTUPPROFILE"
+              glib:nick="x-startupprofile"/>
+      <member name="timestamp"
+              value="75"
+              c:identifier="GST_RTSP_HDR_TIMESTAMP"
+              glib:nick="timestamp"/>
+      <member name="authentication_info"
+              value="76"
+              c:identifier="GST_RTSP_HDR_AUTHENTICATION_INFO"
+              glib:nick="authentication-info"/>
+      <member name="host"
+              value="77"
+              c:identifier="GST_RTSP_HDR_HOST"
+              glib:nick="host"/>
+      <member name="pragma"
+              value="78"
+              c:identifier="GST_RTSP_HDR_PRAGMA"
+              glib:nick="pragma"/>
+      <member name="x_server_ip_address"
+              value="79"
+              c:identifier="GST_RTSP_HDR_X_SERVER_IP_ADDRESS"
+              glib:nick="x-server-ip-address"/>
+      <member name="x_sessioncookie"
+              value="80"
+              c:identifier="GST_RTSP_HDR_X_SESSIONCOOKIE"
+              glib:nick="x-sessioncookie"/>
+      <member name="last"
+              value="81"
+              c:identifier="GST_RTSP_HDR_LAST"
+              glib:nick="last"/>
+    </enumeration>
+    <bitfield name="RTSPLowerTrans"
+              doc="The different transport methods."
+              glib:type-name="GstRTSPLowerTrans"
+              glib:get-type="gst_rtsp_lower_trans_get_type"
+              c:type="GstRTSPLowerTrans">
+      <member name="udp_unicast"
+              value="1"
+              c:identifier="UDP Unicast Mode"
+              glib:nick="udp-unicast"/>
+      <member name="udp_multicast"
+              value="2"
+              c:identifier="UDP Multicast Mode"
+              glib:nick="udp-multicast"/>
+      <member name="tcp"
+              value="4"
+              c:identifier="TCP interleaved mode"
+              glib:nick="tcp"/>
+      <member name="http"
+              value="16"
+              c:identifier="HTTP tunneled mode"
+              glib:nick="http"/>
+    </bitfield>
+    <record name="RTSPMessage"
+            c:type="GstRTSPMessage"
+            doc="An RTSP message containing request, response or data messages. Depending on
+the @type, the appropriate structure may be accessed.">
+      <field name="type" writable="1">
+        <type name="RTSPMsgType" c:type="GstRTSPMsgType"/>
+      </field>
+      <union name="type_data" c:type="type_data">
+        <record name="request" c:type="request">
+          <field name="method" writable="1">
+            <type name="RTSPMethod" c:type="GstRTSPMethod"/>
+          </field>
+          <field name="uri" writable="1">
+            <type name="utf8" c:type="gchar*"/>
+          </field>
+          <field name="version" writable="1">
+            <type name="RTSPVersion" c:type="GstRTSPVersion"/>
+          </field>
+        </record>
+        <record name="response" c:type="response">
+          <field name="code" writable="1">
+            <type name="RTSPStatusCode" c:type="GstRTSPStatusCode"/>
+          </field>
+          <field name="reason" writable="1">
+            <type name="utf8" c:type="gchar*"/>
+          </field>
+          <field name="version" writable="1">
+            <type name="RTSPVersion" c:type="GstRTSPVersion"/>
+          </field>
+        </record>
+        <record name="data" c:type="data">
+          <field name="channel" writable="1">
+            <type name="uint8" c:type="guint8"/>
+          </field>
+        </record>
+      </union>
+      <field name="hdr_fields" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="body" writable="1">
+        <type name="any" c:type="guint8*"/>
+      </field>
+      <field name="body_size" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_rtsp_message_new"
+                   doc="Create a new initialized #GstRTSPMessage. Free with gst_rtsp_message_free().">
+        <return-value transfer-ownership="full">
+          <type name="RTSPMessage" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="msg" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage**"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_request"
+                   c:identifier="gst_rtsp_message_new_request"
+                   doc="Create a new #GstRTSPMessage with @method and @uri and store the result
+request message in @msg. Free with gst_rtsp_message_free().">
+        <return-value transfer-ownership="full">
+          <type name="RTSPMessage" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="msg" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage**"/>
+          </parameter>
+          <parameter name="method" transfer-ownership="none">
+            <type name="RTSPMethod" c:type="GstRTSPMethod"/>
+          </parameter>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_response"
+                   c:identifier="gst_rtsp_message_new_response"
+                   doc="Create a new response #GstRTSPMessage with @code and @reason and store the
+result message in @msg. Free with gst_rtsp_message_free().
+When @reason is #NULL, the default reason for @code will be used.
+When @request is not #NULL, the relevant headers will be copied to the new
+response message.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPMessage" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="msg" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage**"/>
+          </parameter>
+          <parameter name="code" transfer-ownership="none">
+            <type name="RTSPStatusCode" c:type="GstRTSPStatusCode"/>
+          </parameter>
+          <parameter name="reason" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="request" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_data"
+                   c:identifier="gst_rtsp_message_new_data"
+                   doc="Create a new data #GstRTSPMessage with @channel and store the
+result message in @msg. Free with gst_rtsp_message_free().">
+        <return-value transfer-ownership="full">
+          <type name="RTSPMessage" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="msg" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage**"/>
+          </parameter>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="init"
+              c:identifier="gst_rtsp_message_init"
+              doc="Initialize @msg. This function is mostly used when @msg is allocated on the
+stack. The reverse operation of this is gst_rtsp_message_unset().">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+      </method>
+      <method name="unset"
+              c:identifier="gst_rtsp_message_unset"
+              doc="Unset the contents of @msg so that it becomes an uninitialized
+#GstRTSPMessage again. This function is mostly used in combination with
+gst_rtsp_message_init_request(), gst_rtsp_message_init_response() and
+gst_rtsp_message_init_data() on stack allocated #GstRTSPMessage structures.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gst_rtsp_message_free"
+              doc="Free the memory used by @msg.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+      </method>
+      <method name="init_request"
+              c:identifier="gst_rtsp_message_init_request"
+              doc="Initialize @msg as a request message with @method and @uri. To clear @msg
+again, use gst_rtsp_message_unset().">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="method" transfer-ownership="none">
+            <type name="RTSPMethod" c:type="GstRTSPMethod"/>
+          </parameter>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_request"
+              c:identifier="gst_rtsp_message_parse_request"
+              doc="Parse the request message @msg and store the values @method, @uri and
+value.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="method" transfer-ownership="none">
+            <type name="RTSPMethod" c:type="GstRTSPMethod*"/>
+          </parameter>
+          <parameter name="uri" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="version" transfer-ownership="none">
+            <type name="RTSPVersion" c:type="GstRTSPVersion*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_response"
+              c:identifier="gst_rtsp_message_init_response"
+              doc="Initialize @msg with @code and @reason.
+When @reason is #NULL, the default reason for @code will be used.
+When @request is not #NULL, the relevant headers will be copied to the new
+response message.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="code" transfer-ownership="none">
+            <type name="RTSPStatusCode" c:type="GstRTSPStatusCode"/>
+          </parameter>
+          <parameter name="reason" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="request" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_response"
+              c:identifier="gst_rtsp_message_parse_response"
+              doc="Parse the response message @msg and store the values @code, @reason and
+value.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="code" transfer-ownership="none">
+            <type name="RTSPStatusCode" c:type="GstRTSPStatusCode*"/>
+          </parameter>
+          <parameter name="reason" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="version" transfer-ownership="none">
+            <type name="RTSPVersion" c:type="GstRTSPVersion*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_data"
+              c:identifier="gst_rtsp_message_init_data"
+              doc="Initialize a new data #GstRTSPMessage for @channel.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_data"
+              c:identifier="gst_rtsp_message_parse_data"
+              doc="Parse the data message @msg and store the channel in @channel.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="channel" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_header"
+              c:identifier="gst_rtsp_message_add_header"
+              doc="Add a header with key @field and @value to @msg. This function takes a copy
+of @value.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_header"
+              c:identifier="gst_rtsp_message_take_header"
+              doc="Add a header with key @field and @value to @msg. This function takes
+ownership of @value."
+              version="0.10.23">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_header"
+              c:identifier="gst_rtsp_message_remove_header"
+              doc="Remove the @indx header with key @field from @msg. If @indx equals -1, all
+headers will be removed.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
+          </parameter>
+          <parameter name="indx" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_header"
+              c:identifier="gst_rtsp_message_get_header"
+              doc="Get the @indx header value with key @field from @msg. The result in @value
+stays valid as long as it remains present in @msg.
+was not found.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="indx" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_headers"
+              c:identifier="gst_rtsp_message_append_headers"
+              doc="Append the currently configured headers in @msg to the #GString @str suitable
+for transmission.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <type name="GLib.String" c:type="GString*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_body"
+              c:identifier="gst_rtsp_message_set_body"
+              doc="Set the body of @msg to a copy of @data.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_body"
+              c:identifier="gst_rtsp_message_take_body"
+              doc="Set the body of @msg to @data and @size. This method takes ownership of">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_body"
+              c:identifier="gst_rtsp_message_get_body"
+              doc="Get the body of @msg. @data remains valid for as long as @msg is valid and
+unchanged.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" direction="out" transfer-ownership="full">
+            <type name="uint8" c:type="guint8**"/>
+          </parameter>
+          <parameter name="size" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="steal_body"
+              c:identifier="gst_rtsp_message_steal_body"
+              doc="Take the body of @msg and store it in @data and @size. After this method,
+the body and size of @msg will be set to #NULL and 0 respectively.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" direction="out" transfer-ownership="full">
+            <type name="uint8" c:type="guint8**"/>
+          </parameter>
+          <parameter name="size" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dump"
+              c:identifier="gst_rtsp_message_dump"
+              doc="Dump the contents of @msg to stdout.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+      </method>
+    </record>
+    <bitfield name="RTSPMethod"
+              doc="The different supported RTSP methods."
+              glib:type-name="GstRTSPMethod"
+              glib:get-type="gst_rtsp_method_get_type"
+              c:type="GstRTSPMethod">
+      <member name="invalid"
+              value="0"
+              c:identifier="GST_RTSP_INVALID"
+              glib:nick="invalid"/>
+      <member name="describe"
+              value="1"
+              c:identifier="GST_RTSP_DESCRIBE"
+              glib:nick="describe"/>
+      <member name="announce"
+              value="2"
+              c:identifier="GST_RTSP_ANNOUNCE"
+              glib:nick="announce"/>
+      <member name="get_parameter"
+              value="4"
+              c:identifier="GST_RTSP_GET_PARAMETER"
+              glib:nick="get-parameter"/>
+      <member name="options"
+              value="8"
+              c:identifier="GST_RTSP_OPTIONS"
+              glib:nick="options"/>
+      <member name="pause"
+              value="16"
+              c:identifier="GST_RTSP_PAUSE"
+              glib:nick="pause"/>
+      <member name="play"
+              value="32"
+              c:identifier="GST_RTSP_PLAY"
+              glib:nick="play"/>
+      <member name="record"
+              value="64"
+              c:identifier="GST_RTSP_RECORD"
+              glib:nick="record"/>
+      <member name="redirect"
+              value="128"
+              c:identifier="GST_RTSP_REDIRECT"
+              glib:nick="redirect"/>
+      <member name="setup"
+              value="256"
+              c:identifier="GST_RTSP_SETUP"
+              glib:nick="setup"/>
+      <member name="set_parameter"
+              value="512"
+              c:identifier="GST_RTSP_SET_PARAMETER"
+              glib:nick="set-parameter"/>
+      <member name="teardown"
+              value="1024"
+              c:identifier="GST_RTSP_TEARDOWN"
+              glib:nick="teardown"/>
+      <member name="get"
+              value="2048"
+              c:identifier="GST_RTSP_GET"
+              glib:nick="get"/>
+      <member name="post"
+              value="4096"
+              c:identifier="GST_RTSP_POST"
+              glib:nick="post"/>
+    </bitfield>
+    <enumeration name="RTSPMsgType"
+                 doc="The type of a message."
+                 c:type="GstRTSPMsgType">
+      <member name="invalid"
+              value="0"
+              c:identifier="GST_RTSP_MESSAGE_INVALID"/>
+      <member name="request"
+              value="1"
+              c:identifier="GST_RTSP_MESSAGE_REQUEST"/>
+      <member name="response"
+              value="2"
+              c:identifier="GST_RTSP_MESSAGE_RESPONSE"/>
+      <member name="http_request"
+              value="3"
+              c:identifier="GST_RTSP_MESSAGE_HTTP_REQUEST"/>
+      <member name="http_response"
+              value="4"
+              c:identifier="GST_RTSP_MESSAGE_HTTP_RESPONSE"/>
+      <member name="data" value="5" c:identifier="GST_RTSP_MESSAGE_DATA"/>
+    </enumeration>
+    <bitfield name="RTSPProfile"
+              doc="The transfer profile to use."
+              c:type="GstRTSPProfile">
+      <member name="unknown"
+              value="0"
+              c:identifier="GST_RTSP_PROFILE_UNKNOWN"/>
+      <member name="avp" value="1" c:identifier="GST_RTSP_PROFILE_AVP"/>
+      <member name="savp" value="2" c:identifier="GST_RTSP_PROFILE_SAVP"/>
+    </bitfield>
+    <record name="RTSPRange"
+            c:type="GstRTSPRange"
+            doc="A type to specify a range.">
+      <field name="min" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="max" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+    </record>
+    <enumeration name="RTSPRangeUnit"
+                 doc="Different possible time range units."
+                 c:type="GstRTSPRangeUnit">
+      <member name="smpte" value="0" c:identifier="GST_RTSP_RANGE_SMPTE"/>
+      <member name="smpte_30_drop"
+              value="1"
+              c:identifier="GST_RTSP_RANGE_SMPTE_30_DROP"/>
+      <member name="smpte_25"
+              value="2"
+              c:identifier="GST_RTSP_RANGE_SMPTE_25"/>
+      <member name="npt" value="3" c:identifier="GST_RTSP_RANGE_NPT"/>
+      <member name="clock" value="4" c:identifier="GST_RTSP_RANGE_CLOCK"/>
+    </enumeration>
+    <enumeration name="RTSPResult"
+                 doc="Result codes from the RTSP functions."
+                 glib:type-name="GstRTSPResult"
+                 glib:get-type="gst_rtsp_result_get_type"
+                 c:type="GstRTSPResult">
+      <member name="ok" value="0" c:identifier="GST_RTSP_OK" glib:nick="ok"/>
+      <member name="error"
+              value="-1"
+              c:identifier="GST_RTSP_ERROR"
+              glib:nick="error"/>
+      <member name="einval"
+              value="-2"
+              c:identifier="GST_RTSP_EINVAL"
+              glib:nick="einval"/>
+      <member name="eintr"
+              value="-3"
+              c:identifier="GST_RTSP_EINTR"
+              glib:nick="eintr"/>
+      <member name="enomem"
+              value="-4"
+              c:identifier="GST_RTSP_ENOMEM"
+              glib:nick="enomem"/>
+      <member name="eresolv"
+              value="-5"
+              c:identifier="GST_RTSP_ERESOLV"
+              glib:nick="eresolv"/>
+      <member name="enotimpl"
+              value="-6"
+              c:identifier="GST_RTSP_ENOTIMPL"
+              glib:nick="enotimpl"/>
+      <member name="esys"
+              value="-7"
+              c:identifier="GST_RTSP_ESYS"
+              glib:nick="esys"/>
+      <member name="eparse"
+              value="-8"
+              c:identifier="GST_RTSP_EPARSE"
+              glib:nick="eparse"/>
+      <member name="ewsastart"
+              value="-9"
+              c:identifier="GST_RTSP_EWSASTART"
+              glib:nick="ewsastart"/>
+      <member name="ewsaversion"
+              value="-10"
+              c:identifier="GST_RTSP_EWSAVERSION"
+              glib:nick="ewsaversion"/>
+      <member name="eeof"
+              value="-11"
+              c:identifier="GST_RTSP_EEOF"
+              glib:nick="eeof"/>
+      <member name="enet"
+              value="-12"
+              c:identifier="GST_RTSP_ENET"
+              glib:nick="enet"/>
+      <member name="enotip"
+              value="-13"
+              c:identifier="GST_RTSP_ENOTIP"
+              glib:nick="enotip"/>
+      <member name="etimeout"
+              value="-14"
+              c:identifier="GST_RTSP_ETIMEOUT"
+              glib:nick="etimeout"/>
+      <member name="etget"
+              value="-15"
+              c:identifier="GST_RTSP_ETGET"
+              glib:nick="etget"/>
+      <member name="etpost"
+              value="-16"
+              c:identifier="GST_RTSP_ETPOST"
+              glib:nick="etpost"/>
+      <member name="elast"
+              value="-17"
+              c:identifier="GST_RTSP_ELAST"
+              glib:nick="elast"/>
+    </enumeration>
+    <enumeration name="RTSPState"
+                 doc="The different RTSP states."
+                 glib:type-name="GstRTSPState"
+                 glib:get-type="gst_rtsp_state_get_type"
+                 c:type="GstRTSPState">
+      <member name="invalid"
+              value="0"
+              c:identifier="GST_RTSP_STATE_INVALID"
+              glib:nick="invalid"/>
+      <member name="init"
+              value="1"
+              c:identifier="GST_RTSP_STATE_INIT"
+              glib:nick="init"/>
+      <member name="ready"
+              value="2"
+              c:identifier="GST_RTSP_STATE_READY"
+              glib:nick="ready"/>
+      <member name="seeking"
+              value="3"
+              c:identifier="GST_RTSP_STATE_SEEKING"
+              glib:nick="seeking"/>
+      <member name="playing"
+              value="4"
+              c:identifier="GST_RTSP_STATE_PLAYING"
+              glib:nick="playing"/>
+      <member name="recording"
+              value="5"
+              c:identifier="GST_RTSP_STATE_RECORDING"
+              glib:nick="recording"/>
+    </enumeration>
+    <enumeration name="RTSPStatusCode"
+                 glib:type-name="GstRTSPStatusCode"
+                 glib:get-type="gst_rtsp_status_code_get_type"
+                 c:type="GstRTSPStatusCode">
+      <member name="invalid"
+              value="0"
+              c:identifier="GST_RTSP_STS_INVALID"
+              glib:nick="invalid"/>
+      <member name="continue"
+              value="100"
+              c:identifier="GST_RTSP_STS_CONTINUE"
+              glib:nick="continue"/>
+      <member name="ok"
+              value="200"
+              c:identifier="GST_RTSP_STS_OK"
+              glib:nick="ok"/>
+      <member name="created"
+              value="201"
+              c:identifier="GST_RTSP_STS_CREATED"
+              glib:nick="created"/>
+      <member name="low_on_storage"
+              value="250"
+              c:identifier="GST_RTSP_STS_LOW_ON_STORAGE"
+              glib:nick="low-on-storage"/>
+      <member name="multiple_choices"
+              value="300"
+              c:identifier="GST_RTSP_STS_MULTIPLE_CHOICES"
+              glib:nick="multiple-choices"/>
+      <member name="moved_permanently"
+              value="301"
+              c:identifier="GST_RTSP_STS_MOVED_PERMANENTLY"
+              glib:nick="moved-permanently"/>
+      <member name="move_temporarily"
+              value="302"
+              c:identifier="GST_RTSP_STS_MOVE_TEMPORARILY"
+              glib:nick="move-temporarily"/>
+      <member name="see_other"
+              value="303"
+              c:identifier="GST_RTSP_STS_SEE_OTHER"
+              glib:nick="see-other"/>
+      <member name="not_modified"
+              value="304"
+              c:identifier="GST_RTSP_STS_NOT_MODIFIED"
+              glib:nick="not-modified"/>
+      <member name="use_proxy"
+              value="305"
+              c:identifier="GST_RTSP_STS_USE_PROXY"
+              glib:nick="use-proxy"/>
+      <member name="bad_request"
+              value="400"
+              c:identifier="GST_RTSP_STS_BAD_REQUEST"
+              glib:nick="bad-request"/>
+      <member name="unauthorized"
+              value="401"
+              c:identifier="GST_RTSP_STS_UNAUTHORIZED"
+              glib:nick="unauthorized"/>
+      <member name="payment_required"
+              value="402"
+              c:identifier="GST_RTSP_STS_PAYMENT_REQUIRED"
+              glib:nick="payment-required"/>
+      <member name="forbidden"
+              value="403"
+              c:identifier="GST_RTSP_STS_FORBIDDEN"
+              glib:nick="forbidden"/>
+      <member name="not_found"
+              value="404"
+              c:identifier="GST_RTSP_STS_NOT_FOUND"
+              glib:nick="not-found"/>
+      <member name="method_not_allowed"
+              value="405"
+              c:identifier="GST_RTSP_STS_METHOD_NOT_ALLOWED"
+              glib:nick="method-not-allowed"/>
+      <member name="not_acceptable"
+              value="406"
+              c:identifier="GST_RTSP_STS_NOT_ACCEPTABLE"
+              glib:nick="not-acceptable"/>
+      <member name="proxy_auth_required"
+              value="407"
+              c:identifier="GST_RTSP_STS_PROXY_AUTH_REQUIRED"
+              glib:nick="proxy-auth-required"/>
+      <member name="request_timeout"
+              value="408"
+              c:identifier="GST_RTSP_STS_REQUEST_TIMEOUT"
+              glib:nick="request-timeout"/>
+      <member name="gone"
+              value="410"
+              c:identifier="GST_RTSP_STS_GONE"
+              glib:nick="gone"/>
+      <member name="length_required"
+              value="411"
+              c:identifier="GST_RTSP_STS_LENGTH_REQUIRED"
+              glib:nick="length-required"/>
+      <member name="precondition_failed"
+              value="412"
+              c:identifier="GST_RTSP_STS_PRECONDITION_FAILED"
+              glib:nick="precondition-failed"/>
+      <member name="request_entity_too_large"
+              value="413"
+              c:identifier="GST_RTSP_STS_REQUEST_ENTITY_TOO_LARGE"
+              glib:nick="request-entity-too-large"/>
+      <member name="request_uri_too_large"
+              value="414"
+              c:identifier="GST_RTSP_STS_REQUEST_URI_TOO_LARGE"
+              glib:nick="request-uri-too-large"/>
+      <member name="unsupported_media_type"
+              value="415"
+              c:identifier="GST_RTSP_STS_UNSUPPORTED_MEDIA_TYPE"
+              glib:nick="unsupported-media-type"/>
+      <member name="parameter_not_understood"
+              value="451"
+              c:identifier="GST_RTSP_STS_PARAMETER_NOT_UNDERSTOOD"
+              glib:nick="parameter-not-understood"/>
+      <member name="conference_not_found"
+              value="452"
+              c:identifier="GST_RTSP_STS_CONFERENCE_NOT_FOUND"
+              glib:nick="conference-not-found"/>
+      <member name="not_enough_bandwidth"
+              value="453"
+              c:identifier="GST_RTSP_STS_NOT_ENOUGH_BANDWIDTH"
+              glib:nick="not-enough-bandwidth"/>
+      <member name="session_not_found"
+              value="454"
+              c:identifier="GST_RTSP_STS_SESSION_NOT_FOUND"
+              glib:nick="session-not-found"/>
+      <member name="method_not_valid_in_this_state"
+              value="455"
+              c:identifier="GST_RTSP_STS_METHOD_NOT_VALID_IN_THIS_STATE"
+              glib:nick="method-not-valid-in-this-state"/>
+      <member name="header_field_not_valid_for_resource"
+              value="456"
+              c:identifier="GST_RTSP_STS_HEADER_FIELD_NOT_VALID_FOR_RESOURCE"
+              glib:nick="header-field-not-valid-for-resource"/>
+      <member name="invalid_range"
+              value="457"
+              c:identifier="GST_RTSP_STS_INVALID_RANGE"
+              glib:nick="invalid-range"/>
+      <member name="parameter_is_readonly"
+              value="458"
+              c:identifier="GST_RTSP_STS_PARAMETER_IS_READONLY"
+              glib:nick="parameter-is-readonly"/>
+      <member name="aggregate_operation_not_allowed"
+              value="459"
+              c:identifier="GST_RTSP_STS_AGGREGATE_OPERATION_NOT_ALLOWED"
+              glib:nick="aggregate-operation-not-allowed"/>
+      <member name="only_aggregate_operation_allowed"
+              value="460"
+              c:identifier="GST_RTSP_STS_ONLY_AGGREGATE_OPERATION_ALLOWED"
+              glib:nick="only-aggregate-operation-allowed"/>
+      <member name="unsupported_transport"
+              value="461"
+              c:identifier="GST_RTSP_STS_UNSUPPORTED_TRANSPORT"
+              glib:nick="unsupported-transport"/>
+      <member name="destination_unreachable"
+              value="462"
+              c:identifier="GST_RTSP_STS_DESTINATION_UNREACHABLE"
+              glib:nick="destination-unreachable"/>
+      <member name="internal_server_error"
+              value="500"
+              c:identifier="GST_RTSP_STS_INTERNAL_SERVER_ERROR"
+              glib:nick="internal-server-error"/>
+      <member name="not_implemented"
+              value="501"
+              c:identifier="GST_RTSP_STS_NOT_IMPLEMENTED"
+              glib:nick="not-implemented"/>
+      <member name="bad_gateway"
+              value="502"
+              c:identifier="GST_RTSP_STS_BAD_GATEWAY"
+              glib:nick="bad-gateway"/>
+      <member name="service_unavailable"
+              value="503"
+              c:identifier="GST_RTSP_STS_SERVICE_UNAVAILABLE"
+              glib:nick="service-unavailable"/>
+      <member name="gateway_timeout"
+              value="504"
+              c:identifier="GST_RTSP_STS_GATEWAY_TIMEOUT"
+              glib:nick="gateway-timeout"/>
+      <member name="rtsp_version_not_supported"
+              value="505"
+              c:identifier="GST_RTSP_STS_RTSP_VERSION_NOT_SUPPORTED"
+              glib:nick="rtsp-version-not-supported"/>
+      <member name="option_not_supported"
+              value="551"
+              c:identifier="GST_RTSP_STS_OPTION_NOT_SUPPORTED"
+              glib:nick="option-not-supported"/>
+    </enumeration>
+    <record name="RTSPTime" c:type="GstRTSPTime" doc="A time indication.">
+      <field name="type" writable="1">
+        <type name="RTSPTimeType" c:type="GstRTSPTimeType"/>
+      </field>
+      <field name="seconds" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+    </record>
+    <record name="RTSPTimeRange" c:type="GstRTSPTimeRange" doc="A time range.">
+      <field name="unit" writable="1">
+        <type name="RTSPRangeUnit" c:type="GstRTSPRangeUnit"/>
+      </field>
+      <field name="min" writable="1">
+        <type name="RTSPTime" c:type="GstRTSPTime"/>
+      </field>
+      <field name="max" writable="1">
+        <type name="RTSPTime" c:type="GstRTSPTime"/>
+      </field>
+    </record>
+    <enumeration name="RTSPTimeType"
+                 doc="Possible time types."
+                 c:type="GstRTSPTimeType">
+      <member name="seconds" value="0" c:identifier="GST_RTSP_TIME_SECONDS"/>
+      <member name="now" value="1" c:identifier="GST_RTSP_TIME_NOW"/>
+      <member name="end" value="2" c:identifier="GST_RTSP_TIME_END"/>
+    </enumeration>
+    <bitfield name="RTSPTransMode"
+              doc="The transfer mode to use."
+              c:type="GstRTSPTransMode">
+      <member name="unknown" value="0" c:identifier="GST_RTSP_TRANS_UNKNOWN"/>
+      <member name="rtp" value="1" c:identifier="GST_RTSP_TRANS_RTP"/>
+      <member name="rdt" value="2" c:identifier="GST_RTSP_TRANS_RDT"/>
+    </bitfield>
+    <record name="RTSPTransport" c:type="_GstRTSPTransport">
+      <field name="trans" writable="1">
+        <type name="RTSPTransMode" c:type="GstRTSPTransMode"/>
+      </field>
+      <field name="profile" writable="1">
+        <type name="RTSPProfile" c:type="GstRTSPProfile"/>
+      </field>
+      <field name="lower_transport" writable="1">
+        <type name="RTSPLowerTrans" c:type="GstRTSPLowerTrans"/>
+      </field>
+      <field name="destination" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="layers" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="mode_play" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="mode_record" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="append" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="interleaved" writable="1">
+        <type name="RTSPRange" c:type="GstRTSPRange"/>
+      </field>
+      <field name="ttl" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="port" writable="1">
+        <type name="RTSPRange" c:type="GstRTSPRange"/>
+      </field>
+      <field name="client_port" writable="1">
+        <type name="RTSPRange" c:type="GstRTSPRange"/>
+      </field>
+      <field name="server_port" writable="1">
+        <type name="RTSPRange" c:type="GstRTSPRange"/>
+      </field>
+      <field name="ssrc" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="RTSPUrl"
+            c:type="GstRTSPUrl"
+            doc="This structure contains the result of a parsed RTSP URL"
+            glib:type-name="GstRTSPUrl"
+            glib:get-type="gst_rtsp_url_get_type">
+      <field name="transports" writable="1">
+        <type name="RTSPLowerTrans" c:type="GstRTSPLowerTrans"/>
+      </field>
+      <field name="family" writable="1">
+        <type name="RTSPFamily" c:type="GstRTSPFamily"/>
+      </field>
+      <field name="user" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="passwd" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="host" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="port" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="abspath" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="query" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <method name="copy"
+              c:identifier="gst_rtsp_url_copy"
+              doc="Make a copy of @url."
+              version="0.10.22">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gst_rtsp_url_free"
+              doc="Free the memory used by @url.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_request_uri"
+              c:identifier="gst_rtsp_url_get_request_uri"
+              doc="Get a newly allocated string describing the request URI for @url.">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_port"
+              c:identifier="gst_rtsp_url_set_port"
+              doc="Set the port number in @url to @port.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="port" transfer-ownership="none">
+            <type name="uint16" c:type="guint16"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_port"
+              c:identifier="gst_rtsp_url_get_port"
+              doc="Get the port number of @url.">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="port" direction="out" transfer-ownership="full">
+            <type name="uint16" c:type="guint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="RTSPVersion"
+                 doc="The supported RTSP versions."
+                 glib:type-name="GstRTSPVersion"
+                 glib:get-type="gst_rtsp_version_get_type"
+                 c:type="GstRTSPVersion">
+      <member name="invalid"
+              value="0"
+              c:identifier="GST_RTSP_VERSION_INVALID"
+              glib:nick="invalid"/>
+      <member name="1_0"
+              value="16"
+              c:identifier="GST_RTSP_VERSION_1_0"
+              glib:nick="1-0"/>
+      <member name="1_1"
+              value="17"
+              c:identifier="GST_RTSP_VERSION_1_1"
+              glib:nick="1-1"/>
+    </enumeration>
+    <record name="RTSPWatch"
+            c:type="GstRTSPWatch"
+            doc="Opaque RTSP watch object that can be used for asynchronous RTSP
+operations.">
+      <constructor name="new"
+                   c:identifier="gst_rtsp_watch_new"
+                   doc="Create a watch object for @conn. The functions provided in @funcs will be
+called with @user_data when activity happened on the watch.
+The new watch is usually created so that it can be attached to a
+maincontext with gst_rtsp_watch_attach().
+communication. Free with gst_rtsp_watch_unref () after usage."
+                   version="0.10.23">
+        <return-value transfer-ownership="full">
+          <type name="RTSPWatch" c:type="GstRTSPWatch*"/>
+        </return-value>
+        <parameters>
+          <parameter name="conn" transfer-ownership="none">
+            <type name="RTSPConnection" c:type="GstRTSPConnection*"/>
+          </parameter>
+          <parameter name="funcs" transfer-ownership="none">
+            <type name="RTSPWatchFuncs" c:type="GstRTSPWatchFuncs*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="reset"
+              c:identifier="gst_rtsp_watch_reset"
+              doc="Reset @watch, this is usually called after gst_rtsp_connection_do_tunnel()
+when the file descriptors of the connection might have changed."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gst_rtsp_watch_unref"
+              doc="Decreases the reference count of @watch by one. If the resulting reference
+count is zero the watch and associated memory will be destroyed."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="attach"
+              c:identifier="gst_rtsp_watch_attach"
+              doc="Adds a #GstRTSPWatch to a context so that it will be executed within that context."
+              version="0.10.23">
+        <return-value transfer-ownership="none"
+                      doc="for the watch within the GMainContext.">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="context" transfer-ownership="none">
+            <type name="GLib.MainContext" c:type="GMainContext*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="write_data"
+              c:identifier="gst_rtsp_watch_write_data"
+              doc="Write @data using the connection of the @watch. If it cannot be sent
+immediately, it will be queued for transmission in @watch. The contents of
+callback.
+This function will take ownership of @data and g_free() it after use."
+              version="0.10.25">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="id" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_message"
+              c:identifier="gst_rtsp_watch_send_message"
+              doc="Send a @message using the connection of the @watch. If it cannot be sent
+immediately, it will be queued for transmission in @watch. The contents of
+callback."
+              version="0.10.25">
+        <return-value transfer-ownership="full">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+          <parameter name="id" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="queue_data"
+              c:identifier="gst_rtsp_watch_queue_data"
+              doc="Queue @data for transmission in @watch. It will be transmitted when the
+connection of the @watch becomes writable.
+This function will take ownership of @data and g_free() it after use.
+The return value of this function will be used as the id argument in the
+message_sent callback."
+              version="0.10.24"
+              deprecated="Use gst_rtsp_watch_write_data()">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="queue_message"
+              c:identifier="gst_rtsp_watch_queue_message"
+              doc="Queue a @message for transmission in @watch. The contents of this
+message will be serialized and transmitted when the connection of the
+The return value of this function will be used as the id argument in the
+message_sent callback."
+              version="0.10.23"
+              deprecated="Use gst_rtsp_watch_send_message()">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="RTSPWatchFuncs"
+            c:type="GstRTSPWatchFuncs"
+            doc="connection must be saved.
+you usually pair the tunnelid of this connection with the saved one using
+gst_rtsp_connection_do_tunnel().
+the @error callback. Since 0.10.25
+Since 0.10.29
+Callback functions from a #GstRTSPWatch."
+            version="0.10.23">
+      <field name="message_received">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="message_sent">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="closed">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="error">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="tunnel_start">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="tunnel_complete">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="error_full">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="tunnel_lost">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <function name="base64_decode_ip"
+              c:identifier="gst_rtsp_base64_decode_ip"
+              doc="Decode the base64 string pointed to by @data in-place. When @len is not #NULL
+it will contain the length of the decoded data.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="base64_encode"
+              c:identifier="gst_rtsp_base64_encode"
+              doc="Encode a sequence of binary data into its Base-64 stringified representation.
+representing @data."
+              deprecated="Use g_base64_encode()">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="connection_accept"
+              c:identifier="gst_rtsp_connection_accept"
+              doc="Accept a new connection on @sock and create a new #GstRTSPConnection for
+handling communication on new socket."
+              version="0.10.23">
+      <return-value transfer-ownership="full">
+        <type name="RTSPResult" c:type="GstRTSPResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="sock" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="conn" transfer-ownership="none">
+          <type name="RTSPConnection" c:type="GstRTSPConnection**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="connection_create"
+              c:identifier="gst_rtsp_connection_create"
+              doc="Create a newly allocated #GstRTSPConnection from @url and store it in @conn.
+The connection will not yet attempt to connect to @url, use
+gst_rtsp_connection_connect().
+A copy of @url will be made.">
+      <return-value transfer-ownership="full">
+        <type name="RTSPResult" c:type="GstRTSPResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="url" transfer-ownership="none">
+          <type name="RTSPUrl" c:type="GstRTSPUrl*"/>
+        </parameter>
+        <parameter name="conn" transfer-ownership="none">
+          <type name="RTSPConnection" c:type="GstRTSPConnection**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="connection_create_from_fd"
+              c:identifier="gst_rtsp_connection_create_from_fd"
+              doc="Create a new #GstRTSPConnection for handling communication on the existing
+file descriptor @fd. The @initial_buffer contains any data already read from"
+              version="0.10.25">
+      <return-value transfer-ownership="full">
+        <type name="RTSPResult" c:type="GstRTSPResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="fd" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="ip" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="port" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="initial_buffer" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="conn" transfer-ownership="none">
+          <type name="RTSPConnection" c:type="GstRTSPConnection**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="find_header_field"
+              c:identifier="gst_rtsp_find_header_field"
+              doc="Convert @header to a #GstRTSPHeaderField.
+header field is unknown.">
+      <return-value transfer-ownership="full">
+        <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
+      </return-value>
+      <parameters>
+        <parameter name="header" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="find_method"
+              c:identifier="gst_rtsp_find_method"
+              doc="Convert @method to a #GstRTSPMethod.
+method is unknown.">
+      <return-value transfer-ownership="full">
+        <type name="RTSPMethod" c:type="GstRTSPMethod"/>
+      </return-value>
+      <parameters>
+        <parameter name="method" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="header_allow_multiple"
+              c:identifier="gst_rtsp_header_allow_multiple"
+              doc="Check whether @field may appear multiple times in a message."
+              version="0.10.25">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="field" transfer-ownership="none">
+          <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="header_as_text"
+              c:identifier="gst_rtsp_header_as_text"
+              doc="Convert @field to a string.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="field" transfer-ownership="none">
+          <type name="RTSPHeaderField" c:type="GstRTSPHeaderField"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="message_get_type"
+              c:identifier="gst_rtsp_message_get_type"
+              doc="Get the message type of @msg.">
+      <return-value transfer-ownership="full">
+        <type name="RTSPMsgType" c:type="GstRTSPMsgType"/>
+      </return-value>
+      <parameters>
+        <parameter name="msg" transfer-ownership="none">
+          <type name="RTSPMessage" c:type="GstRTSPMessage*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="method_as_text"
+              c:identifier="gst_rtsp_method_as_text"
+              doc="Convert @method to a string.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="method" transfer-ownership="none">
+          <type name="RTSPMethod" c:type="GstRTSPMethod"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="options_as_text"
+              c:identifier="gst_rtsp_options_as_text"
+              doc="Convert @options to a string."
+              version="0.10.23">
+      <return-value transfer-ownership="full" doc="after usage.">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="options" transfer-ownership="none">
+          <type name="RTSPMethod" c:type="GstRTSPMethod"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="range_free"
+              c:identifier="gst_rtsp_range_free"
+              doc="Free the memory alocated by @range.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="range" transfer-ownership="none">
+          <type name="RTSPTimeRange" c:type="GstRTSPTimeRange*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="range_parse"
+              c:identifier="gst_rtsp_range_parse"
+              doc="Parse @rangestr to a #GstRTSPTimeRange.">
+      <return-value transfer-ownership="full">
+        <type name="RTSPResult" c:type="GstRTSPResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="rangestr" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="range" transfer-ownership="none">
+          <type name="RTSPTimeRange" c:type="GstRTSPTimeRange**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="range_to_string"
+              c:identifier="gst_rtsp_range_to_string"
+              doc="Convert @range into a string representation."
+              version="0.10.23">
+      <return-value transfer-ownership="full" doc="after usage.">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="range" transfer-ownership="none">
+          <type name="RTSPTimeRange" c:type="GstRTSPTimeRange*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="status_as_text"
+              c:identifier="gst_rtsp_status_as_text"
+              doc="Convert @code to a string.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="code" transfer-ownership="none">
+          <type name="RTSPStatusCode" c:type="GstRTSPStatusCode"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strresult"
+              c:identifier="gst_rtsp_strresult"
+              doc="Convert @result in a human readable string.">
+      <return-value transfer-ownership="full" doc="after usage.">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="result" transfer-ownership="none">
+          <type name="RTSPResult" c:type="GstRTSPResult"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="transport_as_text"
+              c:identifier="gst_rtsp_transport_as_text"
+              doc="Convert @transport into a string that can be used to signal the transport in
+an RTSP SETUP response.
+is invalid.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="transport" transfer-ownership="none">
+          <type name="RTSPTransport" c:type="GstRTSPTransport*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="transport_free"
+              c:identifier="gst_rtsp_transport_free"
+              doc="Free the memory used by @transport.">
+      <return-value transfer-ownership="full">
+        <type name="RTSPResult" c:type="GstRTSPResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="transport" transfer-ownership="none">
+          <type name="RTSPTransport" c:type="GstRTSPTransport*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="transport_get_manager"
+              c:identifier="gst_rtsp_transport_get_manager"
+              doc="Get the #GStreamer element that can handle the buffers transported over
+It is possible that there are several managers available, use @option to
+selected one.
+needed/available for @trans.">
+      <return-value transfer-ownership="full">
+        <type name="RTSPResult" c:type="GstRTSPResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="trans" transfer-ownership="none">
+          <type name="RTSPTransMode" c:type="GstRTSPTransMode"/>
+        </parameter>
+        <parameter name="manager" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="option" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="transport_get_mime"
+              c:identifier="gst_rtsp_transport_get_mime"
+              doc="Get the mime type of the transport mode @trans. This mime type is typically
+used to generate #GstCaps on buffers.">
+      <return-value transfer-ownership="full">
+        <type name="RTSPResult" c:type="GstRTSPResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="trans" transfer-ownership="none">
+          <type name="RTSPTransMode" c:type="GstRTSPTransMode"/>
+        </parameter>
+        <parameter name="mime" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="transport_init"
+              c:identifier="gst_rtsp_transport_init"
+              doc="Initialize @transport so that it can be used.">
+      <return-value transfer-ownership="full">
+        <type name="RTSPResult" c:type="GstRTSPResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="transport" transfer-ownership="none">
+          <type name="RTSPTransport" c:type="GstRTSPTransport*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="transport_new"
+              c:identifier="gst_rtsp_transport_new"
+              doc="Allocate a new initialized #GstRTSPTransport. Use gst_rtsp_transport_free()
+after usage.">
+      <return-value transfer-ownership="full">
+        <type name="RTSPResult" c:type="GstRTSPResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="transport" transfer-ownership="none">
+          <type name="RTSPTransport" c:type="GstRTSPTransport**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="transport_parse"
+              c:identifier="gst_rtsp_transport_parse"
+              doc="Parse the RTSP transport string @str into @transport.">
+      <return-value transfer-ownership="full">
+        <type name="RTSPResult" c:type="GstRTSPResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="transport" transfer-ownership="none">
+          <type name="RTSPTransport" c:type="GstRTSPTransport*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="url_parse"
+              c:identifier="gst_rtsp_url_parse"
+              doc="Parse the RTSP @urlstr into a newly allocated #GstRTSPUrl. Free after usage
+with gst_rtsp_url_free().">
+      <return-value transfer-ownership="full">
+        <type name="RTSPResult" c:type="GstRTSPResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="urlstr" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="url" transfer-ownership="none">
+          <type name="RTSPUrl" c:type="GstRTSPUrl**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="version_as_text"
+              c:identifier="gst_rtsp_version_as_text"
+              doc="Convert @version to a string.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="version" transfer-ownership="none">
+          <type name="RTSPVersion" c:type="GstRTSPVersion"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/rtsp/ffi/ffi.factor b/extra/gstreamer/rtsp/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..a3989d7
--- /dev/null
@@ -0,0 +1,20 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.syntax alien.libraries combinators kernel
+system
+gobject-introspection glib.ffi gstreamer.ffi gstreamer.sdp.ffi ;
+IN: gstreamer.rtsp.ffi
+
+<<
+"gstreamer.rtsp" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstrtsp-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+! git error (there is _GstRTSPTransport only in .gir)
+C-TYPE: GstRTSPTransport
+
+GIR: vocab:gstreamer/rtsp/GstRtsp-0.10.gir
+
diff --git a/extra/gstreamer/rtsp/rtsp.factor b/extra/gstreamer/rtsp/rtsp.factor
new file mode 100644 (file)
index 0000000..72069f6
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.rtsp.ffi ;
+IN: gstreamer.rtsp
+
diff --git a/extra/gstreamer/sdp/GstSdp-0.10.gir b/extra/gstreamer/sdp/GstSdp-0.10.gir
new file mode 100644 (file)
index 0000000..16f62f6
--- /dev/null
@@ -0,0 +1,1056 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.0"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <c:include name="gst/audio/gstsdp.h"/>
+  <c:include name="gst/audio/gstsdpmessage.h"/>
+  <namespace name="GstSdp"
+             version="0.10"
+             shared-library="libgstsdp-0.10.so.0"
+             c:prefix="Gst">
+    <constant name="BWTYPE_AS" value="AS">
+      <type name="utf8"/>
+    </constant>
+    <constant name="BWTYPE_CT" value="CT">
+      <type name="utf8"/>
+    </constant>
+    <constant name="BWTYPE_EXT_PREFIX" value="X-">
+      <type name="utf8"/>
+    </constant>
+    <constant name="BWTYPE_RS" value="RS">
+      <type name="utf8"/>
+    </constant>
+    <record name="SDPAttribute"
+            c:type="GstSDPAttribute"
+            doc="The contents of the SDP &quot;a=&quot; field which contains a key/value pair.">
+      <field name="key" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </record>
+    <record name="SDPBandwidth"
+            c:type="GstSDPBandwidth"
+            doc="The contents of the SDP &quot;b=&quot; field which specifies the proposed bandwidth to
+be used by the session or media.">
+      <field name="bwtype" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="bandwidth" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="SDPConnection"
+            c:type="GstSDPConnection"
+            doc="&quot;Internet&quot;.
+The contents of the SDP &quot;c=&quot; field which contains connection data.">
+      <field name="nettype" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="addrtype" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="address" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="ttl" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="addr_number" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="SDPKey"
+            c:type="GstSDPKey"
+            doc="The contents of the SDP &quot;k=&quot; field which is used to convey encryption
+keys.">
+      <field name="type" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="data" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </record>
+    <record name="SDPMedia"
+            c:type="GstSDPMedia"
+            doc="The contents of the SDP &quot;m=&quot; field with all related fields.">
+      <field name="media" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="port" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="num_ports" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="proto" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="fmts" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="information" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="connections" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="bandwidths" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="key" writable="1">
+        <type name="SDPKey" c:type="GstSDPKey"/>
+      </field>
+      <field name="attributes" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_sdp_media_new"
+                   doc="Allocate a new GstSDPMedia and store the result in @media.">
+        <return-value transfer-ownership="full">
+          <type name="SDPMedia" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="media" transfer-ownership="none">
+            <type name="SDPMedia" c:type="GstSDPMedia**"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="init"
+              c:identifier="gst_sdp_media_init"
+              doc="Initialize @media so that its contents are as if it was freshly allocated
+with gst_sdp_media_new(). This function is mostly used to initialize a media
+allocated on the stack. gst_sdp_media_uninit() undoes this operation.
+When this function is invoked on newly allocated data (with malloc or on the
+stack), its contents should be set to 0 before calling this function.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+      </method>
+      <method name="uninit"
+              c:identifier="gst_sdp_media_uninit"
+              doc="Free all resources allocated in @media. @media should not be used anymore after
+this function. This function should be used when @media was allocated on the
+stack and initialized with gst_sdp_media_init().">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gst_sdp_media_free"
+              doc="Free all resources allocated by @media. @media should not be used anymore after
+this function. This function should be used when @media was dynamically
+allocated with gst_sdp_media_new().">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+      </method>
+      <method name="as_text"
+              c:identifier="gst_sdp_media_as_text"
+              doc="Convert the contents of @media to a text string.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_media"
+              c:identifier="gst_sdp_media_get_media"
+              doc="Get the media description of @media.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_media"
+              c:identifier="gst_sdp_media_set_media"
+              doc="Set the media description of @media to @med.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="med" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_port"
+              c:identifier="gst_sdp_media_get_port"
+              doc="Get the port number for @media.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_num_ports"
+              c:identifier="gst_sdp_media_get_num_ports"
+              doc="Get the number of ports for @media.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_port_info"
+              c:identifier="gst_sdp_media_set_port_info"
+              doc="Set the port information in @media.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="port" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="num_ports" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_proto"
+              c:identifier="gst_sdp_media_get_proto"
+              doc="Get the transport protocol of @media">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_proto"
+              c:identifier="gst_sdp_media_set_proto"
+              doc="Set the media transport protocol of @media to @proto.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="proto" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="formats_len"
+              c:identifier="gst_sdp_media_formats_len"
+              doc="Get the number of formats in @media.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_format"
+              c:identifier="gst_sdp_media_get_format"
+              doc="Get the format information at position @idx in @media.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_format"
+              c:identifier="gst_sdp_media_add_format"
+              doc="Add the format information to @media.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_information"
+              c:identifier="gst_sdp_media_get_information"
+              doc="Get the information of @media">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_information"
+              c:identifier="gst_sdp_media_set_information"
+              doc="Set the media information of @media to @information.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="information" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connections_len"
+              c:identifier="gst_sdp_media_connections_len"
+              doc="Get the number of connection fields in @media.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_connection"
+              c:identifier="gst_sdp_media_get_connection"
+              doc="Get the connection at position @idx in @media.">
+        <return-value transfer-ownership="none">
+          <type name="SDPConnection" c:type="GstSDPConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_connection"
+              c:identifier="gst_sdp_media_add_connection"
+              doc="&quot;Internet&quot;.
+Add the given connection parameters to @media.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="nettype" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="addrtype" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="address" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="ttl" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="addr_number" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="bandwidths_len"
+              c:identifier="gst_sdp_media_bandwidths_len"
+              doc="Get the number of bandwidth fields in @media.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_bandwidth"
+              c:identifier="gst_sdp_media_get_bandwidth"
+              doc="Get the bandwidth at position @idx in @media.">
+        <return-value transfer-ownership="none">
+          <type name="SDPBandwidth" c:type="GstSDPBandwidth*"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_bandwidth"
+              c:identifier="gst_sdp_media_add_bandwidth"
+              doc="Add the bandwidth information with @bwtype and @bandwidth to @media.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="bwtype" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="bandwidth" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_key"
+              c:identifier="gst_sdp_media_get_key"
+              doc="Get the encryption information from @media.">
+        <return-value transfer-ownership="none">
+          <type name="SDPKey" c:type="GstSDPKey*"/>
+        </return-value>
+      </method>
+      <method name="set_key"
+              c:identifier="gst_sdp_media_set_key"
+              doc="Adds the encryption information to @media.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="attributes_len"
+              c:identifier="gst_sdp_media_attributes_len"
+              doc="Get the number of attribute fields in @media.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_attribute"
+              c:identifier="gst_sdp_media_get_attribute"
+              doc="Get the attribute at position @idx in @media.">
+        <return-value transfer-ownership="none">
+          <type name="SDPAttribute" c:type="GstSDPAttribute*"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_val"
+              c:identifier="gst_sdp_media_get_attribute_val"
+              doc="Get the first attribute value for @key in @media.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_val_n"
+              c:identifier="gst_sdp_media_get_attribute_val_n"
+              doc="Get the @nth attribute value for @key in @media.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="nth" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_attribute"
+              c:identifier="gst_sdp_media_add_attribute"
+              doc="Add the attribute with @key and @value to @media.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="SDPMessage"
+            c:type="GstSDPMessage"
+            doc="The contents of the SDP message.">
+      <field name="version" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="origin" writable="1">
+        <type name="SDPOrigin" c:type="GstSDPOrigin"/>
+      </field>
+      <field name="session_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="information" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="uri" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="emails" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="phones" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="connection" writable="1">
+        <type name="SDPConnection" c:type="GstSDPConnection"/>
+      </field>
+      <field name="bandwidths" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="times" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="zones" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="key" writable="1">
+        <type name="SDPKey" c:type="GstSDPKey"/>
+      </field>
+      <field name="attributes" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="medias" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_sdp_message_new"
+                   doc="Allocate a new GstSDPMessage and store the result in @msg.">
+        <return-value transfer-ownership="full">
+          <type name="SDPMessage" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="msg" transfer-ownership="none">
+            <type name="SDPMessage" c:type="GstSDPMessage**"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="init"
+              c:identifier="gst_sdp_message_init"
+              doc="Initialize @msg so that its contents are as if it was freshly allocated
+with gst_sdp_message_new(). This function is mostly used to initialize a message
+allocated on the stack. gst_sdp_message_uninit() undoes this operation.
+When this function is invoked on newly allocated data (with malloc or on the
+stack), its contents should be set to 0 before calling this function.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+      </method>
+      <method name="uninit"
+              c:identifier="gst_sdp_message_uninit"
+              doc="Free all resources allocated in @msg. @msg should not be used anymore after
+this function. This function should be used when @msg was allocated on the
+stack and initialized with gst_sdp_message_init().">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gst_sdp_message_free"
+              doc="Free all resources allocated by @msg. @msg should not be used anymore after
+this function. This function should be used when @msg was dynamically
+allocated with gst_sdp_message_new().">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+      </method>
+      <method name="as_text"
+              c:identifier="gst_sdp_message_as_text"
+              doc="Convert the contents of @msg to a text string.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_version"
+              c:identifier="gst_sdp_message_get_version"
+              doc="Get the version in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_version"
+              c:identifier="gst_sdp_message_set_version"
+              doc="Set the version in @msg.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="version" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_origin"
+              c:identifier="gst_sdp_message_get_origin"
+              doc="Get the origin of @msg.">
+        <return-value transfer-ownership="none">
+          <type name="SDPOrigin" c:type="GstSDPOrigin*"/>
+        </return-value>
+      </method>
+      <method name="set_origin"
+              c:identifier="gst_sdp_message_set_origin"
+              doc="Configure the SDP origin in @msg with the given parameters.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="username" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="sess_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="sess_version" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="nettype" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="addrtype" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="addr" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_session_name"
+              c:identifier="gst_sdp_message_get_session_name"
+              doc="Get the session name in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_session_name"
+              c:identifier="gst_sdp_message_set_session_name"
+              doc="Set the session name in @msg.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="session_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_information"
+              c:identifier="gst_sdp_message_get_information"
+              doc="Get the information in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_information"
+              c:identifier="gst_sdp_message_set_information"
+              doc="Set the information in @msg.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="information" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uri"
+              c:identifier="gst_sdp_message_get_uri"
+              doc="Get the URI in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_uri"
+              c:identifier="gst_sdp_message_set_uri"
+              doc="Set the URI in @msg.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="emails_len"
+              c:identifier="gst_sdp_message_emails_len"
+              doc="Get the number of emails in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_email"
+              c:identifier="gst_sdp_message_get_email"
+              doc="Get the email with number @idx from @msg.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_email"
+              c:identifier="gst_sdp_message_add_email"
+              doc="Add @email to the list of emails in @msg.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="email" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="phones_len"
+              c:identifier="gst_sdp_message_phones_len"
+              doc="Get the number of phones in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_phone"
+              c:identifier="gst_sdp_message_get_phone"
+              doc="Get the phone with number @idx from @msg.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_phone"
+              c:identifier="gst_sdp_message_add_phone"
+              doc="Add @phone to the list of phones in @msg.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="phone" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_connection"
+              c:identifier="gst_sdp_message_get_connection"
+              doc="Get the connection of @msg.">
+        <return-value transfer-ownership="none">
+          <type name="SDPConnection" c:type="GstSDPConnection*"/>
+        </return-value>
+      </method>
+      <method name="set_connection"
+              c:identifier="gst_sdp_message_set_connection"
+              doc="&quot;Internet&quot;.
+Configure the SDP connection in @msg with the given parameters.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="nettype" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="addrtype" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="address" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="ttl" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="addr_number" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="bandwidths_len"
+              c:identifier="gst_sdp_message_bandwidths_len"
+              doc="Get the number of bandwidth information in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_bandwidth"
+              c:identifier="gst_sdp_message_get_bandwidth"
+              doc="Get the bandwidth at index @idx from @msg.">
+        <return-value transfer-ownership="none">
+          <type name="SDPBandwidth" c:type="GstSDPBandwidth*"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_bandwidth"
+              c:identifier="gst_sdp_message_add_bandwidth"
+              doc="Add the specified bandwidth information to @msg.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="bwtype" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="bandwidth" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="times_len"
+              c:identifier="gst_sdp_message_times_len"
+              doc="Get the number of time information entries in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_time"
+              c:identifier="gst_sdp_message_get_time"
+              doc="Get time information with index @idx from @msg.">
+        <return-value transfer-ownership="none">
+          <type name="SDPTime" c:type="GstSDPTime*"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_time"
+              c:identifier="gst_sdp_message_add_time"
+              doc="Add time information @start and @stop to @msg.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="start" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="repeat" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="zones_len"
+              c:identifier="gst_sdp_message_zones_len"
+              doc="Get the number of time zone information entries in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_zone"
+              c:identifier="gst_sdp_message_get_zone"
+              doc="Get time zone information with index @idx from @msg.">
+        <return-value transfer-ownership="none">
+          <type name="SDPZone" c:type="GstSDPZone*"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_zone"
+              c:identifier="gst_sdp_message_add_zone"
+              doc="Add time zone information to @msg.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="adj_time" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="typed_time" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_key"
+              c:identifier="gst_sdp_message_get_key"
+              doc="Get the encryption information from @msg.">
+        <return-value transfer-ownership="none">
+          <type name="SDPKey" c:type="GstSDPKey*"/>
+        </return-value>
+      </method>
+      <method name="set_key"
+              c:identifier="gst_sdp_message_set_key"
+              doc="Adds the encryption information to @msg.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="attributes_len"
+              c:identifier="gst_sdp_message_attributes_len"
+              doc="Get the number of attributes in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_attribute"
+              c:identifier="gst_sdp_message_get_attribute"
+              doc="Get the attribute at position @idx in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="SDPAttribute" c:type="GstSDPAttribute*"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_val"
+              c:identifier="gst_sdp_message_get_attribute_val"
+              doc="Get the first attribute with key @key in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_val_n"
+              c:identifier="gst_sdp_message_get_attribute_val_n"
+              doc="Get the @nth attribute with key @key in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="nth" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_attribute"
+              c:identifier="gst_sdp_message_add_attribute"
+              doc="Add the attribute with @key and @value to @msg.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="medias_len"
+              c:identifier="gst_sdp_message_medias_len"
+              doc="Get the number of media descriptions in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_media"
+              c:identifier="gst_sdp_message_get_media"
+              doc="Get the media description at index @idx in @msg.">
+        <return-value transfer-ownership="none">
+          <type name="SDPMedia" c:type="GstSDPMedia*"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_media"
+              c:identifier="gst_sdp_message_add_media"
+              doc="Adds @media to the array of medias in @msg. This function takes ownership of
+the contents of @media so that @media will have to be reinitialized with
+gst_media_init() before it can be used again.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="media" transfer-ownership="none">
+            <type name="SDPMedia" c:type="GstSDPMedia*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dump"
+              c:identifier="gst_sdp_message_dump"
+              doc="Dump the parsed contents of @msg to stdout.">
+        <return-value transfer-ownership="full">
+          <type name="SDPResult" c:type="GstSDPResult"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="SDPOrigin"
+            c:type="GstSDPOrigin"
+            doc="if the originating host does not support the concept of user ids.
+session.
+&quot;Internet&quot;.
+created.
+The contents of the SDP &quot;o=&quot; field which gives the originator of the session
+(their username and the address of the user&apos;s host) plus a session id and
+session version number.">
+      <field name="username" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="sess_id" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="sess_version" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="nettype" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="addrtype" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="addr" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </record>
+    <enumeration name="SDPResult"
+                 doc="Return values for the SDP functions."
+                 c:type="GstSDPResult">
+      <member name="ok" value="0" c:identifier="GST_SDP_OK"/>
+      <member name="einval" value="-1" c:identifier="GST_SDP_EINVAL"/>
+    </enumeration>
+    <record name="SDPTime"
+            c:type="GstSDPTime"
+            doc="representation of Network Time Protocol (NTP) time values in seconds
+representation of Network Time Protocol (NTP) time values in seconds
+The contents of the SDP &quot;t=&quot; field which specify the start and stop times for
+a conference session.">
+      <field name="start" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="stop" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="repeat" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+    </record>
+    <record name="SDPZone"
+            c:type="GstSDPZone"
+            doc="The contents of the SDP &quot;z=&quot; field which allows the sender to
+specify a list of time zone adjustments and offsets from the base
+time.">
+      <field name="time" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="typed_time" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </record>
+    <function name="message_parse_buffer"
+              c:identifier="gst_sdp_message_parse_buffer"
+              doc="Parse the contents of @size bytes pointed to by @data and store the result in">
+      <return-value transfer-ownership="full">
+        <type name="SDPResult" c:type="GstSDPResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="msg" transfer-ownership="none">
+          <type name="SDPMessage" c:type="GstSDPMessage*"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/sdp/ffi/ffi.factor b/extra/gstreamer/sdp/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..f023bb2
--- /dev/null
@@ -0,0 +1,16 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries combinators kernel system
+gobject-introspection glib.ffi ;
+IN: gstreamer.sdp.ffi
+
+<<
+"gstreamer.sdp" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstsdp-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gstreamer/sdp/GstSdp-0.10.gir
+
diff --git a/extra/gstreamer/sdp/sdp.factor b/extra/gstreamer/sdp/sdp.factor
new file mode 100644 (file)
index 0000000..1cfdbfe
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.sdp.ffi ;
+IN: gstreamer.sdp
+
diff --git a/extra/gstreamer/summary.txt b/extra/gstreamer/summary.txt
new file mode 100644 (file)
index 0000000..4094ff9
--- /dev/null
@@ -0,0 +1 @@
+GStreamer binding
diff --git a/extra/gstreamer/tag/GstTag-0.10.gir b/extra/gstreamer/tag/GstTag-0.10.gir
new file mode 100644 (file)
index 0000000..f571459
--- /dev/null
@@ -0,0 +1,797 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.0"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="GstBase" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <package name="gstreamer-base-0.10"/>
+  <namespace name="GstTag"
+             version="0.10"
+             shared-library="libgsttag-0.10.so.0"
+             c:prefix="Gst">
+    <constant name="CDDA_CDDB_DISCID" value="discid">
+      <type name="utf8"/>
+    </constant>
+    <constant name="CDDA_CDDB_DISCID_FULL" value="discid-full">
+      <type name="utf8"/>
+    </constant>
+    <constant name="CDDA_MUSICBRAINZ_DISCID" value="musicbrainz-discid">
+      <type name="utf8"/>
+    </constant>
+    <constant name="CDDA_MUSICBRAINZ_DISCID_FULL"
+              value="musicbrainz-discid-full">
+      <type name="utf8"/>
+    </constant>
+    <constant name="CMML_CLIP" value="cmml-clip">
+      <type name="utf8"/>
+    </constant>
+    <constant name="CMML_HEAD" value="cmml-head">
+      <type name="utf8"/>
+    </constant>
+    <constant name="CMML_STREAM" value="cmml-stream">
+      <type name="utf8"/>
+    </constant>
+    <constant name="MUSICBRAINZ_ALBUMARTISTID"
+              value="musicbrainz-albumartistid">
+      <type name="utf8"/>
+    </constant>
+    <constant name="MUSICBRAINZ_ALBUMID" value="musicbrainz-albumid">
+      <type name="utf8"/>
+    </constant>
+    <constant name="MUSICBRAINZ_ARTISTID" value="musicbrainz-artistid">
+      <type name="utf8"/>
+    </constant>
+    <constant name="MUSICBRAINZ_TRACKID" value="musicbrainz-trackid">
+      <type name="utf8"/>
+    </constant>
+    <constant name="MUSICBRAINZ_TRMID" value="musicbrainz-trmid">
+      <type name="utf8"/>
+    </constant>
+    <class name="TagDemux"
+           c:type="GstTagDemux"
+           doc="Opaque #GstTagDemux structure."
+           version="0.10.15"
+           parent="Gst.Element"
+           abstract="1"
+           glib:type-name="GstTagDemux"
+           glib:get-type="gst_tag_demux_get_type"
+           glib:type-struct="TagDemuxClass">
+      <virtual-method name="identify_tag">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="start_tag" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="tag_size" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="parse_tag">
+        <return-value transfer-ownership="full">
+          <type name="TagDemuxResult" c:type="GstTagDemuxResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="start_tag" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="tag_size" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+          <parameter name="tags" transfer-ownership="none">
+            <type name="Gst.TagList" c:type="GstTagList**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="merge_tags">
+        <return-value transfer-ownership="full">
+          <type name="Gst.TagList" c:type="GstTagList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_tags" transfer-ownership="none">
+            <type name="Gst.TagList" c:type="GstTagList*"/>
+          </parameter>
+          <parameter name="end_tags" transfer-ownership="none">
+            <type name="Gst.TagList" c:type="GstTagList*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <field name="element">
+        <type name="Gst.Element" c:type="GstElement"/>
+      </field>
+      <field name="priv">
+        <type name="TagDemuxPrivate" c:type="GstTagDemuxPrivate*"/>
+      </field>
+      <field name="reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="TagDemuxClass"
+            c:type="GstTagDemuxClass"
+            glib:is-gtype-struct-for="TagDemux"
+            doc="determine its total size. Set to 0 if not interested in start tags.
+Subclasses should set this in their class_init function.
+determine its total size. Set to 0 if not interested in end tags.
+Subclasses should set this in their class_init function.
+tag. Buffer may be larger than the specified minimum size.
+Subclassed MUST override this vfunc in their class_init function.
+the identify_tag vfunc before. The parse_tag vfunc may change the size
+stored in *tag_size and return GST_TAG_DEMUX_RESULT_AGAIN to request a
+larger or smaller buffer. It is also permitted to adjust the tag_size to a
+smaller value and then return GST_TAG_DEMUX_RESULT_OK in one go.
+Subclassed MUST override the parse_tag vfunc in their class_init function.
+vfunc to allow prioritising of start or end tag according to user
+preference.  Note that both start_tags and end_tags may be NULL. By default
+start tags are prefered over end tags.
+The #GstTagDemuxClass structure.  See documentation at beginning of section
+for details about what subclasses need to override and do."
+            version="0.10.15">
+      <field name="parent_class">
+        <type name="Gst.ElementClass" c:type="GstElementClass"/>
+      </field>
+      <field name="min_start_size">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="min_end_size">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="identify_tag">
+        <callback name="identify_tag" c:type="identify_tag">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="demux" transfer-ownership="none">
+              <type name="TagDemux" c:type="GstTagDemux*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+            <parameter name="start_tag" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="tag_size"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="uint" c:type="guint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parse_tag">
+        <callback name="parse_tag" c:type="parse_tag">
+          <return-value transfer-ownership="full">
+            <type name="TagDemuxResult" c:type="GstTagDemuxResult"/>
+          </return-value>
+          <parameters>
+            <parameter name="demux" transfer-ownership="none">
+              <type name="TagDemux" c:type="GstTagDemux*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+            <parameter name="start_tag" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="tag_size"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="uint" c:type="guint*"/>
+            </parameter>
+            <parameter name="tags" transfer-ownership="none">
+              <type name="Gst.TagList" c:type="GstTagList**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="merge_tags">
+        <callback name="merge_tags" c:type="merge_tags">
+          <return-value transfer-ownership="full">
+            <type name="Gst.TagList" c:type="GstTagList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="demux" transfer-ownership="none">
+              <type name="TagDemux" c:type="GstTagDemux*"/>
+            </parameter>
+            <parameter name="start_tags" transfer-ownership="none">
+              <type name="Gst.TagList" c:type="GstTagList*"/>
+            </parameter>
+            <parameter name="end_tags" transfer-ownership="none">
+              <type name="Gst.TagList" c:type="GstTagList*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="TagDemuxPrivate" c:type="GstTagDemuxPrivate">
+    </record>
+    <enumeration name="TagDemuxResult"
+                 doc="Result values from the parse_tag virtual function."
+                 version="0.10.15"
+                 glib:type-name="GstTagDemuxResult"
+                 glib:get-type="gst_tag_demux_result_get_type"
+                 c:type="GstTagDemuxResult">
+      <member name="broken_tag"
+              value="0"
+              c:identifier="GST_TAG_DEMUX_RESULT_BROKEN_TAG"
+              glib:nick="broken-tag"/>
+      <member name="again"
+              value="1"
+              c:identifier="GST_TAG_DEMUX_RESULT_AGAIN"
+              glib:nick="again"/>
+      <member name="ok"
+              value="2"
+              c:identifier="GST_TAG_DEMUX_RESULT_OK"
+              glib:nick="ok"/>
+    </enumeration>
+    <enumeration name="TagImageType"
+                 doc="tell functions such as gst_tag_image_data_to_image_buffer() that no
+Type of image contained in an image tag (specified as field in
+the image buffer&apos;s caps structure)"
+                 version="0.10.9"
+                 glib:type-name="GstTagImageType"
+                 glib:get-type="gst_tag_image_type_get_type"
+                 c:type="GstTagImageType">
+      <member name="none"
+              value="-1"
+              c:identifier="GST_TAG_IMAGE_TYPE_NONE"
+              glib:nick="none"/>
+      <member name="undefined"
+              value="0"
+              c:identifier="GST_TAG_IMAGE_TYPE_UNDEFINED"
+              glib:nick="undefined"/>
+      <member name="front_cover"
+              value="1"
+              c:identifier="GST_TAG_IMAGE_TYPE_FRONT_COVER"
+              glib:nick="front-cover"/>
+      <member name="back_cover"
+              value="2"
+              c:identifier="GST_TAG_IMAGE_TYPE_BACK_COVER"
+              glib:nick="back-cover"/>
+      <member name="leaflet_page"
+              value="3"
+              c:identifier="GST_TAG_IMAGE_TYPE_LEAFLET_PAGE"
+              glib:nick="leaflet-page"/>
+      <member name="medium"
+              value="4"
+              c:identifier="GST_TAG_IMAGE_TYPE_MEDIUM"
+              glib:nick="medium"/>
+      <member name="lead_artist"
+              value="5"
+              c:identifier="GST_TAG_IMAGE_TYPE_LEAD_ARTIST"
+              glib:nick="lead-artist"/>
+      <member name="artist"
+              value="6"
+              c:identifier="GST_TAG_IMAGE_TYPE_ARTIST"
+              glib:nick="artist"/>
+      <member name="conductor"
+              value="7"
+              c:identifier="GST_TAG_IMAGE_TYPE_CONDUCTOR"
+              glib:nick="conductor"/>
+      <member name="band_orchestra"
+              value="8"
+              c:identifier="GST_TAG_IMAGE_TYPE_BAND_ORCHESTRA"
+              glib:nick="band-orchestra"/>
+      <member name="composer"
+              value="9"
+              c:identifier="GST_TAG_IMAGE_TYPE_COMPOSER"
+              glib:nick="composer"/>
+      <member name="lyricist"
+              value="10"
+              c:identifier="GST_TAG_IMAGE_TYPE_LYRICIST"
+              glib:nick="lyricist"/>
+      <member name="recording_location"
+              value="11"
+              c:identifier="GST_TAG_IMAGE_TYPE_RECORDING_LOCATION"
+              glib:nick="recording-location"/>
+      <member name="during_recording"
+              value="12"
+              c:identifier="GST_TAG_IMAGE_TYPE_DURING_RECORDING"
+              glib:nick="during-recording"/>
+      <member name="during_performance"
+              value="13"
+              c:identifier="GST_TAG_IMAGE_TYPE_DURING_PERFORMANCE"
+              glib:nick="during-performance"/>
+      <member name="video_capture"
+              value="14"
+              c:identifier="GST_TAG_IMAGE_TYPE_VIDEO_CAPTURE"
+              glib:nick="video-capture"/>
+      <member name="fish"
+              value="15"
+              c:identifier="GST_TAG_IMAGE_TYPE_FISH"
+              glib:nick="fish"/>
+      <member name="illustration"
+              value="16"
+              c:identifier="GST_TAG_IMAGE_TYPE_ILLUSTRATION"
+              glib:nick="illustration"/>
+      <member name="artist_logo"
+              value="17"
+              c:identifier="GST_TAG_IMAGE_TYPE_BAND_ARTIST_LOGO"
+              glib:nick="artist-logo"/>
+      <member name="publisher_studio_logo"
+              value="18"
+              c:identifier="GST_TAG_IMAGE_TYPE_PUBLISHER_STUDIO_LOGO"
+              glib:nick="publisher-studio-logo"/>
+    </enumeration>
+    <function name="freeform_string_to_utf8"
+              c:identifier="gst_tag_freeform_string_to_utf8"
+              doc="or NULL
+Convenience function to read a string with unknown character encoding. If
+the string is already in UTF-8 encoding, it will be returned right away.
+If not it tries to detect byte-order-mark for UTF-16/32 cases and use that.
+Otherwise, the environment will be searched for a number of environment
+variables (whose names are specified in the NULL-terminated string array
+are specified, the current locale will be tried. If that also doesn&apos;t work,
+ISO-8859-1 is assumed (which will almost always succeed)."
+              version="0.10.13">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="env_vars" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="from_id3_tag"
+              c:identifier="gst_tag_from_id3_tag"
+              doc="Looks up the GStreamer tag for a ID3v2 tag.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="id3_tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="from_id3_user_tag"
+              c:identifier="gst_tag_from_id3_user_tag"
+              doc="Looks up the GStreamer tag for an ID3v2 user tag (e.g. description in
+TXXX frame or owner in UFID frame).">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="id3_user_tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="from_vorbis_tag"
+              c:identifier="gst_tag_from_vorbis_tag"
+              doc="Looks up the GStreamer tag for a vorbiscomment tag.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="vorbis_tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_language_code_iso_639_1"
+              c:identifier="gst_tag_get_language_code_iso_639_1"
+              doc="Returns two-letter ISO-639-1 language code given a three-letter ISO-639-2
+language code or two-letter ISO-639-1 language code (both are accepted for
+convenience).
+Language codes are case-sensitive and expected to be lower case.
+or NULL if no mapping is known. The returned string must not be
+modified or freed."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="lang_code" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_language_code_iso_639_2B"
+              c:identifier="gst_tag_get_language_code_iso_639_2B"
+              doc="Returns three-letter ISO-639-2 &quot;bibliographic&quot; language code given a
+two-letter ISO-639-1 language code or a three-letter ISO-639-2 language
+code (both are accepted for convenience).
+The &quot;bibliographic&quot; code is derived from the English name of the language
+(e.g. &quot;ger&quot; for German instead of &quot;de&quot; or &quot;deu&quot;). In most scenarios, the
+&quot;terminological&quot; codes are prefered.
+Language codes are case-sensitive and expected to be lower case.
+or NULL if no mapping is known. The returned string must not be
+modified or freed."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="lang_code" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_language_code_iso_639_2T"
+              c:identifier="gst_tag_get_language_code_iso_639_2T"
+              doc="Returns three-letter ISO-639-2 &quot;terminological&quot; language code given a
+two-letter ISO-639-1 language code or a three-letter ISO-639-2 language
+code (both are accepted for convenience).
+The &quot;terminological&quot; code is derived from the local name of the language
+(e.g. &quot;deu&quot; for German instead of &quot;ger&quot;). In most scenarios, the
+&quot;terminological&quot; codes are prefered over the &quot;bibliographic&quot; ones.
+Language codes are case-sensitive and expected to be lower case.
+or NULL if no mapping is known. The returned string must not be
+modified or freed."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="lang_code" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_language_codes"
+              c:identifier="gst_tag_get_language_codes"
+              doc="Returns a list of known language codes (in form of two-letter ISO-639-1
+codes). This is useful for UIs to build a list of available languages for
+tagging purposes (e.g. to tag an audio track appropriately in a video or
+audio editor).
+with g_strfreev() when no longer needed."
+              version="0.10.26">
+      <return-value transfer-ownership="full">
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+    </function>
+    <function name="get_language_name"
+              c:identifier="gst_tag_get_language_name"
+              doc="Returns the name of the language given an ISO-639 language code, such
+as often found in a GST_TAG_LANGUAGE tag. The name will be translated
+according to the current locale (if the library was built against the
+iso-codes package, otherwise the English name will be returned).
+Language codes are case-sensitive and expected to be lower case.
+not be mapped to a language name. The returned string must not be
+modified and does not need to freed; it will stay valid until the
+application is terminated."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="language_code" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="id3_genre_count"
+              c:identifier="gst_tag_id3_genre_count"
+              doc="Gets the number of ID3v1 genres that can be identified. Winamp genres are
+included.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+    </function>
+    <function name="id3_genre_get"
+              c:identifier="gst_tag_id3_genre_get"
+              doc="Gets the ID3v1 genre name for a given ID.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="image_data_to_image_buffer"
+              c:identifier="gst_tag_image_data_to_image_buffer"
+              doc="#GST_TAG_IMAGE_TYPE_NONE if no image type should be set at all (e.g.
+for preview images)
+Helper function for tag-reading plugins to create a #GstBuffer suitable to
+add to a #GstTagList as an image tag (such as #GST_TAG_IMAGE or
+#GST_TAG_PREVIEW_IMAGE) from the encoded image data and an (optional) image
+type.
+blob of binary image data, often accompanied by a MIME type or some other
+content type string (e.g. &apos;png&apos;, &apos;jpeg&apos;, &apos;jpg&apos;). Sometimes there is also an
+&apos;image type&apos; to indicate what kind of image this is (e.g. front cover,
+back cover, artist, etc.). The image data may also be an URI to the image
+rather than the image itself.
+In GStreamer, image tags are #GstBuffer&lt;!-- --&gt;s containing the raw image
+data, with the buffer caps describing the content type of the image
+(e.g. image/jpeg, image/png, text/uri-list). The buffer caps may contain
+an additional &apos;image-type&apos; field of #GST_TYPE_TAG_IMAGE_TYPE to describe
+the type of image (front cover, back cover etc.). #GST_TAG_PREVIEW_IMAGE
+tags should not carry an image type, their type is already indicated via
+the special tag name.
+This function will do various checks and typefind the encoded image
+data (we can&apos;t trust the declared mime type)."
+              version="0.10.20">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="image_data" transfer-ownership="none" doc="image">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="image_data_len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="image_type" transfer-ownership="none">
+          <type name="TagImageType" c:type="GstTagImageType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_add_id3_image"
+              c:identifier="gst_tag_list_add_id3_image"
+              doc="the APIC frame (0 = unknown/other)
+Adds an image from an ID3 APIC frame (or similar, such as used in FLAC)
+to the given tag list. Also see gst_tag_image_data_to_image_buffer() for
+more information on image tags in GStreamer."
+              version="0.10.20">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag_list" transfer-ownership="none">
+          <type name="Gst.TagList" c:type="GstTagList*"/>
+        </parameter>
+        <parameter name="image_data" transfer-ownership="none" doc="image">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="image_data_len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="id3_picture_type"
+                   transfer-ownership="none"
+                   doc="specification for">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_from_vorbiscomment_buffer"
+              c:identifier="gst_tag_list_from_vorbiscomment_buffer"
+              doc="of this vorbis comment or NULL if you don&apos;t need it.
+Creates a new tag list that contains the information parsed out of a
+vorbiscomment packet.
+given vorbiscomment buffer or NULL on error.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.TagList" c:type="GstTagList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="id_data" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="id_data_length" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="vendor_string" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_from_xmp_buffer"
+              c:identifier="gst_tag_list_from_xmp_buffer"
+              doc="Parse a xmp packet into a taglist."
+              version="0.10.29">
+      <return-value transfer-ownership="full">
+        <type name="Gst.TagList" c:type="GstTagList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_new_from_id3v1"
+              c:identifier="gst_tag_list_new_from_id3v1"
+              doc="Parses the data containing an ID3v1 tag and returns a #GstTagList from the
+parsed data.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.TagList" c:type="GstTagList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_to_vorbiscomment_buffer"
+              c:identifier="gst_tag_list_to_vorbiscomment_buffer"
+              doc="Creates a new vorbiscomment buffer from a tag list.
+that could be converted from the given tag list.">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.TagList" c:type="GstTagList*"/>
+        </parameter>
+        <parameter name="id_data" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="id_data_length" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="vendor_string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_to_xmp_buffer"
+              c:identifier="gst_tag_list_to_xmp_buffer"
+              doc="Formats a taglist as a xmp packet."
+              version="0.10.29">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.TagList" c:type="GstTagList*"/>
+        </parameter>
+        <parameter name="read_only" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_extended_comment"
+              c:identifier="gst_tag_parse_extended_comment"
+              doc="Convenience function to parse a GST_TAG_EXTENDED_COMMENT string and
+separate it into its components.
+If successful, @key, @lang and/or @value will be set to newly allocated
+strings that you need to free with g_free() when done. @key and @lang
+may also be set to NULL by this function if there is no key or no language
+code in the extended comment string."
+              version="0.10.10">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="ext_comment" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="lang" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="fail_if_no_key" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="register_musicbrainz_tags"
+              c:identifier="gst_tag_register_musicbrainz_tags">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="to_id3_tag"
+              c:identifier="gst_tag_to_id3_tag"
+              doc="Looks up the ID3v2 tag for a GStreamer tag.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gst_tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="to_vorbis_comments"
+              c:identifier="gst_tag_to_vorbis_comments"
+              doc="Creates a new tag list that contains the information parsed out of a
+vorbiscomment packet.
+g_list_foreach (list, (GFunc) g_free, NULL) plus g_list_free (list)">
+      <return-value transfer-ownership="full">
+        <type name="GLib.List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.TagList" c:type="GstTagList*"/>
+        </parameter>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="to_vorbis_tag"
+              c:identifier="gst_tag_to_vorbis_tag"
+              doc="Looks up the vorbiscomment tag for a GStreamer tag.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gst_tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vorbis_tag_add"
+              c:identifier="gst_vorbis_tag_add"
+              doc="Convenience function using gst_tag_from_vorbis_tag(), parsing
+a vorbis comment string into the right type and adding it to the
+given taglist @list.
+Unknown vorbiscomment tags will be added to the tag list in form
+of a #GST_TAG_EXTENDED_COMMENT (since 0.10.10 at least).">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="Gst.TagList" c:type="GstTagList*"/>
+        </parameter>
+        <parameter name="tag"
+                   transfer-ownership="none"
+                   doc="must be valid UTF-8">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="value"
+                   transfer-ownership="none"
+                   doc="must be valid UTF-8">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/tag/ffi/ffi.factor b/extra/gstreamer/tag/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..28eda35
--- /dev/null
@@ -0,0 +1,16 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries combinators kernel system
+gobject-introspection glib.ffi gstreamer.ffi ;
+IN: gstreamer.tag.ffi
+
+<<
+"gstreamer.tag" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgsttag-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gstreamer/tag/GstTag-0.10.gir
+
diff --git a/extra/gstreamer/tag/tag.factor b/extra/gstreamer/tag/tag.factor
new file mode 100644 (file)
index 0000000..30c6c97
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.tag.ffi ;
+IN: gstreamer.tag
+
diff --git a/extra/gstreamer/tags.txt b/extra/gstreamer/tags.txt
new file mode 100755 (executable)
index 0000000..be30e2c
--- /dev/null
@@ -0,0 +1,3 @@
+bindings
+audio
+video
diff --git a/extra/gstreamer/video/GstVideo-0.10.gir b/extra/gstreamer/video/GstVideo-0.10.gir
new file mode 100644 (file)
index 0000000..ff905a0
--- /dev/null
@@ -0,0 +1,925 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.0"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="GstBase" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <package name="gstreamer-base-0.10"/>
+  <c:include name="gst/video/gstvideofilter.h"/>
+  <c:include name="gst/video/gstvideosink.h"/>
+  <c:include name="gst/video/video-enumtypes.h"/>
+  <c:include name="gst/video/video.h"/>
+  <namespace name="GstVideo"
+             version="0.10"
+             shared-library="libgstvideo-0.10.so.0"
+             c:prefix="Gst">
+    <constant name="BLUE_MASK_15" value="0x001f">
+      <type name="utf8"/>
+    </constant>
+    <constant name="BLUE_MASK_15_INT" value="31">
+      <type name="int"/>
+    </constant>
+    <constant name="BLUE_MASK_16" value="0x001f">
+      <type name="utf8"/>
+    </constant>
+    <constant name="BLUE_MASK_16_INT" value="31">
+      <type name="int"/>
+    </constant>
+    <constant name="BYTE1_MASK_24" value="0x00FF0000">
+      <type name="utf8"/>
+    </constant>
+    <constant name="BYTE1_MASK_24_INT" value="16711680">
+      <type name="int"/>
+    </constant>
+    <constant name="BYTE1_MASK_32" value="0xFF000000">
+      <type name="utf8"/>
+    </constant>
+    <constant name="BYTE1_MASK_32_INT" value="-16777216">
+      <type name="int"/>
+    </constant>
+    <constant name="BYTE2_MASK_24" value="0x0000FF00">
+      <type name="utf8"/>
+    </constant>
+    <constant name="BYTE2_MASK_24_INT" value="65280">
+      <type name="int"/>
+    </constant>
+    <constant name="BYTE2_MASK_32" value="0x00FF0000">
+      <type name="utf8"/>
+    </constant>
+    <constant name="BYTE2_MASK_32_INT" value="16711680">
+      <type name="int"/>
+    </constant>
+    <constant name="BYTE3_MASK_24" value="0x000000FF">
+      <type name="utf8"/>
+    </constant>
+    <constant name="BYTE3_MASK_24_INT" value="255">
+      <type name="int"/>
+    </constant>
+    <constant name="BYTE3_MASK_32" value="0x0000FF00">
+      <type name="utf8"/>
+    </constant>
+    <constant name="BYTE3_MASK_32_INT" value="65280">
+      <type name="int"/>
+    </constant>
+    <constant name="BYTE4_MASK_32" value="0x000000FF">
+      <type name="utf8"/>
+    </constant>
+    <constant name="BYTE4_MASK_32_INT" value="255">
+      <type name="int"/>
+    </constant>
+    <constant name="CAPS_GRAY8"
+              value="video/x-raw-gray, bpp = (int) 8, depth = (int) 8, width = ">
+      <type name="utf8"/>
+    </constant>
+    <constant name="CAPS_RGB_15"
+              value="video/x-raw-rgb, bpp = (int) 16, depth = (int) 15, endianness = (int) BYTE_ORDER, red_mask = (int) ">
+      <type name="utf8"/>
+    </constant>
+    <constant name="CAPS_RGB_16"
+              value="video/x-raw-rgb, bpp = (int) 16, depth = (int) 16, endianness = (int) BYTE_ORDER, red_mask = (int) ">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FPS_RANGE" value="(fraction) [ 0, max ]">
+      <type name="utf8"/>
+    </constant>
+    <constant name="GREEN_MASK_15" value="0x03e0">
+      <type name="utf8"/>
+    </constant>
+    <constant name="GREEN_MASK_15_INT" value="992">
+      <type name="int"/>
+    </constant>
+    <constant name="GREEN_MASK_16" value="0x07e0">
+      <type name="utf8"/>
+    </constant>
+    <constant name="GREEN_MASK_16_INT" value="2016">
+      <type name="int"/>
+    </constant>
+    <constant name="RED_MASK_15" value="0x7c00">
+      <type name="utf8"/>
+    </constant>
+    <constant name="RED_MASK_15_INT" value="31744">
+      <type name="int"/>
+    </constant>
+    <constant name="RED_MASK_16" value="0xf800">
+      <type name="utf8"/>
+    </constant>
+    <constant name="RED_MASK_16_INT" value="63488">
+      <type name="int"/>
+    </constant>
+    <constant name="SIZE_RANGE" value="(int) [ 1, max ]">
+      <type name="utf8"/>
+    </constant>
+    <class name="VideoFilter"
+           c:type="GstVideoFilter"
+           parent="GstBase.BaseTransform"
+           abstract="1"
+           glib:type-name="GstVideoFilter"
+           glib:get-type="gst_video_filter_get_type"
+           glib:type-struct="VideoFilterClass">
+      <field name="element">
+        <type name="GstBase.BaseTransform" c:type="GstBaseTransform"/>
+      </field>
+      <field name="inited">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+    </class>
+    <record name="VideoFilterClass"
+            c:type="GstVideoFilterClass"
+            glib:is-gtype-struct-for="VideoFilter">
+      <field name="parent_class">
+        <type name="GstBase.BaseTransformClass"
+              c:type="GstBaseTransformClass"/>
+      </field>
+    </record>
+    <enumeration name="VideoFormat"
+                 doc="Enum value describing the most common video formats."
+                 glib:type-name="GstVideoFormat"
+                 glib:get-type="gst_video_format_get_type"
+                 c:type="GstVideoFormat">
+      <member name="unknown"
+              value="0"
+              c:identifier="GST_VIDEO_FORMAT_UNKNOWN"
+              glib:nick="unknown"/>
+      <member name="i420"
+              value="1"
+              c:identifier="GST_VIDEO_FORMAT_I420"
+              glib:nick="i420"/>
+      <member name="yv12"
+              value="2"
+              c:identifier="GST_VIDEO_FORMAT_YV12"
+              glib:nick="yv12"/>
+      <member name="yuy2"
+              value="3"
+              c:identifier="GST_VIDEO_FORMAT_YUY2"
+              glib:nick="yuy2"/>
+      <member name="uyvy"
+              value="4"
+              c:identifier="GST_VIDEO_FORMAT_UYVY"
+              glib:nick="uyvy"/>
+      <member name="ayuv"
+              value="5"
+              c:identifier="GST_VIDEO_FORMAT_AYUV"
+              glib:nick="ayuv"/>
+      <member name="rgbx"
+              value="6"
+              c:identifier="GST_VIDEO_FORMAT_RGBx"
+              glib:nick="rgbx"/>
+      <member name="bgrx"
+              value="7"
+              c:identifier="GST_VIDEO_FORMAT_BGRx"
+              glib:nick="bgrx"/>
+      <member name="xrgb"
+              value="8"
+              c:identifier="GST_VIDEO_FORMAT_xRGB"
+              glib:nick="xrgb"/>
+      <member name="xbgr"
+              value="9"
+              c:identifier="GST_VIDEO_FORMAT_xBGR"
+              glib:nick="xbgr"/>
+      <member name="rgba"
+              value="10"
+              c:identifier="GST_VIDEO_FORMAT_RGBA"
+              glib:nick="rgba"/>
+      <member name="bgra"
+              value="11"
+              c:identifier="GST_VIDEO_FORMAT_BGRA"
+              glib:nick="bgra"/>
+      <member name="argb"
+              value="12"
+              c:identifier="GST_VIDEO_FORMAT_ARGB"
+              glib:nick="argb"/>
+      <member name="abgr"
+              value="13"
+              c:identifier="GST_VIDEO_FORMAT_ABGR"
+              glib:nick="abgr"/>
+      <member name="rgb"
+              value="14"
+              c:identifier="GST_VIDEO_FORMAT_RGB"
+              glib:nick="rgb"/>
+      <member name="bgr"
+              value="15"
+              c:identifier="GST_VIDEO_FORMAT_BGR"
+              glib:nick="bgr"/>
+      <member name="y41b"
+              value="16"
+              c:identifier="GST_VIDEO_FORMAT_Y41B"
+              glib:nick="y41b"/>
+      <member name="y42b"
+              value="17"
+              c:identifier="GST_VIDEO_FORMAT_Y42B"
+              glib:nick="y42b"/>
+      <member name="yvyu"
+              value="18"
+              c:identifier="GST_VIDEO_FORMAT_YVYU"
+              glib:nick="yvyu"/>
+      <member name="y444"
+              value="19"
+              c:identifier="GST_VIDEO_FORMAT_Y444"
+              glib:nick="y444"/>
+      <member name="v210"
+              value="20"
+              c:identifier="GST_VIDEO_FORMAT_v210"
+              glib:nick="v210"/>
+      <member name="v216"
+              value="21"
+              c:identifier="GST_VIDEO_FORMAT_v216"
+              glib:nick="v216"/>
+      <member name="nv12"
+              value="22"
+              c:identifier="GST_VIDEO_FORMAT_NV12"
+              glib:nick="nv12"/>
+      <member name="nv21"
+              value="23"
+              c:identifier="GST_VIDEO_FORMAT_NV21"
+              glib:nick="nv21"/>
+      <member name="gray8"
+              value="24"
+              c:identifier="GST_VIDEO_FORMAT_GRAY8"
+              glib:nick="gray8"/>
+      <member name="gray16_be"
+              value="25"
+              c:identifier="GST_VIDEO_FORMAT_GRAY16_BE"
+              glib:nick="gray16-be"/>
+      <member name="gray16_le"
+              value="26"
+              c:identifier="GST_VIDEO_FORMAT_GRAY16_LE"
+              glib:nick="gray16-le"/>
+    </enumeration>
+    <record name="VideoRectangle"
+            c:type="GstVideoRectangle"
+            doc="Helper structure representing a rectangular area.">
+      <field name="x" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="w" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="h" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+    </record>
+    <class name="VideoSink"
+           c:type="GstVideoSink"
+           doc="The video sink instance structure. Derived video sinks should set the"
+           parent="GstBase.BaseSink"
+           glib:type-name="GstVideoSink"
+           glib:get-type="gst_video_sink_get_type"
+           glib:type-struct="VideoSinkClass">
+      <function name="center_rect"
+                c:identifier="gst_video_sink_center_rect"
+                doc="Takes @src rectangle and position it at the center of @dst rectangle with or
+without @scaling. It handles clipping if the @src rectangle is bigger than
+the @dst one and @scaling is set to FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="VideoRectangle" c:type="GstVideoRectangle"/>
+          </parameter>
+          <parameter name="dst" transfer-ownership="none">
+            <type name="VideoRectangle" c:type="GstVideoRectangle"/>
+          </parameter>
+          <parameter name="result" transfer-ownership="none">
+            <type name="VideoRectangle" c:type="GstVideoRectangle*"/>
+          </parameter>
+          <parameter name="scaling" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="show_frame">
+        <return-value transfer-ownership="full">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <property name="show-preroll-frame" writable="1" construct="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="element">
+        <type name="GstBase.BaseSink" c:type="GstBaseSink"/>
+      </field>
+      <field name="width">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="height">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="priv">
+        <type name="VideoSinkPrivate" c:type="GstVideoSinkPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="VideoSinkClass"
+            c:type="GstVideoSinkClass"
+            glib:is-gtype-struct-for="VideoSink"
+            doc="#GstBaseSink::preroll vfuncs. Rendering during preroll will be
+suppressed if the &apos;show-preroll-frame&apos; property is set to #FALSE.
+The video sink class structure. Derived classes should override the"
+            version="0.10.25">
+      <field name="parent_class">
+        <type name="GstBase.BaseSinkClass" c:type="GstBaseSinkClass"/>
+      </field>
+      <field name="show_frame">
+        <callback name="show_frame" c:type="show_frame">
+          <return-value transfer-ownership="full">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="video_sink" transfer-ownership="none">
+              <type name="VideoSink" c:type="GstVideoSink*"/>
+            </parameter>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="VideoSinkPrivate" c:type="GstVideoSinkPrivate">
+    </record>
+    <function name="calculate_display_ratio"
+              c:identifier="gst_video_calculate_display_ratio"
+              doc="Given the Pixel Aspect Ratio and size of an input video frame, and the
+pixel aspect ratio of the intended display device, calculates the actual
+display ratio the video will be rendered with.
+dar_n and dar_d parameters.
+The return value is FALSE in the case of integer overflow or other error."
+              version="0.10.7">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dar_n" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+        <parameter name="dar_d" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+        <parameter name="video_width" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="video_height" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="video_par_n" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="video_par_d" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="display_par_n" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="display_par_d" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="event_new_still_frame"
+              c:identifier="gst_video_event_new_still_frame"
+              doc="Creates a new Still Frame event. If @in_still is %TRUE, then the event
+represents the start of a still frame sequence. If it is %FALSE, then
+the event ends a still frame sequence.
+To parse an event created by gst_video_event_new_still_frame() use
+gst_video_event_parse_still_frame()."
+              version="0.10.26">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Event" c:type="GstEvent*"/>
+      </return-value>
+      <parameters>
+        <parameter name="in_still" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="event_parse_still_frame"
+              c:identifier="gst_video_event_parse_still_frame"
+              doc="Parse a #GstEvent, identify if it is a Still Frame event, and
+return the still-frame state from the event if it is.
+If the event represents the start of a still frame, the in_still
+variable will be set to TRUE, otherwise FALSE. It is OK to pass NULL for the
+in_still variable order to just check whether the event is a valid still-frame
+event.
+Create a still frame event using gst_video_event_new_still_frame()"
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Gst.Event" c:type="GstEvent*"/>
+        </parameter>
+        <parameter name="in_still" direction="out" transfer-ownership="full">
+          <type name="boolean" c:type="gboolean*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_convert"
+              c:identifier="gst_video_format_convert"
+              doc="Converts among various #GstFormat types.  This function handles
+GST_FORMAT_BYTES, GST_FORMAT_TIME, and GST_FORMAT_DEFAULT.  For
+raw video, GST_FORMAT_DEFAULT corresponds to video frames.  This
+function can be to handle pad queries of the type GST_QUERY_CONVERT."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="fps_n" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="fps_d" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="src_format" transfer-ownership="none">
+          <type name="Gst.Format" c:type="GstFormat"/>
+        </parameter>
+        <parameter name="src_value" transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </parameter>
+        <parameter name="dest_format" transfer-ownership="none">
+          <type name="Gst.Format" c:type="GstFormat"/>
+        </parameter>
+        <parameter name="dest_value" direction="out" transfer-ownership="full">
+          <type name="int64" c:type="gint64*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_from_fourcc"
+              c:identifier="gst_video_format_from_fourcc"
+              doc="Converts a FOURCC value into the corresponding #GstVideoFormat.
+If the FOURCC cannot be represented by #GstVideoFormat,
+#GST_VIDEO_FORMAT_UNKNOWN is returned."
+              version="0.10.16">
+      <return-value transfer-ownership="full">
+        <type name="VideoFormat" c:type="GstVideoFormat"/>
+      </return-value>
+      <parameters>
+        <parameter name="fourcc" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_component_height"
+              c:identifier="gst_video_format_get_component_height"
+              doc="Calculates the height of the component.  See
+of the component index."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+        <parameter name="component" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_component_offset"
+              c:identifier="gst_video_format_get_component_offset"
+              doc="Calculates the offset (in bytes) of the first pixel of the component
+with index @component.  For packed formats, this will typically be a
+small integer (0, 1, 2, 3).  For planar formats, this will be a
+(relatively) large offset to the beginning of the second or third
+component planes.  See @gst_video_format_get_row_stride for a description
+of the component index."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+        <parameter name="component" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_component_width"
+              c:identifier="gst_video_format_get_component_width"
+              doc="Calculates the width of the component.  See
+of the component index."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+        <parameter name="component" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_pixel_stride"
+              c:identifier="gst_video_format_get_pixel_stride"
+              doc="Calculates the pixel stride (number of bytes from one pixel to the
+pixel to its immediate left) for the video component with an index
+of @component.  See @gst_video_format_get_row_stride for a description
+of the component index."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+        <parameter name="component" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_row_stride"
+              c:identifier="gst_video_format_get_row_stride"
+              doc="Calculates the row stride (number of bytes from one row of pixels to
+the next) for the video component with an index of @component.  For
+YUV video, Y, U, and V have component indices of 0, 1, and 2,
+respectively.  For RGB video, R, G, and B have component indicies of
+0, 1, and 2, respectively.  Alpha channels, if present, have a component
+index of 3.  The @width parameter always represents the width of the
+video, not the component."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+        <parameter name="component" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_size"
+              c:identifier="gst_video_format_get_size"
+              doc="Calculates the total number of bytes in the raw video format.  This
+number should be used when allocating a buffer for raw video."
+              version="0.10.16">
+      <return-value transfer-ownership="none" doc="of raw video format">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_has_alpha"
+              c:identifier="gst_video_format_has_alpha"
+              doc="Returns TRUE or FALSE depending on if the video format provides an
+alpha channel."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_is_gray"
+              c:identifier="gst_video_format_is_gray"
+              doc="Determine whether the video format is a grayscale format."
+              version="0.10.29">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_is_rgb"
+              c:identifier="gst_video_format_is_rgb"
+              doc="Determine whether the video format is an RGB format."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_is_yuv"
+              c:identifier="gst_video_format_is_yuv"
+              doc="Determine whether the video format is a YUV format."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_new_caps"
+              c:identifier="gst_video_format_new_caps"
+              doc="Creates a new #GstCaps object based on the parameters provided."
+              version="0.10.16">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="framerate_n" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="framerate_d" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="par_n" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="par_d" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_new_caps_interlaced"
+              c:identifier="gst_video_format_new_caps_interlaced"
+              doc="Creates a new #GstCaps object based on the parameters provided."
+              version="0.10.23">
+      <return-value transfer-ownership="full">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="framerate_n" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="framerate_d" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="par_n" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="par_d" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="interlaced" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_parse_caps"
+              c:identifier="gst_video_format_parse_caps"
+              doc="Determines the #GstVideoFormat of @caps and places it in the location
+pointed to by @format.  Extracts the size of the video and places it
+in the location pointed to by @width and @height.  If @caps does not
+represent one of the raw video formats listed in #GstVideoFormat, the
+function will fail and return FALSE."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat*"/>
+        </parameter>
+        <parameter name="width" direction="out" transfer-ownership="full">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="height" direction="out" transfer-ownership="full">
+          <type name="int" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_parse_caps_interlaced"
+              c:identifier="gst_video_format_parse_caps_interlaced"
+              doc="Extracts whether the caps represents interlaced content or not and places it
+in @interlaced."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+        <parameter name="interlaced" direction="out" transfer-ownership="full">
+          <type name="boolean" c:type="gboolean*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_to_fourcc"
+              c:identifier="gst_video_format_to_fourcc"
+              doc="Converts a #GstVideoFormat value into the corresponding FOURCC.  Only
+a few YUV formats have corresponding FOURCC values.  If @format has
+no corresponding FOURCC value, 0 is returned."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="VideoFormat" c:type="GstVideoFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="frame_rate"
+              c:identifier="gst_video_frame_rate"
+              doc="A convenience function to retrieve a GValue holding the framerate
+from the caps on a pad.
+The pad needs to have negotiated caps containing a framerate property.
+do not contain a framerate.">
+      <return-value transfer-ownership="none">
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Gst.Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_size"
+              c:identifier="gst_video_get_size"
+              doc="Inspect the caps of the provided pad and retrieve the width and height of
+the video frames it is configured for.
+The pad needs to have negotiated caps containing width and height properties.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Gst.Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="width" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="height" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_caps_chroma_site"
+              c:identifier="gst_video_parse_caps_chroma_site"
+              doc="Extracts the chroma site used by the caps.  Possible values are
+&quot;mpeg2&quot; for MPEG-2 style chroma siting (co-sited horizontally,
+halfway-sited vertically), &quot;jpeg&quot; for JPEG and Theora style
+chroma siting (halfway-sited both horizontally and vertically).
+Other chroma site values are possible, but uncommon.
+When no chroma site is specified in the caps, it should be assumed
+to be &quot;mpeg2&quot;.
+determined."
+              version="0.10.29">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_caps_color_matrix"
+              c:identifier="gst_video_parse_caps_color_matrix"
+              doc="Extracts the color matrix used by the caps.  Possible values are
+&quot;sdtv&quot; for the standard definition color matrix (as specified in
+Rec. ITU-R BT.470-6) or &quot;hdtv&quot; for the high definition color
+matrix (as specified in Rec. ITU-R BT.709)
+determined."
+              version="0.10.29">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_caps_framerate"
+              c:identifier="gst_video_parse_caps_framerate"
+              doc="Extracts the frame rate from @caps and places the values in the locations
+pointed to by @fps_n and @fps_d.  Returns TRUE if the values could be
+parsed correctly, FALSE if not.
+This function can be used with #GstCaps that have any media type; it
+is not limited to formats handled by #GstVideoFormat."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+        <parameter name="fps_n" direction="out" transfer-ownership="full">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="fps_d" direction="out" transfer-ownership="full">
+          <type name="int" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_caps_pixel_aspect_ratio"
+              c:identifier="gst_video_parse_caps_pixel_aspect_ratio"
+              doc="Extracts the pixel aspect ratio from @caps and places the values in
+the locations pointed to by @par_n and @par_d.  Returns TRUE if the
+values could be parsed correctly, FALSE if not.
+This function can be used with #GstCaps that have any media type; it
+is not limited to formats handled by #GstVideoFormat."
+              version="0.10.16">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </parameter>
+        <parameter name="par_n" direction="out" transfer-ownership="full">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="par_d" direction="out" transfer-ownership="full">
+          <type name="int" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/video/ffi/ffi.factor b/extra/gstreamer/video/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..474c48b
--- /dev/null
@@ -0,0 +1,19 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.libraries combinators kernel
+system
+gobject-introspection glib.ffi gobject.ffi gstreamer.ffi ;
+IN: gstreamer.video.ffi
+
+<<
+"gstreamer.video" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstvideo-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+IMPLEMENT-STRUCTS: GstVideoRectangle ;
+
+GIR: vocab:gstreamer/video/GstVideo-0.10.gir
+
diff --git a/extra/gstreamer/video/video.factor b/extra/gstreamer/video/video.factor
new file mode 100644 (file)
index 0000000..fde33e9
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.video.ffi ;
+IN: gstreamer.video
+
diff --git a/extra/gtk-samples/hello-world/authors.txt b/extra/gtk-samples/hello-world/authors.txt
new file mode 100644 (file)
index 0000000..ce9bcc8
--- /dev/null
@@ -0,0 +1 @@
+Anton Gorenko
\ No newline at end of file
diff --git a/extra/gtk-samples/hello-world/hello-world.factor b/extra/gtk-samples/hello-world/hello-world.factor
new file mode 100644 (file)
index 0000000..fd0b609
--- /dev/null
@@ -0,0 +1,47 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien.strings gobject.ffi gtk.ffi io.encodings.utf8
+kernel locals ;
+IN: gtk-samples.hello-world
+
+: on-button-clicked ( button label-user-data -- )
+    nip "Hello! :)" utf8 string>alien gtk_label_set_text ;
+    
+:: hello-world-win ( -- window )  
+    GTK_WINDOW_TOPLEVEL gtk_window_new :> window
+
+    window
+    [ "Hello world!" utf8 string>alien gtk_window_set_title ]
+    [ 300 200 gtk_window_set_default_size ]
+    [ GTK_WIN_POS_CENTER gtk_window_set_position ] tri
+
+    gtk_fixed_new :> frame
+    window frame gtk_container_add
+    
+    "Say 'Hello!'" utf8 string>alien gtk_button_new_with_label :> button
+    button 140 30 gtk_widget_set_size_request
+    frame button 80 60 gtk_fixed_put
+
+    "" utf8 string>alien gtk_label_new :> label
+    frame label 120 110 gtk_fixed_put
+
+    button "clicked" utf8 string>alien
+    [ on-button-clicked ] GtkButton:clicked label
+    g_signal_connect drop
+    
+    window ;
+
+:: hello-world-main ( -- )
+    f f gtk_init
+    hello-world-win :> window
+
+    window "destroy" utf8 string>alien
+    [ 2drop gtk_main_quit ] GtkObject:destroy f
+    g_signal_connect drop
+
+    window gtk_widget_show_all
+    
+    gtk_main ;
+
+MAIN: hello-world-main
+
diff --git a/extra/gtk-samples/opengl/authors.txt b/extra/gtk-samples/opengl/authors.txt
new file mode 100644 (file)
index 0000000..ce9bcc8
--- /dev/null
@@ -0,0 +1 @@
+Anton Gorenko
\ No newline at end of file
diff --git a/extra/gtk-samples/opengl/opengl.factor b/extra/gtk-samples/opengl/opengl.factor
new file mode 100644 (file)
index 0000000..619e95e
--- /dev/null
@@ -0,0 +1,81 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien.strings gdk.gl.ffi gobject.ffi gtk.ffi gtk.gl.ffi
+io.encodings.utf8 kernel locals opengl.gl ;
+IN: gtk-samples.opengl
+
+! This sample is based on
+! http://code.valaide.org/content/simple-opengl-sample-using-gtkglext
+
+:: on-configure ( sender event user-data -- result )
+    sender gtk_widget_get_gl_context :> gl-context
+    sender gtk_widget_get_gl_window :> gl-drawable
+
+    gl-drawable gl-context gdk_gl_drawable_gl_begin dup
+    [
+        0 0 200 200 glViewport
+        gl-drawable gdk_gl_drawable_gl_end
+    ] when ;
+
+:: on-expose ( sender event user-data -- result )
+    sender gtk_widget_get_gl_context :> gl-context
+    sender gtk_widget_get_gl_window :> gl-drawable
+
+    gl-drawable gl-context gdk_gl_drawable_gl_begin dup
+    [
+        GL_COLOR_BUFFER_BIT glClear
+
+        GL_TRIANGLES glBegin
+        1.0 0.0 0.0 glColor3f
+        0 1 glVertex2i
+        0.0 1.0 0.0 glColor3f
+        -1 -1 glVertex2i
+        0.0 0.0 1.0 glColor3f
+        1 -1 glVertex2i
+        glEnd
+        gl-drawable gdk_gl_drawable_is_double_buffered 1 =
+        [ gl-drawable gdk_gl_drawable_swap_buffers ]
+        [ glFlush ] if
+
+        gl-drawable gdk_gl_drawable_gl_end
+    ] when ;
+    
+:: opengl-win ( -- window )  
+    GTK_WINDOW_TOPLEVEL gtk_window_new :> window
+
+    window
+    [ "OpenGL" utf8 string>alien gtk_window_set_title ]
+    [ 200 200 gtk_window_set_default_size ]
+    [ GTK_WIN_POS_CENTER gtk_window_set_position ] tri
+
+    GDK_GL_MODE_RGBA gdk_gl_config_new_by_mode :> gl-config
+    
+    window gl-config f t GDK_GL_RGBA_TYPE
+    gtk_widget_set_gl_capability drop
+
+    window "configure-event" utf8 string>alien
+    [ on-configure ] GtkWidget:configure-event f
+    g_signal_connect drop
+
+    window "expose-event" utf8 string>alien
+    [ on-expose ] GtkWidget:expose-event f
+    g_signal_connect drop
+
+    window ;
+
+:: opengl-main ( -- )
+    f f gtk_init
+    f f gtk_gl_init
+    opengl-win :> window
+
+    window "destroy" utf8 string>alien
+    [ 2drop gtk_main_quit ] GtkObject:destroy
+    f f 0 g_signal_connect_data drop
+
+    window gtk_widget_show_all
+    
+    gtk_main ;
+
+MAIN: opengl-main
+